mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-03 20:32:07 -04:00
167 lines
4.2 KiB
QML
167 lines
4.2 KiB
QML
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|