forked from Shinonome/dots-hyprland
launcher: clipboard: delete button
This commit is contained in:
@@ -14,7 +14,7 @@ RippleButton {
|
|||||||
property var entry
|
property var entry
|
||||||
property string query
|
property string query
|
||||||
property bool entryShown: entry?.shown ?? true
|
property bool entryShown: entry?.shown ?? true
|
||||||
property string itemType: entry?.type
|
property string itemType: entry?.type ?? Translation.tr("App")
|
||||||
property string itemName: entry?.name
|
property string itemName: entry?.name
|
||||||
property string itemIcon: entry?.icon ?? ""
|
property string itemIcon: entry?.icon ?? ""
|
||||||
property var itemExecute: entry?.execute
|
property var itemExecute: entry?.execute
|
||||||
@@ -221,5 +221,47 @@ RippleButton {
|
|||||||
horizontalAlignment: Text.AlignRight
|
horizontalAlignment: Text.AlignRight
|
||||||
text: root.itemClickActionName
|
text: root.itemClickActionName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
spacing: 4
|
||||||
|
Repeater {
|
||||||
|
model: (root.entry.actions ?? []).slice(0, 4)
|
||||||
|
delegate: RippleButton {
|
||||||
|
id: actionButton
|
||||||
|
required property var modelData
|
||||||
|
implicitHeight: 34
|
||||||
|
implicitWidth: 34
|
||||||
|
|
||||||
|
contentItem: Item {
|
||||||
|
id: actionContentItem
|
||||||
|
anchors.centerIn: parent
|
||||||
|
Loader {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
active: !(actionButton.modelData.icon && actionButton.modelData.icon !== "")
|
||||||
|
sourceComponent: MaterialSymbol {
|
||||||
|
text: "video_settings"
|
||||||
|
font.pixelSize: Appearance.font.pixelSize.hugeass
|
||||||
|
color: Appearance.m3colors.m3onSurface
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loader {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
active: actionButton.modelData.icon && actionButton.modelData.icon !== ""
|
||||||
|
sourceComponent: IconImage {
|
||||||
|
source: Quickshell.iconPath(actionButton.modelData.icon)
|
||||||
|
implicitSize: 20
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: modelData.execute()
|
||||||
|
|
||||||
|
StyledToolTip {
|
||||||
|
content: modelData.name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -294,8 +294,17 @@ Item { // Wrapper
|
|||||||
clickActionName: "",
|
clickActionName: "",
|
||||||
type: `#${entry.match(/^\s*(\S+)/)?.[1] || ""}`,
|
type: `#${entry.match(/^\s*(\S+)/)?.[1] || ""}`,
|
||||||
execute: () => {
|
execute: () => {
|
||||||
Quickshell.execDetached(["bash", "-c", `echo '${StringUtils.shellSingleQuoteEscape(entry)}' | cliphist decode | wl-copy`]);
|
Cliphist.copy(entry)
|
||||||
}
|
},
|
||||||
|
actions: [
|
||||||
|
{
|
||||||
|
name: "Delete",
|
||||||
|
icon: "delete",
|
||||||
|
execute: () => {
|
||||||
|
Cliphist.deleteEntry(entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
};
|
};
|
||||||
}).filter(Boolean);
|
}).filter(Boolean);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ pragma ComponentBehavior: Bound
|
|||||||
import "root:/modules/common/functions/fuzzysort.js" as Fuzzy
|
import "root:/modules/common/functions/fuzzysort.js" as Fuzzy
|
||||||
import "root:/modules/common/functions/levendist.js" as Levendist
|
import "root:/modules/common/functions/levendist.js" as Levendist
|
||||||
import qs.modules.common
|
import qs.modules.common
|
||||||
import qs
|
import qs.modules.common.functions
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import Quickshell.Io
|
import Quickshell.Io
|
||||||
@@ -42,6 +42,28 @@ Singleton {
|
|||||||
readProc.running = true
|
readProc.running = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function copy(entry) {
|
||||||
|
Quickshell.execDetached(["bash", "-c", `echo '${StringUtils.shellSingleQuoteEscape(entry)}' | cliphist decode | wl-copy`]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Process {
|
||||||
|
id: deleteProc
|
||||||
|
property string entry: ""
|
||||||
|
command: ["bash", "-c", `echo '${StringUtils.shellSingleQuoteEscape(deleteProc.entry)}' | cliphist delete`]
|
||||||
|
function deleteEntry(entry) {
|
||||||
|
deleteProc.entry = entry;
|
||||||
|
deleteProc.running = true;
|
||||||
|
deleteProc.entry = "";
|
||||||
|
}
|
||||||
|
onExited: (exitCode, exitStatus) => {
|
||||||
|
root.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteEntry(entry) {
|
||||||
|
deleteProc.deleteEntry(entry);
|
||||||
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: Quickshell
|
target: Quickshell
|
||||||
function onClipboardTextChanged() {
|
function onClipboardTextChanged() {
|
||||||
|
|||||||
Reference in New Issue
Block a user