Warning, /plasma-mobile/raven/src/contents/ui/accounts/AddAccountPage.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("Add Account")
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     footer: Controls.Control {
0025         id: footerToolBar
0026 
0027         implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
0028                                 implicitContentWidth + leftPadding + rightPadding)
0029         implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
0030                                 implicitContentHeight + topPadding + bottomPadding)
0031 
0032         leftPadding: Kirigami.Units.smallSpacing
0033         rightPadding: Kirigami.Units.smallSpacing
0034         bottomPadding: Kirigami.Units.smallSpacing
0035         topPadding: Kirigami.Units.smallSpacing
0036 
0037         contentItem: RowLayout {
0038             spacing: parent.spacing
0039 
0040             // footer buttons
0041             Controls.DialogButtonBox {
0042                 // we don't explicitly set padding, to let the style choose the padding
0043                 id: dialogButtonBox
0044                 standardButtons: Controls.DialogButtonBox.Close | Controls.DialogButtonBox.Save
0045 
0046                 Layout.fillWidth: true
0047                 Layout.alignment: dialogButtonBox.alignment
0048 
0049                 position: Controls.DialogButtonBox.Footer
0050 
0051                 onAccepted: {
0052                     newAccount.addAccount();
0053                     applicationWindow().pageStack.layers.pop();
0054                 }
0055                 onRejected: applicationWindow().pageStack.layers.pop()
0056             }
0057         }
0058 
0059         background: Rectangle {
0060             color: Kirigami.Theme.backgroundColor
0061 
0062             // separator above footer
0063             Kirigami.Separator {
0064                 anchors.top: parent.top
0065                 anchors.left: parent.left
0066                 anchors.right: parent.right
0067             }
0068         }
0069     }
0070 
0071     ColumnLayout {
0072         spacing: 0
0073         width: root.width
0074         
0075         NewAccount {
0076             id: newAccount
0077         }
0078         
0079         MobileForm.FormCard {
0080             Layout.fillWidth: true
0081             
0082             contentItem: ColumnLayout {
0083                 spacing: 0
0084                 
0085                 FormTextInputDelegate {
0086                     id: nameDelegate
0087                     text: i18n("Name")
0088                     textValue: newAccount.name
0089                     onTextSaved: newAccount.name = savedText
0090                 }
0091                 
0092                 MobileForm.FormDelegateSeparator { above: nameDelegate; below: emailDelegate }
0093                 
0094                 FormTextInputDelegate {
0095                     id: emailDelegate
0096                     text: i18n("Email")
0097                     textValue: newAccount.email
0098                     onTextSaved: newAccount.email = savedText
0099                 }
0100                 
0101                 MobileForm.FormDelegateSeparator { above: emailDelegate; below: passwordDelegate }
0102                 
0103                 FormPasswordInputDelegate {
0104                     id: passwordDelegate
0105                     text: i18n("Password")
0106                     textValue: newAccount.password
0107                     onTextSaved: newAccount.password = savedText
0108                 }
0109                 
0110                 MobileForm.FormDelegateSeparator { above: passwordDelegate; below: autoFillDelegate }
0111                 
0112                 MobileForm.AbstractFormDelegate {
0113                     id: autoFillDelegate
0114                     Layout.fillWidth: true
0115                     contentItem: RowLayout {
0116                         Controls.Label {
0117                             Layout.fillWidth: true
0118                             text: i18n("Auto-fill settings")
0119                         }
0120                         
0121                         Controls.Button {
0122                             text: i18n("Fill")
0123                             icon.name: "search"
0124                             onClicked: newAccount.searchIspdbForConfig()
0125                         }
0126                     }
0127                 }
0128             }
0129         }
0130         
0131         MobileForm.FormCard {
0132             Layout.fillWidth: true
0133             Layout.topMargin: Kirigami.Units.largeSpacing
0134             
0135             contentItem: ColumnLayout {
0136                 spacing: 0
0137                 
0138                 MobileForm.FormCardHeader {
0139                     title: i18n("Receiving")
0140                 }
0141                 
0142                 MobileForm.FormComboBoxDelegate {
0143                     id: receiveEmailProtocolDelegate
0144                     text: i18n("Protocol")
0145                     currentIndex: newAccount.receivingMailProtocol === NewAccount.Imap ? 0 : 1
0146                     model: ["IMAP", "POP3"]
0147                     onCurrentValueChanged: newAccount.receivingMailProtocol = (receiveEmailProtocolDelegate.currentValue === "IMAP") ? NewAccount.Imap : NewAccount.Pop3
0148                 }
0149                 
0150                 MobileForm.FormDelegateSeparator { above: receiveEmailProtocolDelegate; below: receivingHostDelegate }
0151                 
0152                 FormTextInputDelegate {
0153                     id: receivingHostDelegate
0154                     text: i18n("Host")
0155                     textValue: newAccount.receivingMailProtocol === NewAccount.Imap ? newAccount.imapHost : newAccount.pop3Host
0156                     onTextSaved: newAccount.receivingMailProtocol === NewAccount.Imap ? newAccount.imapHost = savedText : newAccount.pop3Host = savedText 
0157                 }
0158                 
0159                 MobileForm.FormDelegateSeparator { above: receivingHostDelegate; below: receivingPortDelegate }
0160                 
0161                 FormTextInputDelegate {
0162                     id: receivingPortDelegate
0163                     text: i18n("Port")
0164                     textValue: newAccount.receivingMailProtocol === NewAccount.Imap ? newAccount.imapPort : newAccount.pop3Port
0165                     onTextSaved: newAccount.receivingMailProtocol === NewAccount.Imap ? newAccount.imapPort = savedText : newAccount.pop3Port = savedText 
0166                 }
0167                 
0168                 MobileForm.FormDelegateSeparator { above: receivingPortDelegate; below: receivingUsernameDelegate }
0169                 
0170                 FormTextInputDelegate {
0171                     id: receivingUsernameDelegate
0172                     text: i18n("Username")
0173                     textValue: newAccount.receivingMailProtocol === NewAccount.Imap ? newAccount.imapUsername : newAccount.pop3Username
0174                     onTextSaved: newAccount.receivingMailProtocol === NewAccount.Imap ? newAccount.imapUsername = savedText : newAccount.pop3Username = savedText 
0175                 }
0176                 
0177                 MobileForm.FormDelegateSeparator { above: receivingUsernameDelegate; below: receivingPasswordDelegate }
0178                 
0179                 FormPasswordInputDelegate {
0180                     id: receivingPasswordDelegate
0181                     text: i18n("Password")
0182                     textValue: newAccount.receivingMailProtocol === NewAccount.Imap ? newAccount.imapPassword : newAccount.pop3Password
0183                     onTextSaved: newAccount.receivingMailProtocol === NewAccount.Imap ? newAccount.imapPassword = savedText : newAccount.pop3Password = savedText 
0184                 }
0185             }
0186         }
0187         
0188         MobileForm.FormCard {
0189             Layout.fillWidth: true
0190             Layout.topMargin: Kirigami.Units.largeSpacing
0191             
0192             contentItem: ColumnLayout {
0193                 spacing: 0
0194                 
0195                 MobileForm.FormCardHeader {
0196                     title: i18n("Sending")
0197                 }
0198                 
0199                 FormTextInputDelegate {
0200                     id: smtpHostDelegate
0201                     text: i18n("Host")
0202                     textValue: newAccount.smtpHost
0203                     onTextSaved: newAccount.smtpHost = savedText 
0204                 }
0205                 
0206                 MobileForm.FormDelegateSeparator { above: smtpHostDelegate; below: smtpPortDelegate }
0207                 
0208                 FormTextInputDelegate {
0209                     id: smtpPortDelegate
0210                     text: i18n("Port")
0211                     textValue: newAccount.smtpPort
0212                     onTextSaved: newAccount.smtpPort = savedText 
0213                 }
0214                 
0215                 MobileForm.FormDelegateSeparator { above: smtpPortDelegate; below: smtpUsernameDelegate }
0216                 
0217                 FormTextInputDelegate {
0218                     id: smtpUsernameDelegate
0219                     text: i18n("Username")
0220                     textValue: newAccount.smtpUsername
0221                     onTextSaved: newAccount.smtpUsername = savedText 
0222                 }
0223                 
0224                 MobileForm.FormDelegateSeparator { above: smtpUsernameDelegate; below: smtpPasswordDelegate }
0225                 
0226                 FormPasswordInputDelegate {
0227                     id: smtpPasswordDelegate
0228                     text: i18n("Password")
0229                     textValue: newAccount.smtpPassword
0230                     onTextSaved: newAccount.smtpPassword = savedText 
0231                 }
0232             }
0233         }
0234     }
0235 }