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