mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-05 21:15:38 -05:00
92 lines
2.5 KiB
QML
92 lines
2.5 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import Quickshell.Widgets
|
|
import qs.Common
|
|
import qs.Modals.Common
|
|
import qs.Modules.AppDrawer
|
|
import qs.Services
|
|
import qs.Widgets
|
|
|
|
DankModal {
|
|
id: spotlightModal
|
|
|
|
property bool spotlightOpen: false
|
|
property Component spotlightContent
|
|
|
|
function show() {
|
|
spotlightOpen = true
|
|
open()
|
|
if (contentLoader.item && contentLoader.item.appLauncher) {
|
|
contentLoader.item.appLauncher.searchQuery = ""
|
|
}
|
|
|
|
Qt.callLater(() => {
|
|
if (contentLoader.item && contentLoader.item.searchField) {
|
|
contentLoader.item.searchField.forceActiveFocus()
|
|
}
|
|
})
|
|
}
|
|
|
|
function hide() {
|
|
spotlightOpen = false
|
|
close()
|
|
if (contentLoader.item && contentLoader.item.appLauncher) {
|
|
contentLoader.item.appLauncher.searchQuery = ""
|
|
contentLoader.item.appLauncher.selectedIndex = 0
|
|
contentLoader.item.appLauncher.setCategory("All")
|
|
}
|
|
}
|
|
|
|
function toggle() {
|
|
if (spotlightOpen) {
|
|
hide()
|
|
} else {
|
|
show()
|
|
}
|
|
}
|
|
|
|
shouldBeVisible: spotlightOpen
|
|
width: 550
|
|
height: 600
|
|
backgroundColor: Theme.popupBackground()
|
|
cornerRadius: Theme.cornerRadius
|
|
borderColor: Theme.outlineMedium
|
|
borderWidth: 1
|
|
enableShadow: true
|
|
onVisibleChanged: () => {
|
|
if (visible && !spotlightOpen) {
|
|
show()
|
|
}
|
|
if (visible && contentLoader.item) {
|
|
Qt.callLater(() => {
|
|
if (contentLoader.item.searchField) {
|
|
contentLoader.item.searchField.forceActiveFocus()
|
|
}
|
|
})
|
|
}
|
|
}
|
|
onBackgroundClicked: () => {
|
|
return hide()
|
|
}
|
|
content: spotlightContent
|
|
|
|
Connections {
|
|
function onCloseAllModalsExcept(excludedModal) {
|
|
if (excludedModal !== spotlightModal && !allowStacking && spotlightOpen) {
|
|
spotlightOpen = false
|
|
}
|
|
}
|
|
|
|
target: ModalManager
|
|
}
|
|
|
|
|
|
spotlightContent: Component {
|
|
SpotlightContent {
|
|
parentModal: spotlightModal
|
|
}
|
|
}
|
|
}
|