Warning, /maui/mauikit-accounts/src/controls.6/AccountsDialog.qml is written in an unsupported language. File is not indexed.

0001 
0002 import QtQuick 
0003 import QtQuick.Controls 
0004 import QtQuick.Layouts
0005 
0006 import org.mauikit.controls 1.3 as Maui
0007 import org.mauikit.accounts 1.0 as MA
0008 
0009 /**
0010  * @inherit org::mauikit::controls::PopupPage
0011  * @brief A dialog listing all the available online accounts. 
0012  * 
0013  * @image html accountsdialog.png "Accounts dialog"
0014  * 
0015  * @code
0016  * 
0017  * @endcode
0018  * 
0019  */
0020 Maui.PopupPage
0021 {
0022     id: control
0023 
0024     maxHeight: 350
0025     maxWidth: maxHeight
0026 
0027     title: i18nd("mauikitaccounts","Accounts")
0028 
0029     /**
0030       * @brief Alias to the MauiKit BaseModel handling the data
0031       * @property MauiKit::MauiModel AccountsDialog::model
0032       */
0033     readonly property alias model : _syncingModel
0034 
0035     /**
0036       * @brief Alias to the list containing the data of the accounts.
0037       * @property Accounts AccountsDialog::list
0038       */
0039     readonly property alias list : _syncingModel.list
0040 
0041     MA.CredentialsDialog
0042     {
0043         id: _syncDialog
0044         onAccepted:
0045         {
0046             control.addAccount(serverField.text, userField.text, passwordField.text)
0047             close()
0048         }
0049     }
0050 
0051     actions: Action
0052     {
0053         text: i18nd("mauikitaccounts","Add")
0054         onTriggered: _syncDialog.open()
0055     }
0056 
0057     Maui.InfoDialog
0058     {
0059         id: _removeDialog
0060 
0061         title: i18nd("mauikitaccounts","Remove Account")
0062         message: i18nd("mauikitaccounts","Are you sure you want to remove this account?")
0063 
0064             standardButtons: Dialog.Ok | Dialog.Cancel
0065 
0066         onRejected: close()
0067         onAccepted:
0068         {
0069             var account = MA.Accounts.get(_listView.currentIndex)
0070             console.log(account.label)
0071             control.removeAccount(account.server, account.user)
0072             close()
0073         }
0074     }
0075 
0076     Maui.ContextualMenu
0077     {
0078         id: _menu
0079 
0080         MenuItem
0081         {
0082             text: i18nd("mauikitaccounts","Remove...")
0083             Maui.Theme.textColor: Maui.Theme.negativeTextColor
0084 
0085             onTriggered: _removeDialog.open()
0086         }
0087     }
0088 
0089     stack: Maui.ListBrowser
0090     {
0091         id: _listView
0092         Layout.fillHeight: true
0093         Layout.fillWidth: true
0094 
0095         model: Maui.BaseModel
0096         {
0097             id: _syncingModel
0098             list: MA.Accounts
0099         }
0100 
0101         delegate: Maui.ListDelegate
0102         {
0103             id: delegate
0104             width: ListView.view.width
0105             label: model.label
0106             label2: model.server
0107 
0108             radius: Maui.Style.radiusV
0109 
0110             onClicked:
0111             {
0112                 _listView.currentIndex = index
0113             }
0114 
0115             onPressAndHold:
0116             {
0117                 _listView.currentIndex = index
0118                 _menu.show()
0119             }
0120 
0121             onRightClicked:
0122             {
0123                 _listView.currentIndex = index
0124                 _menu.show()
0125             }
0126         }
0127         
0128             holder.visible: _listView.count == 0
0129             anchors.fill: parent
0130             holder.isMask: true
0131             holder.emoji: "qrc:/assets/dialog-information.svg"
0132             holder.title: i18nd("mauikitaccounts","No accounts yet!")
0133             holder.body: i18nd("mauikitaccounts","Start adding new accounts to sync your files, music, contacts, images, notes, etc...")
0134         
0135     }
0136 
0137     /**
0138      * @brief Add a new account
0139      * @param server the remote server address 
0140      * @param user the user name
0141      * @param password password for the user in the remote server provided 
0142      */
0143     function addAccount(server, user, password)
0144     {
0145         if(user.length)
0146             MA.Accounts.registerAccount({server: server, user: user, password: password})
0147     }
0148 
0149     /**
0150      * @brief Remove an account for the given user in the given server address
0151      * @param server the server remote address
0152      * @param user the user name
0153      */
0154     function removeAccount(server, user)
0155     {
0156         if(server.length && user.length)
0157             MA.Accounts.removeAccount(server, user)
0158     }
0159 
0160    /**
0161      * @brief Remove an account for the given user in the given server address, and remove all the local cached files
0162      * @param server the server remote address
0163      * @param user the user name
0164      */
0165     function removeAccountAndFiles(server, user)
0166     {
0167         if(server.length && user.length)
0168             MA.Accounts.removeAccountAndFiles(server, user)
0169     }
0170 }