diff --git a/src/qml/Component/Devtools/RoomData.qml b/src/qml/Component/Devtools/RoomData.qml index 42a0f2e14..0fa8c696c 100644 --- a/src/qml/Component/Devtools/RoomData.qml +++ b/src/qml/Component/Devtools/RoomData.qml @@ -6,109 +6,96 @@ import QtQuick.Controls 2.15 as QQC2 import QtQuick.Layouts 1.15 import org.kde.kirigami 2.15 as Kirigami -import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm +import org.kde.kirigamiaddons.formcard 1.0 as FormCard import org.kde.kitemmodels 1.0 import org.kde.neochat 1.0 ColumnLayout { - MobileForm.FormCard { - Layout.fillWidth: true - contentItem: ColumnLayout { - spacing: 0 - MobileForm.FormComboBoxDelegate { - text: i18n("Room") - textRole: "displayName" - valueRole: "id" - model: RoomListModel { - id: roomListModel - connection: Controller.activeConnection - } - Component.onCompleted: currentIndex = indexOfValue(room.id) - onCurrentValueChanged: room = roomListModel.roomByAliasOrId(currentValue) - } - MobileForm.FormCheckDelegate { - text: i18n("Show m.room.member events") - checked: true - onToggled: { - if (checked) { - stateEventFilterModel.removeStateEventTypeFiltered("m.room.member"); - } else { - stateEventFilterModel.addStateEventTypeFiltered("m.room.member"); - } - } - } - MobileForm.FormCheckDelegate { - id: roomAccoutnDataVisibleCheck - text: i18n("Show room account data") - checked: false - } - } - } - MobileForm.FormCard { - Layout.fillWidth: true - visible: roomAccoutnDataVisibleCheck.checked - contentItem: ColumnLayout { - spacing: 0 - MobileForm.FormCardHeader { - title: i18n("Room Account Data for %1 - %2", room.displayName, room.id) - } + id: root - Repeater { - model: room.accountDataEventTypes - delegate: MobileForm.FormTextDelegate { - text: modelData - onClicked: applicationWindow().pageStack.pushDialogLayer("qrc:/MessageSourceSheet.qml", { - "sourceText": room.roomAcountDataJson(text) - }, { - "title": i18n("Event Source"), - "width": Kirigami.Units.gridUnit * 25 - }) + required property NeoChatRoom room + + FormCard.FormHeader { + title: i18nc("@title", "Choose Room") + } + FormCard.FormCard { + FormCard.FormComboBoxDelegate { + id: roomComboBox + text: i18n("Room") + textRole: "displayName" + valueRole: "roomId" + model: RoomListModel { + id: roomListModel + connection: Controller.activeConnection + } + currentIndex: -1 + Component.onCompleted: currentIndex = roomListModel.rowForRoom(root.room) + onCurrentValueChanged: root.room = roomListModel.roomByAliasOrId(roomComboBox.currentValue) + } + FormCard.FormTextDelegate { + text: i18n("Room Id: %1", root.room.id) + } + FormCard.FormCheckDelegate { + text: i18n("Show m.room.member events") + checked: true + onToggled: { + if (checked) { + stateEventFilterModel.removeStateEventTypeFiltered("m.room.member"); + } else { + stateEventFilterModel.addStateEventTypeFiltered("m.room.member"); } } } + FormCard.FormCheckDelegate { + id: roomAccountDataVisibleCheck + text: i18n("Show room account data") + checked: false + } } - MobileForm.FormCard { - Layout.fillWidth: true - Layout.fillHeight: true - contentItem: ColumnLayout { - spacing: 0 - MobileForm.FormCardHeader { - id: stateEventListHeader - title: i18n("Room State for %1", room.displayName) - subtitle: room.id + FormCard.FormHeader { + visible: roomAccountDataVisibleCheck.checked + title: i18n("Room Account Data") + } + FormCard.FormCard { + visible: roomAccountDataVisibleCheck.checked + Repeater { + model: root.room.accountDataEventTypes + delegate: FormCard.FormButtonDelegate { + text: modelData + onClicked: applicationWindow().pageStack.pushDialogLayer("qrc:/MessageSourceSheet.qml", { + "sourceText": root.room.roomAcountDataJson(text) + }, { + "title": i18n("Event Source"), + "width": Kirigami.Units.gridUnit * 25 + }) } - QQC2.ScrollView { - Layout.fillWidth: true - Layout.fillHeight: true - - // HACK: Hide unnecessary horizontal scrollbar (https://bugreports.qt.io/browse/QTBUG-83890) - QQC2.ScrollBar.horizontal.policy: QQC2.ScrollBar.AlwaysOff - - ListView { - id: stateEventListView - clip: true - - model: StateFilterModel { - id: stateEventFilterModel - sourceModel: StateModel { - id: stateModel - room: devtoolsPage.room - } - } - - delegate: MobileForm.FormTextDelegate { - text: model.type - description: model.stateKey - onClicked: applicationWindow().pageStack.pushDialogLayer('qrc:/MessageSourceSheet.qml', { - sourceText: stateModel.stateEventJson(stateEventFilterModel.mapToSource(stateEventFilterModel.index(model.index, 0))) - }, { - title: i18n("Event Source"), - width: Kirigami.Units.gridUnit * 25 - }); - } + } + } + FormCard.FormHeader { + id: stateEventListHeader + title: i18n("Room State") + } + FormCard.FormCard { + Repeater { + model: StateFilterModel { + id: stateEventFilterModel + sourceModel: StateModel { + id: stateModel + room: root.room } } + + delegate: FormCard.FormButtonDelegate { + text: model.type + description: model.stateKey + onClicked: applicationWindow().pageStack.pushDialogLayer('qrc:/MessageSourceSheet.qml', { + sourceText: stateModel.stateEventJson(stateEventFilterModel.mapToSource(stateEventFilterModel.index(model.index, 0))) + }, { + title: i18n("Event Source"), + width: Kirigami.Units.gridUnit * 25 + }); + } } } } diff --git a/src/qml/Component/Devtools/ServerData.qml b/src/qml/Component/Devtools/ServerData.qml index 57369d919..d7d918a06 100644 --- a/src/qml/Component/Devtools/ServerData.qml +++ b/src/qml/Component/Devtools/ServerData.qml @@ -6,58 +6,43 @@ import QtQuick.Controls 2.15 as QQC2 import QtQuick.Layouts 1.15 import org.kde.kirigami 2.15 as Kirigami -import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm +import org.kde.kirigamiaddons.formcard 1.0 as FormCard import org.kde.kitemmodels 1.0 import org.kde.neochat 1.0 ColumnLayout { - MobileForm.FormCard { - Layout.fillWidth: true - contentItem: ColumnLayout { - spacing: 0 - MobileForm.FormCardHeader { - title: i18n("Server Capabilities") - } - MobileForm.FormTextDelegate { - text: i18n("Can change password") - description: Controller.activeConnection.canChangePassword - } + FormCard.FormHeader { + title: i18n("Server Capabilities") + } + FormCard.FormCard { + FormCard.FormTextDelegate { + text: i18n("Can change password") + description: Controller.activeConnection.canChangePassword } } - MobileForm.FormCard { - Layout.fillWidth: true - contentItem: ColumnLayout { - spacing: 0 - MobileForm.FormCardHeader { - title: i18n("Default Room Version") - } - MobileForm.FormTextDelegate { - text: Controller.activeConnection.defaultRoomVersion - } + FormCard.FormHeader { + title: i18n("Default Room Version") + } + FormCard.FormCard { + FormCard.FormTextDelegate { + text: Controller.activeConnection.defaultRoomVersion } } - MobileForm.FormCard { - Layout.fillWidth: true - contentItem: ColumnLayout { - spacing: 0 - MobileForm.FormCardHeader { - title: i18n("Available Room Versions") - } - Repeater { - model: Controller.getSupportedRoomVersions(room.connection) + FormCard.FormHeader { + title: i18n("Available Room Versions") + } + FormCard.FormCard { + Repeater { + model: room.connection.getSupportedRoomVersions() - delegate: MobileForm.FormTextDelegate { - text: modelData.id - contentItem.children: QQC2.Label { - text: modelData.status - color: Kirigami.Theme.disabledTextColor - } + delegate: FormCard.FormTextDelegate { + text: modelData.id + contentItem.children: QQC2.Label { + text: modelData.status + color: Kirigami.Theme.disabledTextColor } } } } - Item { - Layout.fillHeight: true - } } diff --git a/src/qml/Page/DevtoolsPage.qml b/src/qml/Page/DevtoolsPage.qml index 974df9461..8504dfcc1 100644 --- a/src/qml/Page/DevtoolsPage.qml +++ b/src/qml/Page/DevtoolsPage.qml @@ -6,11 +6,12 @@ import QtQuick.Controls 2.15 as QQC2 import QtQuick.Layouts 1.15 import org.kde.kirigami 2.20 as Kirigami +import org.kde.kirigamiaddons.formcard 1.0 as FormCard import org.kde.neochat 1.0 -Kirigami.Page { - id: devtoolsPage +FormCard.FormCardPage { + id: root property NeoChatRoom room @@ -32,11 +33,12 @@ Kirigami.Page { StackLayout { id: swipeView - anchors.fill: parent currentIndex: tabBar.currentIndex - RoomData {} + RoomData { + room: root.room + } ServerData {} } }