mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-30 06:57:49 -04:00
feat(clock): clock: per-widget click action w/overview as optional
Fixes 3993 Port 2.0
This commit is contained in:
1 parent
e777288904
commit
d367e7e71b
4 files changed
+62
-4
No files matched your search
@@ -132,7 +132,9 @@ var DEFAULTS = {
|
||||
clock: {
|
||||
clockCompactMode: false,
|
||||
clockDateOrder: "timeFirst",
|
||||
clockNotificationBadge: false
|
||||
clockNotificationBadge: false,
|
||||
clockClickAction: "dash",
|
||||
clockClickCommand: ""
|
||||
},
|
||||
music: {
|
||||
mediaStyle: "controls",
|
||||
|
||||
@@ -39,6 +39,27 @@ Column {
|
||||
onToggled: checked => root.page.set("clockNotificationBadge", checked)
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
readonly property var actions: ["dash", "settings", "command", "none"]
|
||||
|
||||
resetStore: root.page
|
||||
resetKeys: ["clockClickAction"]
|
||||
text: I18n.tr("Click action", "clock widget option: what clicking the clock opens")
|
||||
options: [I18n.tr("Dashboard"), I18n.tr("Time & weather"), I18n.tr("Custom command"), I18n.tr("None", "bar click action")]
|
||||
currentValue: options[actions.indexOf(root.page.value("clockClickAction"))] ?? options[0]
|
||||
onValueChanged: value => root.page.set("clockClickAction", actions[options.indexOf(value)] ?? "dash")
|
||||
}
|
||||
|
||||
SettingsTextFieldRow {
|
||||
resetStore: root.page
|
||||
resetKeys: ["clockClickCommand"]
|
||||
text: I18n.tr("Custom command")
|
||||
visible: root.page.value("clockClickAction") === "command"
|
||||
placeholderText: "gnome-clocks"
|
||||
value: root.page.value("clockClickCommand")
|
||||
onEditingFinished: value => root.page.set("clockClickCommand", value.trim())
|
||||
}
|
||||
|
||||
SettingsNavRow {
|
||||
iconName: "schedule"
|
||||
title: I18n.tr("Time & weather")
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Services.SystemTray
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
import qs.Modules.DBar.Widgets
|
||||
import qs.Modules.DDash
|
||||
import "../DBar/WidgetModel.js" as WidgetModel
|
||||
|
||||
Item {
|
||||
@@ -393,15 +395,32 @@ Item {
|
||||
}
|
||||
|
||||
onClockClicked: {
|
||||
const action = SettingsData.widgetOption("clock", clockWidget.widgetData, "clockClickAction");
|
||||
if (action === "none")
|
||||
return;
|
||||
if (action === "settings") {
|
||||
PopoutService.focusOrToggleSettingsWithTab("time_weather");
|
||||
return;
|
||||
}
|
||||
if (action === "command") {
|
||||
const command = SettingsData.widgetOption("clock", clockWidget.widgetData, "clockClickCommand");
|
||||
if (command)
|
||||
Quickshell.execDetached(["sh", "-c", command]);
|
||||
return;
|
||||
}
|
||||
// requestTab would still show a disabled Overview as a detail page.
|
||||
const tabId = DashRegistry.isSelectable(DashRegistry.overviewId) ? DashRegistry.overviewId : DashRegistry.defaultTabId;
|
||||
if (!tabId)
|
||||
return;
|
||||
const section = root.getWidgetSection(parent) || "center";
|
||||
root.openWidgetPopout({
|
||||
loader: PopoutService.dankDashPopoutLoader,
|
||||
widgetItem: clockWidget,
|
||||
section,
|
||||
useCenterSection: true,
|
||||
triggerSource: root._dashTriggerSource(section, "overview"),
|
||||
triggerSource: root._dashTriggerSource(section, tabId),
|
||||
islandActivity: "home",
|
||||
prepare: popout => popout.requestTab("overview"),
|
||||
prepare: popout => popout.requestTab(tabId),
|
||||
mode: "click",
|
||||
setTriggerScreen: true
|
||||
});
|
||||
|
||||
@@ -10148,6 +10148,14 @@
|
||||
"runtimeType": "barWidgetOption",
|
||||
"optionFile": "IslandOptions.qml"
|
||||
},
|
||||
{
|
||||
"section": "barWidgetOption:ClockOptions.qml:4",
|
||||
"label": "Click action",
|
||||
"tabIndex": 22,
|
||||
"keywords": [],
|
||||
"runtimeType": "barWidgetOption",
|
||||
"optionFile": "ClockOptions.qml"
|
||||
},
|
||||
{
|
||||
"section": "barWidgetOption:IslandOptions.qml:12",
|
||||
"label": "Clipboard",
|
||||
@@ -10324,6 +10332,14 @@
|
||||
"runtimeType": "barWidgetOption",
|
||||
"optionFile": "AppsDockOptions.qml"
|
||||
},
|
||||
{
|
||||
"section": "barWidgetOption:ClockOptions.qml:5",
|
||||
"label": "Custom command",
|
||||
"tabIndex": 22,
|
||||
"keywords": [],
|
||||
"runtimeType": "barWidgetOption",
|
||||
"optionFile": "ClockOptions.qml"
|
||||
},
|
||||
{
|
||||
"section": "barWidgetOption:IslandOptions.qml:14",
|
||||
"label": "Dashboard",
|
||||
@@ -11061,7 +11077,7 @@
|
||||
"optionFile": "IslandOptions.qml"
|
||||
},
|
||||
{
|
||||
"section": "barWidgetOption:ClockOptions.qml:4",
|
||||
"section": "barWidgetOption:ClockOptions.qml:6",
|
||||
"label": "Time & weather",
|
||||
"tabIndex": 22,
|
||||
"keywords": [],
|
||||
|
||||
Reference in new issue
Block a user