Warning, /plasma/plasma-mobile/kcms/wifi/ui/ConnectDialog.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2020 Devin Lin <espidev@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 import QtQuick 2.6
0007 import QtQuick.Layouts 1.2
0008 import QtQuick.Controls 2.2 as Controls
0009 import Qt5Compat.GraphicalEffects
0010 import org.kde.kirigami 2.12 as Kirigami
0011 
0012 Controls.Dialog {
0013     id: dialogRoot
0014     property int securityType
0015     property string headingText
0016     property string devicePath
0017     property string specificPath
0018     
0019     signal donePressed(string password)
0020     
0021     function openAndClear() {
0022         warning.visible = false;
0023         this.open();
0024         passwordField.text = "";
0025         passwordField.focus = true;
0026     }
0027     
0028     anchors.centerIn: parent
0029     modal: true
0030     standardButtons: Controls.Dialog.Ok | Controls.Dialog.Cancel
0031     
0032     onOpened: passwordField.forceActiveFocus()
0033     onRejected: {
0034         dialogRoot.close();
0035         passwordField.focus = false;
0036     }
0037     onAccepted: {
0038         if (passwordField.acceptableInput) {
0039             dialogRoot.close();
0040             handler.addAndActivateConnection(devicePath, specificPath, passwordField.text);
0041         } else {
0042             warning.visible = true;
0043         }
0044         passwordField.focus = false;
0045     }
0046     
0047     property int translateY: (1 - opacity) * Kirigami.Units.gridUnit * 2
0048     
0049     NumberAnimation on opacity {
0050         to: 1
0051         from: 0
0052         duration: Kirigami.Units.veryShortDuration
0053         easing.type: Easing.InOutQuad
0054         running: true
0055     }
0056     
0057     background: Item {
0058         transform: Translate { y: dialogRoot.translateY }
0059         
0060         RectangularGlow {
0061             anchors.fill: rect
0062             anchors.topMargin: 1
0063             cornerRadius: rect.radius * 2
0064             glowRadius: 2
0065             spread: 0.2
0066             color: Qt.rgba(0, 0, 0, 0.3)
0067         }
0068         Rectangle {
0069             id: rect
0070             anchors.fill: parent
0071             Kirigami.Theme.inherit: false
0072             Kirigami.Theme.colorSet: Kirigami.Theme.Window
0073             color: Kirigami.Theme.backgroundColor
0074             radius: Kirigami.Units.smallSpacing
0075             
0076             Kirigami.Separator {
0077                 id: topSeparator
0078                 anchors.left: parent.left
0079                 anchors.right: parent.right
0080                 anchors.top: parent.top
0081                 anchors.topMargin: dialogRoot.header.implicitHeight
0082             }
0083             
0084             Kirigami.Separator {
0085                 id: bottomSeparator
0086                 anchors.left: parent.left
0087                 anchors.right: parent.right
0088                 anchors.bottom: parent.bottom
0089                 anchors.bottomMargin: dialogRoot.footer.implicitHeight
0090             }
0091             
0092             Rectangle {
0093                 Kirigami.Theme.inherit: false
0094                 Kirigami.Theme.colorSet: Kirigami.Theme.View
0095                 color: Kirigami.Theme.backgroundColor
0096                 anchors.left: parent.left
0097                 anchors.right: parent.right
0098                 anchors.top: topSeparator.bottom
0099                 anchors.bottom: bottomSeparator.top
0100             }
0101         }
0102     }
0103     
0104     header: Item {
0105         transform: Translate { y: dialogRoot.translateY }
0106         implicitHeight: heading.implicitHeight + Kirigami.Units.largeSpacing * 2
0107 
0108         Kirigami.Heading {
0109             id: heading
0110             level: 2
0111             text: headingText
0112             wrapMode: Text.WordWrap
0113             anchors.left: parent.left
0114             anchors.right: parent.right
0115             anchors.leftMargin: Kirigami.Units.largeSpacing
0116             anchors.verticalCenter: parent.verticalCenter
0117         }
0118     }
0119     
0120     footer.transform: Translate { y: dialogRoot.translateY }
0121     
0122     ColumnLayout {
0123         id: column
0124         transform: Translate { y: dialogRoot.translateY }
0125         spacing: Kirigami.Units.largeSpacing
0126         
0127         PasswordField {
0128             id: passwordField
0129             Layout.fillWidth: true
0130             securityType: dialogRoot.securityType
0131             onAccepted: dialogRoot.accept()
0132         }
0133         
0134         Controls.Label {
0135             id: warning
0136             text: i18n("Invalid input.")
0137             visible: false
0138         }
0139     }
0140     
0141 }