File Metadata

Author
gvgeo
Created
Feb 14 2020, 7:37 AM

withoutCpp.diff

diff --git a/applet/contents/ui/ConnectionItem.qml b/applet/contents/ui/ConnectionItem.qml
index 8d370dfe..77e55e9a 100644
--- a/applet/contents/ui/ConnectionItem.qml
+++ b/applet/contents/ui/ConnectionItem.qml
@@ -27,11 +27,13 @@ import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.networkmanagement 0.2 as PlasmaNM
-PlasmaComponents.ListItem {
+ListItem {
id: connectionItem
property bool activating: ConnectionState == PlasmaNM.Enums.Activating
- property int baseHeight: Math.max(units.iconSizes.medium, connectionNameLabel.height + connectionStatusLabel.height) + Math.round(units.gridUnit / 2)
+ property bool deactivated: ConnectionState === PlasmaNM.Enums.Deactivated
+ property int baseHeight: Uuid ? connectionNameLabel.implicitHeight + connectionStatusLabel.implicitHeight + units.smallSpacing
+ : stateChangeButton.implicitHeight
property bool expanded: visibleDetails || visiblePasswordDialog
property bool predictableWirelessPassword: !Uuid && Type == PlasmaNM.Enums.Wireless &&
(SecurityType == PlasmaNM.Enums.StaticWep || SecurityType == PlasmaNM.Enums.WpaPsk ||
@@ -48,22 +50,23 @@ PlasmaComponents.ListItem {
property real rxBytes: 0
property real txBytes: 0
- checked: connectionItem.containsMouse
- enabled: true
- height: expanded ? baseHeight + separator.height + expandableComponentLoader.height + (2 * Math.round(units.gridUnit / 3)) : baseHeight
+ height: expanded ? baseHeight + expandableComponentLoader.height + (Uuid ? units.smallSpacing : 0) : baseHeight
ColumnLayout {
anchors.fill: parent
+ spacing: Uuid ? units.smallSpacing * 2 : units.smallSpacing
RowLayout {
- Layout.fillWidth: true
- spacing: Math.round(units.gridUnit / 2)
+ spacing: units.smallSpacing * 2
+ Layout.alignment: Qt.AlignCenter
+ Layout.minimumHeight: stateChangeButton.implicitHeight
+ Layout.topMargin: Uuid ? units.smallSpacing : 0
PlasmaCore.SvgItem {
id: connectionSvgIcon
- Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
- Layout.preferredHeight: units.iconSizes.medium
- Layout.preferredWidth: units.iconSizes.medium
+ Layout.alignment: Qt.AlignLeft
+ Layout.preferredHeight: Uuid ? units.iconSizes.medium : units.iconSizes.smallMedium
+ Layout.preferredWidth: Layout.preferredHeight
elementId: ConnectionIcon
svg: PlasmaCore.Svg {
multipleImages: true
@@ -73,13 +76,13 @@ PlasmaComponents.ListItem {
}
ColumnLayout {
- Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+ Layout.alignment: Qt.AlignLeft
spacing: 0
PlasmaComponents.Label {
+ // TODO Fix bind loop messages for width.
id: connectionNameLabel
Layout.fillWidth: true
- height: paintedHeight
elide: Text.ElideRight
font.weight: ConnectionState == PlasmaNM.Enums.Activated ? Font.DemiBold : Font.Normal
font.italic: ConnectionState == PlasmaNM.Enums.Activating ? true : false
@@ -88,21 +91,21 @@ PlasmaComponents.ListItem {
}
PlasmaComponents.Label {
+ // TODO Fix bind loop messages for width.
id: connectionStatusLabel
Layout.fillWidth: true
- height: paintedHeight
elide: Text.ElideRight
font.pointSize: theme.smallestFont.pointSize
opacity: 0.6
text: itemText()
+ visible: !!Uuid
}
}
PlasmaComponents.BusyIndicator {
id: connectingIndicator
- Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
Layout.preferredHeight: units.iconSizes.medium
- Layout.preferredWidth: units.iconSizes.medium
+ Layout.preferredWidth: Layout.preferredHeight
running: plasmoid.expanded && !stateChangeButton.visible && ConnectionState == PlasmaNM.Enums.Activating
visible: running
opacity: visible
@@ -110,7 +113,6 @@ PlasmaComponents.ListItem {
PlasmaComponents.Button {
id: stateChangeButton
- Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
opacity: connectionView.currentVisibleButtonIndex == index ? 1 : 0
visible: opacity != 0
text: (ConnectionState == PlasmaNM.Enums.Deactivated) ? i18n("Connect") : i18n("Disconnect")
@@ -122,7 +124,6 @@ PlasmaComponents.ListItem {
MouseArea {
acceptedButtons: Qt.RightButton
- Layout.alignment: Qt.AlignTop | Qt.AlignLeft
width: parent.width
height: parent.height
onPressed: {
@@ -133,25 +134,9 @@ PlasmaComponents.ListItem {
}
}
- ColumnLayout {
- Layout.fillHeight: true
- PlasmaCore.SvgItem {
- id: separator
- height: lineSvg.elementSize("horizontal-line").height
- Layout.fillWidth: true
- Layout.maximumHeight: height
- elementId: "horizontal-line"
- svg: PlasmaCore.Svg { id: lineSvg; imagePath: "widgets/line" }
- visible: connectionItem.expanded
- opacity: visible
- }
-
- Loader {
- id: expandableComponentLoader
- Layout.fillHeight: true
- Layout.fillWidth: true
- height: childrenRect.height
- }
+ Loader {
+ id: expandableComponentLoader
+ Layout.fillWidth: true
}
}
@@ -208,8 +193,8 @@ PlasmaComponents.ListItem {
Component {
id: detailsComponent
- Item {
- height: childrenRect.height
+ Column {
+ spacing: units.smallSpacing
PlasmaComponents.TabBar {
id: detailsTabBar
@@ -217,7 +202,6 @@ PlasmaComponents.ListItem {
anchors {
left: parent.left
right: parent.right
- top: parent.top
}
height: visible ? implicitHeight : 0
visible: showSpeed
@@ -242,10 +226,8 @@ PlasmaComponents.ListItem {
DetailsText {
anchors {
left: parent.left
- leftMargin: units.iconSizes.medium
+ leftMargin: units.iconSizes.smallMedium
right: parent.right
- top: detailsTabBar.visible ? detailsTabBar.bottom : parent.top
- topMargin: Math.round(units.gridUnit / 3)
}
details: ConnectionDetails
visible: detailsTabBar.currentTab == detailsTabButton
@@ -255,8 +237,6 @@ PlasmaComponents.ListItem {
anchors {
left: parent.left
right: parent.right
- top: detailsTabBar.visible ? detailsTabBar.bottom : parent.top
- topMargin: Math.round(units.gridUnit / 3)
}
rxBytes: RxBytes
txBytes: TxBytes
@@ -269,19 +249,14 @@ PlasmaComponents.ListItem {
Component {
id: passwordDialogComponent
- Item {
+ Column {
property alias password: passwordField.text
property alias passwordInput: passwordField
- height: childrenRect.height
-
PasswordField {
id: passwordField
- anchors {
- left: parent.left
- right: parent.right
- top: parent.top
- }
+
+ height: implicitHeight - units.smallSpacing
securityType: SecurityType
onAccepted: {
@@ -391,11 +366,8 @@ PlasmaComponents.ListItem {
return VpnState
else
return DeviceState
- } else if (ConnectionState == PlasmaNM.Enums.Deactivated) {
- var result = LastUsed
- if (SecurityType > PlasmaNM.Enums.NoneSecurity)
- result += ", " + SecurityTypeString
- return result
+ } else if (Uuid && ConnectionState == PlasmaNM.Enums.Deactivated) {
+ return LastUsed
} else if (ConnectionState == PlasmaNM.Enums.Activated) {
if (showSpeed) {
var downloadColor = theme.highlightColor
@@ -411,6 +383,7 @@ PlasmaComponents.ListItem {
return i18n("Connected")
}
}
+ return ""
}
onShowSpeedChanged: {
@@ -443,4 +416,17 @@ PlasmaComponents.ListItem {
connectionView.currentVisibleButtonIndex = index
}
}
+
+ onDeactivatedChanged: {
+ // Separator is part of section. Which only shows when available connections exist.
+ // Only need to determine if there is a connection in use, there are always on top, checking first one is enough.
+ if (appletProxyModel.data(appletProxyModel.index(0, 0), 272) !== "Available connections") {
+ if (connectionView.showSeparator != true) {
+ connectionView.showSeparator = true
+ }
+ return
+ }
+ connectionView.showSeparator = false
+ return
+ }
}
diff --git a/applet/contents/ui/DetailsText.qml b/applet/contents/ui/DetailsText.qml
index be89baa8..d24eec13 100644
--- a/applet/contents/ui/DetailsText.qml
+++ b/applet/contents/ui/DetailsText.qml
@@ -25,7 +25,7 @@ import org.kde.plasma.components 2.0 as PlasmaComponents
Item {
property var details: []
- height: repeater.contentHeight
+ height: childrenRect.height + units.smallSpacing
KQuickControlsAddons.Clipboard {
id: clipboard
@@ -50,7 +50,11 @@ Item {
}
Column {
- anchors.fill: parent
+ anchors {
+ left: parent.left
+ right: parent.right
+ }
+ height: childrenRect.height
Repeater {
id: repeater
@@ -64,7 +68,6 @@ Item {
anchors {
left: parent.left
right: parent.right
- topMargin: Math.round(units.gridUnit / 3)
}
height: Math.max(detailNameLabel.height, detailValueLabel.height)
@@ -73,13 +76,13 @@ Item {
anchors {
left: parent.left
- leftMargin: repeater.longestString - paintedWidth + Math.round(units.gridUnit / 2)
- verticalCenter: parent.verticalCenter
+ leftMargin: repeater.longestString - paintedWidth + units.smallSpacing * 2
}
height: paintedHeight
font.pointSize: theme.smallestFont.pointSize
horizontalAlignment: Text.AlignRight
text: details[index*2] + ": "
+ opacity: 0.6
Component.onCompleted: {
if (paintedWidth > repeater.longestString) {
@@ -92,9 +95,9 @@ Item {
id: detailValueLabel
anchors {
+ // TODO Fix bind loop messages for width.
left: detailNameLabel.right
right: parent.right
- verticalCenter: parent.verticalCenter
}
height: paintedHeight
elide: Text.ElideRight
@@ -109,11 +112,6 @@ Item {
}
}
}
-
- // Count total height from added items, somehow contentRect.height doesn't work
- onItemAdded: {
- contentHeight = contentHeight + item.height
- }
}
}
}
diff --git a/applet/contents/ui/Header.qml b/applet/contents/ui/Header.qml
index 63c12f7d..aba576b2 100644
--- a/applet/contents/ui/Header.qml
+++ b/applet/contents/ui/Header.qml
@@ -23,37 +23,26 @@ import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.networkmanagement 0.2 as PlasmaNM
-PlasmaComponents.ListItem {
+ListItem {
id: header
- property alias text: headerLabel.text
+ height: devicesLine.height + units.smallSpacing * 2
- height: headerLabel.height + units.gridUnit; width: parent.width
- sectionDelegate: true
-
- PlasmaNM.EnabledConnections {
- id: enabledConnections
+ PlasmaCore.Svg {
+ id: lineSvg
+ imagePath: "widgets/line"
}
- PlasmaComponents.Label {
- id: headerLabel
-
- anchors.centerIn: parent
- height: paintedHeight
- font.weight: Font.DemiBold
- }
+ PlasmaCore.SvgItem {
+ id: devicesLine
- Component.onCompleted: {
- if (header.text === i18n("Available connections")) {
- connectionView.availableConnectionsVisible = true
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ top: parent.top
+ topMargin: units.smallSpacing
}
- }
-
- Component.onDestruction: {
- connectionView.availableConnectionsVisible = false
- }
-
- onVisibleChanged: {
- connectionView.availableConnectionsVisible = visible
+ elementId: "horizontal-line"
+ width: parent.width - units.gridUnit
+ svg: lineSvg
}
}
diff --git a/applet/contents/ui/ListItem.qml b/applet/contents/ui/ListItem.qml
new file mode 100644
index 00000000..e174fc00
--- /dev/null
+++ b/applet/contents/ui/ListItem.qml
@@ -0,0 +1,47 @@
+/*
+ Copyright 2010 Marco Martin <notmart@gmail.com>
+ Copyright 2020 George Vogiatzis <gvgeo@protonmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+import QtQuick 2.1
+
+Item {
+ id: listItem
+
+ /**
+ * This signal is emitted when there is a click.
+ */
+ signal clicked
+
+ /**
+ * True if the list item contains mouse
+ */
+ property alias containsMouse: itemMouse.containsMouse
+
+ width: parent.width
+ height: parent.height
+
+ MouseArea {
+ id: itemMouse
+ anchors.fill: parent
+ hoverEnabled: true
+
+ onClicked: listItem.clicked()
+ }
+}
diff --git a/applet/contents/ui/PopupDialog.qml b/applet/contents/ui/PopupDialog.qml
index b626e826..20f6c8b2 100644
--- a/applet/contents/ui/PopupDialog.qml
+++ b/applet/contents/ui/PopupDialog.qml
@@ -28,6 +28,8 @@ import org.kde.plasma.networkmanagement 0.2 as PlasmaNM
FocusScope {
id: full
+ property alias toolbarValues: toolbar
+
PlasmaNM.AvailableDevices {
id: availableDevices
}
@@ -57,20 +59,59 @@ FocusScope {
id: scrollView
Layout.fillWidth: true
Layout.fillHeight: true
+ frameVisible: false
+
+ PlasmaExtras.Heading {
+ id: disabledMessage
+ anchors.fill: parent
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ level: 3
+ visible: connectionView.count === 0 && text != ""
+ text: {
+ if (toolbarValues.displayplaneModeMessage) {
+ return i18n("Airplane mode is enabled")
+ }
+ if (toolbarValues.displayWifiMessage) {
+ if (toolbarValues.displayWwanMessage) {
+ return i18n("Wireless and mobile networks are deactivated")
+ }
+ return i18n("Wireless is deactivated")
+ }
+ if (toolbarValues.displayWwanMessage) {
+ return i18n("Mobile network is deactivated")
+ }
+ return ""
+ }
+ }
+
+ PlasmaExtras.Heading {
+ id: message
+ anchors.fill: parent
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ level: 3
+ opacity: connectionView.count === 0 && !disabledMessage.visible
+ // Check connectionView.count again, to avoid a small delay.
+ visible: opacity === 1 && connectionView.count === 0
+ Behavior on opacity { NumberAnimation { duration: 5000 } }
+ text: i18n("No available connections")
+ }
ListView {
id: connectionView
- property bool availableConnectionsVisible: false
property int currentVisibleButtonIndex: -1
+ property bool showSeparator: false
+ spacing: units.smallSpacing
anchors.fill: parent
clip: true
model: appletProxyModel
currentIndex: -1
boundsBehavior: Flickable.StopAtBounds
- section.property: showSections ? "Section" : ""
- section.delegate: Header { text: section }
+ section.property: showSeparator ? "Section" : ""
+ section.delegate: Header { }
delegate: ConnectionItem { }
}
}
diff --git a/applet/contents/ui/Toolbar.qml b/applet/contents/ui/Toolbar.qml
index a57fe0d3..4dd18459 100644
--- a/applet/contents/ui/Toolbar.qml
+++ b/applet/contents/ui/Toolbar.qml
@@ -26,16 +26,18 @@ import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.networkmanagement 0.2 as PlasmaNM
import org.kde.kquickcontrolsaddons 2.0
-GridLayout {
- id: toolbar
+ColumnLayout {
+
+ property var displayWifiMessage: !wifiSwitchButton.checked && wifiSwitchButton.visible
+ property var displayWwanMessage: !wwanSwitchButton.checked && wwanSwitchButton.visible
+ property var displayplaneModeMessage: planeModeSwitchButton.checked && planeModeSwitchButton.visible
+
+ spacing: units.smallSpacing
function closeSearch() {
searchToggleButton.checked = false
}
- rows: 2
- columns: 2
-
PlasmaCore.Svg {
id: lineSvg
imagePath: "widgets/line"
@@ -65,8 +67,7 @@ GridLayout {
id: configuration
}
- Row {
- Layout.fillWidth: true
+ RowLayout {
SwitchButton {
id: wifiSwitchButton
@@ -124,11 +125,10 @@ GridLayout {
initialized = true
}
}
- }
-
- Row {
- Layout.column: 1
+ Item {
+ Layout.fillWidth: true
+ }
PlasmaComponents3.ToolButton {
id: hotspotButton
@@ -208,15 +208,24 @@ GridLayout {
}
}
- PlasmaComponents.TextField {
+ PlasmaCore.SvgItem {
+ id: devicesLine
+
+ Layout.fillWidth: true
+ elementId: "horizontal-line"
+ Layout.leftMargin: - units.smallSpacing * 1.5
+ Layout.rightMargin: - units.smallSpacing * 1.5
+ svg: lineSvg
+ }
+
+ PlasmaComponents.TextField {
id: searchTextField
- Layout.row: 1
- Layout.columnSpan: 2
Layout.fillWidth: true
Layout.leftMargin: units.smallSpacing
Layout.rightMargin: units.smallSpacing
Layout.bottomMargin: units.smallSpacing
+ Layout.topMargin: units.smallSpacing
focus: true
clearButtonShown: true
diff --git a/applet/contents/ui/TrafficMonitor.qml b/applet/contents/ui/TrafficMonitor.qml
index 636b9bce..7651f912 100644
--- a/applet/contents/ui/TrafficMonitor.qml
+++ b/applet/contents/ui/TrafficMonitor.qml
@@ -28,7 +28,7 @@ Item {
property real txBytes: 0
property alias interval: timer.interval
- height: visible ? plotter.height + units.gridUnit : 0
+ height: visible ? plotter.height + plotter.anchors.topMargin + units.smallSpacing : 0
Repeater {
model: 5
@@ -37,9 +37,10 @@ Item {
anchors {
left: parent.left
top: parent.top
- topMargin: Math.round(units.gridUnit / 3) + (index * plotter.height / 5)
+ topMargin: index * plotter.height / 5
}
- height: paintedHeight
+ // Workaround to get paintedHeight.
+ height: theme.mSize(theme.smallestFont).height
font.pointSize: theme.smallestFont.pointSize
lineHeight: 1.75
text: KCoreAddons.Format.formatByteSize(plotter.maxValue * (1 - index / 5)) + i18n("/s")
@@ -57,7 +58,7 @@ Item {
leftMargin: units.gridUnit * 3
right: parent.right
top: parent.top
- topMargin: units.gridUnit
+ topMargin: theme.mSize(theme.smallestFont).height / 2
}
width: units.gridUnit * 20
height: units.gridUnit * 8
diff --git a/applet/contents/ui/main.qml b/applet/contents/ui/main.qml
index c43b0eac..d2eafb7e 100644
--- a/applet/contents/ui/main.qml
+++ b/applet/contents/ui/main.qml
@@ -27,7 +27,6 @@ import QtQuick.Layouts 1.1
Item {
id: mainWindow
- property bool showSections: true
readonly property string kcm: "kcm_networkmanagement.desktop"
readonly property bool kcmAuthorized: KCMShell.authorize(kcm).length == 1