Warning, /plasma/plasma-nm/kcm/qml/AddConnectionDialog.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2016 Jan Grulich <jgrulich@redhat.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 import QtQuick 2.3
0008 import QtQuick.Dialogs 1.2
0009 import QtQuick.Controls 2.5 as QQC2
0010 import org.kde.kirigami 2.15 as Kirigami
0011 import org.kde.plasma.networkmanagement 0.2 as PlasmaNM
0012 
0013 Dialog {
0014     id: dialog
0015     title: i18nc("@title:window", "Choose a Connection Type")
0016 
0017     signal requestCreateConnection(int type, string vpnType, string specificType, bool shared)
0018 
0019     contentItem: Item {
0020         implicitHeight: 600
0021         implicitWidth: 500
0022 
0023         PlasmaNM.CreatableConnectionsModel {
0024             id: connectionModel
0025         }
0026 
0027         Rectangle {
0028             id: background
0029             anchors.fill: parent
0030             focus: true
0031             color: Kirigami.Theme.backgroundColor
0032         }
0033 
0034         QQC2.ScrollView {
0035             id: scrollView
0036             anchors {
0037                 bottom: buttonRow.top
0038                 bottomMargin: Math.round(Kirigami.Units.gridUnit / 2)
0039                 left: parent.left
0040                 right: parent.right
0041                 top: parent.top
0042             }
0043 
0044             QQC2.ScrollBar.horizontal.policy: QQC2.ScrollBar.AlwaysOff
0045 
0046             ListView {
0047                 id: view
0048 
0049                 property int currentlySelectedIndex: -1
0050                 property bool connectionShared
0051                 property string connectionSpecificType
0052                 property int connectionType
0053                 property string connectionVpnType
0054 
0055                 clip: true
0056                 model: connectionModel
0057                 currentIndex: -1
0058                 boundsBehavior: Flickable.StopAtBounds
0059                 section.property: "ConnectionTypeSection"
0060                 section.delegate: Kirigami.ListSectionHeader { text: section }
0061                 Rectangle {
0062                     id: background1
0063                     z: -1
0064                     anchors.fill: parent
0065                     focus: true
0066                     Kirigami.Theme.colorSet: Kirigami.Theme.View
0067                     color: Kirigami.Theme.backgroundColor
0068                 }
0069                 delegate: ListItem {
0070                     height: connectionTypeBase.height
0071                     width: view.width
0072                     checked: view.currentlySelectedIndex == index
0073 
0074                     onClicked: {
0075                         createButton.enabled = true
0076                         view.currentlySelectedIndex = index
0077                         view.connectionSpecificType = ConnectionSpecificType
0078                         view.connectionShared = ConnectionShared
0079                         view.connectionType = ConnectionType
0080                         view.connectionVpnType = ConnectionVpnType
0081                     }
0082 
0083                     onDoubleClicked: {
0084                         dialog.close()
0085                         dialog.requestCreateConnection(view.connectionType, view.connectionVpnType, view.connectionSpecificType, view.connectionShared)
0086                     }
0087 
0088                     Item {
0089                         id: connectionTypeBase
0090 
0091                         anchors {
0092                             left: parent.left
0093                             right: parent.right
0094                             top: parent.top
0095                             // Reset top margin from PlasmaComponents.ListItem
0096                             topMargin: -Math.round(Kirigami.Units.gridUnit / 3)
0097                         }
0098                         height: Math.max(Kirigami.Units.iconSizes.medium, connectionNameLabel.height + connectionDescriptionLabel.height) + Math.round(Kirigami.Units.gridUnit / 2)
0099 
0100                         Kirigami.Icon {
0101                             id: connectionIcon
0102 
0103                             anchors {
0104                                 left: parent.left
0105                                 verticalCenter: parent.verticalCenter
0106                             }
0107                             height: Kirigami.Units.iconSizes.medium; width: height
0108                             source: ConnectionIcon
0109                         }
0110 
0111                         Text {
0112                             id: connectionNameLabel
0113 
0114                             anchors {
0115                                 bottom: ConnectionType == PlasmaNM.Enums.Vpn ? connectionIcon.verticalCenter : undefined
0116                                 left: connectionIcon.right
0117                                 leftMargin: Math.round(Kirigami.Units.gridUnit / 2)
0118                                 right: parent.right
0119                                 verticalCenter: ConnectionType == PlasmaNM.Enums.Vpn ? undefined : parent.verticalCenter
0120                             }
0121                             color: textColor
0122                             height: paintedHeight
0123                             elide: Text.ElideRight
0124                             text: ConnectionTypeName
0125                             textFormat: Text.PlainText
0126                         }
0127 
0128                         Text {
0129                             id: connectionDescriptionLabel
0130 
0131                             anchors {
0132                                 left: connectionIcon.right
0133                                 leftMargin: Math.round(Kirigami.Units.gridUnit / 2)
0134                                 right: parent.right
0135                                 top: connectionNameLabel.bottom
0136                             }
0137                             color: textColor
0138                             height: visible ? paintedHeight : 0
0139                             elide: Text.ElideRight
0140                             font.pointSize: Kirigami.Theme.smallFont.pointSize
0141                             opacity: 0.6
0142                             text: ConnectionDescription
0143                             visible: ConnectionType == PlasmaNM.Enums.Vpn
0144                         }
0145                     }
0146                 }
0147             }
0148         }
0149 
0150         Row {
0151             id: buttonRow
0152             anchors {
0153                 bottom: parent.bottom
0154                 right: parent.right
0155                 margins: Math.round(Kirigami.Units.gridUnit / 2)
0156             }
0157             spacing: Kirigami.Units.mediumSpacing
0158 
0159             QQC2.Button {
0160                 id: createButton
0161                 icon.name: "list-add"
0162                 enabled: false
0163                 text: i18n("Create")
0164 
0165                 onClicked: {
0166                     dialog.close()
0167                     dialog.requestCreateConnection(view.connectionType, view.connectionVpnType, view.connectionSpecificType, view.connectionShared)
0168                 }
0169             }
0170 
0171             QQC2.Button {
0172                 id: cancelButton
0173                 icon.name: "dialog-cancel"
0174                 text: i18n("Cancel")
0175 
0176                 onClicked: {
0177                     dialog.close()
0178                 }
0179             }
0180         }
0181 
0182         QQC2.ToolButton {
0183             id: configureButton
0184             anchors {
0185                 bottom: parent.bottom
0186                 left: parent.left
0187                 margins: Math.round(Kirigami.Units.gridUnit / 2)
0188             }
0189             icon.name: "configure"
0190 
0191             QQC2.ToolTip.text: i18n("Configuration")
0192             QQC2.ToolTip.visible: hovered
0193 
0194             onClicked: {
0195                 configurationDialog.open()
0196             }
0197         }
0198     }
0199 }