mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-17 00:34:01 -04:00
settings: window rule editor on the shortcut editor's dialog and cards
fixes #3608
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -243,48 +243,64 @@ Item {
|
||||
});
|
||||
}
|
||||
|
||||
property bool editorOpen: false
|
||||
property bool editorMounted: false
|
||||
property var editorRequest: null
|
||||
|
||||
function openRuleModal(window) {
|
||||
if (readOnly) {
|
||||
showHyprlandReadOnlyWarning();
|
||||
return;
|
||||
}
|
||||
if (!PopoutService.windowRuleModalLoader)
|
||||
return;
|
||||
PopoutService.windowRuleModalLoader.active = true;
|
||||
if (PopoutService.windowRuleModalLoader.item) {
|
||||
PopoutService.windowRuleModalLoader.item.onRuleSubmitted.connect(loadWindowRules);
|
||||
PopoutService.windowRuleModalLoader.item.show(window || null);
|
||||
}
|
||||
openEditor("new", window || null);
|
||||
}
|
||||
|
||||
function editRule(rule) {
|
||||
if (readOnly) {
|
||||
showHyprlandReadOnlyWarning();
|
||||
return;
|
||||
}
|
||||
if (!PopoutService.windowRuleModalLoader)
|
||||
return;
|
||||
PopoutService.windowRuleModalLoader.active = true;
|
||||
if (PopoutService.windowRuleModalLoader.item) {
|
||||
PopoutService.windowRuleModalLoader.item.onRuleSubmitted.connect(loadWindowRules);
|
||||
PopoutService.windowRuleModalLoader.item.showEdit(rule);
|
||||
}
|
||||
openEditor("edit", rule);
|
||||
}
|
||||
|
||||
function copyRuleToDms(rule) {
|
||||
openEditor("copy", rule);
|
||||
}
|
||||
|
||||
function openEditor(mode, payload) {
|
||||
if (readOnly) {
|
||||
showHyprlandReadOnlyWarning();
|
||||
return;
|
||||
}
|
||||
if (!PopoutService.windowRuleModalLoader)
|
||||
if (editorOpen)
|
||||
return;
|
||||
PopoutService.windowRuleModalLoader.active = true;
|
||||
if (PopoutService.windowRuleModalLoader.item) {
|
||||
PopoutService.windowRuleModalLoader.item.onRuleSubmitted.connect(loadWindowRules);
|
||||
PopoutService.windowRuleModalLoader.item.showCopy(rule);
|
||||
editorRequest = {
|
||||
mode,
|
||||
payload
|
||||
};
|
||||
editorOpen = true;
|
||||
editorMounted = true;
|
||||
if (editorLoader.item)
|
||||
presentEditor();
|
||||
}
|
||||
|
||||
function presentEditor() {
|
||||
const request = editorRequest;
|
||||
if (!request)
|
||||
return;
|
||||
switch (request.mode) {
|
||||
case "edit":
|
||||
editorLoader.item.showEdit(request.payload);
|
||||
return;
|
||||
case "copy":
|
||||
editorLoader.item.showCopy(request.payload);
|
||||
return;
|
||||
default:
|
||||
editorLoader.item.show(request.payload);
|
||||
}
|
||||
}
|
||||
|
||||
function closeEditor() {
|
||||
if (!editorOpen)
|
||||
return;
|
||||
editorOpen = false;
|
||||
editorRequest = null;
|
||||
if (editorLoader.item)
|
||||
editorLoader.item.opened = false;
|
||||
}
|
||||
|
||||
function showHyprlandReadOnlyWarning() {
|
||||
ToastService.showWarning(I18n.tr("Hyprland conf mode"), I18n.tr("This install is still using hyprland.conf. Run dms setup to migrate before changing these settings."), "dms setup", "hyprland-migration");
|
||||
}
|
||||
@@ -649,4 +665,26 @@ Item {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: editorLoader
|
||||
parent: root.parentModal?.modalFocusScope ?? root
|
||||
anchors.fill: parent
|
||||
z: 100
|
||||
active: root.editorMounted
|
||||
onLoaded: root.presentEditor()
|
||||
|
||||
sourceComponent: WindowRuleEditorDialog {
|
||||
supportingText: I18n.tr("Changes save to %1", "keybind editor dialog hint, %1 is the binds file path").arg(root.dmsRulesFileName)
|
||||
onRejected: root.closeEditor()
|
||||
onRuleSubmitted: {
|
||||
root.loadWindowRules();
|
||||
root.closeEditor();
|
||||
}
|
||||
onActiveChanged: {
|
||||
if (!active && !root.editorOpen)
|
||||
root.editorMounted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user