quickshell fixes
This commit is contained in:
1 parent
d2975650fa
commit
32b43bdbb3
68 files changed
+1461
-1047
No files matched your search
@@ -19,7 +19,7 @@ Item {
|
||||
Icon {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: Audio.micIcon
|
||||
color: Audio.micMuted ? Theme.accent : Theme.text
|
||||
color: Audio.micMuted ? Theme.treatmentOffText : Theme.text
|
||||
font.pixelSize: Theme.fsLarge
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ Item {
|
||||
|
||||
Text {
|
||||
text: Audio.micMuted ? "MUTED" : Audio.micPercent + "%"
|
||||
color: Audio.micMuted ? Theme.accent : Theme.subtext
|
||||
color: Audio.micMuted ? Theme.treatmentOffText : Theme.subtext
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.weight: Font.Bold
|
||||
|
||||
@@ -51,7 +51,7 @@ Item {
|
||||
|
||||
Text {
|
||||
text: Audio.muted ? "MUTED" : "LIVE"
|
||||
color: Audio.muted ? Theme.accent : Theme.text
|
||||
color: Audio.muted ? Theme.treatmentOffText : Theme.accent
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.weight: Font.Bold
|
||||
|
||||
@@ -85,12 +85,12 @@ Popout {
|
||||
Repeater {
|
||||
model: Audio.sinks.length > 1 ? Audio.sinks : []
|
||||
|
||||
PickRow {
|
||||
ListRow {
|
||||
required property var modelData
|
||||
width: column.width
|
||||
label: modelData.nickname || modelData.description || modelData.name
|
||||
icon: ""
|
||||
selected: Audio.sink === modelData
|
||||
current: Audio.sink === modelData
|
||||
onClicked: Audio.setSink(modelData)
|
||||
}
|
||||
}
|
||||
@@ -147,7 +147,7 @@ Popout {
|
||||
id: levelIcon
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: levelRow.icon
|
||||
color: levelRow.muted ? Theme.accent : levelRow.accent
|
||||
color: levelRow.muted ? Theme.treatmentOffText : levelRow.accent
|
||||
font.pixelSize: Theme.fsLarge
|
||||
|
||||
TapHandler { onTapped: levelRow.toggled() }
|
||||
@@ -171,7 +171,7 @@ Popout {
|
||||
id: readoutText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: levelRow.readout
|
||||
color: levelRow.muted ? Theme.accent : Theme.subtext
|
||||
color: levelRow.muted ? Theme.treatmentOffText : Theme.subtext
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.weight: Font.Bold
|
||||
@@ -189,94 +189,4 @@ Popout {
|
||||
onMoved: v => levelRow.moved(v)
|
||||
}
|
||||
}
|
||||
|
||||
component SectionRule: Item {
|
||||
property string text: ""
|
||||
implicitHeight: visible ? 18 : 0
|
||||
|
||||
Text {
|
||||
id: sectionLabel
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: parent.text.toUpperCase()
|
||||
color: Theme.muted
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.letterSpacing: 2
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.left: sectionLabel.right
|
||||
anchors.leftMargin: Theme.padS
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
height: 1
|
||||
color: Theme.alpha(Theme.outline, 0.6)
|
||||
}
|
||||
}
|
||||
|
||||
component PickRow: Item {
|
||||
id: pickRow
|
||||
|
||||
property string label: ""
|
||||
property string icon: ""
|
||||
property bool selected: false
|
||||
|
||||
signal clicked()
|
||||
|
||||
implicitHeight: 26
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: pickHover.hovered
|
||||
? Theme.alpha(Theme.primary, 0.14)
|
||||
: (pickRow.selected ? Theme.alpha(Theme.primary, 0.07) : "transparent")
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: 3
|
||||
height: pickRow.selected ? 18 : 0
|
||||
color: Theme.accent
|
||||
|
||||
Behavior on height {
|
||||
NumberAnimation { duration: Theme.durBase; easing.type: Easing.OutBack }
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.padM
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Theme.padS
|
||||
|
||||
Icon {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: pickRow.icon
|
||||
color: pickRow.selected ? Theme.primary : Theme.muted
|
||||
font.pixelSize: Theme.fsBody
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: pickRow.label
|
||||
color: pickRow.selected ? Theme.text : Theme.subtext
|
||||
font.family: Theme.fontDisplay
|
||||
font.pixelSize: Theme.fsSmall
|
||||
font.italic: true
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
||||
|
||||
HoverHandler {
|
||||
id: pickHover
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
onTapped: pickRow.clicked()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -52,8 +52,6 @@ Popout {
|
||||
text: Math.round(Battery.percent) + "%"
|
||||
pixelSize: Theme.fsHuge
|
||||
color: Battery.tint
|
||||
split: 2.5
|
||||
splitOpacity: 0.7
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,8 +66,6 @@ Popout {
|
||||
horizontalAlignment: Text.AlignRight
|
||||
text: Battery.timeLabel
|
||||
pixelSize: Theme.fsBody
|
||||
split: 1.1
|
||||
splitOpacity: 0.55
|
||||
}
|
||||
|
||||
Text {
|
||||
@@ -89,7 +85,7 @@ Popout {
|
||||
text: "Health " + Math.round(Battery.health) + "%"
|
||||
anchors.right: parent.right
|
||||
horizontalAlignment: Text.AlignRight
|
||||
color: Battery.health < 70 ? Theme.warn : Theme.muted
|
||||
color: Battery.health < 70 ? Theme.alarm : Theme.muted
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
+29
-105
@@ -20,7 +20,7 @@ Popout {
|
||||
|
||||
PopoutSurface {
|
||||
anchors.fill: parent
|
||||
tone: Bt.enabled ? Theme.blue : Theme.muted
|
||||
tone: Bt.enabled ? Theme.accent : Theme.muted
|
||||
|
||||
PopoutHeader {
|
||||
id: header
|
||||
@@ -29,7 +29,7 @@ Popout {
|
||||
anchors.right: parent.right
|
||||
title: "Bluetooth"
|
||||
icon: Bt.icon
|
||||
accent: Theme.blue
|
||||
accent: Theme.accent
|
||||
subtitle: Bt.adapter ? Bt.adapter.name : "NO ADAPTER"
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ Popout {
|
||||
P5Button {
|
||||
text: Bt.enabled ? "On" : "Off"
|
||||
icon: Bt.enabled ? "" : ""
|
||||
accent: Bt.enabled ? Theme.blue : Theme.muted
|
||||
accent: Bt.enabled ? Theme.accent : Theme.muted
|
||||
onClicked: Bt.toggle()
|
||||
}
|
||||
|
||||
@@ -55,17 +55,13 @@ Popout {
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
SectionRule {
|
||||
id: listLabel
|
||||
anchors.top: controls.bottom
|
||||
anchors.topMargin: Theme.padM
|
||||
anchors.left: parent.left
|
||||
text: Bt.devices.length > 0 ? "DEVICES" : "NO DEVICES"
|
||||
color: Theme.muted
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.letterSpacing: 2
|
||||
renderType: Text.NativeRendering
|
||||
anchors.right: parent.right
|
||||
text: Bt.devices.length > 0 ? "Devices" : "No devices"
|
||||
}
|
||||
|
||||
ListView {
|
||||
@@ -78,113 +74,41 @@ Popout {
|
||||
spacing: 2
|
||||
model: Bt.devices
|
||||
|
||||
delegate: Item {
|
||||
delegate: ListRow {
|
||||
id: devRow
|
||||
|
||||
required property BluetoothDevice modelData
|
||||
|
||||
width: ListView.view.width
|
||||
height: 34
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: devHover.hovered
|
||||
? Theme.alpha(Theme.blue, 0.16)
|
||||
: (devRow.modelData.connected ? Theme.alpha(Theme.blue, 0.08) : "transparent")
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: 3
|
||||
height: devRow.modelData.connected ? 22 : 0
|
||||
color: Theme.accent
|
||||
|
||||
Behavior on height {
|
||||
NumberAnimation { duration: Theme.durBase; easing.type: Easing.OutBack }
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.padM
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Theme.padS
|
||||
|
||||
Icon {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: Bt.deviceIcon(devRow.modelData)
|
||||
color: devRow.modelData.connected ? Theme.blue : Theme.subtext
|
||||
font.pixelSize: Theme.fsLarge
|
||||
}
|
||||
|
||||
Column {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: -2
|
||||
|
||||
Text {
|
||||
text: Bt.deviceLabel(devRow.modelData)
|
||||
color: devRow.modelData.connected ? Theme.text : Theme.subtext
|
||||
font.family: Theme.fontDisplay
|
||||
font.pixelSize: Theme.fsSmall
|
||||
font.italic: true
|
||||
font.weight: devRow.modelData.connected ? Font.Black : Font.Medium
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Text {
|
||||
text: {
|
||||
if (devRow.modelData.pairing) return "pairing…";
|
||||
if (devRow.modelData.connected) return "connected";
|
||||
if (devRow.modelData.paired || devRow.modelData.bonded) return "paired";
|
||||
return devRow.modelData.address;
|
||||
}
|
||||
color: Theme.muted
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: 8
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
||||
icon: Bt.deviceIcon(modelData)
|
||||
label: Bt.deviceLabel(modelData)
|
||||
detail: {
|
||||
if (modelData.pairing) return "pairing…";
|
||||
if (modelData.connected) return "connected";
|
||||
if (modelData.paired || modelData.bonded) return "paired";
|
||||
return modelData.address;
|
||||
}
|
||||
current: modelData.connected
|
||||
onClicked: Bt.toggleDevice(modelData)
|
||||
onRightClicked: if (modelData.paired) modelData.forget()
|
||||
|
||||
// Device battery, where BlueZ exposes it.
|
||||
Row {
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: Theme.padS
|
||||
Icon {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: 3
|
||||
visible: devRow.modelData.batteryAvailable
|
||||
|
||||
Icon {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: ""
|
||||
color: devRow.modelData.battery > 0.25 ? Theme.ok : Theme.warn
|
||||
font.pixelSize: Theme.fsSmall
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: Math.round(devRow.modelData.battery * 100) + "%"
|
||||
color: Theme.subtext
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
text: ""
|
||||
color: devRow.modelData.battery > 0.25 ? Theme.subtext : Theme.alarm
|
||||
font.pixelSize: Theme.fsSmall
|
||||
}
|
||||
|
||||
HoverHandler {
|
||||
id: devHover
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
onTapped: Bt.toggleDevice(devRow.modelData)
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.RightButton
|
||||
onTapped: if (devRow.modelData.paired) devRow.modelData.forget()
|
||||
Text {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: devRow.modelData.batteryAvailable
|
||||
text: Math.round(devRow.modelData.battery * 100) + "%"
|
||||
color: Theme.subtext
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import "root:/config"
|
||||
import "root:/components"
|
||||
import "root:/services"
|
||||
|
||||
// Month grid with the current day slashed in crimson, plus uptime and a couple
|
||||
// Month grid with the current day slashed in the accent, plus uptime and a couple
|
||||
// of world clocks.
|
||||
Popout {
|
||||
id: root
|
||||
@@ -99,9 +99,9 @@ Popout {
|
||||
width: dayNames.width / 7
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: modelData
|
||||
color: index >= 5 ? Theme.alpha(Theme.accent, 0.8) : Theme.muted
|
||||
color: index >= 5 ? Theme.subtext : Theme.muted
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: 8
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.letterSpacing: 1
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
@@ -126,7 +126,7 @@ Popout {
|
||||
width: grid.width / 7
|
||||
height: 30
|
||||
|
||||
// Today gets a leaning crimson slab.
|
||||
// Today gets a leaning accent slab, inked like every selected slab.
|
||||
Skew {
|
||||
anchors.centerIn: parent
|
||||
width: 26
|
||||
@@ -139,7 +139,7 @@ Popout {
|
||||
anchors.centerIn: parent
|
||||
text: cell.modelData.day
|
||||
color: {
|
||||
if (cell.modelData.today) return Theme.text;
|
||||
if (cell.modelData.today) return Theme.treatmentSelectedText;
|
||||
if (!cell.modelData.inMonth) return Theme.alpha(Theme.muted, 0.45);
|
||||
return Theme.subtext;
|
||||
}
|
||||
@@ -167,7 +167,7 @@ Popout {
|
||||
text: "UPTIME"
|
||||
color: Theme.muted
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: 8
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.letterSpacing: 1.5
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
@@ -191,7 +191,7 @@ Popout {
|
||||
text: "TOKYO"
|
||||
color: Theme.muted
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: 8
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.letterSpacing: 1.5
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
@@ -226,9 +226,9 @@ Popout {
|
||||
|
||||
Skew {
|
||||
anchors.fill: parent
|
||||
color: stepHover.hovered ? Theme.alpha(Theme.accent, 0.25) : "transparent"
|
||||
color: stepHover.hovered ? Theme.treatmentHoverFill : "transparent"
|
||||
borderWidth: 1
|
||||
borderColor: Theme.alpha(Theme.outline, 0.7)
|
||||
borderColor: stepHover.hovered ? Theme.treatmentHoverMark : Theme.alpha(Theme.outline, 0.7)
|
||||
}
|
||||
|
||||
Icon {
|
||||
|
||||
@@ -80,7 +80,7 @@ Popout {
|
||||
preferredRendererType: Shape.CurveRenderer
|
||||
ShapePath {
|
||||
fillColor: Theme.surface
|
||||
strokeColor: Theme.alpha(Theme.primary, 0.5)
|
||||
strokeColor: Theme.surfaceAlt
|
||||
strokeWidth: 2
|
||||
PathPolyline {
|
||||
path: Geom.chamfer(Geom.parallelogram(108, 108, 0.1), 18, [1, 3])
|
||||
@@ -93,7 +93,7 @@ Popout {
|
||||
visible: art.status !== Image.Ready
|
||||
text: Media.sourceIcon
|
||||
font.pixelSize: 42
|
||||
color: Theme.alpha(Theme.primary, 0.7)
|
||||
color: Theme.muted
|
||||
}
|
||||
|
||||
// Spinning rule around the art while playing.
|
||||
@@ -265,14 +265,14 @@ Popout {
|
||||
: (chip.activeFocus
|
||||
? Theme.treatmentFocusFill
|
||||
: (chip.current
|
||||
? Theme.alpha(Theme.primary, 0.22)
|
||||
: (chipHover.hovered ? Theme.alpha(Theme.primary, 0.1) : "transparent")))
|
||||
? Theme.treatmentActiveFill
|
||||
: (chipHover.hovered ? Theme.treatmentHoverFill : "transparent")))
|
||||
borderWidth: chip.activeFocus ? Theme.stroke : 1
|
||||
borderColor: !chip.enabled
|
||||
? Theme.treatmentDisabledMark
|
||||
: (chip.activeFocus
|
||||
? Theme.treatmentFocusMark
|
||||
: (chip.current ? Theme.primary : Theme.alpha(Theme.outline, 0.7)))
|
||||
: (chip.current ? Theme.treatmentActiveMark : Theme.alpha(Theme.outline, 0.7)))
|
||||
}
|
||||
|
||||
Text {
|
||||
@@ -283,7 +283,7 @@ Popout {
|
||||
? Theme.treatmentDisabledText
|
||||
: (chip.activeFocus
|
||||
? Theme.treatmentFocusText
|
||||
: (chip.current ? Theme.text : Theme.muted))
|
||||
: (chip.current || chipHover.hovered ? Theme.text : Theme.subtext))
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
renderType: Text.NativeRendering
|
||||
@@ -334,14 +334,17 @@ Popout {
|
||||
color: {
|
||||
if (!tb.enabled) return "transparent";
|
||||
if (tb.activeFocus) return Theme.treatmentFocusFill;
|
||||
if (tbHover.hovered) return tb.primary ? Theme.accent : Theme.alpha(Theme.primary, 0.22);
|
||||
return tb.primary ? Theme.alpha(Theme.primary, 0.18) : "transparent";
|
||||
// The play button is the one solid control on the panel: a
|
||||
// surface slab at rest, the accent slab under the pointer. The
|
||||
// others stay bare until hovered.
|
||||
if (tbHover.hovered) return tb.primary ? Theme.accent : Theme.treatmentHoverFill;
|
||||
return tb.primary ? Theme.surface : "transparent";
|
||||
}
|
||||
borderWidth: tb.activeFocus ? Theme.stroke * 2 : (tb.primary ? 2 : 1)
|
||||
borderColor: tb.enabled
|
||||
? (tb.activeFocus
|
||||
? Theme.treatmentFocusMark
|
||||
: (tbHover.hovered ? Theme.text : Theme.alpha(Theme.primary, 0.6)))
|
||||
: (tbHover.hovered ? Theme.treatmentHoverMark : (tb.primary ? Theme.overlay : Theme.surfaceAlt)))
|
||||
: Theme.alpha(Theme.outline, 0.4)
|
||||
|
||||
Behavior on color {
|
||||
@@ -356,8 +359,9 @@ Popout {
|
||||
color: {
|
||||
if (!tb.enabled) return Theme.alpha(Theme.muted, 0.5);
|
||||
if (tb.activeFocus) return Theme.treatmentFocusText;
|
||||
if (tbHover.hovered && tb.primary) return Theme.text;
|
||||
return Theme.primary;
|
||||
// Ink on the accent slab. White on light blue was barely 2:1.
|
||||
if (tbHover.hovered && tb.primary) return Theme.ink;
|
||||
return Theme.text;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -76,17 +76,13 @@ Popout {
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
SectionRule {
|
||||
id: apsLabel
|
||||
anchors.top: controls.bottom
|
||||
anchors.topMargin: Theme.padM
|
||||
anchors.left: parent.left
|
||||
text: Net.scanning ? "SCANNING…" : "NETWORKS"
|
||||
color: Theme.muted
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.letterSpacing: 2
|
||||
renderType: Text.NativeRendering
|
||||
anchors.right: parent.right
|
||||
text: Net.scanning ? "Scanning…" : "Networks"
|
||||
}
|
||||
|
||||
ListView {
|
||||
@@ -99,94 +95,44 @@ Popout {
|
||||
spacing: 2
|
||||
model: Net.wifiNetworks
|
||||
|
||||
delegate: Item {
|
||||
delegate: ListRow {
|
||||
id: apRow
|
||||
|
||||
required property var modelData
|
||||
|
||||
width: ListView.view.width
|
||||
height: 30
|
||||
icon: Net.signalIcon(modelData.signalStrength ?? 0)
|
||||
label: modelData.name
|
||||
current: modelData.connected
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: apHover.hovered
|
||||
? Theme.alpha(Theme.primary, 0.14)
|
||||
: (apRow.modelData.connected ? Theme.alpha(Theme.primary, 0.07) : "transparent")
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: 3
|
||||
height: apRow.modelData.connected ? 20 : 0
|
||||
color: Theme.accent
|
||||
|
||||
Behavior on height {
|
||||
NumberAnimation { duration: Theme.durBase; easing.type: Easing.OutBack }
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.padM
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Theme.padS
|
||||
|
||||
Icon {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: Net.signalIcon(apRow.modelData.signalStrength ?? 0)
|
||||
color: apRow.modelData.connected ? Theme.primary : Theme.subtext
|
||||
font.pixelSize: Theme.fsBody
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: apRow.modelData.name
|
||||
color: apRow.modelData.connected ? Theme.text : Theme.subtext
|
||||
font.family: Theme.fontDisplay
|
||||
font.pixelSize: Theme.fsSmall
|
||||
font.italic: true
|
||||
font.weight: apRow.modelData.connected ? Font.Black : Font.Medium
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Icon {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: Net.secured(apRow.modelData)
|
||||
text: ""
|
||||
color: Theme.muted
|
||||
font.pixelSize: Theme.fsMicro
|
||||
onClicked: {
|
||||
if (apRow.modelData.connected) {
|
||||
apRow.modelData.disconnect();
|
||||
} else {
|
||||
// Saved networks connect directly; new secured ones
|
||||
// need a passphrase, which NetworkManager's own
|
||||
// agent will prompt for.
|
||||
apRow.modelData.connect();
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: Theme.padS
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: apRow.modelData.known ? "SAVED" : ""
|
||||
visible: apRow.modelData.known
|
||||
text: "SAVED"
|
||||
color: Theme.muted
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: 8
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.letterSpacing: 1
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
HoverHandler {
|
||||
id: apHover
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
onTapped: {
|
||||
if (apRow.modelData.connected) {
|
||||
apRow.modelData.disconnect();
|
||||
} else {
|
||||
// Saved networks connect directly; new secured ones
|
||||
// need a passphrase, which NetworkManager's own
|
||||
// agent will prompt for.
|
||||
apRow.modelData.connect();
|
||||
}
|
||||
}
|
||||
Icon {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: Net.secured(apRow.modelData)
|
||||
text: ""
|
||||
color: Theme.muted
|
||||
font.pixelSize: Theme.fsSmall
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -228,7 +174,7 @@ Popout {
|
||||
text: rateBlock.label.toUpperCase()
|
||||
color: Theme.muted
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: 8
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.letterSpacing: 1.5
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ Popout {
|
||||
P5Button {
|
||||
text: Notifs.dnd ? "Silenced" : "Silence"
|
||||
icon: Notifs.dnd ? "" : ""
|
||||
accent: Notifs.dnd ? Theme.accent : Theme.primary
|
||||
accent: Notifs.dnd ? Theme.treatmentOffText : Theme.primary
|
||||
onClicked: Notifs.toggleDnd()
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ import QtQuick
|
||||
import "root:/config"
|
||||
import "root:/components"
|
||||
|
||||
// Title bar for a popout: glyph, split-ink heading, right-aligned status text,
|
||||
// and a crimson rule with a chopped tail.
|
||||
// Title bar for a popout: glyph, print-shadowed heading, right-aligned status
|
||||
// text, and a rule with a chopped accent tail.
|
||||
Item {
|
||||
id: root
|
||||
|
||||
@@ -32,8 +32,6 @@ Item {
|
||||
text: root.title.toUpperCase()
|
||||
pixelSize: Theme.fsLarge
|
||||
letterSpacing: 1.5
|
||||
split: 1.3
|
||||
splitOpacity: 0.7
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +41,7 @@ Item {
|
||||
anchors.topMargin: 6
|
||||
visible: root.subtitle !== ""
|
||||
text: root.subtitle
|
||||
color: Theme.muted
|
||||
color: Theme.subtext
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: Theme.fsMicro
|
||||
font.letterSpacing: 1
|
||||
|
||||
@@ -10,7 +10,11 @@ P5Panel {
|
||||
|
||||
fill: Theme.mantle
|
||||
fillOpacity: 0.97
|
||||
border: Theme.alpha(tone, 0.75)
|
||||
// A neutral keyline. `tone` used to colour the whole border at 75%, and
|
||||
// since most panels pass the resting text colour that put a pale 2px frame
|
||||
// around every popout — the loudest thing on screen for no reason. The
|
||||
// tone lives in the slash now; the frame is structure.
|
||||
border: Theme.surfaceAlt
|
||||
borderWidth: Theme.stroke
|
||||
halftone: textured
|
||||
halftoneColor: tone
|
||||
|
||||
@@ -107,7 +107,7 @@ Column {
|
||||
height: row.entry.isSeparator ? 0 : 26
|
||||
visible: !row.entry.isSeparator
|
||||
|
||||
// Hover is a solid crimson block, the same statement the
|
||||
// Hover is a solid accent block, the same statement the
|
||||
// workspace ticks and the rail icons make.
|
||||
Skew {
|
||||
anchors.fill: parent
|
||||
|
||||
Reference in new issue
Block a user