diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/DankBar/Widgets/ControlCenterButton.qml')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/DankBar/Widgets/ControlCenterButton.qml | 830 |
1 files changed, 0 insertions, 830 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/DankBar/Widgets/ControlCenterButton.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/DankBar/Widgets/ControlCenterButton.qml deleted file mode 100644 index 5413d20..0000000 --- a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/DankBar/Widgets/ControlCenterButton.qml +++ /dev/null @@ -1,830 +0,0 @@ -pragma ComponentBehavior: Bound -import QtQuick -import Quickshell -import qs.Common -import qs.Modules.Plugins -import qs.Services -import qs.Widgets - -BasePill { - id: root - - property bool isActive: false - property var popoutTarget: null - property var widgetData: null - property string screenName: "" - property string screenModel: "" - property bool showNetworkIcon: widgetData?.showNetworkIcon !== undefined ? widgetData.showNetworkIcon : SettingsData.controlCenterShowNetworkIcon - property bool showBluetoothIcon: widgetData?.showBluetoothIcon !== undefined ? widgetData.showBluetoothIcon : SettingsData.controlCenterShowBluetoothIcon - property bool showAudioIcon: widgetData?.showAudioIcon !== undefined ? widgetData.showAudioIcon : SettingsData.controlCenterShowAudioIcon - property bool showAudioPercent: widgetData?.showAudioPercent !== undefined ? widgetData.showAudioPercent : SettingsData.controlCenterShowAudioPercent - property bool showVpnIcon: widgetData?.showVpnIcon !== undefined ? widgetData.showVpnIcon : SettingsData.controlCenterShowVpnIcon - property bool showBrightnessIcon: widgetData?.showBrightnessIcon !== undefined ? widgetData.showBrightnessIcon : SettingsData.controlCenterShowBrightnessIcon - property bool showBrightnessPercent: widgetData?.showBrightnessPercent !== undefined ? widgetData.showBrightnessPercent : SettingsData.controlCenterShowBrightnessPercent - property bool showMicIcon: widgetData?.showMicIcon !== undefined ? widgetData.showMicIcon : SettingsData.controlCenterShowMicIcon - property bool showMicPercent: widgetData?.showMicPercent !== undefined ? widgetData.showMicPercent : SettingsData.controlCenterShowMicPercent - property bool showBatteryIcon: widgetData?.showBatteryIcon !== undefined ? widgetData.showBatteryIcon : SettingsData.controlCenterShowBatteryIcon - property bool showPrinterIcon: widgetData?.showPrinterIcon !== undefined ? widgetData.showPrinterIcon : SettingsData.controlCenterShowPrinterIcon - property bool showScreenSharingIcon: widgetData?.showScreenSharingIcon !== undefined ? widgetData.showScreenSharingIcon : SettingsData.controlCenterShowScreenSharingIcon - property real touchpadThreshold: 100 - property real micAccumulator: 0 - property real volumeAccumulator: 0 - property real brightnessAccumulator: 0 - readonly property real vIconSize: Theme.barIconSize(root.barThickness, -4, root.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale) - property var _hRow: null - property var _vCol: null - property var _hAudio: null - property var _hBrightness: null - property var _hMic: null - property var _vAudio: null - property var _vBrightness: null - property var _vMic: null - property var _interactionDelegates: [] - readonly property var defaultControlCenterGroupOrder: ["network", "vpn", "bluetooth", "audio", "microphone", "brightness", "battery", "printer", "screenSharing"] - readonly property var effectiveControlCenterGroupOrder: getEffectiveControlCenterGroupOrder() - readonly property var controlCenterRenderModel: getControlCenterRenderModel() - - onIsVerticalOrientationChanged: root.clearInteractionRefs() - - onWheel: function (wheelEvent) { - const delta = wheelEvent.angleDelta.y; - if (delta === 0) - return; - - root.refreshInteractionRefs(); - - const rootX = wheelEvent.x - root.leftMargin; - const rootY = wheelEvent.y - root.topMargin; - - if (root.isVerticalOrientation && _vCol) { - const pos = root.mapToItem(_vCol, rootX, rootY); - if (_vBrightness?.visible && pos.y >= _vBrightness.y && pos.y < _vBrightness.y + _vBrightness.height) { - root.handleBrightnessWheel(delta); - } else if (_vMic?.visible && pos.y >= _vMic.y && pos.y < _vMic.y + _vMic.height) { - root.handleMicWheel(delta); - } else { - root.handleVolumeWheel(delta); - } - } else if (_hRow) { - const pos = root.mapToItem(_hRow, rootX, rootY); - if (_hBrightness?.visible && pos.x >= _hBrightness.x && pos.x < _hBrightness.x + _hBrightness.width) { - root.handleBrightnessWheel(delta); - } else if (_hMic?.visible && pos.x >= _hMic.x && pos.x < _hMic.x + _hMic.width) { - root.handleMicWheel(delta); - } else { - root.handleVolumeWheel(delta); - } - } else { - root.handleVolumeWheel(delta); - } - wheelEvent.accepted = true; - } - - onRightClicked: function (rootX, rootY) { - root.refreshInteractionRefs(); - - if (root.isVerticalOrientation && _vCol) { - const pos = root.mapToItem(_vCol, rootX, rootY); - if (_vAudio?.visible && pos.y >= _vAudio.y && pos.y < _vAudio.y + _vAudio.height) { - AudioService.toggleMute(); - return; - } - if (_vMic?.visible && pos.y >= _vMic.y && pos.y < _vMic.y + _vMic.height) { - AudioService.toggleMicMute(); - return; - } - } else if (_hRow) { - const pos = root.mapToItem(_hRow, rootX, rootY); - if (_hAudio?.visible && pos.x >= _hAudio.x && pos.x < _hAudio.x + _hAudio.width) { - AudioService.toggleMute(); - return; - } - if (_hMic?.visible && pos.x >= _hMic.x && pos.x < _hMic.x + _hMic.width) { - AudioService.toggleMicMute(); - return; - } - } - } - - Loader { - active: root.showPrinterIcon - sourceComponent: Component { - Ref { - service: CupsService - } - } - } - - function getNetworkIconName() { - if (NetworkService.wifiToggling) - return "sync"; - switch (NetworkService.networkStatus) { - case "ethernet": - return "lan"; - case "vpn": - return NetworkService.ethernetConnected ? "lan" : NetworkService.wifiSignalIcon; - default: - return NetworkService.wifiSignalIcon; - } - } - - function getNetworkIconColor() { - if (NetworkService.wifiToggling) - return Theme.primary; - return NetworkService.networkStatus !== "disconnected" ? Theme.primary : Theme.surfaceText; - } - - function getVolumeIconName() { - if (!AudioService.sink?.audio) - return "volume_up"; - if (AudioService.sink.audio.muted) - return "volume_off"; - if (AudioService.sink.audio.volume === 0) - return "volume_mute"; - if (AudioService.sink.audio.volume * 100 < 33) - return "volume_down"; - return "volume_up"; - } - - function getMicIconName() { - if (!AudioService.source?.audio) - return "mic"; - if (AudioService.source.audio.muted || AudioService.source.audio.volume === 0) - return "mic_off"; - return "mic"; - } - - function getMicIconColor() { - if (!AudioService.source?.audio) - return Theme.surfaceText; - if (AudioService.source.audio.muted || AudioService.source.audio.volume === 0) - return Theme.surfaceText; - return Theme.widgetIconColor; - } - - function getBrightnessIconName() { - const deviceName = getPinnedBrightnessDevice(); - if (!deviceName) - return "brightness_medium"; - const level = DisplayService.getDeviceBrightness(deviceName); - if (level <= 33) - return "brightness_low"; - if (level <= 66) - return "brightness_medium"; - return "brightness_high"; - } - - function getScreenPinKey() { - if (!root.screenName) - return ""; - const screen = Quickshell.screens.find(s => s.name === root.screenName); - if (screen) { - return SettingsData.getScreenDisplayName(screen); - } - if (SettingsData.displayNameMode === "model" && root.screenModel && root.screenModel.length > 0) { - return root.screenModel; - } - return root.screenName; - } - - function getPinnedBrightnessDevice() { - const pinKey = getScreenPinKey(); - if (!pinKey) - return ""; - const pins = SettingsData.brightnessDevicePins || {}; - return pins[pinKey] || ""; - } - - function hasPinnedBrightnessDevice() { - return getPinnedBrightnessDevice().length > 0; - } - - function handleVolumeWheel(delta) { - if (!AudioService.sink?.audio) - return; - - var step = 5; - const isMouseWheel = Math.abs(delta) >= 120 && (Math.abs(delta) % 120) === 0; - if (!isMouseWheel) { - step = 1; - volumeAccumulator += delta; - if (Math.abs(volumeAccumulator) < touchpadThreshold) - return; - - delta = volumeAccumulator; - volumeAccumulator = 0; - } - - const maxVol = AudioService.sinkMaxVolume; - const currentVolume = AudioService.sink.audio.volume * 100; - const newVolume = delta > 0 ? Math.min(maxVol, currentVolume + step) : Math.max(0, currentVolume - step); - AudioService.sink.audio.muted = false; - AudioService.sink.audio.volume = newVolume / 100; - AudioService.playVolumeChangeSoundIfEnabled(); - } - - function handleMicWheel(delta) { - if (!AudioService.source?.audio) - return; - - var step = 5; - const isMouseWheel = Math.abs(delta) >= 120 && (Math.abs(delta) % 120) === 0; - if (!isMouseWheel) { - step = 1; - micAccumulator += delta; - if (Math.abs(micAccumulator) < touchpadThreshold) - return; - - delta = micAccumulator; - micAccumulator = 0; - } - - const currentVolume = AudioService.source.audio.volume * 100; - const newVolume = delta > 0 ? Math.min(100, currentVolume + step) : Math.max(0, currentVolume - step); - AudioService.source.audio.muted = false; - AudioService.source.audio.volume = newVolume / 100; - } - - function handleBrightnessWheel(delta) { - const deviceName = getPinnedBrightnessDevice(); - if (!deviceName) { - return; - } - - var step = 5; - const isMouseWheel = Math.abs(delta) >= 120 && (Math.abs(delta) % 120) === 0; - if (!isMouseWheel) { - step = 1; - brightnessAccumulator += delta; - if (Math.abs(brightnessAccumulator) < touchpadThreshold) - return; - - delta = brightnessAccumulator; - brightnessAccumulator = 0; - } - - const currentBrightness = DisplayService.getDeviceBrightness(deviceName); - const newBrightness = delta > 0 ? Math.min(100, currentBrightness + step) : Math.max(1, currentBrightness - step); - DisplayService.setBrightness(newBrightness, deviceName); - } - - function getBrightness() { - const deviceName = getPinnedBrightnessDevice(); - if (!deviceName) { - return; - } - return DisplayService.getDeviceBrightness(deviceName) / 100; - } - - function getBatteryIconColor() { - if (!BatteryService.batteryAvailable) - return Theme.widgetIconColor; - if (BatteryService.isLowBattery && !BatteryService.isCharging) - return Theme.error; - if (BatteryService.isCharging || BatteryService.isPluggedIn) - return Theme.primary; - return Theme.widgetIconColor; - } - - function hasPrintJobs() { - return CupsService.getTotalJobsNum() > 0; - } - - function getControlCenterIconSize() { - return Theme.barIconSize(root.barThickness, -4, root.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale); - } - - function getEffectiveControlCenterGroupOrder() { - const knownIds = root.defaultControlCenterGroupOrder; - const savedOrder = root.widgetData?.controlCenterGroupOrder; - const result = []; - const seen = {}; - - if (savedOrder && typeof savedOrder.length === "number") { - for (let i = 0; i < savedOrder.length; ++i) { - const groupId = savedOrder[i]; - if (knownIds.indexOf(groupId) === -1 || seen[groupId]) - continue; - - seen[groupId] = true; - result.push(groupId); - } - } - - for (let i = 0; i < knownIds.length; ++i) { - const groupId = knownIds[i]; - if (seen[groupId]) - continue; - - seen[groupId] = true; - result.push(groupId); - } - - return result; - } - - function isGroupVisible(groupId) { - switch (groupId) { - case "screenSharing": - return root.showScreenSharingIcon && NiriService.hasCasts; - case "network": - return root.showNetworkIcon && NetworkService.networkAvailable; - case "vpn": - return root.showVpnIcon && NetworkService.vpnAvailable && NetworkService.vpnConnected; - case "bluetooth": - return root.showBluetoothIcon && BluetoothService.available && BluetoothService.enabled; - case "audio": - return root.showAudioIcon; - case "microphone": - return root.showMicIcon; - case "brightness": - return root.showBrightnessIcon && DisplayService.brightnessAvailable && root.hasPinnedBrightnessDevice(); - case "battery": - return root.showBatteryIcon && BatteryService.batteryAvailable; - case "printer": - return root.showPrinterIcon && CupsService.cupsAvailable && root.hasPrintJobs(); - default: - return false; - } - } - - function isCompositeGroup(groupId) { - return groupId === "audio" || groupId === "microphone" || groupId === "brightness"; - } - - function getControlCenterRenderModel() { - return root.effectiveControlCenterGroupOrder.map(groupId => ({ - "id": groupId, - "visible": root.isGroupVisible(groupId), - "composite": root.isCompositeGroup(groupId) - })); - } - - function clearInteractionRefs() { - root._hAudio = null; - root._hBrightness = null; - root._hMic = null; - root._vAudio = null; - root._vBrightness = null; - root._vMic = null; - } - - function registerInteractionDelegate(isVertical, item) { - if (!item) - return; - - for (let i = 0; i < root._interactionDelegates.length; ++i) { - const entry = root._interactionDelegates[i]; - if (entry && entry.item === item) { - entry.isVertical = isVertical; - return; - } - } - - root._interactionDelegates = root._interactionDelegates.concat([ - { - "isVertical": isVertical, - "item": item - } - ]); - } - - function unregisterInteractionDelegate(item) { - if (!item) - return; - - root._interactionDelegates = root._interactionDelegates.filter(entry => entry && entry.item !== item); - } - - function refreshInteractionRefs() { - root.clearInteractionRefs(); - - for (let i = 0; i < root._interactionDelegates.length; ++i) { - const entry = root._interactionDelegates[i]; - const item = entry?.item; - if (!item || !item.visible) - continue; - - const groupId = item.interactionGroupId; - if (entry.isVertical) { - if (groupId === "audio") - root._vAudio = item; - else if (groupId === "microphone") - root._vMic = item; - else if (groupId === "brightness") - root._vBrightness = item; - } else { - if (groupId === "audio") - root._hAudio = item; - else if (groupId === "microphone") - root._hMic = item; - else if (groupId === "brightness") - root._hBrightness = item; - } - } - } - - function hasNoVisibleIcons() { - return !root.controlCenterRenderModel.some(entry => entry.visible); - } - - content: Component { - Item { - implicitWidth: root.isVerticalOrientation ? (root.widgetThickness - root.horizontalPadding * 2) : controlIndicators.implicitWidth - implicitHeight: root.isVerticalOrientation ? controlColumn.implicitHeight : (root.widgetThickness - root.horizontalPadding * 2) - - Component.onCompleted: { - root._hRow = controlIndicators; - root._vCol = controlColumn; - root.clearInteractionRefs(); - } - - Column { - id: controlColumn - visible: root.isVerticalOrientation - width: parent.width - anchors.horizontalCenter: parent.horizontalCenter - spacing: Theme.spacingXS - - Repeater { - model: root.controlCenterRenderModel - Item { - id: verticalGroupItem - required property var modelData - required property int index - property string interactionGroupId: modelData.id - - width: parent.width - height: { - switch (modelData.id) { - case "audio": - return root.vIconSize + (audioPercentV.visible ? audioPercentV.implicitHeight + 2 : 0); - case "microphone": - return root.vIconSize + (micPercentV.visible ? micPercentV.implicitHeight + 2 : 0); - case "brightness": - return root.vIconSize + (brightnessPercentV.visible ? brightnessPercentV.implicitHeight + 2 : 0); - default: - return root.vIconSize; - } - } - visible: modelData.visible - - Component.onCompleted: { - root.registerInteractionDelegate(true, verticalGroupItem); - root.refreshInteractionRefs(); - } - Component.onDestruction: { - if (root) { - root.unregisterInteractionDelegate(verticalGroupItem); - root.refreshInteractionRefs(); - } - } - onVisibleChanged: root.refreshInteractionRefs() - onInteractionGroupIdChanged: { - root.refreshInteractionRefs(); - } - - DankIcon { - anchors.centerIn: parent - visible: !verticalGroupItem.modelData.composite - name: { - switch (verticalGroupItem.modelData.id) { - case "screenSharing": - return "screen_record"; - case "network": - return root.getNetworkIconName(); - case "vpn": - return "vpn_lock"; - case "bluetooth": - return "bluetooth"; - case "battery": - return Theme.getBatteryIcon(BatteryService.batteryLevel, BatteryService.isCharging, BatteryService.batteryAvailable); - case "printer": - return "print"; - default: - return "settings"; - } - } - size: root.vIconSize - color: { - switch (verticalGroupItem.modelData.id) { - case "screenSharing": - return NiriService.hasActiveCast ? Theme.primary : Theme.surfaceText; - case "network": - return root.getNetworkIconColor(); - case "vpn": - return NetworkService.vpnConnected ? Theme.primary : Theme.surfaceText; - case "bluetooth": - return BluetoothService.connected ? Theme.primary : Theme.surfaceText; - case "battery": - return root.getBatteryIconColor(); - case "printer": - return Theme.primary; - default: - return Theme.widgetIconColor; - } - } - } - - DankIcon { - id: audioIconV - visible: verticalGroupItem.modelData.id === "audio" - name: root.getVolumeIconName() - size: root.vIconSize - color: Theme.widgetIconColor - anchors.horizontalCenter: parent.horizontalCenter - anchors.top: parent.top - } - - NumericText { - id: audioPercentV - visible: verticalGroupItem.modelData.id === "audio" && root.showAudioPercent && isFinite(AudioService.sink?.audio?.volume) - text: Math.round((AudioService.sink?.audio?.volume ?? 0) * 100) + "%" - reserveText: "100%" - font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) - color: Theme.widgetTextColor - anchors.horizontalCenter: parent.horizontalCenter - anchors.top: audioIconV.bottom - anchors.topMargin: 2 - } - - DankIcon { - id: micIconV - visible: verticalGroupItem.modelData.id === "microphone" - name: root.getMicIconName() - size: root.vIconSize - color: root.getMicIconColor() - anchors.horizontalCenter: parent.horizontalCenter - anchors.top: parent.top - } - - NumericText { - id: micPercentV - visible: verticalGroupItem.modelData.id === "microphone" && root.showMicPercent && isFinite(AudioService.source?.audio?.volume) - text: Math.round((AudioService.source?.audio?.volume ?? 0) * 100) + "%" - reserveText: "100%" - font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) - color: Theme.widgetTextColor - anchors.horizontalCenter: parent.horizontalCenter - anchors.top: micIconV.bottom - anchors.topMargin: 2 - } - - DankIcon { - id: brightnessIconV - visible: verticalGroupItem.modelData.id === "brightness" - name: root.getBrightnessIconName() - size: root.vIconSize - color: Theme.widgetIconColor - anchors.horizontalCenter: parent.horizontalCenter - anchors.top: parent.top - } - - NumericText { - id: brightnessPercentV - visible: verticalGroupItem.modelData.id === "brightness" && root.showBrightnessPercent && isFinite(getBrightness()) - text: Math.round(getBrightness() * 100) + "%" - reserveText: "100%" - font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) - color: Theme.widgetTextColor - anchors.horizontalCenter: parent.horizontalCenter - anchors.top: brightnessIconV.bottom - anchors.topMargin: 2 - } - } - } - - Item { - width: parent.width - height: root.vIconSize - visible: root.hasNoVisibleIcons() - - DankIcon { - name: "settings" - size: root.vIconSize - color: root.isActive ? Theme.primary : Theme.widgetIconColor - anchors.centerIn: parent - } - } - } - - Row { - id: controlIndicators - visible: !root.isVerticalOrientation - anchors.centerIn: parent - spacing: Theme.spacingXS - - Repeater { - model: root.controlCenterRenderModel - - Item { - id: horizontalGroupItem - required property var modelData - required property int index - property string interactionGroupId: modelData.id - - width: { - switch (modelData.id) { - case "audio": - return audioGroup.width; - case "microphone": - return micGroup.width; - case "brightness": - return brightnessGroup.width; - default: - return root.getControlCenterIconSize(); - } - } - implicitWidth: width - height: root.widgetThickness - root.horizontalPadding * 2 - visible: modelData.visible - - Component.onCompleted: { - root.registerInteractionDelegate(false, horizontalGroupItem); - root.refreshInteractionRefs(); - } - Component.onDestruction: { - if (root) { - root.unregisterInteractionDelegate(horizontalGroupItem); - root.refreshInteractionRefs(); - } - } - onVisibleChanged: root.refreshInteractionRefs() - onInteractionGroupIdChanged: { - root.refreshInteractionRefs(); - } - - DankIcon { - id: iconOnlyItem - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - visible: !horizontalGroupItem.modelData.composite - name: { - switch (horizontalGroupItem.modelData.id) { - case "screenSharing": - return "screen_record"; - case "network": - return root.getNetworkIconName(); - case "vpn": - return "vpn_lock"; - case "bluetooth": - return "bluetooth"; - case "battery": - return Theme.getBatteryIcon(BatteryService.batteryLevel, BatteryService.isCharging, BatteryService.batteryAvailable); - case "printer": - return "print"; - default: - return "settings"; - } - } - size: root.getControlCenterIconSize() - color: { - switch (horizontalGroupItem.modelData.id) { - case "screenSharing": - return NiriService.hasActiveCast ? Theme.primary : Theme.surfaceText; - case "network": - return root.getNetworkIconColor(); - case "vpn": - return NetworkService.vpnConnected ? Theme.primary : Theme.surfaceText; - case "bluetooth": - return BluetoothService.connected ? Theme.primary : Theme.surfaceText; - case "battery": - return root.getBatteryIconColor(); - case "printer": - return Theme.primary; - default: - return Theme.widgetIconColor; - } - } - } - - Rectangle { - id: audioGroup - width: audioContent.implicitWidth + 2 - implicitWidth: width - height: parent.height - color: "transparent" - anchors.verticalCenter: parent.verticalCenter - visible: horizontalGroupItem.modelData.id === "audio" - - Row { - id: audioContent - anchors.left: parent.left - anchors.leftMargin: 1 - anchors.verticalCenter: parent.verticalCenter - spacing: 2 - - DankIcon { - id: audioIcon - name: root.getVolumeIconName() - size: root.getControlCenterIconSize() - color: Theme.widgetIconColor - anchors.verticalCenter: parent.verticalCenter - } - - NumericText { - id: audioPercent - visible: root.showAudioPercent && isFinite(AudioService.sink?.audio?.volume) - text: Math.round((AudioService.sink?.audio?.volume ?? 0) * 100) + "%" - reserveText: "100%" - font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) - color: Theme.widgetTextColor - anchors.verticalCenter: parent.verticalCenter - width: visible ? implicitWidth : 0 - } - } - } - - Rectangle { - id: micGroup - width: micContent.implicitWidth + 2 - implicitWidth: width - height: parent.height - color: "transparent" - anchors.verticalCenter: parent.verticalCenter - visible: horizontalGroupItem.modelData.id === "microphone" - - Row { - id: micContent - anchors.left: parent.left - anchors.leftMargin: 1 - anchors.verticalCenter: parent.verticalCenter - spacing: 2 - - DankIcon { - id: micIcon - name: root.getMicIconName() - size: root.getControlCenterIconSize() - color: root.getMicIconColor() - anchors.verticalCenter: parent.verticalCenter - } - - NumericText { - id: micPercent - visible: root.showMicPercent && isFinite(AudioService.source?.audio?.volume) - text: Math.round((AudioService.source?.audio?.volume ?? 0) * 100) + "%" - reserveText: "100%" - font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) - color: Theme.widgetTextColor - anchors.verticalCenter: parent.verticalCenter - width: visible ? implicitWidth : 0 - } - } - } - - Rectangle { - id: brightnessGroup - width: brightnessContent.implicitWidth + 2 - implicitWidth: width - height: parent.height - color: "transparent" - anchors.verticalCenter: parent.verticalCenter - visible: horizontalGroupItem.modelData.id === "brightness" - - Row { - id: brightnessContent - anchors.left: parent.left - anchors.leftMargin: 1 - anchors.verticalCenter: parent.verticalCenter - spacing: 2 - - DankIcon { - id: brightnessIcon - name: root.getBrightnessIconName() - size: root.getControlCenterIconSize() - color: Theme.widgetIconColor - anchors.verticalCenter: parent.verticalCenter - } - - NumericText { - id: brightnessPercent - visible: root.showBrightnessPercent && isFinite(getBrightness()) - text: Math.round(getBrightness() * 100) + "%" - reserveText: "100%" - font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) - color: Theme.widgetTextColor - anchors.verticalCenter: parent.verticalCenter - width: visible ? implicitWidth : 0 - } - } - } - } - } - - DankIcon { - name: "settings" - size: root.getControlCenterIconSize() - color: root.isActive ? Theme.primary : Theme.widgetIconColor - anchors.verticalCenter: parent.verticalCenter - visible: root.hasNoVisibleIcons() - } - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - acceptedButtons: Qt.NoButton - } - } - } -} |