81 lines
2.0 KiB
QML
81 lines
2.0 KiB
QML
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import qs.Common
|
|
import qs.Services
|
|
import qs.Widgets
|
|
import qs.Modules.Plugins
|
|
|
|
PluginComponent {
|
|
id: root
|
|
|
|
property bool vaultUnlocked: false
|
|
|
|
function refreshLockState() {
|
|
if (!statusProcess.running)
|
|
statusProcess.exec(["rbw", "unlocked"]);
|
|
}
|
|
|
|
function toggleLock() {
|
|
if (root.vaultUnlocked) {
|
|
Quickshell.execDetached(["rbw", "lock"]);
|
|
} else {
|
|
Quickshell.execDetached(["rbw", "unlock"]);
|
|
}
|
|
}
|
|
|
|
pillClickAction: () => root.toggleLock()
|
|
|
|
Component.onCompleted: refreshLockState()
|
|
|
|
Timer {
|
|
interval: 2500
|
|
repeat: true
|
|
running: true
|
|
onTriggered: root.refreshLockState()
|
|
}
|
|
|
|
Process {
|
|
id: statusProcess
|
|
command: ["rbw", "unlocked"]
|
|
onExited: (exitCode, _exitStatus) => {
|
|
root.vaultUnlocked = exitCode === 0;
|
|
}
|
|
}
|
|
|
|
horizontalBarPill: Component {
|
|
MouseArea {
|
|
implicitWidth: iconH.implicitWidth
|
|
implicitHeight: iconH.implicitHeight
|
|
hoverEnabled: true
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: root.toggleLock()
|
|
|
|
DankIcon {
|
|
id: iconH
|
|
name: root.vaultUnlocked ? "lock_open_right" : "lock"
|
|
size: root.iconSize
|
|
color: parent.containsMouse ? Theme.primary : Theme.surfaceText
|
|
}
|
|
}
|
|
}
|
|
|
|
verticalBarPill: Component {
|
|
MouseArea {
|
|
implicitWidth: iconV.implicitWidth
|
|
implicitHeight: iconV.implicitHeight
|
|
hoverEnabled: true
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: root.toggleLock()
|
|
|
|
DankIcon {
|
|
id: iconV
|
|
name: root.vaultUnlocked ? "lock_open_right" : "lock"
|
|
size: root.iconSize
|
|
color: parent.containsMouse ? Theme.primary : Theme.surfaceText
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
}
|
|
}
|
|
}
|
|
}
|