diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidAudioToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidAudioToggle.qml index 3fff4d620..52f7459a7 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidAudioToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidAudioToggle.qml @@ -12,7 +12,7 @@ AndroidQuickToggleButton { statusText: toggled ? Translation.tr("Unmuted") : Translation.tr("Muted") toggled: !Audio.sink?.audio?.muted buttonIcon: Audio.sink?.audio?.muted ? "volume_off" : "volume_up" - onClicked: { + mainAction: () => { Audio.sink.audio.muted = !Audio.sink.audio.muted } diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidBluetoothToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidBluetoothToggle.qml index 3b4f8fa8d..ae76d5751 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidBluetoothToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidBluetoothToggle.qml @@ -14,7 +14,7 @@ AndroidQuickToggleButton { toggled: BluetoothStatus.enabled buttonIcon: BluetoothStatus.connected ? "bluetooth_connected" : BluetoothStatus.enabled ? "bluetooth" : "bluetooth_disabled" - onClicked: { + mainAction: () => { Bluetooth.defaultAdapter.enabled = !Bluetooth.defaultAdapter?.enabled } altAction: () => { diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidCloudflareWarpToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidCloudflareWarpToggle.qml index d703c67dd..5b65e673d 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidCloudflareWarpToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidCloudflareWarpToggle.qml @@ -13,7 +13,7 @@ AndroidQuickToggleButton { toggled: false buttonIcon: "cloud_lock" - onClicked: { + mainAction: () => { if (toggled) { root.toggled = false Quickshell.execDetached(["warp-cli", "disconnect"]) diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidColorPickerToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidColorPickerToggle.qml index 82efbf544..8fdc59205 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidColorPickerToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidColorPickerToggle.qml @@ -13,7 +13,7 @@ AndroidQuickToggleButton { toggled: false buttonIcon: "colorize" - onClicked: { + mainAction: () => { GlobalStates.sidebarRightOpen = false; delayedActionTimer.start() } diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidDarkModeToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidDarkModeToggle.qml index 668f840f2..11be0dae6 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidDarkModeToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidDarkModeToggle.qml @@ -13,7 +13,7 @@ AndroidQuickToggleButton { toggled: Appearance.m3colors.darkmode buttonIcon: "contrast" - onClicked: event => { + mainAction: () => { if (Appearance.m3colors.darkmode) { Quickshell.execDetached([Directories.wallpaperSwitchScriptPath, "--mode", "light", "--noswitch"]); } else { diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidEasyEffectsToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidEasyEffectsToggle.qml index c907abf77..bfd14335c 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidEasyEffectsToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidEasyEffectsToggle.qml @@ -16,7 +16,7 @@ AndroidQuickToggleButton { EasyEffects.fetchActiveState() } - onClicked: { + mainAction: () => { EasyEffects.toggle() } diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidGameModeToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidGameModeToggle.qml index d4ab4fd81..ae63622fe 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidGameModeToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidGameModeToggle.qml @@ -13,7 +13,7 @@ AndroidQuickToggleButton { toggled: toggled buttonIcon: "gamepad" - onClicked: { + mainAction: () => { root.toggled = !root.toggled if (root.toggled) { Quickshell.execDetached(["bash", "-c", `hyprctl --batch "keyword animations:enabled 0; keyword decoration:shadow:enabled 0; keyword decoration:blur:enabled 0; keyword general:gaps_in 0; keyword general:gaps_out 0; keyword general:border_size 1; keyword decoration:rounding 0; keyword general:allow_tearing 1"`]) diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidIdleInhibitorToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidIdleInhibitorToggle.qml index 17dedd7df..2daf1f914 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidIdleInhibitorToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidIdleInhibitorToggle.qml @@ -11,7 +11,7 @@ AndroidQuickToggleButton { toggled: Idle.inhibit buttonIcon: "coffee" - onClicked: { + mainAction: () => { Idle.toggleInhibit() } StyledToolTip { diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMicToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMicToggle.qml index 40f06f0a4..7ffeea7f7 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMicToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMicToggle.qml @@ -12,7 +12,7 @@ AndroidQuickToggleButton { statusText: toggled ? Translation.tr("Enabled") : Translation.tr("Muted") toggled: !Audio.source?.audio?.muted buttonIcon: Audio.source?.audio?.muted ? "mic_off" : "mic" - onClicked: { + mainAction: () => { Audio.source.audio.muted = !Audio.source.audio.muted } diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMusicRecognition.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMusicRecognition.qml index e8f17f657..23e2cda92 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMusicRecognition.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMusicRecognition.qml @@ -21,7 +21,7 @@ AndroidQuickToggleButton { text: Translation.tr("Recognize music | Right-click to toggle source") } - onClicked: { + mainAction: () => { SongRec.toggleRunning() } diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNetworkToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNetworkToggle.qml index 53576febb..eaf24e141 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNetworkToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNetworkToggle.qml @@ -12,7 +12,7 @@ AndroidQuickToggleButton { toggled: Network.wifiStatus !== "disabled" buttonIcon: Network.materialSymbol - onClicked: Network.toggleWifi() + mainAction: () => Network.toggleWifi() altAction: () => { root.openMenu() } diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNightLightToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNightLightToggle.qml index 699d93dc3..133b0ffcd 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNightLightToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNightLightToggle.qml @@ -14,7 +14,8 @@ AndroidQuickToggleButton { toggled: Hyprsunset.active buttonIcon: auto ? "night_sight_auto" : "bedtime" - onClicked: { + + mainAction: () => { Hyprsunset.toggle() } diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNotificationToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNotificationToggle.qml index dc1f381cd..eda39d716 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNotificationToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNotificationToggle.qml @@ -13,7 +13,7 @@ AndroidQuickToggleButton { toggled: !Notifications.silent buttonIcon: toggled ? "notifications_active" : "notifications_paused" - onClicked: { + mainAction: () => { Notifications.silent = !Notifications.silent; } diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidOnScreenKeyboardToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidOnScreenKeyboardToggle.qml index 7a4283689..779917802 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidOnScreenKeyboardToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidOnScreenKeyboardToggle.qml @@ -11,7 +11,8 @@ AndroidQuickToggleButton { name: Translation.tr("Virtual Keyboard") toggled: GlobalStates.oskOpen buttonIcon: toggled ? "keyboard_hide" : "keyboard" - onClicked: { + + mainAction: () => { GlobalStates.oskOpen = !GlobalStates.oskOpen } diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidPowerProfileToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidPowerProfileToggle.qml index 064180ae5..381113308 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidPowerProfileToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidPowerProfileToggle.qml @@ -22,7 +22,7 @@ AndroidQuickToggleButton { case PowerProfile.Performance: return "Performance" } - onClicked: (event) => { + mainAction: () => { if (PowerProfiles.hasPerformanceProfile) { switch(PowerProfiles.profile) { case PowerProfile.PowerSaver: PowerProfiles.profile = PowerProfile.Balanced diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidQuickToggleButton.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidQuickToggleButton.qml index 4abc8d06f..96401a6c0 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidQuickToggleButton.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidQuickToggleButton.qml @@ -13,6 +13,7 @@ GroupButton { required property bool expandedSize required property string buttonIcon required property string name + required property var mainAction property string statusText: toggled ? Translation.tr("Active") : Translation.tr("Inactive") required property real baseCellWidth @@ -54,6 +55,11 @@ GroupButton { property color colText: (toggled && !(altAction && expandedSize)) ? Appearance.colors.colOnPrimary : Appearance.colors.colOnLayer2 property color colIcon: expandedSize ? (root.toggled ? Appearance.colors.colOnPrimary : Appearance.colors.colOnLayer3) : colText + onClicked: { + if (root.expandedSize && root.altAction) root.altAction(); + else root.mainAction(); + } + contentItem: RowLayout { id: contentItem spacing: 4 @@ -64,35 +70,63 @@ GroupButton { rightMargin: root.horizontalPadding } - Rectangle { + // Icon + MouseArea { + id: iconMouseArea + hoverEnabled: true + acceptedButtons: (root.expandedSize && root.altAction) ? Qt.LeftButton : Qt.NoButton Layout.alignment: Qt.AlignHCenter Layout.fillHeight: true Layout.topMargin: root.verticalPadding Layout.bottomMargin: root.verticalPadding - implicitWidth: height - radius: root.radius - root.verticalPadding - color: { - const baseColor = root.toggled ? Appearance.colors.colPrimary : Appearance.colors.colLayer3 - const transparentizeAmount = (root.altAction && root.expandedSize) ? 0 : 1 - return ColorUtils.transparentize(baseColor, transparentizeAmount) - } + implicitHeight: iconBackground.implicitHeight + implicitWidth: iconBackground.implicitWidth + cursorShape: Qt.PointingHandCursor - Behavior on radius { - animation: Appearance.animation.elementMove.numberAnimation.createObject(this) - } - Behavior on color { - animation: Appearance.animation.elementMoveFast.colorAnimation.createObject(this) - } + onClicked: root.mainAction() - MaterialSymbol { - anchors.centerIn: parent - fill: root.toggled ? 1 : 0 - iconSize: root.expandedSize ? 22 : 24 - color: root.colIcon - text: root.buttonIcon + Rectangle { + id: iconBackground + anchors.fill: parent + implicitWidth: height + radius: root.radius - root.verticalPadding + color: { + const baseColor = root.toggled ? Appearance.colors.colPrimary : Appearance.colors.colLayer3 + const transparentizeAmount = (root.altAction && root.expandedSize) ? 0 : 1 + return ColorUtils.transparentize(baseColor, transparentizeAmount) + } + + Behavior on radius { + animation: Appearance.animation.elementMove.numberAnimation.createObject(this) + } + Behavior on color { + animation: Appearance.animation.elementMoveFast.colorAnimation.createObject(this) + } + + MaterialSymbol { + anchors.centerIn: parent + fill: root.toggled ? 1 : 0 + iconSize: root.expandedSize ? 22 : 24 + color: root.colIcon + text: root.buttonIcon + } + + // State layer + Loader { + anchors.fill: parent + active: (root.expandedSize && root.altAction) + sourceComponent: Rectangle { + radius: iconBackground.radius + color: ColorUtils.transparentize(root.colIcon, iconMouseArea.containsPress ? 0.88 : iconMouseArea.containsMouse ? 0.95 : 1) + Behavior on color { + animation: Appearance.animation.elementMoveFast.colorAnimation.createObject(this) + } + } + } } } + // Text column for expanded size Loader { Layout.alignment: Qt.AlignVCenter Layout.fillWidth: true diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidScreenSnipToggle.qml b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidScreenSnipToggle.qml index 5a22b616a..c4b4a5479 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidScreenSnipToggle.qml +++ b/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidScreenSnipToggle.qml @@ -14,7 +14,7 @@ AndroidQuickToggleButton { toggled: false buttonIcon: "screenshot_region" - onClicked: { + mainAction: () => { GlobalStates.sidebarRightOpen = false; delayedActionTimer.start() }