mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-08 12:13:31 -04:00
111 lines
3.1 KiB
QML
111 lines
3.1 KiB
QML
pragma ComponentBehavior: Bound
|
|
|
|
import QtQuick
|
|
import Quickshell.Hyprland
|
|
import qs.Common
|
|
import qs.Modals.Clipboard
|
|
import qs.Modals.Common
|
|
import qs.Services
|
|
|
|
DankModal {
|
|
id: clipboardHistoryModal
|
|
|
|
layerNamespace: "dms:clipboard"
|
|
|
|
HyprlandFocusGrab {
|
|
windows: [clipboardHistoryModal.contentWindow]
|
|
active: clipboardHistoryModal.useHyprlandFocusGrab && clipboardHistoryModal.shouldHaveFocus
|
|
}
|
|
|
|
function toggle() {
|
|
if (shouldBeVisible) {
|
|
hide();
|
|
return;
|
|
}
|
|
show();
|
|
}
|
|
|
|
function show() {
|
|
open();
|
|
shouldHaveFocus = true;
|
|
|
|
Qt.callLater(function () {
|
|
if (contentLoader.item) {
|
|
contentLoader.item.resetState();
|
|
}
|
|
if (clipboardHistoryModal.clipboardAvailable) {
|
|
if (Theme.isConnectedEffect) {
|
|
Qt.callLater(() => {
|
|
if (clipboardHistoryModal.shouldBeVisible) {
|
|
ClipboardService.refresh();
|
|
}
|
|
});
|
|
} else {
|
|
ClipboardService.refresh();
|
|
}
|
|
}
|
|
if (contentLoader.item?.searchField) {
|
|
contentLoader.item.searchField.text = "";
|
|
contentLoader.item.searchField.forceActiveFocus();
|
|
}
|
|
});
|
|
}
|
|
|
|
function hide() {
|
|
close();
|
|
}
|
|
|
|
onDialogClosed: {
|
|
if (contentLoader.item) {
|
|
contentLoader.item.resetState();
|
|
}
|
|
}
|
|
|
|
readonly property bool clipboardAvailable: ClipboardService.clipboardAvailable
|
|
|
|
visible: false
|
|
modalWidth: ClipboardConstants.modalWidth
|
|
modalHeight: ClipboardConstants.modalHeight
|
|
backgroundColor: Theme.withAlpha(Theme.surfaceContainer, Theme.popupTransparency)
|
|
cornerRadius: Theme.cornerRadius
|
|
borderColor: Theme.outlineMedium
|
|
borderWidth: 1
|
|
enableShadow: true
|
|
closeOnEscapeKey: (contentLoader.item?.mode ?? "history") !== "editor"
|
|
onBackgroundClicked: hide()
|
|
|
|
Ref {
|
|
service: ClipboardService
|
|
}
|
|
|
|
ConfirmModal {
|
|
id: clearConfirmDialog
|
|
confirmButtonText: I18n.tr("Clear All")
|
|
confirmButtonColor: Theme.primary
|
|
onVisibleChanged: {
|
|
if (visible) {
|
|
clipboardHistoryModal.shouldHaveFocus = false;
|
|
return;
|
|
}
|
|
Qt.callLater(function () {
|
|
if (!clipboardHistoryModal.shouldBeVisible) {
|
|
return;
|
|
}
|
|
clipboardHistoryModal.shouldHaveFocus = true;
|
|
clipboardHistoryModal.modalFocusScope.forceActiveFocus();
|
|
if (clipboardHistoryModal.contentLoader.item?.searchField) {
|
|
clipboardHistoryModal.contentLoader.item.searchField.forceActiveFocus();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
content: Component {
|
|
ClipboardHistoryContent {
|
|
clearConfirmDialog: clearConfirmDialog
|
|
onCloseRequested: clipboardHistoryModal.hide()
|
|
onInstantCloseRequested: clipboardHistoryModal.instantClose()
|
|
}
|
|
}
|
|
}
|