Require textFormat declaration for all Text elements.

This commit is contained in:
Erik Melton
2026-08-26 16:14:51 +02:00
parent 9301092404
commit 3af7675a10
42 changed files with 386 additions and 1 deletions
+12
View File
@@ -434,6 +434,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
anchors.centerIn: parent
visible: heroMarkImage.status !== Image.Ready
text: button.text
@@ -504,6 +505,7 @@ Panel {
Text {
id: statusText
textFormat: Text.PlainText
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
@@ -558,6 +560,7 @@ Panel {
Text {
id: balanceValue
textFormat: Text.PlainText
text: root.balance ? root.formatMoney(root.balance.remaining, root.balance.currency) : ""
color: root.balanceAlarming ? root.urgent : root.foreground
font.family: root.fontFamily
@@ -575,6 +578,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
visible: text !== ""
width: parent.width
text: root.balanceDetailText(root.balance)
@@ -680,6 +684,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
visible: text !== ""
width: parent.width
topPadding: Style.space(2)
@@ -710,6 +715,7 @@ Panel {
Text {
id: limitLabel
textFormat: Text.PlainText
// A model-scoped window is titled after its model, and those names run
// long enough to reach the percentage, so the title gives way first.
text: limitRow.window ? limitRow.window.title : ""
@@ -725,6 +731,7 @@ Panel {
Text {
id: limitValue
textFormat: Text.PlainText
text: limitRow.window && limitRow.window.percent >= 0
? Math.round(limitRow.window.percent * 100) + "%"
: "—"
@@ -744,6 +751,7 @@ Panel {
Text {
id: resetText
textFormat: Text.PlainText
width: parent.width
text: {
var remainingMs = root.resetMsFor(limitRow.window)
@@ -798,6 +806,7 @@ Panel {
Text {
id: dayLabel
textFormat: Text.PlainText
text: root.dayLabel(dayRow.day ? dayRow.day.date : "", dayRow.today)
color: dayRow.today ? root.foreground : root.dim
font.family: root.fontFamily
@@ -835,6 +844,7 @@ Panel {
Text {
id: dayValue
textFormat: Text.PlainText
text: usage.formatTokenCount(dayRow.day ? Number(dayRow.day.messageCount || 0) : 0)
color: dayRow.today ? root.foreground : root.dim
font.family: root.fontFamily
@@ -890,6 +900,7 @@ Panel {
Text {
id: modelName
textFormat: Text.PlainText
text: modelRow.row ? modelRow.row.name : ""
color: root.foreground
font.family: root.fontFamily
@@ -904,6 +915,7 @@ Panel {
Text {
id: modelTokens
textFormat: Text.PlainText
text: modelRow.row ? usage.formatTokenCount(modelRow.row.total) : ""
color: root.dim
font.family: root.fontFamily
+1
View File
@@ -1090,6 +1090,7 @@ Item {
Text {
id: tooltipLabel
textFormat: Text.PlainText
anchors.centerIn: parent
text: root.tooltipText
color: Color.tooltip.text
@@ -29,6 +29,7 @@ BarWidget {
Text {
id: labelText
textFormat: Text.PlainText
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
width: parent.width
+4
View File
@@ -467,6 +467,7 @@ BarWidget {
}
Text {
textFormat: Text.PlainText
anchors.verticalCenter: parent.verticalCenter
anchors.left: rowIcon.right
anchors.leftMargin: Style.space(10)
@@ -577,6 +578,7 @@ BarWidget {
}
Text {
textFormat: Text.PlainText
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: Style.space(28)
@@ -681,6 +683,7 @@ BarWidget {
}
Text {
textFormat: Text.PlainText
visible: !menuRow.modelData.isSeparator && menuRow.modelData.buttonType !== QsMenuButtonType.None
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
@@ -709,6 +712,7 @@ BarWidget {
}
Text {
textFormat: Text.PlainText
visible: !menuRow.modelData.isSeparator
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
+4
View File
@@ -432,6 +432,7 @@ Item {
color: "transparent"
Text {
textFormat: Text.PlainText
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
@@ -500,6 +501,7 @@ Item {
}
Text {
textFormat: Text.PlainText
width: parent.width - (parent.parent.previewImage.length > 0 ? parent.height + parent.spacing : 0)
height: parent.height
text: parent.parent.previewText
@@ -546,6 +548,7 @@ Item {
}
Text {
textFormat: Text.PlainText
visible: parent.activeRow && !parent.activeRow.previewImage
anchors.fill: parent
anchors.leftMargin: root.contentMargin
@@ -593,6 +596,7 @@ Item {
}
Text {
textFormat: Text.PlainText
text: root.history.length === 0 ? "Clipboard is empty" : "No matches for “" + root.filterText + "”"
color: root.foreground
opacity: 0.7
@@ -519,12 +519,14 @@ Item {
width: Style.space(140)
spacing: Style.space(1)
Text {
textFormat: Text.PlainText
text: "Style.font." + modelData.key
color: root.foreground
font.family: root.fontFamily
font.pixelSize: Style.font.bodySmall
}
Text {
textFormat: Text.PlainText
text: modelData.size + " px"
color: Qt.darker(root.foreground, 1.5)
font.family: root.fontFamily
@@ -534,6 +536,7 @@ Item {
Text {
id: sampleText
textFormat: Text.PlainText
anchors.left: metaCol.right
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
@@ -574,6 +577,7 @@ Item {
font.pixelSize: Style.font.bodySmall
}
Text {
textFormat: Text.PlainText
text: Style.font.family
color: root.foreground
font.family: root.fontFamily
@@ -587,6 +591,7 @@ Item {
font.pixelSize: Style.font.bodySmall
}
Text {
textFormat: Text.PlainText
text: Style.font.resolvedFamily
color: root.foreground
font.family: root.fontFamily
@@ -600,6 +605,7 @@ Item {
font.pixelSize: Style.font.bodySmall
}
Text {
textFormat: Text.PlainText
text: Style.font.baseSize + " px"
color: root.foreground
font.family: root.fontFamily
@@ -613,6 +619,7 @@ Item {
font.pixelSize: Style.font.bodySmall
}
Text {
textFormat: Text.PlainText
text: Style.bar.sizeHorizontal + " px"
color: root.foreground
font.family: root.fontFamily
@@ -626,6 +633,7 @@ Item {
font.pixelSize: Style.font.bodySmall
}
Text {
textFormat: Text.PlainText
text: Style.bar.sizeVertical + " px"
color: root.foreground
font.family: root.fontFamily
@@ -639,6 +647,7 @@ Item {
font.pixelSize: Style.font.bodySmall
}
Text {
textFormat: Text.PlainText
text: Style.spacing.scale.toFixed(2)
color: root.foreground
font.family: root.fontFamily
@@ -652,6 +661,7 @@ Item {
font.pixelSize: Style.font.bodySmall
}
Text {
textFormat: Text.PlainText
text: Style.spacing.panelPadding + " px"
color: root.foreground
font.family: root.fontFamily
@@ -818,6 +828,7 @@ Item {
Text {
id: csLabel
textFormat: Text.PlainText
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
@@ -1273,6 +1284,7 @@ Item {
}
Text {
textFormat: Text.PlainText
text: Math.round((demoSlider.dragging ? demoSlider.liveValue : sliderRow.demoVolume) * 100) + "%"
color: root.foreground
font.family: root.fontFamily
+3
View File
@@ -247,6 +247,7 @@ Item {
color: "transparent"
Text {
textFormat: Text.PlainText
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
@@ -284,6 +285,7 @@ Item {
color: hasCursor ? root.selectedBackground : "transparent"
Text {
textFormat: Text.PlainText
text: parent.emoji
font.family: root.fontFamily
font.pixelSize: Style.font.display
@@ -326,6 +328,7 @@ Item {
}
Text {
textFormat: Text.PlainText
text: "No matches for “" + root.filterText + "”"
color: root.foreground
opacity: 0.7
@@ -545,6 +545,7 @@ Item {
Text {
id: selectedLabel
textFormat: Text.PlainText
visible: root.showLabels
anchors.top: carousel.bottom
anchors.topMargin: Style.space(16)
@@ -561,6 +562,7 @@ Item {
}
Text {
textFormat: Text.PlainText
visible: root.filterable && root.filterText
anchors.top: selectedLabel.bottom
anchors.topMargin: Style.space(8)
+1
View File
@@ -184,6 +184,7 @@ Item {
}
Text {
textFormat: Text.PlainText
anchors.fill: passwordInput
text: root.authenticatingPassword ? "Checking…" : (root.failureMessage.length > 0 ? root.failureMessage : root.placeholderText)
visible: passwordInput.text.length === 0
+7
View File
@@ -1199,6 +1199,7 @@ Item {
color: "transparent"
Text {
textFormat: Text.PlainText
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
@@ -1287,6 +1288,7 @@ Item {
Text {
id: iconText
textFormat: Text.PlainText
visible: row.hasIcon && !row.isApp
text: row.icon
color: row.hasCursor ? root.selectedText : root.foreground
@@ -1328,6 +1330,7 @@ Item {
Text {
id: labelText
textFormat: Text.PlainText
width: parent.width
text: row.label
color: row.hasCursor ? root.selectedText : root.foreground
@@ -1338,6 +1341,7 @@ Item {
}
Text {
textFormat: Text.PlainText
width: parent.width
text: row.detail
visible: (root.filterText || row.kind === "dmenu") && row.detail.length > 0
@@ -1358,6 +1362,7 @@ Item {
spacing: 0
Text {
textFormat: Text.PlainText
visible: false
text: row.childCount
color: root.foreground
@@ -1368,6 +1373,7 @@ Item {
}
Text {
textFormat: Text.PlainText
text: row.kind === "menu" || row.kind === "link" ? "" : ""
color: row.hasCursor ? root.selectedText : root.foreground
opacity: row.kind === "menu" || row.kind === "link" ? 0.36 : 0
@@ -1452,6 +1458,7 @@ Item {
}
Text {
textFormat: Text.PlainText
text: root.filterText ? "No matches for “" + root.filterText + "”" : "Nothing here yet"
color: root.foreground
opacity: 0.7
@@ -5,8 +5,34 @@ function isChromiumDerived(app, appIcon) {
source.indexOf("opera") >= 0
}
// The body renders as StyledText so notifications can use the markup the
// body-markup capability advertises (see Service.qml). StyledText honours
// <img src>, and a remote src makes the shell issue an unauthenticated GET
// with no user action, so image tags go before the renderer sees them.
//
// One replace() pass is not enough. String.replace scans left to right once,
// so a payload spliced inside the literal "<img" prefix reassembles into a
// live tag out of the surviving halves:
//
// <im<img src="http://a/decoy.png">g src="http://a/beacon.png">
// -> <img src="http://a/beacon.png">
//
// Repeat to a fixed point. Each pass can only shorten the string, so this
// terminates.
function stripImageTags(text) {
var current = text
var previous
do {
previous = current
// The `$` alternative catches a tag left unterminated at the end of the
// string, which the renderer closes for itself.
current = current.replace(/<img[^>]*(?:>|$)/gi, "")
} while (current !== previous)
return current
}
function sanitizeBody(body, app, appIcon) {
var text = String(body || "").replace(/<img[^>]*>/gi, "")
var text = stripImageTags(String(body || ""))
if (!isChromiumDerived(app, appIcon)) return text
return text
@@ -133,6 +133,7 @@ BorderSurface {
// Glyph fallback (Nerd Font character) when no image icon is
// available. Used by omarchy-notification-send's `-g` flag.
Text {
textFormat: Text.PlainText
anchors.centerIn: parent
visible: root.hasGlyph && smallIconImage.status !== Image.Ready
text: root.glyph
@@ -143,6 +144,7 @@ BorderSurface {
}
Text {
textFormat: Text.PlainText
Layout.alignment: Qt.AlignVCenter
visible: root.compactGlyph
text: root.glyph
@@ -159,6 +161,11 @@ BorderSurface {
spacing: Style.space(2)
Text {
// The spec defines the summary as a single line of plain text, so
// AutoText could only ever promote a hostile string to rich text.
// The body below is StyledText on purpose — see Service.qml's
// bodyMarkupSupported — and is stripped in NotificationLogic.
textFormat: Text.PlainText
Layout.fillWidth: true
visible: root.summary.length > 0
text: root.summary
+2
View File
@@ -159,6 +159,7 @@ Item {
width: root.iconWidth
height: parent.height
Text {
textFormat: Text.PlainText
// Sit the glyph's ink flush in the column, centered when the
// column is wider than this particular glyph.
x: Math.round((root.iconWidth - root.iconInkWidth) / 2 - iconMetrics.tightBoundingRect.x)
@@ -186,6 +187,7 @@ Item {
}
}
Text {
textFormat: Text.PlainText
visible: root.message !== ""
width: root.hasProgress ? root.valueWidth : root.messageWidth
// The readout hugs the card edge so a short percentage doesn't leave
+11
View File
@@ -711,6 +711,7 @@ Panel {
// Status only — the switch owns muting, mouse and keyboard alike.
Text {
id: heroIcon
textFormat: Text.PlainText
text: root.outputIcon()
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -761,6 +762,7 @@ Panel {
Text {
id: heroLabel
textFormat: Text.PlainText
text: root.outputVolumeName(
outputSlider.dragging ? outputSlider.liveValue : root.outputVolume,
root.outputMuted
@@ -800,6 +802,7 @@ Panel {
Text {
id: outputPercent
textFormat: Text.PlainText
text: Math.round((outputSlider.dragging ? outputSlider.liveValue : root.outputVolume) * 100) + "%"
color: Qt.darker(root.bar.foreground, 1.4)
font.family: root.bar.fontFamily
@@ -886,6 +889,7 @@ Panel {
Text {
id: microphonePercent
textFormat: Text.PlainText
text: Math.round((inputSlider.dragging ? inputSlider.liveValue : root.inputVolume) * 100) + "%"
color: Qt.darker(root.bar.foreground, 1.4)
font.family: root.bar.fontFamily
@@ -1030,6 +1034,7 @@ Panel {
spacing: Style.space(8)
Text {
textFormat: Text.PlainText
text: root.sinkGlyph(sinkRow.node)
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -1040,6 +1045,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
text: root.nodeLabel(sinkRow.node)
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -1089,6 +1095,7 @@ Panel {
spacing: Style.space(8)
Text {
textFormat: Text.PlainText
text: root.sourceGlyph(sourceRow.node)
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -1099,6 +1106,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
text: root.nodeLabel(sourceRow.node)
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -1159,6 +1167,7 @@ Panel {
Text {
id: streamMuteIcon
textFormat: Text.PlainText
text: streamRow.streamMuted ? "󰝟" : "󰕾"
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -1179,6 +1188,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
text: root.streamLabel(streamRow.node)
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -1191,6 +1201,7 @@ Panel {
Text {
id: streamPct
textFormat: Text.PlainText
text: Math.round(streamRow.streamVolume * 100) + "%"
color: Qt.darker(root.bar.foreground, 1.5)
font.family: root.bar.fontFamily
+6
View File
@@ -698,6 +698,7 @@ Panel {
// Status only — the switch owns toggling, mouse and keyboard alike.
Text {
id: heroIcon
textFormat: Text.PlainText
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
text: root.icon
@@ -748,6 +749,7 @@ Panel {
Text {
id: heroStatus
textFormat: Text.PlainText
text: root.heroStatusText.toUpperCase()
color: Qt.darker(root.bar.foreground, 1.4)
font.family: root.bar.fontFamily
@@ -863,6 +865,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
visible: root.connectedDevices.length === 0 && root.scrollRows.length === 0
text: !root.adapter ? "No Bluetooth adapter"
: !root.adapter.enabled ? "Turn Bluetooth on to scan"
@@ -971,6 +974,7 @@ Panel {
Text {
id: deviceIcon
textFormat: Text.PlainText
text: row.isConnected ? "󰂱" : "󰂯"
color: row.statusColor
font.family: root.bar.fontFamily
@@ -989,6 +993,7 @@ Panel {
anchors.verticalCenter: parent.verticalCenter
Text {
textFormat: Text.PlainText
text: root.deviceLabel(row.dev) || "Device"
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -997,6 +1002,7 @@ Panel {
width: parent.width
}
Text {
textFormat: Text.PlainText
visible: row.statusText !== ""
text: row.statusText
color: row.statusColor
+8
View File
@@ -311,6 +311,7 @@ Panel {
Text {
id: heroDate
textFormat: Text.PlainText
anchors.verticalCenter: parent.verticalCenter
text: Qt.formatDate(root.today, "MMMM d")
color: heroMouse.containsMouse
@@ -413,6 +414,7 @@ Panel {
Text {
id: yearLabel
textFormat: Text.PlainText
visible: !root.editingLife
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
@@ -425,6 +427,7 @@ Panel {
Text {
id: yearPercent
textFormat: Text.PlainText
visible: !root.editingLife
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
@@ -485,6 +488,7 @@ Panel {
Text {
id: lifePercent
textFormat: Text.PlainText
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
text: root.lifeDonePercent + "%"
@@ -608,6 +612,7 @@ Panel {
model: root.weekdays
Text {
textFormat: Text.PlainText
required property var modelData
width: root.cellWidth
height: Style.space(16)
@@ -631,6 +636,7 @@ Panel {
spacing: root.cellSpacing
Text {
textFormat: Text.PlainText
width: root.weekColumnWidth
height: root.cellHeight
horizontalAlignment: Text.AlignHCenter
@@ -662,6 +668,7 @@ Panel {
border.color: Style.normalBorderFor(root.contentForeground, Color.accent)
Text {
textFormat: Text.PlainText
anchors.centerIn: parent
text: modelData.day
color: modelData.inMonth
@@ -707,6 +714,7 @@ Panel {
Text {
id: monthLabel
textFormat: Text.PlainText
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
// Fixed width so the chevrons hold still between a
+6
View File
@@ -281,6 +281,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
visible: dropbox.actionStatus !== "" || dropbox.lastError !== ""
width: parent.width
text: dropbox.actionStatus !== "" ? dropbox.actionStatus : dropbox.lastError
@@ -421,6 +422,7 @@ Panel {
spacing: Style.space(1)
Text {
textFormat: Text.PlainText
Layout.fillWidth: true
text: dropbox.installed ? "Login to Dropbox" : "Dropbox CLI is not installed"
color: root.foreground
@@ -430,6 +432,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
Layout.fillWidth: true
text: dropbox.installed ? "Start the authentication flow" : "Install Dropbox from the service menu"
color: root.dim
@@ -478,6 +481,7 @@ Panel {
spacing: Style.space(8)
Text {
textFormat: Text.PlainText
text: Model.fileGlyph(fileRow.fileName)
color: root.foreground
font.family: root.fontFamily
@@ -491,6 +495,7 @@ Panel {
spacing: Style.space(1)
Text {
textFormat: Text.PlainText
Layout.fillWidth: true
text: fileRow.fileName
color: root.foreground
@@ -500,6 +505,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
Layout.fillWidth: true
text: Model.fileMeta(fileRow.file)
color: root.dim
+7
View File
@@ -531,6 +531,7 @@ Panel {
Text {
id: heroIcon
textFormat: Text.PlainText
text: root.displays.length > 1 ? "󰍺" : "󰍹"
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -559,6 +560,7 @@ Panel {
Text {
id: heroLabel
textFormat: Text.PlainText
text: {
if (root.brightnessAvailable) {
return root.brightnessName(brightnessSlider.dragging ? brightnessSlider.liveValue : root.brightnessPercent).toUpperCase()
@@ -602,6 +604,7 @@ Panel {
Text {
id: brightnessPercent
textFormat: Text.PlainText
text: Math.round(brightnessSlider.dragging ? brightnessSlider.liveValue : root.brightnessPercent) + "%"
color: Qt.darker(root.bar.foreground, 1.4)
font.family: root.bar.fontFamily
@@ -674,6 +677,7 @@ Panel {
Text {
id: textSizePx
textFormat: Text.PlainText
text: (textSizeSlider.dragging
? root.textSizeStops[Math.round(textSizeSlider.liveValue)]
: root.displayedTextPx()) + "px"
@@ -747,6 +751,7 @@ Panel {
// focused one.
Text {
id: scaleMonitor
textFormat: Text.PlainText
text: root.focusedMonitor
// Only worth naming when more than one display is in play.
visible: root.focusedMonitor !== "" && root.enabledDisplayCount > 1
@@ -887,6 +892,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
text: monitorRow.display.name + (monitorRow.display.focused ? " · focused" : "")
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -897,6 +903,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
text: monitorRow.display.enabled ? "󰄬" : ""
color: root.bar.foreground
font.family: root.bar.fontFamily
+8
View File
@@ -1090,6 +1090,7 @@ Panel {
// Status only — the switch owns toggling, mouse and keyboard alike.
Text {
id: heroIcon
textFormat: Text.PlainText
text: root.icon
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -1170,6 +1171,7 @@ Panel {
// rather than in a pill, which crowded the on/off switch.
Text {
id: heroSsid
textFormat: Text.PlainText
width: parent.width
readonly property string title: {
@@ -1189,6 +1191,7 @@ Panel {
Text {
id: heroMeta
textFormat: Text.PlainText
width: parent.width
text: {
if (root.info.type === "wifi") {
@@ -1711,6 +1714,7 @@ Panel {
Text {
id: networkIcon
textFormat: Text.PlainText
text: row.net ? root.wifiIconFor(row.net.signal) : ""
color: row.statusColor
font.family: root.bar.fontFamily
@@ -1732,6 +1736,7 @@ Panel {
Text {
id: lockIndicator
textFormat: Text.PlainText
visible: row.requiresCredentials || row.forgetVisible
width: parent.width
anchors.verticalCenter: parent.verticalCenter
@@ -1779,6 +1784,7 @@ Panel {
anchors.verticalCenter: parent.verticalCenter
Text {
textFormat: Text.PlainText
text: row.net ? (row.net.ssid || "Hidden") : ""
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -1787,6 +1793,7 @@ Panel {
width: parent.width
}
Text {
textFormat: Text.PlainText
// Signal strength is conveyed by the wifi-bars icon and the
// right-edge glyph/buttons carry protection or forget affordances,
// so the second line only carries action status (Connecting…,
@@ -1893,6 +1900,7 @@ Panel {
radius: Style.cornerRadius
Text {
textFormat: Text.PlainText
anchors.fill: parent
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
+3
View File
@@ -325,6 +325,7 @@ Panel {
Text {
id: heroIcon
textFormat: Text.PlainText
text: root.batteryIcon()
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -356,6 +357,7 @@ Panel {
Text {
id: heroStatus
textFormat: Text.PlainText
text: root.heroStatusText.toUpperCase()
color: Qt.darker(root.bar.foreground, 1.4)
font.family: root.bar.fontFamily
@@ -369,6 +371,7 @@ Panel {
Text {
id: heroPercent
textFormat: Text.PlainText
text: root.batteryInfo.percentage || "—"
color: root.bar.foreground
font.family: root.bar.fontFamily
+10
View File
@@ -498,6 +498,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
visible: tailscale.actionStatus !== "" || tailscale.lastError !== ""
width: parent.width
text: tailscale.actionStatus !== "" ? tailscale.actionStatus : tailscale.lastError
@@ -841,6 +842,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
text: accountRow.accountText
color: root.foreground
font.family: root.fontFamily
@@ -933,6 +935,7 @@ Panel {
spacing: Style.space(8)
Text {
textFormat: Text.PlainText
text: tailscale.osIcon(peer ? peer.OS : "")
color: root.foreground
font.family: root.fontFamily
@@ -946,6 +949,7 @@ Panel {
spacing: Style.space(1)
Text {
textFormat: Text.PlainText
Layout.fillWidth: true
text: peerRow.peerName
color: root.foreground
@@ -955,6 +959,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
Layout.fillWidth: true
text: {
var parts = []
@@ -1087,6 +1092,7 @@ Panel {
spacing: Style.space(10)
Text {
textFormat: Text.PlainText
Layout.fillWidth: true
text: copyChoice.label
color: root.foreground
@@ -1134,6 +1140,7 @@ Panel {
Text {
id: exitNodeGlyph
textFormat: Text.PlainText
text: exitNodeRow.addMullvad ? "+" : (peer && peer.Mullvad === true ? "󰖂" : "󱇢")
color: exitNodeRow.activeExitNode || exitNodeRow.settingExitNode || exitNodeRow.addMullvad ? root.foreground : root.dim
font.family: root.fontFamily
@@ -1154,6 +1161,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
text: exitNodeRow.peerName
color: root.foreground
font.family: root.fontFamily
@@ -1224,6 +1232,7 @@ Panel {
spacing: Style.space(1)
Text {
textFormat: Text.PlainText
width: parent.width
text: regionRow.regionName
color: root.foreground
@@ -1234,6 +1243,7 @@ Panel {
}
Text {
textFormat: Text.PlainText
width: parent.width
text: regionRow.regionDetail
visible: text !== ""
+14
View File
@@ -531,6 +531,7 @@ Panel {
Text {
id: heroIcon
textFormat: Text.PlainText
anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenterOffset: 5
text: root.label || "—"
@@ -547,6 +548,7 @@ Panel {
Text {
id: tempBig
textFormat: Text.PlainText
text: root.reportTempNum || "—"
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -556,6 +558,7 @@ Panel {
font.bold: true
}
Text {
textFormat: Text.PlainText
text: root.current ? root.tempUnit : ""
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -593,6 +596,7 @@ Panel {
anchors.verticalCenter: parent.verticalCenter
}
Text {
textFormat: Text.PlainText
text: (root.reportLocation || "").toUpperCase()
color: Qt.darker(root.bar.foreground, 1.4)
font.family: root.bar.fontFamily
@@ -643,6 +647,7 @@ Panel {
color: !root.savingLocation && clearLocationArea.containsMouse ? Style.hoverFillFor(root.bar.foreground, Color.accent) : "transparent"
Text {
textFormat: Text.PlainText
anchors.centerIn: parent
text: root.savingLocation ? "󰦖" : "✕"
font.family: root.bar.fontFamily
@@ -683,6 +688,7 @@ Panel {
font.letterSpacing: 1
}
Text {
textFormat: Text.PlainText
text: root.reportFeels
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -700,6 +706,7 @@ Panel {
font.letterSpacing: 1
}
Text {
textFormat: Text.PlainText
text: root.reportWind
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -717,6 +724,7 @@ Panel {
font.letterSpacing: 1
}
Text {
textFormat: Text.PlainText
text: root.reportHumidity
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -752,12 +760,14 @@ Panel {
spacing: Style.space(8)
Text {
textFormat: Text.PlainText
text: modelData.name
color: index === root.suggestionIndex ? Style.hoverStateColor(root.bar.foreground, Color.accent) : root.bar.foreground
font.family: root.bar.fontFamily
font.pixelSize: Style.font.body
}
Text {
textFormat: Text.PlainText
visible: text !== ""
text: modelData.description
color: Qt.darker(root.bar.foreground, 1.5)
@@ -817,6 +827,7 @@ Panel {
spacing: Style.space(10)
Text {
textFormat: Text.PlainText
anchors.verticalCenter: parent.verticalCenter
text: root.dayIcon(modelData)
color: root.bar.foreground
@@ -829,6 +840,7 @@ Panel {
spacing: Style.space(2)
Text {
textFormat: Text.PlainText
text: root.dayName(modelData.date).toUpperCase()
color: Qt.darker(root.bar.foreground, 1.4)
font.family: root.bar.fontFamily
@@ -840,12 +852,14 @@ Panel {
spacing: Style.space(6)
Text {
textFormat: Text.PlainText
text: root.bareTempForDay(modelData, "max")
color: root.bar.foreground
font.family: root.bar.fontFamily
font.pixelSize: Style.font.body
}
Text {
textFormat: Text.PlainText
text: root.bareTempForDay(modelData, "min")
color: Qt.darker(root.bar.foreground, 1.5)
font.family: root.bar.fontFamily
+3
View File
@@ -257,6 +257,7 @@ Item {
spacing: Style.space(16)
Text {
textFormat: Text.PlainText
text: (root.ssid || "Wi-Fi").toUpperCase()
color: root.onScrimDim
font.family: root.fontFamily
@@ -318,6 +319,7 @@ Item {
}
Text {
textFormat: Text.PlainText
visible: root.error !== ""
text: root.error
color: root.onScrimUrgent
@@ -340,6 +342,7 @@ Item {
}
Text {
textFormat: Text.PlainText
visible: root.showingQr && root.secured
text: root.passwordError !== "" ? root.passwordError
: root.passwordVisible ? root.password
+2
View File
@@ -332,6 +332,7 @@ Item {
}
Text {
textFormat: Text.PlainText
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
@@ -374,6 +375,7 @@ Item {
Text {
id: justificationText
textFormat: Text.PlainText
anchors.fill: parent
anchors.leftMargin: Style.space(12)
anchors.rightMargin: Style.space(12)
+1
View File
@@ -156,6 +156,7 @@ Item {
anchors.leftMargin: card.contentLeftInset
Text {
textFormat: Text.PlainText
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
@@ -32,6 +32,7 @@ BarWidget {
Text {
id: glyph
textFormat: Text.PlainText
anchors.verticalCenter: parent.verticalCenter
text: root.playIcon
color: activePlayer && activePlayer.isPlaying ? root.bar.barForeground : Qt.darker(root.bar.barForeground, 1.5)
@@ -53,6 +54,7 @@ BarWidget {
Text {
id: labelText
textFormat: Text.PlainText
text: root.title + (root.artist ? " · " + root.artist : "")
color: root.bar.barForeground
font.family: root.bar.fontFamily
@@ -148,6 +150,7 @@ BarWidget {
width: parent.width - Style.space(74)
Text {
textFormat: Text.PlainText
text: root.title || "Nothing playing"
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -158,6 +161,7 @@ BarWidget {
}
Text {
textFormat: Text.PlainText
text: root.artist
color: Qt.darker(root.bar.foreground, 1.3)
font.family: root.bar.fontFamily
@@ -168,6 +172,7 @@ BarWidget {
}
Text {
textFormat: Text.PlainText
text: root.activePlayer && root.activePlayer.trackAlbum ? root.activePlayer.trackAlbum : ""
color: Qt.darker(root.bar.foreground, 1.6)
font.family: root.bar.fontFamily
@@ -255,6 +260,7 @@ BarWidget {
spacing: Style.space(8)
Text {
textFormat: Text.PlainText
text: sourceRow.player && sourceRow.player.isPlaying ? "󰏤" : "󰐊"
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -270,6 +276,7 @@ BarWidget {
anchors.verticalCenter: parent.verticalCenter
Text {
textFormat: Text.PlainText
text: sourceRow.sourceTitle
color: root.bar.foreground
font.family: root.bar.fontFamily
@@ -280,6 +287,7 @@ BarWidget {
}
Text {
textFormat: Text.PlainText
text: sourceRow.sourceDetail
color: Qt.darker(root.bar.foreground, 1.5)
font.family: root.bar.fontFamily