mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-17 08:35:21 -04:00
80 lines
2.1 KiB
QML
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);
|
|
}
|
|
}
|
|
}
|
|
}
|