diff --git a/Components/PanelWithOverlay.qml b/Components/PanelWithOverlay.qml index ca32de0..7344165 100644 --- a/Components/PanelWithOverlay.qml +++ b/Components/PanelWithOverlay.qml @@ -22,7 +22,7 @@ PanelWindow { color: visible ? overlayColor : "transparent" visible: false WlrLayershell.exclusionMode: ExclusionMode.Ignore - WlrLayershell.keyboardFocus: visible ? WlrKeyboardFocus.Exclusive : WlrKeyboardFocus.None + WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand screen: (typeof modelData !== 'undefined' ? modelData : null) anchors.top: true anchors.left: true diff --git a/Services/WallpaperManager.qml b/Services/WallpaperManager.qml index fee4931..84c0e4f 100644 --- a/Services/WallpaperManager.qml +++ b/Services/WallpaperManager.qml @@ -71,7 +71,6 @@ Singleton { if (Settings.settings.randomWallpaper) { randomWallpaperTimer.stop(); randomWallpaperTimer.start(); - setRandomWallpaper(); } } diff --git a/Widgets/Sidebar/Config/ProfileSettings.qml b/Widgets/Sidebar/Config/ProfileSettings.qml index 111f607..91ac069 100644 --- a/Widgets/Sidebar/Config/ProfileSettings.qml +++ b/Widgets/Sidebar/Config/ProfileSettings.qml @@ -7,7 +7,7 @@ import qs.Settings Rectangle { id: profileSettingsCard Layout.fillWidth: true - Layout.preferredHeight: 340 + Layout.preferredHeight: 500 color: Theme.surface radius: 18 border.color: "transparent" @@ -19,20 +19,20 @@ Rectangle { anchors.margins: 18 spacing: 12 - // Profile Image Header RowLayout { Layout.fillWidth: true spacing: 12 Text { - text: "person" + text: "settings" font.family: "Material Symbols Outlined" font.pixelSize: 20 color: Theme.accentPrimary } Text { - text: "Profile Image" + text: "System Settings" + font.family: Theme.fontFamily font.pixelSize: 16 font.bold: true color: Theme.textPrimary @@ -40,83 +40,102 @@ Rectangle { } } - // Profile Image Input Row - RowLayout { + // Profile Image Input Section + ColumnLayout { spacing: 8 Layout.fillWidth: true - Rectangle { - width: 36 - height: 36 - radius: 18 - color: Theme.surfaceVariant - border.color: profileImageInput.activeFocus ? Theme.accentPrimary : Theme.outline - border.width: 1 - - Image { - id: avatarImage - anchors.fill: parent - anchors.margins: 2 - source: Settings.settings.profileImage - fillMode: Image.PreserveAspectCrop - visible: false - asynchronous: true - cache: false - sourceSize.width: 64 - sourceSize.height: 64 - } - OpacityMask { - anchors.fill: avatarImage - source: avatarImage - maskSource: Rectangle { - width: avatarImage.width - height: avatarImage.height - radius: avatarImage.width / 2 - visible: false - } - visible: Settings.settings.profileImage !== "" - } - - // Fallback icon - Text { - anchors.centerIn: parent - text: "person" - font.family: "Material Symbols Outlined" - font.pixelSize: 18 - color: Theme.accentPrimary - visible: Settings.settings.profileImage === "" - } + Text { + text: "Profile Image" + font.family: Theme.fontFamily + font.pixelSize: 13 + font.bold: true + color: Theme.textPrimary } - // Text input styled exactly like weather city - Rectangle { + RowLayout { + spacing: 8 Layout.fillWidth: true - Layout.preferredHeight: 36 - radius: 8 - color: Theme.surfaceVariant - border.color: profileImageInput.activeFocus ? Theme.accentPrimary : Theme.outline - border.width: 1 - TextInput { - id: profileImageInput - anchors.fill: parent - anchors.margins: 12 - text: Settings.settings.profileImage - font.pixelSize: 13 - color: Theme.textPrimary - verticalAlignment: TextInput.AlignVCenter - clip: true - focus: true - selectByMouse: true - activeFocusOnTab: true - inputMethodHints: Qt.ImhNone - onTextChanged: { - Settings.settings.profileImage = text - } - MouseArea { + Rectangle { + width: 40 + height: 40 + radius: 20 + color: Theme.surfaceVariant + border.color: profileImageInput.activeFocus ? Theme.accentPrimary : Theme.outline + border.width: 1 + + Image { + id: avatarImage anchors.fill: parent - onClicked: { - profileImageInput.forceActiveFocus() + anchors.margins: 2 + source: Settings.settings.profileImage + fillMode: Image.PreserveAspectCrop + visible: false + asynchronous: true + cache: false + sourceSize.width: 64 + sourceSize.height: 64 + } + OpacityMask { + anchors.fill: avatarImage + source: avatarImage + maskSource: Rectangle { + width: avatarImage.width + height: avatarImage.height + radius: avatarImage.width / 2 + visible: false + } + visible: Settings.settings.profileImage !== "" + } + + // Fallback icon + Text { + anchors.centerIn: parent + text: "person" + font.family: "Material Symbols Outlined" + font.pixelSize: 20 + color: Theme.accentPrimary + visible: Settings.settings.profileImage === "" + } + } + + Rectangle { + Layout.fillWidth: true + Layout.preferredHeight: 40 + radius: 8 + color: Theme.surfaceVariant + border.color: profileImageInput.activeFocus ? Theme.accentPrimary : Theme.outline + border.width: 1 + + TextInput { + id: profileImageInput + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.leftMargin: 12 + anchors.rightMargin: 12 + anchors.topMargin: 6 + anchors.bottomMargin: 6 + text: Settings.settings.profileImage + font.family: Theme.fontFamily + font.pixelSize: 13 + color: Theme.textPrimary + verticalAlignment: TextInput.AlignVCenter + clip: true + focus: true + selectByMouse: true + activeFocusOnTab: true + inputMethodHints: Qt.ImhNone + onTextChanged: { + Settings.settings.profileImage = text + } + MouseArea { + anchors.fill: parent + onClicked: { + profileImageInput.forceActiveFocus() + } } } } @@ -127,9 +146,11 @@ Rectangle { RowLayout { spacing: 8 Layout.fillWidth: true + Layout.topMargin: 8 Text { text: "Show Active Window Icon" + font.family: Theme.fontFamily font.pixelSize: 13 font.bold: true color: Theme.textPrimary @@ -148,7 +169,7 @@ Rectangle { color: Settings.settings.showActiveWindowIcon ? Theme.accentPrimary : Theme.surfaceVariant border.color: Settings.settings.showActiveWindowIcon ? Theme.accentPrimary : Theme.outline border.width: 2 - + Rectangle { id: thumb width: 28 @@ -159,12 +180,12 @@ Rectangle { border.width: 1 y: 2 x: Settings.settings.showActiveWindowIcon ? customSwitch.width - width - 2 : 2 - + Behavior on x { NumberAnimation { duration: 200; easing.type: Easing.OutCubic } } } - + MouseArea { anchors.fill: parent onClicked: { @@ -178,9 +199,11 @@ Rectangle { RowLayout { spacing: 8 Layout.fillWidth: true + Layout.topMargin: 8 Text { text: "Show System Info In Bar" + font.family: Theme.fontFamily font.pixelSize: 13 font.bold: true color: Theme.textPrimary @@ -200,7 +223,7 @@ Rectangle { color: Settings.settings.showSystemInfoInBar ? Theme.accentPrimary : Theme.surfaceVariant border.color: Settings.settings.showSystemInfoInBar ? Theme.accentPrimary : Theme.outline border.width: 2 - + Rectangle { id: thumb2 width: 28 @@ -211,12 +234,12 @@ Rectangle { border.width: 1 y: 2 x: Settings.settings.showSystemInfoInBar ? customSwitch2.width - width - 2 : 2 - + Behavior on x { NumberAnimation { duration: 200; easing.type: Easing.OutCubic } } } - + MouseArea { anchors.fill: parent onClicked: { @@ -230,9 +253,11 @@ Rectangle { RowLayout { spacing: 8 Layout.fillWidth: true + Layout.topMargin: 8 Text { text: "Show Media In Bar" + font.family: Theme.fontFamily font.pixelSize: 13 font.bold: true color: Theme.textPrimary @@ -252,7 +277,7 @@ Rectangle { color: Settings.settings.showMediaInBar ? Theme.accentPrimary : Theme.surfaceVariant border.color: Settings.settings.showMediaInBar ? Theme.accentPrimary : Theme.outline border.width: 2 - + Rectangle { id: thumb3 width: 28 @@ -263,12 +288,12 @@ Rectangle { border.width: 1 y: 2 x: Settings.settings.showMediaInBar ? customSwitch3.width - width - 2 : 2 - + Behavior on x { NumberAnimation { duration: 200; easing.type: Easing.OutCubic } } } - + MouseArea { anchors.fill: parent onClicked: { @@ -279,103 +304,118 @@ Rectangle { } // Visualizer Type Selection - RowLayout { + ColumnLayout { spacing: 8 Layout.fillWidth: true + Layout.topMargin: 16 Text { text: "Visualizer Type" + font.family: Theme.fontFamily font.pixelSize: 13 font.bold: true color: Theme.textPrimary - Layout.alignment: Qt.AlignVCenter } - Item { + ComboBox { + id: visualizerTypeComboBox Layout.fillWidth: true - } + Layout.preferredHeight: 40 + model: ["radial", "fire", "diamond"] + currentIndex: model.indexOf(Settings.settings.visualizerType) - // Dropdown for visualizer type - Rectangle { - width: 120 - height: 36 - radius: 8 - color: Theme.surfaceVariant - border.color: Theme.outline - border.width: 1 + background: Rectangle { + implicitWidth: 120 + implicitHeight: 40 + color: Theme.surfaceVariant + border.color: visualizerTypeComboBox.activeFocus ? Theme.accentPrimary : Theme.outline + border.width: 1 + radius: 8 + } - Text { - id: visualizerTypeText - anchors.left: parent.left - anchors.leftMargin: 12 - anchors.verticalCenter: parent.verticalCenter - text: Settings.settings.visualizerType === "fire" ? "Fire" : - Settings.settings.visualizerType === "diamond" ? "Diamond" : - Settings.settings.visualizerType === "radial" ? "Radial" : "Radial" + contentItem: Text { + leftPadding: 12 + rightPadding: visualizerTypeComboBox.indicator.width + visualizerTypeComboBox.spacing + text: visualizerTypeComboBox.displayText.charAt(0).toUpperCase() + visualizerTypeComboBox.displayText.slice(1) + font.family: Theme.fontFamily font.pixelSize: 13 color: Theme.textPrimary + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight } - Text { + indicator: Text { + x: visualizerTypeComboBox.width - width - 12 + y: visualizerTypeComboBox.topPadding + (visualizerTypeComboBox.availableHeight - height) / 2 text: "arrow_drop_down" font.family: "Material Symbols Outlined" - font.pixelSize: 20 + font.pixelSize: 24 color: Theme.textPrimary - anchors.right: parent.right - anchors.rightMargin: 8 - anchors.verticalCenter: parent.verticalCenter } - MouseArea { - anchors.fill: parent - onClicked: { - visualizerTypeMenu.open() + popup: Popup { + y: visualizerTypeComboBox.height + width: visualizerTypeComboBox.width + implicitHeight: contentItem.implicitHeight + padding: 1 + + contentItem: ListView { + clip: true + implicitHeight: contentHeight + model: visualizerTypeComboBox.popup.visible ? visualizerTypeComboBox.delegateModel : null + currentIndex: visualizerTypeComboBox.highlightedIndex + + ScrollIndicator.vertical: ScrollIndicator {} + } + + background: Rectangle { + color: Theme.surfaceVariant + border.color: Theme.outline + border.width: 1 + radius: 8 } } - Menu { - id: visualizerTypeMenu - width: 120 - y: parent.height + delegate: ItemDelegate { + width: visualizerTypeComboBox.width + contentItem: Text { + text: modelData.charAt(0).toUpperCase() + modelData.slice(1) + font.family: Theme.fontFamily + font.pixelSize: 13 + color: Theme.textPrimary + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + highlighted: visualizerTypeComboBox.highlightedIndex === index - MenuItem { - text: "Fire" - onTriggered: { - Settings.settings.visualizerType = "fire" - } - } - MenuItem { - text: "Diamond" - onTriggered: { - Settings.settings.visualizerType = "diamond" - } - } - MenuItem { - text: "Radial" - onTriggered: { - Settings.settings.visualizerType = "radial" - } + background: Rectangle { + color: highlighted ? Theme.accentPrimary.toString().replace(/#/, "#1A") : "transparent" } } + + onActivated: { + Settings.settings.visualizerType = model[index]; + } } } - // Video Path Input Row - RowLayout { + // Video Path Input Section + ColumnLayout { spacing: 8 Layout.fillWidth: true + Layout.topMargin: 8 Text { text: "Video Path" + font.family: Theme.fontFamily font.pixelSize: 13 font.bold: true color: Theme.textPrimary - Layout.alignment: Qt.AlignVCenter } Rectangle { Layout.fillWidth: true - Layout.preferredHeight: 36 + Layout.preferredHeight: 40 radius: 8 color: Theme.surfaceVariant border.color: videoPathInput.activeFocus ? Theme.accentPrimary : Theme.outline @@ -383,9 +423,16 @@ Rectangle { TextInput { id: videoPathInput - anchors.fill: parent - anchors.margins: 12 + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.leftMargin: 12 + anchors.rightMargin: 12 + anchors.topMargin: 6 + anchors.bottomMargin: 6 text: Settings.settings.videoPath !== undefined ? Settings.settings.videoPath : "" + font.family: Theme.fontFamily font.pixelSize: 13 color: Theme.textPrimary verticalAlignment: TextInput.AlignVCenter @@ -404,4 +451,4 @@ Rectangle { } } } -} +} diff --git a/Widgets/Sidebar/Config/SettingsModal.qml b/Widgets/Sidebar/Config/SettingsModal.qml index 3a9dabd..9e17195 100644 --- a/Widgets/Sidebar/Config/SettingsModal.qml +++ b/Widgets/Sidebar/Config/SettingsModal.qml @@ -20,7 +20,7 @@ PanelWindow { //z: 100 //border.color: Theme.outline //border.width: 1 - WlrLayershell.keyboardFocus: visible ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None + WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand Rectangle { anchors.fill: parent @@ -31,12 +31,17 @@ PanelWindow { z: 0 ColumnLayout { + id: content anchors.fill: parent - anchors.margins: 32 + anchors.leftMargin: 32 + anchors.rightMargin: 32 + anchors.topMargin: 32 + spacing: 24 // Header ColumnLayout { + id: header Layout.fillWidth: true spacing: 4 RowLayout { @@ -99,7 +104,7 @@ PanelWindow { // Scrollable settings area Rectangle { Layout.fillWidth: true - Layout.preferredHeight: 520 + Layout.preferredHeight: content.height - settingsTabs.height - header.height - 128 color: "transparent" border.width: 0 radius: 20 diff --git a/Widgets/Sidebar/Config/WallpaperSettings.qml b/Widgets/Sidebar/Config/WallpaperSettings.qml index 96aaa55..f1aa93a 100644 --- a/Widgets/Sidebar/Config/WallpaperSettings.qml +++ b/Widgets/Sidebar/Config/WallpaperSettings.qml @@ -1,4 +1,4 @@ -import QtQuick +import QtQuick import QtQuick.Layouts import QtQuick.Controls import qs.Settings @@ -6,11 +6,10 @@ import qs.Settings Rectangle { id: wallpaperSettingsCard Layout.fillWidth: true - Layout.preferredHeight: 680 + Layout.preferredHeight: 720 color: Theme.surface radius: 18 - ColumnLayout { anchors.fill: parent anchors.margins: 18 @@ -27,7 +26,7 @@ Rectangle { color: Theme.accentPrimary } Text { - text: "Wallpaper Folder" + text: "Wallpaper Settings" font.family: Theme.fontFamily font.pixelSize: 16 font.bold: true @@ -36,39 +35,52 @@ Rectangle { } } - // Folder Path Input - Rectangle { + ColumnLayout { + spacing: 8 Layout.fillWidth: true - Layout.preferredHeight: 40 - radius: 8 - color: Theme.surfaceVariant - border.color: folderInput.activeFocus ? Theme.accentPrimary : Theme.outline - border.width: 1 - TextInput { - id: folderInput - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.leftMargin: 12 - anchors.rightMargin: 12 - anchors.topMargin: 6 - anchors.bottomMargin: 6 - text: Settings.settings.wallpaperFolder + + Text { + text: "Wallpaper Path" font.family: Theme.fontFamily font.pixelSize: 13 + font.bold: true color: Theme.textPrimary - verticalAlignment: TextInput.AlignVCenter - clip: true - selectByMouse: true - activeFocusOnTab: true - inputMethodHints: Qt.ImhUrlCharactersOnly - onTextChanged: { - Settings.settings.wallpaperFolder = text - } - MouseArea { - anchors.fill: parent - onClicked: folderInput.forceActiveFocus() + } + + // Folder Path Input + Rectangle { + Layout.fillWidth: true + Layout.preferredHeight: 40 + radius: 8 + color: Theme.surfaceVariant + border.color: folderInput.activeFocus ? Theme.accentPrimary : Theme.outline + border.width: 1 + TextInput { + id: folderInput + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.leftMargin: 12 + anchors.rightMargin: 12 + anchors.topMargin: 6 + anchors.bottomMargin: 6 + text: Settings.settings.wallpaperFolder + font.family: Theme.fontFamily + font.pixelSize: 13 + color: Theme.textPrimary + verticalAlignment: TextInput.AlignVCenter + clip: true + selectByMouse: true + activeFocusOnTab: true + inputMethodHints: Qt.ImhUrlCharactersOnly + onTextChanged: { + Settings.settings.wallpaperFolder = text; + } + MouseArea { + anchors.fill: parent + onClicked: folderInput.forceActiveFocus() + } } } } @@ -99,7 +111,7 @@ Rectangle { color: Settings.settings.useSWWW ? Theme.accentPrimary : Theme.surfaceVariant border.color: Settings.settings.useSWWW ? Theme.accentPrimary : Theme.outline border.width: 2 - + Rectangle { id: swwwThumb width: 28 @@ -110,16 +122,19 @@ Rectangle { border.width: 1 y: 2 x: Settings.settings.useSWWW ? swwwSwitch.width - width - 2 : 2 - + Behavior on x { - NumberAnimation { duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { + duration: 200 + easing.type: Easing.OutCubic + } } } - + MouseArea { anchors.fill: parent onClicked: { - Settings.settings.useSWWW = !Settings.settings.useSWWW + Settings.settings.useSWWW = !Settings.settings.useSWWW; } } } @@ -151,7 +166,7 @@ Rectangle { color: Settings.settings.randomWallpaper ? Theme.accentPrimary : Theme.surfaceVariant border.color: Settings.settings.randomWallpaper ? Theme.accentPrimary : Theme.outline border.width: 2 - + Rectangle { id: randomWallpaperThumb width: 28 @@ -162,16 +177,19 @@ Rectangle { border.width: 1 y: 2 x: Settings.settings.randomWallpaper ? randomWallpaperSwitch.width - width - 2 : 2 - + Behavior on x { - NumberAnimation { duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { + duration: 200 + easing.type: Easing.OutCubic + } } } - + MouseArea { anchors.fill: parent onClicked: { - Settings.settings.randomWallpaper = !Settings.settings.randomWallpaper + Settings.settings.randomWallpaper = !Settings.settings.randomWallpaper; } } } @@ -203,7 +221,7 @@ Rectangle { color: Settings.settings.useWallpaperTheme ? Theme.accentPrimary : Theme.surfaceVariant border.color: Settings.settings.useWallpaperTheme ? Theme.accentPrimary : Theme.outline border.width: 2 - + Rectangle { id: wallpaperThemeThumb width: 28 @@ -214,16 +232,19 @@ Rectangle { border.width: 1 y: 2 x: Settings.settings.useWallpaperTheme ? wallpaperThemeSwitch.width - width - 2 : 2 - + Behavior on x { - NumberAnimation { duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { + duration: 200 + easing.type: Easing.OutCubic + } } } - + MouseArea { anchors.fill: parent onClicked: { - Settings.settings.useWallpaperTheme = !Settings.settings.useWallpaperTheme + Settings.settings.useWallpaperTheme = !Settings.settings.useWallpaperTheme; } } } @@ -243,18 +264,18 @@ Rectangle { font.bold: true color: Theme.textPrimary } - + Item { Layout.fillWidth: true } - + Text { text: Settings.settings.wallpaperInterval font.pixelSize: 13 color: Theme.textPrimary } } - + Slider { id: intervalSlider Layout.fillWidth: true @@ -263,7 +284,7 @@ Rectangle { stepSize: 10 value: Settings.settings.wallpaperInterval snapMode: Slider.SnapAlways - + background: Rectangle { x: intervalSlider.leftPadding y: intervalSlider.topPadding + intervalSlider.availableHeight / 2 - height / 2 @@ -273,7 +294,7 @@ Rectangle { height: implicitHeight radius: 2 color: Theme.surfaceVariant - + Rectangle { width: intervalSlider.visualPosition * parent.width height: parent.height @@ -281,7 +302,7 @@ Rectangle { radius: 2 } } - + handle: Rectangle { x: intervalSlider.leftPadding + intervalSlider.visualPosition * (intervalSlider.availableWidth - width) y: intervalSlider.topPadding + intervalSlider.availableHeight / 2 - height / 2 @@ -294,11 +315,11 @@ Rectangle { } onMoved: { - Settings.settings.wallpaperInterval = Math.round(value) + Settings.settings.wallpaperInterval = Math.round(value); } } } - + // Resize Mode Setting ColumnLayout { spacing: 12 @@ -311,14 +332,14 @@ Rectangle { font.bold: true color: Theme.textPrimary } - + ComboBox { id: resizeComboBox Layout.fillWidth: true Layout.preferredHeight: 40 model: ["no", "crop", "fit", "stretch"] currentIndex: model.indexOf(Settings.settings.wallpaperResize) - + background: Rectangle { implicitWidth: 120 implicitHeight: 40 @@ -327,7 +348,7 @@ Rectangle { border.width: 1 radius: 8 } - + contentItem: Text { leftPadding: 12 rightPadding: resizeComboBox.indicator.width + resizeComboBox.spacing @@ -338,7 +359,7 @@ Rectangle { verticalAlignment: Text.AlignVCenter elide: Text.ElideRight } - + indicator: Text { x: resizeComboBox.width - width - 12 y: resizeComboBox.topPadding + (resizeComboBox.availableHeight - height) / 2 @@ -347,22 +368,22 @@ Rectangle { font.pixelSize: 24 color: Theme.textPrimary } - + popup: Popup { y: resizeComboBox.height width: resizeComboBox.width implicitHeight: contentItem.implicitHeight padding: 1 - + contentItem: ListView { clip: true implicitHeight: contentHeight model: resizeComboBox.popup.visible ? resizeComboBox.delegateModel : null currentIndex: resizeComboBox.highlightedIndex - - ScrollIndicator.vertical: ScrollIndicator { } + + ScrollIndicator.vertical: ScrollIndicator {} } - + background: Rectangle { color: Theme.surfaceVariant border.color: Theme.outline @@ -370,7 +391,7 @@ Rectangle { radius: 8 } } - + delegate: ItemDelegate { width: resizeComboBox.width contentItem: Text { @@ -382,18 +403,18 @@ Rectangle { elide: Text.ElideRight } highlighted: resizeComboBox.highlightedIndex === index - + background: Rectangle { color: highlighted ? Theme.accentPrimary.toString().replace(/#/, "#1A") : "transparent" } } - + onActivated: { - Settings.settings.wallpaperResize = model[index] + Settings.settings.wallpaperResize = model[index]; } } } - + // Transition Type Setting ColumnLayout { spacing: 12 @@ -406,14 +427,14 @@ Rectangle { font.bold: true color: Theme.textPrimary } - + ComboBox { id: transitionTypeComboBox Layout.fillWidth: true Layout.preferredHeight: 40 model: ["none", "simple", "fade", "left", "right", "top", "bottom", "wipe", "wave", "grow", "center", "any", "outer", "random"] currentIndex: model.indexOf(Settings.settings.transitionType) - + background: Rectangle { implicitWidth: 120 implicitHeight: 40 @@ -422,7 +443,7 @@ Rectangle { border.width: 1 radius: 8 } - + contentItem: Text { leftPadding: 12 rightPadding: transitionTypeComboBox.indicator.width + transitionTypeComboBox.spacing @@ -433,7 +454,7 @@ Rectangle { verticalAlignment: Text.AlignVCenter elide: Text.ElideRight } - + indicator: Text { x: transitionTypeComboBox.width - width - 12 y: transitionTypeComboBox.topPadding + (transitionTypeComboBox.availableHeight - height) / 2 @@ -442,22 +463,22 @@ Rectangle { font.pixelSize: 24 color: Theme.textPrimary } - + popup: Popup { y: transitionTypeComboBox.height width: transitionTypeComboBox.width implicitHeight: contentItem.implicitHeight padding: 1 - + contentItem: ListView { clip: true implicitHeight: contentHeight model: transitionTypeComboBox.popup.visible ? transitionTypeComboBox.delegateModel : null currentIndex: transitionTypeComboBox.highlightedIndex - - ScrollIndicator.vertical: ScrollIndicator { } + + ScrollIndicator.vertical: ScrollIndicator {} } - + background: Rectangle { color: Theme.surfaceVariant border.color: Theme.outline @@ -465,7 +486,7 @@ Rectangle { radius: 8 } } - + delegate: ItemDelegate { width: transitionTypeComboBox.width contentItem: Text { @@ -477,18 +498,18 @@ Rectangle { elide: Text.ElideRight } highlighted: transitionTypeComboBox.highlightedIndex === index - + background: Rectangle { color: highlighted ? Theme.accentPrimary.toString().replace(/#/, "#1A") : "transparent" } } - + onActivated: { - Settings.settings.transitionType = model[index] + Settings.settings.transitionType = model[index]; } } } - + // Transition FPS Setting ColumnLayout { spacing: 12 @@ -503,18 +524,18 @@ Rectangle { font.bold: true color: Theme.textPrimary } - + Item { Layout.fillWidth: true } - + Text { text: Settings.settings.transitionFps font.pixelSize: 13 color: Theme.textPrimary } } - + Slider { id: fpsSlider Layout.fillWidth: true @@ -523,7 +544,7 @@ Rectangle { stepSize: 5 value: Settings.settings.transitionFps snapMode: Slider.SnapAlways - + background: Rectangle { x: fpsSlider.leftPadding y: fpsSlider.topPadding + fpsSlider.availableHeight / 2 - height / 2 @@ -533,7 +554,7 @@ Rectangle { height: implicitHeight radius: 2 color: Theme.surfaceVariant - + Rectangle { width: fpsSlider.visualPosition * parent.width height: parent.height @@ -541,7 +562,7 @@ Rectangle { radius: 2 } } - + handle: Rectangle { x: fpsSlider.leftPadding + fpsSlider.visualPosition * (fpsSlider.availableWidth - width) y: fpsSlider.topPadding + fpsSlider.availableHeight / 2 - height / 2 @@ -554,11 +575,11 @@ Rectangle { } onMoved: { - Settings.settings.transitionFps = Math.round(value) + Settings.settings.transitionFps = Math.round(value); } } } - + // Transition Duration Setting ColumnLayout { spacing: 12 @@ -573,18 +594,18 @@ Rectangle { font.bold: true color: Theme.textPrimary } - + Item { Layout.fillWidth: true } - + Text { text: Settings.settings.transitionDuration.toFixed(3) font.pixelSize: 13 color: Theme.textPrimary } } - + Slider { id: durationSlider Layout.fillWidth: true @@ -593,7 +614,7 @@ Rectangle { stepSize: 0.050 value: Settings.settings.transitionDuration snapMode: Slider.SnapAlways - + background: Rectangle { x: durationSlider.leftPadding y: durationSlider.topPadding + durationSlider.availableHeight / 2 - height / 2 @@ -603,7 +624,7 @@ Rectangle { height: implicitHeight radius: 2 color: Theme.surfaceVariant - + Rectangle { width: durationSlider.visualPosition * parent.width height: parent.height @@ -611,7 +632,7 @@ Rectangle { radius: 2 } } - + handle: Rectangle { x: durationSlider.leftPadding + durationSlider.visualPosition * (durationSlider.availableWidth - width) y: durationSlider.topPadding + durationSlider.availableHeight / 2 - height / 2 @@ -624,9 +645,9 @@ Rectangle { } onMoved: { - Settings.settings.transitionDuration = value + Settings.settings.transitionDuration = value; } } } } -} \ No newline at end of file +} diff --git a/Widgets/Sidebar/Panel/BluetoothPanel.qml b/Widgets/Sidebar/Panel/BluetoothPanel.qml index 57e8bcc..599c100 100644 --- a/Widgets/Sidebar/Panel/BluetoothPanel.qml +++ b/Widgets/Sidebar/Panel/BluetoothPanel.qml @@ -80,7 +80,7 @@ Item { anchors.right: true margins.right: 0 margins.top: 0 - WlrLayershell.keyboardFocus: visible ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None + WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand onVisibleChanged: { if (!visible && Bluetooth.defaultAdapter && Bluetooth.defaultAdapter.discovering) diff --git a/Widgets/Sidebar/Panel/WifiPanel.qml b/Widgets/Sidebar/Panel/WifiPanel.qml index eeb5b8c..7c7a93a 100644 --- a/Widgets/Sidebar/Panel/WifiPanel.qml +++ b/Widgets/Sidebar/Panel/WifiPanel.qml @@ -342,7 +342,7 @@ Item { anchors.right: true margins.right: 0 margins.top: 0 - WlrLayershell.keyboardFocus: visible ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None + WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand Component.onCompleted: { wifiLogic.refreshNetworks() }