[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