1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-07 05:55:37 -05:00

ensure loader patterns everywhere

This commit is contained in:
bbedward
2025-08-13 14:06:12 -04:00
parent f64dd538d5
commit 141dd7c66b
8 changed files with 224 additions and 103 deletions

View File

@@ -312,7 +312,7 @@ DankModal {
target: "clipboard" target: "clipboard"
} }
content: Component { property Component clipboardContent: Component {
Column { Column {
anchors.fill: parent anchors.fill: parent
anchors.margins: Theme.spacingL anchors.margins: Theme.spacingL
@@ -637,4 +637,6 @@ DankModal {
} }
} }
} }
content: clipboardContent
} }

View File

@@ -9,8 +9,14 @@ import qs.Modules.Notifications.Center
import qs.Services import qs.Services
import qs.Widgets import qs.Widgets
Item { DankModal {
id: root id: notificationModal
width: 500
height: 700
visible: notificationModalOpen
keyboardFocus: "ondemand"
onBackgroundClicked: hide()
NotificationKeyboardController { NotificationKeyboardController {
id: modalKeyboardController id: modalKeyboardController
@@ -19,11 +25,6 @@ Item {
onClose: function() { notificationModal.hide() } onClose: function() { notificationModal.hide() }
} }
property alias notificationModal: notificationModal
DankModal {
id: notificationModal
property bool notificationModalOpen: false property bool notificationModalOpen: false
property var notificationListRef: null property var notificationListRef: null
@@ -52,26 +53,6 @@ Item {
} }
visible: notificationModalOpen
width: 500
height: 700
keyboardFocus: "ondemand"
backgroundColor: Theme.popupBackground()
cornerRadius: Theme.cornerRadius
borderColor: Theme.outlineMedium
borderWidth: 1
enableShadow: true
onVisibleChanged: {
if (visible && !notificationModalOpen)
show()
}
onBackgroundClicked: {
notificationModalOpen = false
}
IpcHandler { IpcHandler {
function open() { function open() {
notificationModal.show() notificationModal.show()
@@ -91,7 +72,7 @@ Item {
target: "notifications" target: "notifications"
} }
content: Component { property Component notificationContent: Component {
FocusScope { FocusScope {
id: notificationKeyHandler id: notificationKeyHandler
@@ -171,5 +152,6 @@ Item {
} }
} }
}
content: notificationContent
} }

View File

@@ -1,5 +1,6 @@
pragma ComponentBehavior pragma ComponentBehavior
import Quickshell
import Quickshell.Io import Quickshell.Io
import QtQuick import QtQuick
import QtQuick.Controls import QtQuick.Controls
@@ -33,7 +34,7 @@ DankModal {
keyboardFocus: "ondemand" keyboardFocus: "ondemand"
onBackgroundClicked: hide() onBackgroundClicked: hide()
content: Component { property Component settingsContent: Component {
Item { Item {
anchors.fill: parent anchors.fill: parent
focus: true focus: true
@@ -181,6 +182,8 @@ DankModal {
} }
} }
content: settingsContent
IpcHandler { IpcHandler {
function open() { function open() {
settingsModal.show() settingsModal.show()

View File

@@ -89,7 +89,7 @@ DankModal {
target: "spotlight" target: "spotlight"
} }
content: Component { property Component spotlightContent: Component {
Item { Item {
id: spotlightKeyHandler id: spotlightKeyHandler
@@ -846,4 +846,6 @@ DankModal {
} }
} }
} }
content: spotlightContent
} }

View File

@@ -11,8 +11,14 @@ import qs.Modules.ControlCenter.Network
Item { Item {
id: networkTab id: networkTab
property var wifiPasswordModalRef: wifiPasswordModal property var wifiPasswordModalRef: {
property var networkInfoModalRef: networkInfoModal wifiPasswordModalLoader.active = true
return wifiPasswordModalLoader.item
}
property var networkInfoModalRef: {
networkInfoModalLoader.active = true
return networkInfoModalLoader.item
}
property var sortedWifiNetworks: { property var sortedWifiNetworks: {
if (!NetworkService.wifiAvailable || !NetworkService.wifiEnabled) { if (!NetworkService.wifiAvailable || !NetworkService.wifiEnabled) {

View File

@@ -589,7 +589,7 @@ PanelWindow {
id: launcherButtonComponent id: launcherButtonComponent
LauncherButton { LauncherButton {
isActive: appDrawerPopout ? appDrawerPopout.isVisible : false isActive: appDrawerLoader.item ? appDrawerLoader.item.isVisible : false
section: { section: {
if (parent && parent.parent) { if (parent && parent.parent) {
if (parent.parent === leftSection) if (parent.parent === leftSection)
@@ -601,11 +601,12 @@ PanelWindow {
} }
return "left" return "left"
} }
popupTarget: appDrawerPopout popupTarget: appDrawerLoader.item
parentScreen: root.screen parentScreen: root.screen
onClicked: { onClicked: {
if (appDrawerPopout) appDrawerLoader.active = true
appDrawerPopout.toggle() if (appDrawerLoader.item)
appDrawerLoader.item.toggle()
} }
} }
} }
@@ -641,10 +642,16 @@ PanelWindow {
return "center" return "center"
return "center" return "center"
} }
popupTarget: centcomPopout popupTarget: {
centcomPopoutLoader.active = true
return centcomPopoutLoader.item
}
parentScreen: root.screen parentScreen: root.screen
onClockClicked: { onClockClicked: {
centcomPopout.calendarVisible = !centcomPopout.calendarVisible centcomPopoutLoader.active = true
if (centcomPopoutLoader.item) {
centcomPopoutLoader.item.calendarVisible = !centcomPopoutLoader.item.calendarVisible
}
} }
} }
} }
@@ -663,10 +670,16 @@ PanelWindow {
return "center" return "center"
return "center" return "center"
} }
popupTarget: centcomPopout popupTarget: {
centcomPopoutLoader.active = true
return centcomPopoutLoader.item
}
parentScreen: root.screen parentScreen: root.screen
onClicked: { onClicked: {
centcomPopout.calendarVisible = !centcomPopout.calendarVisible centcomPopoutLoader.active = true
if (centcomPopoutLoader.item) {
centcomPopoutLoader.item.calendarVisible = !centcomPopoutLoader.item.calendarVisible
}
} }
} }
} }
@@ -684,10 +697,16 @@ PanelWindow {
return "center" return "center"
return "center" return "center"
} }
popupTarget: centcomPopout popupTarget: {
centcomPopoutLoader.active = true
return centcomPopoutLoader.item
}
parentScreen: root.screen parentScreen: root.screen
onClicked: { onClicked: {
centcomPopout.calendarVisible = !centcomPopout.calendarVisible centcomPopoutLoader.active = true
if (centcomPopoutLoader.item) {
centcomPopoutLoader.item.calendarVisible = !centcomPopoutLoader.item.calendarVisible
}
} }
} }
} }
@@ -731,10 +750,15 @@ PanelWindow {
return "center" return "center"
return "right" return "right"
} }
popupTarget: processListPopout popupTarget: {
processListPopoutLoader.active = true
return processListPopoutLoader.item
}
parentScreen: root.screen parentScreen: root.screen
toggleProcessList: () => { toggleProcessList: () => {
return processListPopout.toggle() processListPopoutLoader.active = true
if (processListPopoutLoader.item)
return processListPopoutLoader.item.toggle()
} }
} }
} }
@@ -752,10 +776,15 @@ PanelWindow {
return "center" return "center"
return "right" return "right"
} }
popupTarget: processListPopout popupTarget: {
processListPopoutLoader.active = true
return processListPopoutLoader.item
}
parentScreen: root.screen parentScreen: root.screen
toggleProcessList: () => { toggleProcessList: () => {
return processListPopout.toggle() processListPopoutLoader.active = true
if (processListPopoutLoader.item)
return processListPopoutLoader.item.toggle()
} }
} }
} }
@@ -773,10 +802,15 @@ PanelWindow {
return "center" return "center"
return "right" return "right"
} }
popupTarget: processListPopout popupTarget: {
processListPopoutLoader.active = true
return processListPopoutLoader.item
}
parentScreen: root.screen parentScreen: root.screen
toggleProcessList: () => { toggleProcessList: () => {
return processListPopout.toggle() processListPopoutLoader.active = true
if (processListPopoutLoader.item)
return processListPopoutLoader.item.toggle()
} }
} }
} }
@@ -794,11 +828,16 @@ PanelWindow {
return "center" return "center"
return "right" return "right"
} }
popupTarget: processListPopout popupTarget: {
processListPopoutLoader.active = true
return processListPopoutLoader.item
}
parentScreen: root.screen parentScreen: root.screen
widgetData: parent.widgetData widgetData: parent.widgetData
toggleProcessList: () => { toggleProcessList: () => {
return processListPopout.toggle() processListPopoutLoader.active = true
if (processListPopoutLoader.item)
return processListPopoutLoader.item.toggle()
} }
} }
} }
@@ -808,7 +847,7 @@ PanelWindow {
NotificationCenterButton { NotificationCenterButton {
hasUnread: root.notificationCount > 0 hasUnread: root.notificationCount > 0
isActive: notificationCenter.notificationHistoryVisible isActive: notificationCenterLoader.item ? notificationCenterLoader.item.notificationHistoryVisible : false
section: { section: {
if (parent && parent.parent === leftSection) if (parent && parent.parent === leftSection)
return "left" return "left"
@@ -818,11 +857,17 @@ PanelWindow {
return "center" return "center"
return "right" return "right"
} }
popupTarget: notificationCenter popupTarget: {
notificationCenterLoader.active = true
return notificationCenterLoader.item
}
parentScreen: root.screen parentScreen: root.screen
onClicked: { onClicked: {
notificationCenter.notificationHistoryVisible notificationCenterLoader.active = true
= !notificationCenter.notificationHistoryVisible if (notificationCenterLoader.item) {
notificationCenterLoader.item.notificationHistoryVisible
= !notificationCenterLoader.item.notificationHistoryVisible
}
} }
} }
} }
@@ -831,7 +876,7 @@ PanelWindow {
id: batteryComponent id: batteryComponent
Battery { Battery {
batteryPopupVisible: batteryPopout.batteryPopupVisible batteryPopupVisible: batteryPopoutLoader.item ? batteryPopoutLoader.item.batteryPopupVisible : false
section: { section: {
if (parent && parent.parent === leftSection) if (parent && parent.parent === leftSection)
return "left" return "left"
@@ -841,10 +886,16 @@ PanelWindow {
return "center" return "center"
return "right" return "right"
} }
popupTarget: batteryPopout popupTarget: {
batteryPopoutLoader.active = true
return batteryPopoutLoader.item
}
parentScreen: root.screen parentScreen: root.screen
onToggleBatteryPopup: { onToggleBatteryPopup: {
batteryPopout.batteryPopupVisible = !batteryPopout.batteryPopupVisible batteryPopoutLoader.active = true
if (batteryPopoutLoader.item) {
batteryPopoutLoader.item.batteryPopupVisible = !batteryPopoutLoader.item.batteryPopupVisible
}
} }
} }
} }
@@ -853,7 +904,7 @@ PanelWindow {
id: controlCenterButtonComponent id: controlCenterButtonComponent
ControlCenterButton { ControlCenterButton {
isActive: controlCenterPopout.controlCenterVisible isActive: controlCenterLoader.item ? controlCenterLoader.item.controlCenterVisible : false
section: { section: {
if (parent && parent.parent === leftSection) if (parent && parent.parent === leftSection)
return "left" return "left"
@@ -863,18 +914,24 @@ PanelWindow {
return "center" return "center"
return "right" return "right"
} }
popupTarget: controlCenterPopout popupTarget: {
controlCenterLoader.active = true
return controlCenterLoader.item
}
parentScreen: root.screen parentScreen: root.screen
onClicked: { onClicked: {
controlCenterPopout.triggerScreen = root.screen controlCenterLoader.active = true
controlCenterPopout.controlCenterVisible = !controlCenterPopout.controlCenterVisible if (controlCenterLoader.item) {
if (controlCenterPopout.controlCenterVisible) { controlCenterLoader.item.triggerScreen = root.screen
controlCenterLoader.item.controlCenterVisible = !controlCenterLoader.item.controlCenterVisible
if (controlCenterLoader.item.controlCenterVisible) {
if (NetworkService.wifiEnabled) if (NetworkService.wifiEnabled)
NetworkService.scanWifi() NetworkService.scanWifi()
} }
} }
} }
} }
}
Component { Component {
id: spacerComponent id: spacerComponent

View File

@@ -745,15 +745,15 @@ Singleton {
if (type === "wifi") { if (type === "wifi") {
setRouteMetrics.command = ["bash", "-c", setRouteMetrics.command = ["bash", "-c",
"nmcli -t -f NAME,TYPE connection show | grep 802-11-wireless | cut -d: -f1 | " + "nmcli -t -f NAME,TYPE connection show | grep 802-11-wireless | cut -d: -f1 | " +
"xargs -I {} nmcli connection modify {} ipv4.route-metric 50; " + "xargs -I {} bash -c 'nmcli connection modify \"{}\" ipv4.route-metric 50 ipv6.route-metric 50'; " +
"nmcli -t -f NAME,TYPE connection show | grep 802-3-ethernet | cut -d: -f1 | " + "nmcli -t -f NAME,TYPE connection show | grep 802-3-ethernet | cut -d: -f1 | " +
"xargs -I {} nmcli connection modify {} ipv4.route-metric 100"] "xargs -I {} bash -c 'nmcli connection modify \"{}\" ipv4.route-metric 100 ipv6.route-metric 100'"]
} else if (type === "ethernet") { } else if (type === "ethernet") {
setRouteMetrics.command = ["bash", "-c", setRouteMetrics.command = ["bash", "-c",
"nmcli -t -f NAME,TYPE connection show | grep 802-3-ethernet | cut -d: -f1 | " + "nmcli -t -f NAME,TYPE connection show | grep 802-3-ethernet | cut -d: -f1 | " +
"xargs -I {} nmcli connection modify {} ipv4.route-metric 50; " + "xargs -I {} bash -c 'nmcli connection modify \"{}\" ipv4.route-metric 50 ipv6.route-metric 50'; " +
"nmcli -t -f NAME,TYPE connection show | grep 802-11-wireless | cut -d: -f1 | " + "nmcli -t -f NAME,TYPE connection show | grep 802-11-wireless | cut -d: -f1 | " +
"xargs -I {} nmcli connection modify {} ipv4.route-metric 100"] "xargs -I {} bash -c 'nmcli connection modify \"{}\" ipv4.route-metric 100 ipv6.route-metric 100'"]
} }
setRouteMetrics.running = true setRouteMetrics.running = true
} }
@@ -763,6 +763,7 @@ Singleton {
running: false running: false
onExited: (exitCode) => { onExited: (exitCode) => {
console.log("Set route metrics process exited with code:", exitCode)
if (exitCode === 0) { if (exitCode === 0) {
restartConnections.running = true restartConnections.running = true
} }

View File

@@ -42,26 +42,51 @@ ShellRoot {
delegate: Dock { delegate: Dock {
modelData: item modelData: item
contextMenu: dockContextMenu contextMenu: dockContextMenuLoader.item ? dockContextMenuLoader.item : null
windowsMenu: dockWindowsMenu windowsMenu: dockWindowsMenuLoader.item ? dockWindowsMenuLoader.item : null
Component.onCompleted: {
dockContextMenuLoader.active = true
dockWindowsMenuLoader.active = true
} }
} }
}
LazyLoader {
id: centcomPopoutLoader
active: false
CentcomPopout { CentcomPopout {
id: centcomPopout id: centcomPopout
} }
}
LazyLoader {
id: dockContextMenuLoader
active: false
DockContextMenu { DockContextMenu {
id: dockContextMenu id: dockContextMenu
} }
}
LazyLoader {
id: dockWindowsMenuLoader
active: false
DockWindowsMenu { DockWindowsMenu {
id: dockWindowsMenu id: dockWindowsMenu
} }
}
LazyLoader {
id: notificationCenterLoader
active: false
NotificationCenterPopout { NotificationCenterPopout {
id: notificationCenter id: notificationCenter
} }
}
Variants { Variants {
model: Quickshell.screens model: Quickshell.screens
@@ -71,51 +96,94 @@ ShellRoot {
} }
} }
LazyLoader {
id: controlCenterLoader
active: false
ControlCenterPopout { ControlCenterPopout {
id: controlCenterPopout id: controlCenterPopout
onPowerActionRequested: (action, title, message) => { onPowerActionRequested: (action, title, message) => {
powerConfirmModal.powerConfirmAction = action powerConfirmModalLoader.active = true
powerConfirmModal.powerConfirmTitle = title if (powerConfirmModalLoader.item) {
powerConfirmModal.powerConfirmMessage = message powerConfirmModalLoader.item.powerConfirmAction = action
powerConfirmModal.powerConfirmVisible = true powerConfirmModalLoader.item.powerConfirmTitle = title
powerConfirmModalLoader.item.powerConfirmMessage = message
powerConfirmModalLoader.item.powerConfirmVisible = true
}
} }
onLockRequested: { onLockRequested: {
lock.activate() lock.activate()
} }
} }
}
LazyLoader {
id: wifiPasswordModalLoader
active: false
WifiPasswordModal { WifiPasswordModal {
id: wifiPasswordModal id: wifiPasswordModal
} }
}
LazyLoader {
id: networkInfoModalLoader
active: false
NetworkInfoModal { NetworkInfoModal {
id: networkInfoModal id: networkInfoModal
} }
}
LazyLoader {
id: batteryPopoutLoader
active: false
BatteryPopout { BatteryPopout {
id: batteryPopout id: batteryPopout
} }
}
LazyLoader {
id: powerMenuLoader
active: false
PowerMenu { PowerMenu {
id: powerMenu id: powerMenu
} }
}
LazyLoader {
id: powerConfirmModalLoader
active: false
PowerConfirmModal { PowerConfirmModal {
id: powerConfirmModal id: powerConfirmModal
} }
}
LazyLoader {
id: processListPopoutLoader
active: false
ProcessListPopout { ProcessListPopout {
id: processListPopout id: processListPopout
} }
}
SettingsModal { SettingsModal {
id: settingsModal id: settingsModal
} }
LazyLoader {
id: appDrawerLoader
active: false
AppDrawerPopout { AppDrawerPopout {
id: appDrawerPopout id: appDrawerPopout
} }
}
SpotlightModal { SpotlightModal {
id: spotlightModal id: spotlightModal