summaryrefslogtreecommitdiff
path: root/bar/Network.qml
blob: 940f5837df75679610d87ea1555ccaa63fd882f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import QtQuick
import QtQuick.Layouts

import qs.services as Services
import qs.components
import qs.config

Item {
	id: root
	property int down: Services.NetworkUsage.down
	property string downUnit: Services.NetworkUsage.downUnit
	property int up: Services.NetworkUsage.up
	property string upUnit: Services.NetworkUsage.upUnit

	property int significantUsage: 30
	property string usageUnit: "M"

	property bool isCollapsed: true

	implicitWidth: container.implicitWidth
	implicitHeight: container.implicitHeight - General.rectMargin

	IRect {
		id: container
		anchors {
			fill: parent
			verticalCenter: parent.verticalCenter
			horizontalCenter: parent.horizontalCenter
		}

		implicitWidth: layout.implicitWidth + General.rectMargin * 2
		implicitHeight: Bar.height
		color: Colors.accent
		radius: Style.rounding.large

		RowLayout {
			id: layout
			anchors {
				verticalCenter: parent.verticalCenter
				horizontalCenter: parent.horizontalCenter
			}
			spacing: Bar.resourceIconTextSpacing

			Item {
				Layout.fillWidth: true
			}

			Icon {
				visible: root.isCollapsed
				text: Services.Network.state
			}
			IText {
				visible: !root.isCollapsed
				text: Services.Network.networkStrength
				renderType: Text.CurveRendering // it's not static and is rapidly updated
			}

			ColumnLayout {
				// spacing: Bar.resourceIconTextSpacing / 2
				spacing: 0
				Item {
					Layout.fillHeight: true
					Layout.fillWidth: true
				}
				IText {
					animate: true
					Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
					text: root.down + root.downUnit
					color: root.downUnit == root.usageUnit && root.down > root.significantUsage ? Colors.cyan : Colors.foreground2
					renderType: Text.CurveRendering // it's not static and is rapidly updated
				}
				Icon {
					Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
					text: Icons.resource.network.download
					iconSize: Style.font.size.normal
					color: root.downUnit == root.usageUnit && root.down > root.significantUsage ? Colors.cyan : Colors.foreground2
				}
				Item {
					Layout.fillHeight: true
					Layout.fillWidth: true
				}
			}
			ColumnLayout {
				// spacing: Bar.resourceIconTextSpacing / 2
				spacing: 0
				Item {
					Layout.fillHeight: true
					Layout.fillWidth: true
				}
				Icon {
					Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
					text: Icons.resource.network.upload
					iconSize: Style.font.size.normal
					color: root.upUnit == root.usageUnit && root.up > root.significantUsage ? Colors.cyan : Colors.foreground2
				}
				IText {
					animate: true
					Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
					text: root.up + root.upUnit
					color: root.upUnit == root.usageUnit && root.up > root.significantUsage ? Colors.cyan : Colors.foreground2
					renderType: Text.CurveRendering // it's not static and is rapidly updated
				}
				Item {
					Layout.fillHeight: true
					Layout.fillWidth: true
				}
			}

			Item {
				Layout.fillWidth: true
			}
		}
	}
	MouseArea {
		anchors.fill: container
		cursorShape: Qt.PointingHandCursor
		onClicked: {
			root.isCollapsed = !root.isCollapsed;
		}
	}
}