[neon/neon-packaging/plasma-bigscreen/Neon/unstable] debian/patches: update patches

Carlos De Maine null at kde.org
Tue Jun 24 04:41:26 BST 2025


Git commit 1fb88214103b7d3750c53dce7bc8ac492d224dee by Carlos De Maine.
Committed on 24/06/2025 at 03:41.
Pushed by carlosdem into branch 'Neon/unstable'.

update patches

M  +0    -1    debian/patches/series
D  +0    -1166 debian/patches/work_devinlin_settingsapp.diff
R  +47   -11   debian/patches/work_devnlin_fixmediacenter.diff [from: debian/patches/nlin_fixmediacenter.diff - 086% similarity]

https://invent.kde.org/neon/neon-packaging/plasma-bigscreen/-/commit/1fb88214103b7d3750c53dce7bc8ac492d224dee

diff --git a/debian/patches/series b/debian/patches/series
index 4a72fdb..0fede92 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1 @@
-work_devinlin_settingsapp.diff
 work_devinlin_fixmediacenter.diff
diff --git a/debian/patches/work_devinlin_settingsapp.diff b/debian/patches/work_devinlin_settingsapp.diff
deleted file mode 100644
index ed27d5b..0000000
--- a/debian/patches/work_devinlin_settingsapp.diff
+++ /dev/null
@@ -1,1166 +0,0 @@
-diff --git a/components/qml/AbstractDelegate.qml b/components/qml/AbstractDelegate.qml
-index c3ce0333f3306b409344f4599039cb1b8a268ab2..b006f9c137ccb275eb8f2d95096f9cae0eed47b3 100644
---- a/components/qml/AbstractDelegate.qml
-+++ b/components/qml/AbstractDelegate.qml
-@@ -28,14 +28,14 @@ QQC2.ItemDelegate {
-         return null;
-     }
-     readonly property bool isCurrent: {//print(text+index+" "+listView.currentIndex+activeFocus+" "+listView.moving)
--        listView.currentIndex == index && activeFocus && !listView.moving
-+        listView && listView.currentIndex == index && activeFocus && !listView.moving
-     }
- 
-     highlighted: isCurrent
-     property int shadowSize: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
-     property int borderSize: Kirigami.Units.smallSpacing
-     property int baseRadius: 6
--    
-+
-     z: isCurrent ? 2 : 0
- 
-     onClicked: {
-diff --git a/components/qml/KCMAbstractDelegate.qml b/components/qml/KCMAbstractDelegate.qml
-index 69ed75bbfaf8cc2d8e650fdc35eab761052b84a0..90bbe5b4daf46c6f42f51c3036927235e3cf4cab 100644
---- a/components/qml/KCMAbstractDelegate.qml
-+++ b/components/qml/KCMAbstractDelegate.qml
-@@ -6,13 +6,17 @@
- import QtQuick
- import QtQuick.Layouts
- import QtQuick.Controls
-+
- import org.kde.plasma.components as PlasmaComponents
- import org.kde.kirigami as Kirigami
- 
- AbstractDelegate {
-     id: delegate
--    implicitWidth: listView.cellWidth * 2.5
--    implicitHeight: listView.height + Kirigami.Units.largeSpacing
-+
-+    property var listView: ListView.view
-+    implicitWidth: listView ? listView.cellWidth * 2.5 : 0
-+    implicitHeight: listView ? listView.height + Kirigami.Units.largeSpacing : 0
-+
-     property alias itemIcon: contentItemSvgIcon.source
-     property alias itemLabel: contentItemLabel.text
-     property alias itemLabelVisible: contentItemLabel.visible
-@@ -37,7 +41,7 @@ AbstractDelegate {
-     }
- 
-     Keys.onLeftPressed: (event)=> {
--        if(listView.currentIndex == 0){
-+        if(listView && listView.currentIndex == 0){
-             settingMenuItemFocus()
-         } else {
-             event.accepted = false
-@@ -46,17 +50,17 @@ AbstractDelegate {
- 
-     contentItem: Item {
-         id: contentItemLayout
--        
-+
-         Kirigami.Icon {
-             id: contentItemSvgIcon
-             width: Kirigami.Units.iconSizes.huge
-             height: width
-             y: contentItemLayout.height/2 - contentItemSvgIcon.height/2
-         }
--        
-+
-         ColumnLayout {
-             id: textLayout
--            
-+
-             anchors {
-                 left: contentItemSvgIcon.right
-                 right: contentItemLayout.right
-@@ -77,7 +81,7 @@ AbstractDelegate {
-                 color: Kirigami.Theme.textColor
-                 font: itemLabelFont
-             }
--            
-+
-             PlasmaComponents.Label {
-                 id: contentItemSubLabel
-                 Layout.fillWidth: true
-@@ -91,7 +95,7 @@ AbstractDelegate {
-                 font.pixelSize: contentItemLabel.font.pixelSize * 0.8
-             }
-         }
--        
-+
-         Item {
-             id: contentItemRepresentationLayout
-             anchors.right: parent.right
-@@ -102,8 +106,8 @@ AbstractDelegate {
-             Kirigami.Icon {
-                 id: contentItemTickIcon
-                 anchors.centerIn: parent
--                width: listView.currentIndex == index && delegate.activeFocus ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.smallMedium
--                height: listView.currentIndex == index && delegate.activeFocus ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.smallMedium
-+                width: listView && listView.currentIndex == index && delegate.activeFocus ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.smallMedium
-+                height: listView && listView.currentIndex == index && delegate.activeFocus ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.smallMedium
-             }
-         }
-     }
-diff --git a/containments/homescreen/package/contents/ui/ConfigWindow.qml b/containments/homescreen/package/contents/ui/ConfigWindow.qml
-deleted file mode 100644
-index 37cdc557d0326f1c41a6d059d8a346ef5d5cb285..0000000000000000000000000000000000000000
---- a/containments/homescreen/package/contents/ui/ConfigWindow.qml
-+++ /dev/null
-@@ -1,427 +0,0 @@
--/*
--    SPDX-FileCopyrightText: 2019 Marco Martin <mart at kde.org>
--    SPDX-FileCopyrightText: 2019 Aditya Mehra <aix.m at outlook.com>
--
--    SPDX-License-Identifier: GPL-2.0-or-later
--*/
--
--import QtQuick
--import QtQuick.Layouts
--import QtQuick.Window
--import QtQuick.Controls as Controls
--import org.kde.kirigami as Kirigami
--import org.kde.bigscreen as Bigscreen
--import org.kde.private.biglauncher 
--import org.kde.plasma.private.nanoshell as NanoShell
--
--NanoShell.FullScreenOverlay {
--    id: overlay
--    width: Screen.desktopAvailableWidth
--    height: Screen.desktopAvailableHeight
--    visible: false
--    color: "transparent"
--    property var currentModuleName
--    property var loadedKCMPage: null
--
--    Timer {
--        id: timer
--        function setTimeout(cb, delayTime) {
--            timer.interval = delayTime;
--            timer.repeat = false;
--            timer.triggered.connect(cb);
--            timer.triggered.connect(function release() {
--                timer.triggered.disconnect(cb);
--                timer.triggered.disconnect(release);
--            });
--            timer.start();
--        }
--    }
--
--    function showOverlay(moduleName=undefined) {
--        if (!overlay.visible) {
--            overlay.visible = true;
--            timer.setTimeout(function () {
--                menu.open();
--                settingsKCMMenu.children[0].forceActiveFocus();
--            }, 100);
--        }
--
--        if (moduleName === undefined) {
--            openModule(plasmoid.kcmsListModel.get(0).kcmId);
--        } else {
--            openModule(moduleName);
--        }
--    }
--
--    function hideOverlay() {
--        if (overlay.visible) {
--            timer.setTimeout(function () {
--                menu.close();
--            }, 200);
--            overlay.visible = false;
--        }
--    }
--
--    function openModule(path) {
--        if (path.indexOf("kcm_mediacenter_wallpaper") != -1) {
--            hideOverlay();
--            root.configureWallpaper();
--        }
--        
--        module.path = path;
--        while (pageStack.count >= 1) {
--            pageStack.clear();
--        }
--        loadedKCMPage = kcmContainer.createObject(pageStack, {"kcm": module.kcm, "internalPage": module.kcm.mainUi, "lastSettingMenuItem": settingItemAtLastIndex()});
--        pageStack.push(loadedKCMPage);
--        currentModuleName = module.name;
--    }
--
--    function settingItemAtLastIndex() {
--        return settingsKCMMenu.children[settingsKCMMenu.lastIndex]
--    }
--
--    Module {
--        id: module
--    }
--
--
--    Kirigami.ShadowedRectangle {
--        id: configContentItem
--        color: Kirigami.Theme.backgroundColor
--        anchors.fill: parent
--
--        Item {
--            id: menu
--            width: Screen.desktopAvailableWidth * 0.3
--            height: parent.height
--            opacity: 0
--            x: -menu.width
--
--            function open() {
--                menu.opacity = 1;
--                menu.x = 0;
--            }
--            function close() {
--                menu.opacity = 0;
--                menu.x = -menu.width;
--            }
--
--            Behavior on opacity {
--                NumberAnimation {
--                    duration: 50
--                }
--            }
--
--            Behavior on x {
--                NumberAnimation {
--                    duration: 50
--                }
--            }
--
--            Item {
--                id: settingsHeader
--                height: parent.height * 0.065
--                anchors.top: parent.top
--                anchors.left: parent.left
--                anchors.right: parent.right
--                anchors.margins: Kirigami.Units.largeSpacing
--
--                Kirigami.Heading {
--                    id: settingsTitle
--                    text: i18n("Settings")
--                    anchors.fill: parent
--                    anchors.margins: Kirigami.Units.largeSpacing
--                    verticalAlignment: Text.AlignBottom
--                    horizontalAlignment: Text.AlignLeft
--                    font.bold: true
--                    color: Kirigami.Theme.textColor
--                    fontSizeMode: Text.Fit
--                    minimumPixelSize: 16
--                    font.pixelSize: 32
--                }
--            }
--
--            Kirigami.Separator {
--                id: settingsSeparator
--                anchors.top: settingsHeader.bottom
--                anchors.left: parent.left
--                anchors.right: parent.right
--                Kirigami.Theme.colorSet: Kirigami.Theme.Button
--                Kirigami.Theme.inherit: false
--                color: Kirigami.Theme.backgroundColor
--                height: 2
--            }
--
--            ColumnLayout {
--                id: settingsKCMMenu
--                anchors.top: settingsSeparator.bottom
--                anchors.left: parent.left
--                anchors.right: parent.right
--                anchors.margins: Kirigami.Units.largeSpacing
--                property var lastIndex: 0
--
--                Repeater {
--                    id: settingsKCMMenuModel
--                    model: plasmoid.kcmsListModel
--
--                    delegate: Controls.Button {
--                        id: kcmButton
--                        property var modelData: typeof model !== "undefined" ? model : null
--                        Layout.fillWidth: true
--                        Layout.preferredHeight: Kirigami.Units.gridUnit * 5
--                        Keys.onEscapePressed: hideOverlay()
--
--                        leftPadding: Kirigami.Units.gridUnit * 2
--
--                        onFocusChanged: {
--                            if(focus) {
--                                settingsKCMMenu.lastIndex = index;
--                            }
--                        }
--
--                        Keys.onDownPressed: {
--                            if (index < settingsKCMMenuModel.count - 1) {
--                                settingsKCMMenu.children[index + 1].forceActiveFocus();
--                            } else {
--                                kcmcloseButton.forceActiveFocus();
--                            }
--                        }
--                        Keys.onUpPressed: {
--                            if (index > 0) {
--                                settingsKCMMenu.children[index - 1].forceActiveFocus();
--                            } else {
--                                kcmcloseButton.forceActiveFocus();
--                            }
--                        }
--
--                        // The about-distro KCM is not a native bigscreen kcm, so it eats keyboard inputs and softlocks us
--                        KeyNavigation.right: (currentModuleName == "kcm_about-distro") ? null :  loadedKCMPage 
--
--                        onClicked: {
--                            openModule(modelData.kcmId);
--                        }
--
--                        Keys.onReturnPressed: {
--                            openModule(modelData.kcmId);
--                        }
--
--                        background: Rectangle {
--                            id: kcmButtonBackground
--                            Kirigami.Theme.colorSet: Kirigami.Theme.Button
--                            Kirigami.Theme.inherit: false
--                            color: (modelData.kcmId === currentModuleName) ? Kirigami.Theme.highlightColor : Kirigami.Theme.backgroundColor
--                            radius: Kirigami.Units.largeSpacing
--                            border.color: kcmButton.activeFocus ? Kirigami.Theme.linkColor : ((modelData.kcmId === currentModuleName) ? Kirigami.Theme.highlightColor : Kirigami.Theme.backgroundColor)
--                            border.width: 3        
--
--                            Behavior on color {
--                                ColorAnimation {
--                                    duration: 100
--                                }
--                            }
--                                         
--                        }
--
--                        contentItem: Item {                            
--                            RowLayout {
--                                id: kcmButtonLayout
--                                anchors.fill: parent
--                                spacing: Kirigami.Units.gridUnit
--
--                                Kirigami.Icon {
--                                    id: kcmButtonIcon
--                                    source: modelData.kcmIconName
--                                    Layout.alignment: Qt.AlignLeft
--                                    Layout.preferredHeight: Kirigami.Units.iconSizes.large
--                                    Layout.preferredWidth: kcmButtonIcon.height
--                                }
--
--                                Kirigami.Heading {
--                                    id: kcmButtonLabel
--                                    text: modelData.kcmName
--                                    wrapMode: Text.WordWrap
--                                    elide: Text.ElideRight
--                                    Layout.alignment: Qt.AlignLeft
--                                    Layout.fillWidth: true
--                                }
--                            }
--                        }
--                    }
--                }
--            }
--        }
--
--        Item {
--            id: kcmContainerHolder
--            anchors.left: menu.right
--            anchors.right: parent.right
--            anchors.margins: Kirigami.Units.largeSpacing
--            width: parent.width - menu.width
--            height: parent.height
--            opacity: kcmPresent ? 1 : 0
--            property bool kcmPresent: true
--
--            Controls.StackView {
--                id: pageStack
--                anchors.fill: parent
--
--                pushEnter: Transition {
--                    PropertyAnimation {
--                        property: "opacity"
--                        from: 0
--                        to:1
--                        duration: 100
--                    }
--                }
--                pushExit: Transition {
--                    PropertyAnimation {
--                        property: "opacity"
--                        from: 1
--                        to:0
--                        duration: 100
--                    }
--                }
--                popEnter: Transition {
--                    PropertyAnimation {
--                        property: "opacity"
--                        from: 0
--                        to:1
--                        duration: 100
--                    }
--                }
--                popExit: Transition {
--                    PropertyAnimation {
--                        property: "opacity"
--                        from: 1
--                        to:0
--                        duration: 100
--                    }
--                }
--            }
--        }
--        
--        Component {
--            id: kcmContainer
--            Kirigami.Page {
--                id: container
--
--                property QtObject kcm
--                property Item internalPage
--                property Item lastSettingMenuItem
--                property bool suppressDeletion: false
--
--                title: internalPage.title
--
--                header: Item {
--                    id: headerAreaTop
--                    height: parent.height * 0.075
--                    anchors.top: parent.bottom
--                    anchors.left: parent.left
--                    anchors.right: parent.right
--                    anchors.margins: Kirigami.Units.largeSpacing
--
--                    Kirigami.Heading {
--                        id: settingsTitle
--                        text: internalPage.title
--                        anchors.fill: parent
--                        anchors.margins: Kirigami.Units.largeSpacing
--                        verticalAlignment: Text.AlignBottom
--                        horizontalAlignment: Text.AlignLeft
--                        font.bold: true
--                        color: Kirigami.Theme.textColor
--                        fontSizeMode: Text.Fit
--                        minimumPixelSize: 16
--                        font.pixelSize: 32
--                    }
--
--                    Kirigami.Separator {
--                        id: settingsSeparator
--                        anchors.top: headerAreaTop.bottom
--                        anchors.left: parent.left
--                        anchors.right: parent.right
--                        Kirigami.Theme.colorSet: Kirigami.Theme.Button
--                        Kirigami.Theme.inherit: false
--                        color: Kirigami.Theme.backgroundColor
--                        height: 2
--                    }
--                }
--
--                topPadding: 0
--                leftPadding: 0
--                rightPadding: 0
--                bottomPadding: 0
--
--                flickable: internalPage.flickable
--                actions: [internalPage.actions.main, internalPage.contextualActions]
--
--                onInternalPageChanged: {
--                    internalPage.parent = contentItem;
--                    internalPage.anchors.fill = contentItem;
--                }
--                onActiveFocusChanged: {
--                    if (activeFocus) {
--                        internalPage.forceActiveFocus();
--                    }
--                }
--
--                Component.onCompleted: {
--                    // setting a binding seems to not work, add them manually
--                    for (let action of internalPage.actions) {
--                        actions.push(action);
--                    }
--                    if (kcm.load !== undefined) {
--                        kcm.load();
--                    }
--                }
--
--                data: [
--                    Connections {
--                        target: internalPage
--                        function onActionsChanged() {
--                            root.actions.clear();
--                            for (let action of internalPage.actions) {
--                                root.actions.push(action);
--                            }
--                        }
--                    },
--                    Connections {
--                        target: kcm
--                        function onPagePushed(page) {
--                            pageStack.push(kcmContainer.createObject(pageStack, {"internalPage": page}));
--                        }
--                        function onPageRemoved() {
--                            pageStack.pop();
--                            hideOverlay();
--                        }
--                        function onNeedsSaveChanged() {
--                            if (kcm.needsSave) {
--                                kcm.save();
--                            }
--                        }
--                    },
--                    Connections {
--                        target: pageStack
--                        function onPageRemoved(page) {
--                            if (kcm.needsSave) {
--                                kcm.save();
--                            }
--                            if (page == container && !container.suppressDeletion) {
--                                page.destroy();
--                            }
--                        }
--                    },
--                    Connections {
--                        target: kcm
--                        function onCurrentIndexChanged(index) {
--                            const index_with_offset = index + 1;
--                            if (index_with_offset !== pageStack.currentIndex) {
--                                pageStack.currentIndex = index_with_offset;
--                            }
--                        }
--                    }
--                ]
--            }
--        }
--    }
--}
-diff --git a/containments/homescreen/package/contents/ui/HomeScreen.qml b/containments/homescreen/package/contents/ui/HomeScreen.qml
-index ec48f6e27df0b5701b5de551d134b6caff45ff38..b1113f82fb8596f3757dc433c78f55bbdec4ceaa 100644
---- a/containments/homescreen/package/contents/ui/HomeScreen.qml
-+++ b/containments/homescreen/package/contents/ui/HomeScreen.qml
-@@ -13,6 +13,7 @@ import org.kde.plasma.plasmoid
- import org.kde.plasma.core as PlasmaCore
- import org.kde.kquickcontrolsaddons
- import org.kde.kirigami as Kirigami
-+import org.kde.bigscreen as Bigscreen
- 
- import "launcher"
- 
-@@ -23,7 +24,8 @@ Item {
-     readonly property real rightMargin: leftMargin
- 
-     // Whether to blur the wallpaper background
--    readonly property bool blurBackground: launcher.scrolledDown
-+    readonly property bool blurBackground: launcher.scrolledDown || root.Window.activeFocusItem === null
-+    readonly property bool darkenBackground: launcher.scrolledDown
- 
-     property real zoomScale: 1
- 
-@@ -62,6 +64,7 @@ Item {
- 
-     transitions: [
-         Transition {
-+            to: "focused"
-             ParallelAnimation {
-                 OpacityAnimator { duration: 300 }
-                 NumberAnimation { target: root; property: 'zoomScale'; duration: 600; easing.type: Easing.OutExpo }
-diff --git a/containments/homescreen/package/contents/ui/indicators/AbstractIndicator.qml b/containments/homescreen/package/contents/ui/indicators/AbstractIndicator.qml
-index 8211f1e13715c1d72dd064ebd17c85a1c4dcae3d..3d7f6c3a30047377fc97506243510ab46d279845 100644
---- a/containments/homescreen/package/contents/ui/indicators/AbstractIndicator.qml
-+++ b/containments/homescreen/package/contents/ui/indicators/AbstractIndicator.qml
-@@ -12,8 +12,12 @@ import org.kde.bigscreen as Bigscreen
- import org.kde.kirigami as Kirigami
- import org.kde.ksvg as KSvg
- 
--PlasmaComponents.Button {
-+PlasmaComponents.ToolButton {
-     id: button
-+
-+    Kirigami.Theme.inherit: false
-+    Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
-+
-     Layout.preferredWidth: height
- 
-     leftPadding: Kirigami.Units.smallSpacing
-diff --git a/containments/homescreen/package/contents/ui/main.qml b/containments/homescreen/package/contents/ui/main.qml
-index d83be15b24cc012fa1f161718c81d33e32f4db72..0e5ff49d2f1714d58b8cf990c333ddd31bcbfc9d 100644
---- a/containments/homescreen/package/contents/ui/main.qml
-+++ b/containments/homescreen/package/contents/ui/main.qml
-@@ -14,6 +14,7 @@ import org.kde.plasma.core as PlasmaCore
- import org.kde.kquickcontrolsaddons
- 
- import "launcher"
-+import "settings" as Settings
- 
- ContainmentItem {
-     id: root
-@@ -81,7 +82,7 @@ ContainmentItem {
-         id: feedbackWindow
-     }
- 
--    ConfigWindow {
-+    Settings.ConfigWindow {
-         id: configWindow
-     }
- 
-@@ -124,7 +125,7 @@ ContainmentItem {
-     Rectangle {
-         anchors.fill: parent
-         color: 'black'
--        opacity: homeScreen.blurBackground ? 0.7 : 0.4
-+        opacity: homeScreen.darkenBackground ? 0.7 : 0.4
-         Behavior on opacity { NumberAnimation { duration: 500 } }
-     }
- 
-diff --git a/containments/homescreen/package/contents/ui/settings/ConfigWindow.qml b/containments/homescreen/package/contents/ui/settings/ConfigWindow.qml
-new file mode 100644
-index 0000000000000000000000000000000000000000..ada9e81ff5def1b69775d637a591fc01552bf664
---- /dev/null
-+++ b/containments/homescreen/package/contents/ui/settings/ConfigWindow.qml
-@@ -0,0 +1,392 @@
-+// SPDX-FileCopyrightText: 2019 Marco Martin <mart at kde.org>
-+// SPDX-FileCopyrightText: 2019 Aditya Mehra <aix.m at outlook.com>
-+// SPDX-FileCopyrightText: 2025 Devin Lin <devin at kde.org>
-+// SPDX-License-Identifier: GPL-2.0-or-later
-+
-+import QtQuick
-+import QtQuick.Layouts
-+import QtQuick.Window
-+import QtQuick.Controls as Controls
-+
-+import org.kde.kirigami as Kirigami
-+import org.kde.bigscreen as Bigscreen
-+import org.kde.private.biglauncher
-+import org.kde.plasma.private.nanoshell as NanoShell
-+import org.kde.plasma.extras as PlasmaExtras
-+import org.kde.plasma.plasmoid
-+
-+NanoShell.FullScreenOverlay {
-+    id: root
-+
-+    flags: Qt.FramelessWindowHint
-+    color: 'transparent'
-+
-+    property string currentModuleName
-+    property var loadedKCMPage: null
-+
-+    property var settingsKCMMenu: menu.listView
-+
-+    // Height of header components (shared between the two panes)
-+    readonly property real headerHeight: Kirigami.Units.gridUnit * 7
-+
-+    // HACK: some KCMs we don't want to navigate to because we lose focus
-+    // The about-distro KCM is not a native bigscreen kcm, so it eats keyboard inputs and softlocks us
-+    readonly property bool isCurrentModuleFocusable: currentModuleName != "kcm_about-distro"
-+
-+    // Timer utility with callback
-+    Timer {
-+        id: timer
-+        function setTimeout(cb, delayTime) {
-+            timer.interval = delayTime;
-+            timer.repeat = false;
-+            timer.triggered.connect(cb);
-+            timer.triggered.connect(function release() {
-+                timer.triggered.disconnect(cb);
-+                timer.triggered.disconnect(release);
-+            });
-+            timer.start();
-+        }
-+    }
-+
-+    function showOverlay(moduleName=undefined) {
-+        if (!root.visible) {
-+            root.showFullScreen();
-+            timer.setTimeout(function () {
-+                settingsKCMMenu.forceActiveFocus();
-+            }, 100);
-+        }
-+
-+        if (moduleName === undefined) {
-+            openModule(plasmoid.kcmsListModel.get(0).kcmId);
-+        } else {
-+            openModule(moduleName);
-+        }
-+    }
-+
-+    function hideOverlay() {
-+        if (root.visible) {
-+            root.close();
-+        }
-+    }
-+
-+    // Open KCM with a given path
-+    function openModule(path) {
-+        module.path = path;
-+        while (pageStack.count >= 1) {
-+            pageStack.clear();
-+        }
-+
-+        if (path.indexOf("kcm_mediacenter_wallpaper") != -1) {
-+            // HACK: Special page for wallpaper selector
-+            // TODO: create proper wallpaper KCM
-+            loadedKCMPage = wallpaperKcm.createObject(pageStack, {});
-+            pageStack.push(loadedKCMPage);
-+            currentModuleName = 'kcm_mediacenter_wallpaper';
-+        } else {
-+            // Load page for KCM
-+            loadedKCMPage = kcmContainer.createObject(pageStack, {"kcm": module.kcm, "internalPage": module.kcm.mainUi});
-+            pageStack.push(loadedKCMPage);
-+            currentModuleName = module.name;
-+        }
-+    }
-+
-+    onVisibleChanged: {
-+        if (visible) {
-+            opacityAnim.to = 1;
-+            opacityAnim.restart();
-+        }
-+    }
-+
-+    onClosing: (close) => {
-+        if (configContentItem.opacity !== 0) {
-+            close.accepted = false;
-+            opacityAnim.to = 0;
-+            opacityAnim.restart();
-+        }
-+    }
-+
-+    Module {
-+        id: module
-+    }
-+
-+    Item {
-+        id: configContentItem
-+        anchors.fill: parent
-+
-+        opacity: 0
-+        NumberAnimation on opacity {
-+            id: opacityAnim
-+            duration: 400
-+            easing.type: Easing.OutCubic
-+            onFinished: {
-+                if (configContentItem.opacity === 0) {
-+                    root.close();
-+                }
-+            }
-+        }
-+
-+        // Close settings when escape is pressed
-+        Keys.onEscapePressed: hideOverlay()
-+
-+        // Sidebar (left panel)
-+        ConfigWindowSidebar {
-+            id: menu
-+            headerHeight: root.headerHeight
-+
-+            anchors.top: parent.top
-+            anchors.left: parent.left
-+            anchors.bottom: parent.bottom
-+            width: Math.max(Kirigami.Units.gridUnit * 20, parent.width * 0.20)
-+
-+            currentModuleName: root.currentModuleName
-+
-+            KeyNavigation.right: root.isCurrentModuleFocusable ? loadedKCMPage : null
-+            KeyNavigation.tab: KeyNavigation.right
-+        }
-+
-+        // Shadow
-+        Rectangle {
-+            width: Kirigami.Units.largeSpacing
-+            anchors.top: parent.top
-+            anchors.right: menu.right
-+            anchors.bottom: parent.bottom
-+            opacity: 0.1
-+
-+            gradient: Gradient {
-+                orientation: Gradient.Horizontal
-+                GradientStop { position: 0.0; color: 'transparent' }
-+                GradientStop { position: 1.0; color: 'black' }
-+            }
-+        }
-+
-+        // Settings module (right panel)
-+        Rectangle {
-+            id: kcmContainerHolder
-+            color: Kirigami.Theme.backgroundColor
-+
-+            anchors {
-+                left: menu.right
-+                right: parent.right
-+                top: parent.top
-+                bottom: parent.bottom
-+            }
-+
-+            property bool kcmPresent: true
-+
-+            Controls.StackView {
-+                id: pageStack
-+                anchors.fill: parent
-+
-+                pushEnter: Transition {
-+                    PropertyAnimation { property: "opacity"; from: 0; to: 1; duration: 100 }
-+                }
-+                pushExit: Transition {
-+                    PropertyAnimation { property: "opacity"; from: 1; to: 0; duration: 100 }
-+                }
-+                popEnter: Transition {
-+                    PropertyAnimation { property: "opacity"; from: 0; to: 1; duration: 100 }
-+                }
-+                popExit: Transition {
-+                    PropertyAnimation { property: "opacity"; from: 1; to: 0; duration: 100 }
-+                }
-+            }
-+        }
-+
-+        Component {
-+            id: wallpaperKcm
-+            Kirigami.Page {
-+                id: container
-+
-+                KeyNavigation.left: root.isCurrentModuleFocusable ? root.settingsKCMMenu : null
-+                KeyNavigation.backtab: KeyNavigation.left
-+
-+                onActiveFocusChanged: {
-+                    if (activeFocus) {
-+                        wallpaperSelectorDelegate.forceActiveFocus();
-+                    }
-+                }
-+
-+                topPadding: 0
-+                leftPadding: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing
-+                rightPadding: leftPadding
-+                bottomPadding: 0
-+
-+                header: Item {
-+                    id: headerAreaTop
-+                    height: root.headerHeight
-+                    width: parent.width
-+
-+                    Kirigami.Heading {
-+                        id: settingsTitle
-+                        text: i18n('Wallpaper')
-+                        anchors.fill: parent
-+
-+                        padding: container.leftPadding
-+                        verticalAlignment: Text.AlignBottom
-+                        horizontalAlignment: Text.AlignLeft
-+
-+                        font.weight: Font.Light
-+
-+                        color: Kirigami.Theme.textColor
-+                        fontSizeMode: Text.Fit
-+                        minimumPixelSize: 16
-+                        font.pixelSize: 32
-+                    }
-+                }
-+
-+                ColumnLayout {
-+                    anchors.fill: parent
-+
-+                    Bigscreen.AbstractDelegate {
-+                        id: wallpaperSelectorDelegate
-+                        highlighted: activeFocus
-+                        Layout.fillWidth: true
-+
-+                        // Open wallpaper selector
-+                        onClicked: {
-+                            root.hideOverlay();
-+                            Plasmoid.internalAction("configure").trigger();
-+                        }
-+
-+                        contentItem: RowLayout {
-+                            Kirigami.Heading {
-+                                Layout.fillWidth: true
-+                                text: i18n('Open wallpaper selector')
-+                            }
-+                            Kirigami.Icon {
-+                                Layout.alignment: Qt.AlignCenter
-+                                source: 'arrow-right'
-+                                implicitWidth: Kirigami.Units.iconSizes.smallMedium
-+                                implicitHeight: Kirigami.Units.iconSizes.smallMedium
-+                            }
-+                        }
-+                    }
-+                    Item { Layout.fillHeight: true }
-+                }
-+            }
-+        }
-+
-+        Component {
-+            id: kcmContainer
-+            Kirigami.Page {
-+                id: container
-+
-+                property QtObject kcm
-+                property Item internalPage
-+                property bool suppressDeletion: false
-+
-+                title: internalPage.title
-+
-+                KeyNavigation.left: root.isCurrentModuleFocusable ? root.settingsKCMMenu : null
-+                KeyNavigation.backtab: KeyNavigation.left
-+
-+                header: Item {
-+                    id: headerAreaTop
-+                    height: root.headerHeight
-+                    width: parent.width
-+
-+                    Kirigami.Heading {
-+                        id: settingsTitle
-+                        text: internalPage ? internalPage.title : ''
-+                        anchors.fill: parent
-+
-+                        padding: container.leftPadding
-+                        verticalAlignment: Text.AlignBottom
-+                        horizontalAlignment: Text.AlignLeft
-+
-+                        font.weight: Font.Light
-+
-+                        color: Kirigami.Theme.textColor
-+                        fontSizeMode: Text.Fit
-+                        minimumPixelSize: 16
-+                        font.pixelSize: 32
-+                    }
-+                }
-+
-+                topPadding: 0
-+                leftPadding: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing
-+                rightPadding: leftPadding
-+                bottomPadding: 0
-+
-+                flickable: internalPage ? internalPage.flickable : null
-+                actions: (internalPage && internalPage.actions) ? internalPage.actions : []
-+
-+                onInternalPageChanged: {
-+                    if (internalPage) {
-+                        internalPage.parent = contentItem;
-+                        internalPage.anchors.fill = contentItem;
-+                    }
-+                }
-+                onActiveFocusChanged: {
-+                    if (activeFocus && internalPage && root.isCurrentModuleFocusable) {
-+                        internalPage.forceActiveFocus();
-+                    }
-+                    if (activeFocus && !root.isCurrentModuleFocusable) {
-+                        // Return focus to sidebar if this module is not focusable
-+                        root.settingsKCMMenu.forceActiveFocus();
-+                    }
-+                }
-+
-+                Component.onCompleted: {
-+                    // setting a binding seems to not work, add them manually
-+                    if (internalPage && internalPage.actions) {
-+                        for (let action of internalPage.actions) {
-+                            actions.push(action);
-+                        }
-+                    }
-+                    if (kcm.load !== undefined) {
-+                        kcm.load();
-+                    }
-+                }
-+
-+                data: [
-+                    Connections {
-+                        target: internalPage
-+                        function onActionsChanged() {
-+                            root.actions.clear();
-+                            for (let action of internalPage.actions) {
-+                                root.actions.push(action);
-+                            }
-+                        }
-+                    },
-+                    Connections {
-+                        target: kcm
-+                        function onPagePushed(page) {
-+                            pageStack.push(kcmContainer.createObject(pageStack, {"internalPage": page}));
-+                        }
-+                        function onPageRemoved() {
-+                            pageStack.pop();
-+                            hideOverlay();
-+                        }
-+                        function onNeedsSaveChanged() {
-+                            if (kcm.needsSave) {
-+                                kcm.save();
-+                            }
-+                        }
-+                    },
-+                    Connections {
-+                        target: pageStack
-+                        // TODO: this doesn't exist in StackView, find alternative
-+                        // function onPageRemoved(page) {
-+                        //     if (kcm.needsSave) {
-+                        //         kcm.save();
-+                        //     }
-+                        //     if (page == container && !container.suppressDeletion) {
-+                        //         page.destroy();
-+                        //     }
-+                        // }
-+                    },
-+                    Connections {
-+                        target: kcm
-+                        function onCurrentIndexChanged(index) {
-+                            const index_with_offset = index + 1;
-+                            if (index_with_offset !== pageStack.currentIndex) {
-+                                pageStack.currentIndex = index_with_offset;
-+                            }
-+                        }
-+                    }
-+                ]
-+            }
-+        }
-+    }
-+}
-diff --git a/containments/homescreen/package/contents/ui/settings/ConfigWindowSidebar.qml b/containments/homescreen/package/contents/ui/settings/ConfigWindowSidebar.qml
-new file mode 100644
-index 0000000000000000000000000000000000000000..b09ed403ce208522773a0a0e480a661082e2a0ef
---- /dev/null
-+++ b/containments/homescreen/package/contents/ui/settings/ConfigWindowSidebar.qml
-@@ -0,0 +1,146 @@
-+// SPDX-FileCopyrightText: 2019 Marco Martin <mart at kde.org>
-+// SPDX-FileCopyrightText: 2019 Aditya Mehra <aix.m at outlook.com>
-+// SPDX-FileCopyrightText: 2025 Devin Lin <devin at kde.org>
-+// SPDX-License-Identifier: GPL-2.0-or-later
-+
-+import QtQuick
-+import QtQuick.Layouts
-+import QtQuick.Window
-+import QtQuick.Controls as Controls
-+
-+import org.kde.kirigami as Kirigami
-+import org.kde.bigscreen as Bigscreen
-+import org.kde.private.biglauncher
-+import org.kde.plasma.private.nanoshell as NanoShell
-+import org.kde.plasma.extras as PlasmaExtras
-+import org.kde.plasma.plasmoid
-+
-+Rectangle {
-+    id: root
-+
-+    property string currentModuleName
-+    property real headerHeight
-+
-+    property var listView: settingsKCMMenu
-+
-+    readonly property real horizontalMargin: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing
-+
-+    // Translucent background
-+    color: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.8)
-+
-+    width: Math.max(Kirigami.Units.gridUnit * 20, parent.width * 0.20)
-+    height: parent.height
-+
-+    ColumnLayout {
-+        anchors.fill: parent
-+
-+        // Header
-+        Item {
-+            id: settingsHeader
-+            Layout.fillWidth: true
-+            Layout.preferredHeight: root.headerHeight
-+
-+            Kirigami.Heading {
-+                id: settingsTitle
-+                text: i18n("Settings")
-+                anchors.fill: parent
-+
-+                padding: root.horizontalMargin
-+                verticalAlignment: Text.AlignBottom
-+                horizontalAlignment: Text.AlignLeft
-+
-+                font.weight: Font.Light
-+
-+                color: Kirigami.Theme.textColor
-+                fontSizeMode: Text.Fit
-+                minimumPixelSize: 16
-+                font.pixelSize: 32
-+            }
-+        }
-+
-+        // Settings module list
-+        ListView {
-+            id: settingsKCMMenu
-+
-+            Layout.fillWidth: true
-+            Layout.fillHeight: true
-+            leftMargin: menu.horizontalMargin
-+            rightMargin: menu.horizontalMargin
-+            topMargin: Kirigami.Units.largeSpacing
-+            bottomMargin: Kirigami.Units.largeSpacing
-+
-+            model: plasmoid.kcmsListModel
-+            spacing: Kirigami.Units.largeSpacing
-+            keyNavigationEnabled: true
-+
-+            onCurrentItemChanged: {
-+                if (currentItem) {
-+                    currentItem.forceActiveFocus();
-+                    currentItem.clicked();
-+                }
-+            }
-+
-+            delegate: Controls.Button {
-+                id: kcmButton
-+                property var modelData: typeof model !== "undefined" ? model : null
-+
-+                width: settingsKCMMenu.width - settingsKCMMenu.leftMargin - settingsKCMMenu.rightMargin
-+
-+                leftPadding: Kirigami.Units.gridUnit * 2
-+                rightPadding: Kirigami.Units.gridUnit * 2
-+                topPadding: Kirigami.Units.largeSpacing
-+                bottomPadding: Kirigami.Units.largeSpacing
-+
-+                onClicked: openModule(modelData.kcmId);
-+                Keys.onReturnPressed: openModule(modelData.kcmId);
-+
-+                Connections {
-+                    target: root
-+                    function onCurrentModuleNameChanged() {
-+                        if (modelData.kcmId === currentModuleName) {
-+                            settingsKCMMenu.currentIndex = model.index;
-+                        }
-+                    }
-+                }
-+
-+                background: Rectangle {
-+                    id: kcmButtonBackground
-+                    color: (modelData.kcmId == currentModuleName || kcmButton.ListView.isCurrentItem) ?
-+                            Qt.rgba(Kirigami.Theme.highlightColor.r, Kirigami.Theme.highlightColor.g, Kirigami.Theme.highlightColor.b, 0.2) : 'transparent'
-+                    radius: Kirigami.Units.cornerRadius
-+
-+                    Kirigami.Theme.inherit: false
-+                    Kirigami.Theme.colorSet: Kirigami.Theme.Button
-+
-+                    border.width: 2
-+                    border.color: (modelData.kcmId === currentModuleName || kcmButton.ListView.isCurrentItem) ? Kirigami.Theme.highlightColor : 'transparent'
-+
-+                    scale: (settingsKCMMenu.activeFocus) ? 1.05 : 1.0
-+                    Behavior on scale { NumberAnimation {} }
-+                }
-+
-+                contentItem: RowLayout {
-+                    id: kcmButtonLayout
-+                    spacing: Kirigami.Units.gridUnit
-+
-+                    Kirigami.Icon {
-+                        id: kcmButtonIcon
-+                        source: modelData.kcmIconName
-+                        Layout.alignment: Qt.AlignLeft
-+                        Layout.preferredHeight: Kirigami.Units.iconSizes.medium
-+                        Layout.preferredWidth: kcmButtonIcon.height
-+                    }
-+
-+                    Kirigami.Heading {
-+                        id: kcmButtonLabel
-+                        text: modelData.kcmName
-+                        wrapMode: Text.Wrap
-+                        elide: Text.ElideRight
-+                        font.weight: Font.Medium
-+                        Layout.fillWidth: true
-+                    }
-+                }
-+            }
-+        }
-+    }
-+}
-\ No newline at end of file
diff --git a/debian/patches/nlin_fixmediacenter.diff b/debian/patches/work_devnlin_fixmediacenter.diff
similarity index 86%
rename from debian/patches/nlin_fixmediacenter.diff
rename to debian/patches/work_devnlin_fixmediacenter.diff
index 534f1a0..c7c78ad 100644
--- a/debian/patches/nlin_fixmediacenter.diff
+++ b/debian/patches/work_devnlin_fixmediacenter.diff
@@ -35,7 +35,7 @@ index 992c0816f95cf38424fe1bcf30fd2a9f9a3703bc..b8bbcd6a2af61a4c02f9838414b0cf7e
                          var filter_device = deviceMap.deviceType == 0 ? "CEC" : "GAMEPAD"
                          return sourceModel.data(sourceModel.index(source_row, 0, source_parent), KeyMapModel.DeviceTypeRole).indexOf(filter_device) !== -1;
 diff --git a/kcm/ui/+mediacenter/DeviceSetupView.qml b/kcm/ui/+mediacenter/DeviceSetupView.qml
-index 220ade7448236dd2015ab873527f9b826285df29..1ce485860afea5c7ea12a8d37a4167dfeb3f61e0 100644
+index 220ade7448236dd2015ab873527f9b826285df29..2fb5991d1203068592e4c25790aa893c588ac259 100644
 --- a/kcm/ui/+mediacenter/DeviceSetupView.qml
 +++ b/kcm/ui/+mediacenter/DeviceSetupView.qml
 @@ -9,12 +9,14 @@ import QtQuick 2.14
@@ -51,7 +51,7 @@ index 220ade7448236dd2015ab873527f9b826285df29..1ce485860afea5c7ea12a8d37a4167df
 +import org.kde.kirigami 2.20 as Kirigami
 +import org.kde.plasma.components as PlasmaComponents
 +import org.kde.plasma.extras as PlasmaExtras
-+import org.kde.bigscreen 1.0 as BigScreen
++import org.kde.bigscreen as BigScreen
 +
 +
  Rectangle {
@@ -139,7 +139,7 @@ index 220ade7448236dd2015ab873527f9b826285df29..1ce485860afea5c7ea12a8d37a4167df
                  anchors.fill: parent
                  anchors.margins: -Kirigami.Units.gridUnit / 4
 diff --git a/kcm/ui/+mediacenter/delegates/DeviceDelegate.qml b/kcm/ui/+mediacenter/delegates/DeviceDelegate.qml
-index bafa9f20b2809d457f572ec002b57d52e694eab0..00a467d399fb554578fed5e129c72f7fad3cf777 100644
+index bafa9f20b2809d457f572ec002b57d52e694eab0..df8267ba08128b98b36085d8db1d67a2d6428930 100644
 --- a/kcm/ui/+mediacenter/delegates/DeviceDelegate.qml
 +++ b/kcm/ui/+mediacenter/delegates/DeviceDelegate.qml
 @@ -8,12 +8,12 @@
@@ -156,7 +156,7 @@ index bafa9f20b2809d457f572ec002b57d52e694eab0..00a467d399fb554578fed5e129c72f7f
 -import QtGraphicalEffects 1.14
 +import org.kde.kirigami as Kirigami
 +import org.kde.plasma.components as PlasmaComponents
-+import org.kde.bigscreen 1.0 as BigScreen
++import org.kde.bigscreen as BigScreen
  
  BigScreen.AbstractDelegate {
      id: delegate
@@ -212,7 +212,7 @@ index bafa9f20b2809d457f572ec002b57d52e694eab0..00a467d399fb554578fed5e129c72f7f
                  left: deviceSvgIcon.right
                  right: deviceItemLayout.right
 diff --git a/kcm/ui/+mediacenter/main.qml b/kcm/ui/+mediacenter/main.qml
-index 6b2fd03765904afa68114b86f81c922b701460a8..73d4d73181c2536033d980cc41122277d42ad85b 100644
+index 6b2fd03765904afa68114b86f81c922b701460a8..f569e5a89197945fe083cab965daaf9987f3d3eb 100644
 --- a/kcm/ui/+mediacenter/main.qml
 +++ b/kcm/ui/+mediacenter/main.qml
 @@ -5,15 +5,17 @@
@@ -234,13 +234,43 @@ index 6b2fd03765904afa68114b86f81c922b701460a8..73d4d73181c2536033d980cc41122277
 +import org.kde.plasma.components as PlasmaComponents
  import org.kde.kcmutils as KCM
 -import org.kde.mycroft.bigscreen 1.0 as BigScreen
-+import org.kde.bigscreen 1.0 as BigScreen
++import org.kde.bigscreen as BigScreen
  import org.kde.private.kcm.remotecontrollers 1.0
 +
  import "+mediacenter/delegates" as Delegates
  
  KCM.SimpleKCM {
-@@ -67,49 +69,6 @@ KCM.SimpleKCM {
+@@ -21,20 +23,24 @@ KCM.SimpleKCM {
+ 
+     title: i18n("Remote Controllers")
+     background: null
++
+     leftPadding: Kirigami.Units.smallSpacing
+-    topPadding: 0
++    topPadding: Kirigami.Units.smallSpacing
+     rightPadding: Kirigami.Units.smallSpacing
+-    bottomPadding: 0
++    bottomPadding: Kirigami.Units.smallSpacing
++
+     property var supportedControllers: kcm.devicesModel
+ 
+-    Component.onCompleted: {
+-        connectionView.forceActiveFocus();
++    onActiveFocusChanged: {
++        if (activeFocus) {
++            connectionView.forceActiveFocus();
++        }
+     }
+ 
+     Connections {
+         target: kcm.devicesModel
+         onDevicesChanged: {
+-            if(connectionView.count > 0) {
++            if (connectionView.count > 0) {
+                 deviceSetupView.currentDevice = connectionView.currentItem
+                 deviceSetupView.deviceType = connectionView.currentItem.deviceType
+             }
+@@ -67,54 +73,11 @@ KCM.SimpleKCM {
              }
          }
  
@@ -290,7 +320,13 @@ index 6b2fd03765904afa68114b86f81c922b701460a8..73d4d73181c2536033d980cc41122277
          Item {
              clip: true
              anchors.left: parent.left
-@@ -125,12 +84,12 @@ KCM.SimpleKCM {
+             anchors.top: headerAreaTop.bottom
+-            anchors.bottom: footerMain.top
++            anchors.bottom: parent.bottom
+             width: parent.width - deviceSetupView.width
+ 
+             ColumnLayout {
+@@ -125,20 +88,19 @@ KCM.SimpleKCM {
                  BigScreen.TileView {
                      id: connectionView
                      focus: true
@@ -301,11 +337,11 @@ index 6b2fd03765904afa68114b86f81c922b701460a8..73d4d73181c2536033d980cc41122277
                      title: supportedControllers.count > 0 ? i18n("Found Devices") : i18n("No Devices Found")
                      currentIndex: 0
 -                    delegate: Delegates.DeviceDelegate{}
+-                    navigationDown: kcmcloseButton
 +                    delegate: Delegates.DeviceDelegate {}
-                     navigationDown: kcmcloseButton
                      Behavior on x {
                          NumberAnimation {
-@@ -138,7 +97,7 @@ KCM.SimpleKCM {
+                             duration: Kirigami.Units.longDuration * 2
                              easing.type: Easing.InOutQuad
                          }
                      }
@@ -314,7 +350,7 @@ index 6b2fd03765904afa68114b86f81c922b701460a8..73d4d73181c2536033d980cc41122277
                      onCurrentItemChanged: {
                          deviceSetupView.currentDevice = currentItem.device
                          deviceSetupView.deviceType = currentItem.deviceType
-@@ -196,9 +155,9 @@ KCM.SimpleKCM {
+@@ -196,9 +158,9 @@ KCM.SimpleKCM {
              Connections {
                  target: kcm
                  onGamepadKeyPressed: {


More information about the Neon-commits mailing list