mirror of
https://gitgud.io/wackyideas/aerothemeplasma.git
synced 2026-06-19 03:45:50 +00:00
180 lines
6.1 KiB
QML
180 lines
6.1 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import QtQuick.Controls
|
|
|
|
import org.kde.coreaddons as KCoreAddons
|
|
import org.kde.kcmutils as KCMUtils
|
|
|
|
import org.kde.kirigami as Kirigami
|
|
import org.kde.plasma.components as PlasmaComponents3
|
|
import org.kde.plasma.extras as PlasmaExtras
|
|
import org.kde.plasma.networkmanagement as PlasmaNM
|
|
import org.kde.plasma.plasmoid
|
|
|
|
Window {
|
|
id: detailsWindow
|
|
title: networkName + " Status"
|
|
color: "#f0f0f0"
|
|
property color borderColor: "#898c95"
|
|
property alias tabBar: tabs
|
|
minimumWidth: 360
|
|
maximumWidth: 360
|
|
minimumHeight: 420
|
|
maximumHeight: 420
|
|
|
|
property var devicePath: null
|
|
property var connectionModel: null
|
|
property string networkName: ""
|
|
property string uuid: ""
|
|
property var connectionState: PlasmaNM.Enums.Deactivated
|
|
property var type: PlasmaNM.Enums.Other
|
|
property var speedVisible: connectionState === PlasmaNM.Enums.Activated &&
|
|
(type === PlasmaNM.Enums.Wired ||
|
|
type === PlasmaNM.Enums.Wireless ||
|
|
type === PlasmaNM.Enums.Gsm ||
|
|
type === PlasmaNM.Enums.Cdma)
|
|
|
|
property var detailsHeight: detailsLoader.item.implicitHeight
|
|
onDetailsHeightChanged: {
|
|
if(217+detailsLoader.item.implicitHeight > 420) {
|
|
maximumHeight = 217+detailsLoader.item.implicitHeight;
|
|
minimumHeight = maximumHeight;
|
|
height = maximumHeight;
|
|
}
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
handler.requestScan();
|
|
detailsLoader.setSource("NetworkDetailsPage.qml", {
|
|
networkName: detailsWindow.networkName,
|
|
uuid: detailsWindow.uuid,
|
|
connectionModel: detailsWindow.connectionModel
|
|
});
|
|
if (detailsLoader.status === Loader.Error) {
|
|
console.warn("Cannot create details page component");
|
|
return;
|
|
}
|
|
|
|
speedLoader.setSource("SpeedGraphPage.qml", {
|
|
networkName: detailsWindow.networkName,
|
|
uuid: detailsWindow.uuid,
|
|
connectionModel: detailsWindow.connectionModel
|
|
});
|
|
if (speedLoader.status === Loader.Error) {
|
|
console.warn("Cannot create speed graph component");
|
|
return;
|
|
}
|
|
}
|
|
TabBar {
|
|
id: tabs
|
|
anchors.top: parent.top;
|
|
anchors.left: parent.left;
|
|
anchors.right: parent.right;
|
|
height: 21
|
|
anchors.leftMargin: Kirigami.Units.mediumSpacing
|
|
anchors.rightMargin: Kirigami.Units.mediumSpacing
|
|
z: 1
|
|
//width: parent.width
|
|
TabButton {
|
|
width: contentItem.implicitWidth + Kirigami.Units.largeSpacing*2
|
|
height: 21
|
|
bottomPadding: 2
|
|
topPadding: isCurrentIndex ? 0 : Kirigami.Units.smallSpacing+1
|
|
spacing: 0
|
|
property bool isCurrentIndex: (TabBar.index === tabs.currentIndex)
|
|
contentItem: Text { // All this just to make the sizing correct
|
|
text: "General"
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
}
|
|
Rectangle { // To render the bottom border when the tab is not active
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.bottom: parent.bottom
|
|
anchors.bottomMargin: 1
|
|
height: 1
|
|
color: detailsWindow.borderColor
|
|
visible: !parent.isCurrentIndex
|
|
}
|
|
}
|
|
TabButton {
|
|
width: contentItem.implicitWidth + Kirigami.Units.largeSpacing*2
|
|
height: 21
|
|
bottomPadding: 2
|
|
topPadding: isCurrentIndex ? 0 : Kirigami.Units.smallSpacing+1
|
|
property bool isCurrentIndex: (TabBar.index === tabs.currentIndex)
|
|
spacing: 0
|
|
visible: detailsWindow.speedVisible
|
|
Rectangle {
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.bottom: parent.bottom
|
|
anchors.bottomMargin: 1
|
|
height: 1
|
|
color: detailsWindow.borderColor
|
|
visible: !parent.isCurrentIndex
|
|
}
|
|
contentItem: Text {
|
|
text: "Speed"
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
}
|
|
}
|
|
}
|
|
Rectangle {
|
|
id: background
|
|
anchors.top: tabs.bottom
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.bottom: closeButton.top
|
|
anchors.leftMargin: Kirigami.Units.mediumSpacing
|
|
anchors.rightMargin: Kirigami.Units.mediumSpacing
|
|
anchors.bottomMargin: Kirigami.Units.mediumSpacing+1
|
|
anchors.topMargin: Kirigami.Units.smallSpacing/2
|
|
z: -1
|
|
border.color: detailsWindow.borderColor
|
|
border.width: 1
|
|
}
|
|
StackLayout {
|
|
id: windowStack
|
|
anchors.fill: background
|
|
anchors.margins: 14
|
|
currentIndex: tabs.currentIndex
|
|
Loader {
|
|
id: detailsLoader
|
|
asynchronous: true
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
}
|
|
Loader {
|
|
id: speedLoader
|
|
asynchronous: true
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
}
|
|
}
|
|
Button {
|
|
id: closeButton
|
|
anchors.bottom: parent.bottom
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: Kirigami.Units.largeSpacing-1
|
|
anchors.bottomMargin: Kirigami.Units.largeSpacing
|
|
width: 73
|
|
height: 21
|
|
text: "Close"
|
|
onClicked: {
|
|
detailsWindow.close();
|
|
}
|
|
Keys.onPressed: event => {
|
|
if(event.key == Qt.Key_Enter || event.key == Qt.Key_Return) {
|
|
detailsWindow.close();
|
|
event.accepted = true;
|
|
}
|
|
}
|
|
}
|
|
onClosing: {
|
|
detailsLoader.source = "";
|
|
speedLoader.source = "";
|
|
mainWindow.windowManager.removeWindow(detailsWindow.networkName+detailsWindow.uuid);
|
|
}
|
|
}
|