1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-06-17 08:35:21 -04:00
Files
DankMaterialShell/quickshell/Modals/KeybindsModal.qml
T

80 lines
2.1 KiB
QML

import QtQuick
import qs.Common
import qs.Modals
import qs.Services
Item {
id: root
readonly property bool floating: SettingsData.keybindsFloatingWindow
readonly property bool shouldBeVisible: floating ? (windowLoader.item ? windowLoader.item.visible : false) : (overlayLoader.item ? overlayLoader.item.shouldBeVisible : false)
function open() {
if (floating) {
windowLoader.active = true;
windowLoader.item.show();
return;
}
overlayLoader.active = true;
overlayLoader.item.open();
}
function close() {
if (windowLoader.item)
windowLoader.item.hide();
if (overlayLoader.item)
overlayLoader.item.close();
}
function toggle() {
if (shouldBeVisible)
close();
else
open();
}
function _switchFloating(toFloating) {
if (toFloating) {
if (overlayLoader.item)
overlayLoader.item.close();
SettingsData.keybindsFloatingWindow = true;
windowLoader.active = true;
windowLoader.item.show();
return;
}
if (windowLoader.item)
windowLoader.item.hide();
SettingsData.keybindsFloatingWindow = false;
overlayLoader.active = true;
overlayLoader.item.open();
}
Loader {
id: overlayLoader
active: false
asynchronous: false
sourceComponent: KeybindsModalOverlay {
onFloatingToggleRequested: root._switchFloating(true)
onDialogClosed: Qt.callLater(() => {
if (!shouldBeVisible)
overlayLoader.active = false;
})
}
}
Loader {
id: windowLoader
active: false
asynchronous: false
sourceComponent: KeybindsModalWindow {
onFloatingToggleRequested: root._switchFloating(false)
onVisibleChanged: {
if (!visible)
Qt.callLater(() => windowLoader.active = false);
}
}
}
}