1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-06 21:45:38 -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"
}
content: Component {
property Component clipboardContent: Component {
Column {
anchors.fill: parent
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.Widgets
Item {
id: root
DankModal {
id: notificationModal
width: 500
height: 700
visible: notificationModalOpen
keyboardFocus: "ondemand"
onBackgroundClicked: hide()
NotificationKeyboardController {
id: modalKeyboardController
@@ -19,11 +25,6 @@ Item {
onClose: function() { notificationModal.hide() }
}
property alias notificationModal: notificationModal
DankModal {
id: notificationModal
property bool notificationModalOpen: false
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 {
function open() {
notificationModal.show()
@@ -91,7 +72,7 @@ Item {
target: "notifications"
}
content: Component {
property Component notificationContent: Component {
FocusScope {
id: notificationKeyHandler
@@ -171,5 +152,6 @@ Item {
}
}
}
content: notificationContent
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -745,15 +745,15 @@ Singleton {
if (type === "wifi") {
setRouteMetrics.command = ["bash", "-c",
"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 | " +
"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") {
setRouteMetrics.command = ["bash", "-c",
"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 | " +
"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
}
@@ -763,6 +763,7 @@ Singleton {
running: false
onExited: (exitCode) => {
console.log("Set route metrics process exited with code:", exitCode)
if (exitCode === 0) {
restartConnections.running = true
}

134
shell.qml
View File

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