import QtQuick import qs.Common import qs.Modals.DankLauncherV2 import qs.Widgets DankPopout { id: appDrawerPopout layerNamespace: "dms:app-launcher" readonly property real screenWidth: screen?.width ?? 1920 readonly property real screenHeight: screen?.height ?? 1080 property string _pendingMode: "" property string _pendingQuery: "" function show() { open(); } function openWithMode(mode) { _pendingMode = mode || ""; open(); } function toggleWithMode(mode) { if (shouldBeVisible) { close(); return; } openWithMode(mode); } function openWithQuery(query) { _pendingQuery = query || ""; open(); } function toggleWithQuery(query) { if (shouldBeVisible) { close(); return; } openWithQuery(query); } readonly property int _baseWidth: { switch (SettingsData.dankLauncherV2Size) { case "micro": return 500; case "medium": return 720; case "large": return 860; default: return 620; } } readonly property int _baseHeight: { switch (SettingsData.dankLauncherV2Size) { case "micro": return 480; case "medium": return 720; case "large": return 860; default: return 600; } } popupWidth: Math.min(_baseWidth, screenWidth - 100) popupHeight: Math.min(_baseHeight, screenHeight - 100) triggerWidth: 40 positioning: "" contentHandlesKeys: contentLoader.item?.launcherContent?.editMode ?? false onBackgroundClicked: { if (contentLoader.item?.launcherContent?.editMode) { contentLoader.item.launcherContent.closeEditMode(); return; } close(); } onOpened: { var lc = contentLoader.item?.launcherContent; if (!lc) return; const query = _pendingQuery || (SettingsData.rememberLastQuery ? SessionData.launcherLastQuery : "") || ""; const mode = _pendingMode || SessionData.appDrawerLastMode || "apps"; _pendingMode = ""; _pendingQuery = ""; if (lc.searchField) { lc.searchField.text = query; lc.searchField.forceActiveFocus(); } if (lc.controller) { lc.controller.searchMode = mode; lc.controller.pluginFilter = ""; lc.controller.searchQuery = query; lc.controller.performSearch(); } lc.resetScroll?.(); lc.actionPanel?.hide(); } Connections { target: contentLoader.item?.launcherContent?.controller ?? null function onModeChanged(mode) { if (contentLoader.item.launcherContent.controller.autoSwitchedToFiles) return; SessionData.setAppDrawerLastMode(mode); } } content: Component { Rectangle { id: contentContainer LayoutMirroring.enabled: I18n.isRtl LayoutMirroring.childrenInherit: true property alias launcherContent: launcherContent color: "transparent" QtObject { id: modalAdapter property bool spotlightOpen: appDrawerPopout.shouldBeVisible readonly property bool isClosing: !appDrawerPopout.shouldBeVisible function hide() { appDrawerPopout.close(); } } FocusScope { anchors.fill: parent focus: true LauncherContent { id: launcherContent anchors.fill: parent parentModal: modalAdapter viewModeContext: "appDrawer" } Keys.onEscapePressed: event => { if (launcherContent.editMode) { launcherContent.closeEditMode(); event.accepted = true; return; } appDrawerPopout.close(); event.accepted = true; } } } } }