1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 21:42:51 -05:00

cups: add comprehensive CUPs setting page

- Add printers
- Delete printers
- Use polkit APIs as fallback on auth errors
- Fix ref system to conditionally subscribe to cups when wanted
This commit is contained in:
bbedward
2025-11-29 17:35:21 -05:00
parent df663aceb9
commit e6c3ae9397
31 changed files with 5993 additions and 558 deletions

View File

@@ -146,13 +146,30 @@ FocusScope {
}
Loader {
id: launcherLoader
id: printerLoader
anchors.fill: parent
active: root.currentIndex === 7
visible: active
focus: active
sourceComponent: PrinterTab {}
onActiveChanged: {
if (active && item) {
Qt.callLater(() => item.forceActiveFocus());
}
}
}
Loader {
id: launcherLoader
anchors.fill: parent
active: root.currentIndex === 8
visible: active
focus: active
sourceComponent: LauncherTab {}
onActiveChanged: {
@@ -166,7 +183,7 @@ FocusScope {
id: themeColorsLoader
anchors.fill: parent
active: root.currentIndex === 8
active: root.currentIndex === 9
visible: active
focus: active
@@ -183,7 +200,7 @@ FocusScope {
id: powerLoader
anchors.fill: parent
active: root.currentIndex === 9
active: root.currentIndex === 10
visible: active
focus: active
@@ -200,7 +217,7 @@ FocusScope {
id: pluginsLoader
anchors.fill: parent
active: root.currentIndex === 10
active: root.currentIndex === 11
visible: active
focus: active
@@ -219,7 +236,7 @@ FocusScope {
id: aboutLoader
anchors.fill: parent
active: root.currentIndex === 11
active: root.currentIndex === 12
visible: active
focus: active

View File

@@ -67,6 +67,15 @@ FloatingWindow {
}
}
Loader {
active: settingsModal.visible
sourceComponent: Component {
Ref {
service: CupsService
}
}
}
FileBrowserModal {
id: profileBrowser
@@ -112,7 +121,7 @@ FloatingWindow {
focus: true
Keys.onPressed: event => {
const tabCount = 12;
const tabCount = 13;
if (event.key === Qt.Key_Escape) {
hide();
event.accepted = true;

View File

@@ -48,33 +48,45 @@ Rectangle {
"dmsOnly": true,
"tabIndex": 6
},
{
"text": I18n.tr("Printers"),
"icon": "print",
"cupsOnly": true,
"tabIndex": 7
},
{
"text": I18n.tr("Launcher"),
"icon": "apps",
"tabIndex": 7
"tabIndex": 8
},
{
"text": I18n.tr("Theme & Colors"),
"icon": "palette",
"tabIndex": 8
"tabIndex": 9
},
{
"text": I18n.tr("Power & Security"),
"icon": "power",
"tabIndex": 9
"tabIndex": 10
},
{
"text": I18n.tr("Plugins"),
"icon": "extension",
"tabIndex": 10
"tabIndex": 11
},
{
"text": I18n.tr("About"),
"icon": "info",
"tabIndex": 11
"tabIndex": 12
}
]
readonly property var sidebarItems: allSidebarItems.filter(item => !item.dmsOnly || !NetworkService.usingLegacy)
readonly property var sidebarItems: allSidebarItems.filter(item => {
if (item.dmsOnly && NetworkService.usingLegacy)
return false;
if (item.cupsOnly && !CupsService.cupsAvailable)
return false;
return true;
})
function navigateNext() {
const currentItemIndex = sidebarItems.findIndex(item => item.tabIndex === currentIndex);