mirror of
https://github.com/zoriya/noctalia-shell.git
synced 2026-08-15 18:43:59 +00:00
@@ -88,7 +88,7 @@ SmartPanel {
|
||||
}
|
||||
|
||||
// Build powerOptions from settings, filtering enabled ones and adding metadata
|
||||
readonly property var powerOptions: (function () {
|
||||
property var powerOptions: {
|
||||
var options = []
|
||||
var settingsOptions = Settings.data.sessionMenu.powerOptions || []
|
||||
|
||||
@@ -100,13 +100,39 @@ SmartPanel {
|
||||
"action": settingOption.action,
|
||||
"icon": metadata.icon,
|
||||
"title": metadata.title,
|
||||
"isShutdown": metadata.isShutdown
|
||||
"isShutdown": metadata.isShutdown,
|
||||
"countdownEnabled": settingOption.countdownEnabled !== undefined ? settingOption.countdownEnabled : true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return options
|
||||
})()
|
||||
}
|
||||
|
||||
// Update powerOptions when settings change
|
||||
Connections {
|
||||
target: Settings.data.sessionMenu
|
||||
function onPowerOptionsChanged() {
|
||||
var options = []
|
||||
var settingsOptions = Settings.data.sessionMenu.powerOptions || []
|
||||
|
||||
for (var i = 0; i < settingsOptions.length; i++) {
|
||||
var settingOption = settingsOptions[i]
|
||||
if (settingOption.enabled && actionMetadata[settingOption.action]) {
|
||||
var metadata = actionMetadata[settingOption.action]
|
||||
options.push({
|
||||
"action": settingOption.action,
|
||||
"icon": metadata.icon,
|
||||
"title": metadata.title,
|
||||
"isShutdown": metadata.isShutdown,
|
||||
"countdownEnabled": settingOption.countdownEnabled !== undefined ? settingOption.countdownEnabled : true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
root.powerOptions = options
|
||||
}
|
||||
}
|
||||
|
||||
// Lifecycle handlers
|
||||
onOpened: {
|
||||
@@ -120,12 +146,27 @@ SmartPanel {
|
||||
|
||||
// Timer management
|
||||
function startTimer(action) {
|
||||
// If countdown is disabled, execute immediately
|
||||
// Check if global countdown is disabled
|
||||
if (!Settings.data.sessionMenu.enableCountdown) {
|
||||
executeAction(action)
|
||||
return
|
||||
}
|
||||
|
||||
// Check per-item countdown setting
|
||||
var option = null
|
||||
for (var i = 0; i < powerOptions.length; i++) {
|
||||
if (powerOptions[i].action === action) {
|
||||
option = powerOptions[i]
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// If this specific action has countdown disabled, execute immediately
|
||||
if (option && option.countdownEnabled === false) {
|
||||
executeAction(action)
|
||||
return
|
||||
}
|
||||
|
||||
if (timerActive && pendingAction === action) {
|
||||
// Second click - execute immediately
|
||||
executeAction(action)
|
||||
|
||||
Reference in New Issue
Block a user