Changeset View
Changeset View
Standalone View
Standalone View
src/contents/ui/room-settings/RoomStatePage.qml
- This file was added.
| /* | |||||
| * This file is part of kazv. | |||||
| * SPDX-FileCopyrightText: 2025 tusooa <tusooa@kazv.moe> | |||||
| * SPDX-License-Identifier: AGPL-3.0-or-later | |||||
| */ | |||||
| import QtQuick | |||||
| import QtQuick.Layouts | |||||
| import QtQuick.Controls | |||||
| import org.kde.kirigami as Kirigami | |||||
| import moe.kazv.mxc.kazv 0.0 as MK | |||||
| import '../matrix-helpers.js' as Helpers | |||||
| import '..' as Kazv | |||||
| Kazv.ClosableScrollablePage { | |||||
| id: roomStatePage | |||||
| property var room | |||||
| property var roomNameProvider: Kazv.RoomNameProvider { | |||||
| room: roomStatePage.room | |||||
| } | |||||
| property var roomDisplayName: roomNameProvider.name | |||||
| property var allState: room.allState() | |||||
| property string selectedType: '' | |||||
| title: l10n.get('room-state-page-title', { room: roomDisplayName }) | |||||
| ColumnLayout { | |||||
| Flow { | |||||
| id: typeChooser | |||||
| Layout.fillWidth: true | |||||
| Repeater { | |||||
| model: allState.types | |||||
| Kirigami.Chip { | |||||
| required property string modelData | |||||
| objectName: `chip_${modelData}` | |||||
| closable: false | |||||
| text: modelData | |||||
| checkable: true | |||||
| checked: roomStatePage.selectedType === modelData | |||||
| onClicked: { | |||||
| roomStatePage.selectedType = modelData | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| ListView { | |||||
| id: lv | |||||
| objectName: 'stateEventList' | |||||
| model: allState.eventsForType(roomStatePage.selectedType) | |||||
| Layout.fillWidth: true | |||||
| Layout.fillHeight: true | |||||
| Layout.minimumHeight: childrenRect.height | |||||
| delegate: ColumnLayout { | |||||
| id: viewItem | |||||
| property var event: lv.model.at(index) | |||||
| width: ListView.view.width | |||||
| Label { | |||||
| Layout.fillWidth: true | |||||
| textFormat: Qt.RichText | |||||
| text: l10n.get('room-state-page-state-key', { stateKey: MK.KazvUtil.escapeHtml(viewItem.event.stateKey) }) | |||||
| } | |||||
| Kazv.EventViewWrapper { | |||||
| event: viewItem.event | |||||
| Layout.fillWidth: true | |||||
| compactMode: false | |||||
| displayTime: false | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||