mirror of
https://github.com/tomasriveral/nixos.git
synced 2026-08-12 02:28:37 +02:00
ported some quickshell stuff from rivendell-hyprdots
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Qt5Compat.GraphicalEffects
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Hyprland
|
||||
import Quickshell.Services.Mpris
|
||||
import "../.."
|
||||
import ".."
|
||||
|
||||
MouseArea {
|
||||
id: root
|
||||
|
||||
required property var window
|
||||
required property var bar
|
||||
|
||||
readonly property var activePlayer: MprisController.activePlayer
|
||||
|
||||
property var isPopupOpen: false
|
||||
|
||||
implicitWidth: column.implicitWidth + 10
|
||||
Layout.fillHeight: true
|
||||
|
||||
acceptedButtons: Qt.RightButton
|
||||
onClicked: isPopupOpen = !isPopupOpen
|
||||
|
||||
Item {
|
||||
id: widget
|
||||
anchors.fill: parent
|
||||
|
||||
scale: root.isPopupOpen ? 0.92 : 1
|
||||
Behavior on scale {
|
||||
NumberAnimation {
|
||||
duration: 70
|
||||
}
|
||||
}
|
||||
|
||||
implicitHeight: column.implicitHeight + 10
|
||||
|
||||
RowLayout {
|
||||
id: column
|
||||
|
||||
anchors {
|
||||
fill: parent
|
||||
}
|
||||
|
||||
ClickableIcon {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
image: "../../assets/fastforward.png"
|
||||
mirror: true
|
||||
hoverEnabled: true
|
||||
enabled: MprisController.canGoPrevious
|
||||
onClicked: MprisController.previous()
|
||||
scale: containsMouse ? 0.9 : 1
|
||||
Behavior on scale {
|
||||
NumberAnimation {
|
||||
duration: 70
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ClickableIcon {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
implicitWidth: 26
|
||||
implicitHeight: 26
|
||||
Layout.leftMargin: -4
|
||||
Layout.rightMargin: -4
|
||||
image: `../../assets/${MprisController.isPlaying ? "pause" : "play"}.png`
|
||||
hoverEnabled: true
|
||||
enabled: MprisController.canTogglePlaying
|
||||
onClicked: MprisController.togglePlaying()
|
||||
}
|
||||
|
||||
ClickableIcon {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
image: "../../assets/fastforward.png"
|
||||
hoverEnabled: true
|
||||
enabled: MprisController.canGoNext
|
||||
onClicked: MprisController.next()
|
||||
scale: containsMouse ? 0.9 : 1
|
||||
Behavior on scale {
|
||||
NumberAnimation {
|
||||
duration: 70
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: root
|
||||
function onIsPopupOpenChanged() {
|
||||
root.window.focusable = root.isPopupOpen;
|
||||
}
|
||||
}
|
||||
LazyLoader {
|
||||
id: popupLoader
|
||||
active: root.isPopupOpen
|
||||
// Leave time for exit anim
|
||||
Behavior on active {
|
||||
enabled: popupLoader.active
|
||||
NumberAnimation {
|
||||
duration: 1000
|
||||
}
|
||||
}
|
||||
|
||||
PlayersPopup {
|
||||
id: popup
|
||||
visible: true
|
||||
isOpen: root.isPopupOpen
|
||||
|
||||
anchor.window: root.window
|
||||
anchor.rect.x: root.window.width
|
||||
anchor.rect.y: 0
|
||||
|
||||
HyprlandFocusGrab {
|
||||
active: root.isPopupOpen
|
||||
windows: [popup]
|
||||
}
|
||||
contentItem {
|
||||
focus: true
|
||||
Keys.onEscapePressed: root.isPopupOpen = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
component CenteredText: Item {
|
||||
Layout.fillWidth: true
|
||||
|
||||
property alias text: label.text
|
||||
property alias font: label.font
|
||||
|
||||
Label {
|
||||
id: label
|
||||
visible: text != ""
|
||||
anchors.centerIn: parent
|
||||
elide: Text.ElideRight
|
||||
width: Math.min(parent.width - 20, implicitWidth)
|
||||
font.family: "BigBlueTermPlusNerdFont"
|
||||
color: "white"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user