diff --git a/src/qml/Settings/GlobalNotificationsPage.qml b/src/qml/Settings/GlobalNotificationsPage.qml index ef60de0ed..3feddc358 100644 --- a/src/qml/Settings/GlobalNotificationsPage.qml +++ b/src/qml/Settings/GlobalNotificationsPage.qml @@ -6,205 +6,166 @@ 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 -Kirigami.ScrollablePage { +FormCard.FormCardPage { id: root title: i18nc("@title:window", "Notifications") - topPadding: 0 - leftPadding: 0 - rightPadding: 0 - ColumnLayout { - id: notificationLayout - spacing: 0 - - MobileForm.FormCard { - Layout.fillWidth: true - Layout.topMargin: Kirigami.Units.largeSpacing - contentItem: MobileForm.FormCheckDelegate { - text: i18n("Enable notifications for this account") - description: i18n("Whether push notifications are generated by your Matrix server") - checked: Controller.pushRuleModel.globalNotificationsEnabled - enabled: Controller.pushRuleModel.globalNotificationsSet - onToggled: { - Controller.pushRuleModel.globalNotificationsEnabled = checked - } + FormCard.FormCard { + Layout.topMargin: Kirigami.Units.largeSpacing + FormCard.FormCheckDelegate { + text: i18n("Enable notifications for this account") + description: i18n("Whether push notifications are generated by your Matrix server") + checked: Controller.pushRuleModel.globalNotificationsEnabled + enabled: Controller.pushRuleModel.globalNotificationsSet + onToggled: { + Controller.pushRuleModel.globalNotificationsEnabled = checked } } + } - MobileForm.FormHeader { - Layout.fillWidth: true - title: i18n("Room Notifications") - } - MobileForm.FormCard { - Layout.fillWidth: true - - contentItem: ColumnLayout { - spacing: 0 - - Repeater { - model: KSortFilterProxyModel { - sourceModel: Controller.pushRuleModel - filterRowCallback: function(source_row, source_parent) { - let sectionRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), PushRuleModel.SectionRole) - return sectionRole == PushNotificationSection.Room; - } - } - - delegate: ruleDelegate + FormCard.FormHeader { + title: i18n("Room Notifications") + } + FormCard.FormCard { + Repeater { + model: KSortFilterProxyModel { + sourceModel: Controller.pushRuleModel + filterRowCallback: function(source_row, source_parent) { + let sectionRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), PushRuleModel.SectionRole) + return sectionRole == PushNotificationSection.Room; } } + + delegate: ruleDelegate } + } - MobileForm.FormHeader { - Layout.fillWidth: true - title: i18n("@Mentions") - } - MobileForm.FormCard { - Layout.fillWidth: true - - contentItem: ColumnLayout { - spacing: 0 - Repeater { - model: KSortFilterProxyModel { - sourceModel: Controller.pushRuleModel - filterRowCallback: function(source_row, source_parent) { - let sectionRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), PushRuleModel.SectionRole) - return sectionRole == PushNotificationSection.Mentions; - } - } - - delegate: ruleDelegate + FormCard.FormHeader { + title: i18n("@Mentions") + } + FormCard.FormCard { + Repeater { + model: KSortFilterProxyModel { + sourceModel: Controller.pushRuleModel + filterRowCallback: function(source_row, source_parent) { + let sectionRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), PushRuleModel.SectionRole) + return sectionRole == PushNotificationSection.Mentions; } } + + delegate: ruleDelegate } + } - MobileForm.FormHeader { - Layout.fillWidth: true - title: i18n("Keywords") - } - MobileForm.FormCard { - Layout.fillWidth: true + FormCard.FormHeader { + title: i18n("Keywords") + } + FormCard.FormCard { + Repeater { + model: KSortFilterProxyModel { + sourceModel: Controller.pushRuleModel - contentItem: ColumnLayout { - spacing: 0 - Repeater { - model: KSortFilterProxyModel { - sourceModel: Controller.pushRuleModel - - filterRowCallback: function(source_row, source_parent) { - let sectionRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), PushRuleModel.SectionRole) - return sectionRole == PushNotificationSection.Keywords; - } - } - - delegate: ruleDelegate + filterRowCallback: function(source_row, source_parent) { + let sectionRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), PushRuleModel.SectionRole) + return sectionRole == PushNotificationSection.Keywords; } - MobileForm.AbstractFormDelegate { + } + + delegate: ruleDelegate + } + FormCard.AbstractFormDelegate { + Layout.fillWidth: true + + contentItem : RowLayout { + Kirigami.ActionTextField { + id: keywordAddField + Layout.fillWidth: true - contentItem : RowLayout { - Kirigami.ActionTextField { - id: keywordAddField + placeholderText: i18n("Keyword…") + enabled: NotificationsManager.keywordNotificationAction !== PushNotificationAction.Unknown - Layout.fillWidth: true - - placeholderText: i18n("Keyword…") - enabled: NotificationsManager.keywordNotificationAction !== PushNotificationAction.Unknown - - rightActions: Kirigami.Action { - icon.name: "edit-clear" - visible: keywordAddField.text.length > 0 - onTriggered: { - keywordAddField.text = "" - } - } - - onAccepted: { - Controller.pushRuleModel.addKeyword(keywordAddField.text) - keywordAddField.text = "" - } + rightActions: Kirigami.Action { + icon.name: "edit-clear" + visible: keywordAddField.text.length > 0 + onTriggered: { + keywordAddField.text = "" } - QQC2.Button { - id: addButton + } - text: i18n("Add keyword") - Accessible.name: text - icon.name: "list-add" - display: QQC2.AbstractButton.IconOnly - enabled: NotificationsManager.keywordNotificationAction !== PushNotificationAction.Unknown - - onClicked: { - Controller.pushRuleModel.addKeyword(keywordAddField.text) - keywordAddField.text = "" - } - - QQC2.ToolTip { - text: addButton.text - delay: Kirigami.Units.toolTipDelay - } - } + onAccepted: { + Controller.pushRuleModel.addKeyword(keywordAddField.text) + keywordAddField.text = "" } } - } - } + QQC2.Button { + id: addButton - MobileForm.FormHeader { - Layout.fillWidth: true - title: i18n("Invites") - } - MobileForm.FormCard { - Layout.fillWidth: true + text: i18n("Add keyword") + Accessible.name: text + icon.name: "list-add" + display: QQC2.AbstractButton.IconOnly + enabled: NotificationsManager.keywordNotificationAction !== PushNotificationAction.Unknown - contentItem: ColumnLayout { - spacing: 0 - Repeater { - model: KSortFilterProxyModel { - sourceModel: Controller.pushRuleModel - filterRowCallback: function(source_row, source_parent) { - let sectionRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), PushRuleModel.SectionRole) - return sectionRole == PushNotificationSection.Invites; - } + onClicked: { + Controller.pushRuleModel.addKeyword(keywordAddField.text) + keywordAddField.text = "" } - delegate: ruleDelegate - } - } - } - - MobileForm.FormHeader { - Layout.fillWidth: true - title: i18n("Unknown") - visible: unknownModel.rowCount() > 0 - } - MobileForm.FormCard { - Layout.fillWidth: true - visible: unknownModel.rowCount() > 0 - - contentItem: ColumnLayout { - spacing: 0 - Repeater { - model: KSortFilterProxyModel { - id: unknownModel - sourceModel: Controller.pushRuleModel - filterRowCallback: function(source_row, source_parent) { - let sectionRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), PushRuleModel.SectionRole) - return sectionRole == PushNotificationSection.Unknown; - } + QQC2.ToolTip { + text: addButton.text + delay: Kirigami.Units.toolTipDelay } - - delegate: ruleDelegate } } } } - Component { + FormCard.FormHeader { + title: i18n("Invites") + } + FormCard.FormCard { + Repeater { + model: KSortFilterProxyModel { + sourceModel: Controller.pushRuleModel + filterRowCallback: function(source_row, source_parent) { + let sectionRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), PushRuleModel.SectionRole) + return sectionRole == PushNotificationSection.Invites; + } + } + + delegate: ruleDelegate + } + } + + FormCard.FormHeader { + title: i18n("Unknown") + visible: unknownModel.rowCount() > 0 + } + FormCard.FormCard { + visible: unknownModel.rowCount() > 0 + + Repeater { + model: KSortFilterProxyModel { + id: unknownModel + sourceModel: Controller.pushRuleModel + filterRowCallback: function(source_row, source_parent) { + let sectionRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), PushRuleModel.SectionRole) + return sectionRole == PushNotificationSection.Unknown; + } + } + + delegate: ruleDelegate + } + } + + property Component ruleDelegate: Component { id: ruleDelegate NotificationRuleItem { onDeleteRule: {