Warning, /plasma-mobile/raven/src/contents/ui/SettingsPage.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 import QtQuick 2.15
0005 import QtQuick.Layouts 1.15
0006 import QtQuick.Controls 2.15 as Controls
0007 
0008 import org.kde.kirigami 2.19 as Kirigami
0009 import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm
0010 import org.kde.raven 1.0
0011 
0012 Kirigami.ScrollablePage {
0013     id: root
0014     title: i18n("Settings")
0015     
0016     Kirigami.Theme.colorSet: Kirigami.Theme.Window
0017     Kirigami.Theme.inherit: false
0018     
0019     leftPadding: 0
0020     rightPadding: 0
0021     topPadding: Kirigami.Units.gridUnit
0022     bottomPadding: Kirigami.Units.gridUnit
0023 
0024     ColumnLayout {
0025         spacing: 0
0026         width: root.width
0027         
0028         MobileForm.FormCard {
0029             Layout.fillWidth: true
0030             
0031             contentItem: ColumnLayout {
0032                 spacing: 0
0033                 
0034                 MobileForm.FormCardHeader {
0035                     title: i18n("General")
0036                 }
0037                 
0038                 MobileForm.FormButtonDelegate {
0039                     id: aboutDelegate
0040                     text: i18n("About")
0041                     onClicked: applicationWindow().pageStack.layers.push(applicationWindow().getPage("AboutPage"))
0042                 }
0043             }
0044         }
0045         
0046         MobileForm.FormCard {
0047             Layout.fillWidth: true
0048             Layout.topMargin: Kirigami.Units.largeSpacing
0049             
0050             contentItem: ColumnLayout {
0051                 spacing: 0
0052                 
0053                 MobileForm.FormCardHeader {
0054                     title: i18n("Accounts")
0055                 }
0056                 
0057                 Repeater {
0058                     model: MailAccounts.runningMailAgents
0059                     delegate: MobileForm.AbstractFormDelegate {
0060                         Layout.fillWidth: true
0061                         Loader {
0062                             id: dialogLoader
0063                             sourceComponent: Kirigami.PromptDialog {
0064                                 id: dialog
0065                                 title: i18n("Configure %1", model.display)
0066                                 subtitle: i18n("Modify or delete this account agent.")
0067                                 standardButtons: Kirigami.Dialog.NoButton
0068                                 
0069                                 customFooterActions: [
0070                                     Kirigami.Action {
0071                                         text: i18n("Modify")
0072                                         iconName: "edit-entry"
0073                                         onTriggered: {
0074                                             MailAccounts.openConfigWindow(model.index);
0075                                             dialog.close();
0076                                         }
0077                                     },
0078                                     Kirigami.Action {
0079                                         text: i18n("Delete")
0080                                         iconName: "delete"
0081                                         onTriggered: {
0082                                             MailAccounts.remove(model.index);
0083                                             dialog.close();
0084                                         }
0085                                     }
0086                                 ]
0087                             }
0088                         }
0089                         
0090                         onClicked: {
0091                             dialogLoader.active = true;
0092                             dialogLoader.item.open();
0093                         }
0094                         
0095                         contentItem: RowLayout {
0096                             Kirigami.Icon {
0097                                 source: model.decoration
0098                                 Layout.rightMargin: Kirigami.Units.largeSpacing
0099                                 implicitWidth: Kirigami.Units.iconSizes.medium
0100                                 implicitHeight: Kirigami.Units.iconSizes.medium
0101                             }
0102                             
0103                             ColumnLayout {
0104                                 Layout.fillWidth: true
0105                                 spacing: Kirigami.Units.smallSpacing
0106                                 
0107                                 Controls.Label {
0108                                     Layout.fillWidth: true
0109                                     text: model.display
0110                                     elide: Text.ElideRight
0111                                     wrapMode: Text.Wrap
0112                                     maximumLineCount: 2
0113                                     color: Kirigami.Theme.textColor
0114                                 }
0115                                 
0116                                 Controls.Label {
0117                                     Layout.fillWidth: true
0118                                     text: model.statusMessage
0119                                     color: Kirigami.Theme.disabledTextColor
0120                                     font: Kirigami.Theme.smallFont
0121                                     elide: Text.ElideRight
0122                                 }
0123                             }
0124                             
0125                             MobileForm.FormArrow {
0126                                 Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
0127                                 direction: Qt.RightArrow
0128                             }
0129                         }
0130                     }
0131                 }
0132                 
0133                 MobileForm.FormDelegateSeparator { below: addAccountDelegate }
0134                 
0135                 MobileForm.FormButtonDelegate {
0136                     id: addAccountDelegate
0137                     text: i18n("Add Account")
0138                     icon.name: "list-add"
0139                     onClicked: applicationWindow().pageStack.layers.push("qrc:/accounts/AddAccountPage.qml")
0140                 }
0141             }
0142         }
0143     }
0144 }