152 lines
5.2 KiB
QML
Executable File
152 lines
5.2 KiB
QML
Executable File
import Quickshell
|
|
import Quickshell.Io
|
|
import QtQuick
|
|
import QtQuick.Layouts
|
|
import Quickshell.Widgets
|
|
import QtQuick.Effects
|
|
import "../common" as Common
|
|
|
|
// import playbutton.svg
|
|
|
|
Item {
|
|
property PlayerControllerV2 player: PlayerControllerV2;
|
|
id: root
|
|
Layout.fillHeight: true
|
|
Layout.preferredWidth: mainLayout.width + 10
|
|
Loader {
|
|
id: audioPopupLoader
|
|
active: true
|
|
sourceComponent: PlayerPopupV2 {
|
|
id: audioPopup
|
|
}
|
|
}
|
|
RowLayout {
|
|
id: mainLayout
|
|
Layout.fillHeight: true
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
Common.Meow {
|
|
id: commons
|
|
}
|
|
Item {
|
|
implicitWidth: text.width
|
|
implicitHeight: text.height
|
|
Rectangle {
|
|
id: hoverColor
|
|
anchors.centerIn: parent
|
|
visible: false
|
|
radius: 7
|
|
width: parent.width + 5
|
|
height: parent.height + 2.5
|
|
color: "grey"
|
|
}
|
|
Text {
|
|
id: text
|
|
text: (root.player.activePlayer == undefined) ? "Nothing" : player.activePlayer.trackTitle
|
|
color: "white"
|
|
font.pointSize: 10
|
|
font.italic: (root.player.activePlayer == undefined) ? true : false
|
|
}
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
|
|
onEntered: event => {
|
|
hoverColor.visible = true
|
|
}
|
|
onExited: event => {
|
|
hoverColor.visible = false
|
|
}
|
|
onClicked: event => {
|
|
audioPopupLoader.item.visible = !audioPopupLoader.item.visible;
|
|
}
|
|
}
|
|
}
|
|
Common.Dot {}
|
|
Item {
|
|
id: mediaPositionControls
|
|
implicitWidth: positionText.width
|
|
implicitHeight: positionText.height
|
|
Text {
|
|
id: positionText
|
|
text: root.player.activeTrackPositionFormated + "/" + player.activeTrackLengthFormated // returns float of seconds of length
|
|
color: "white"
|
|
font.pointSize: 10
|
|
}
|
|
RowLayout {
|
|
visible: !positionText.visible
|
|
// enable: !positionText.visible
|
|
anchors {
|
|
left: parent.left
|
|
right: parent.right
|
|
}
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
Item {
|
|
width: 20
|
|
height: 20
|
|
IconImage {
|
|
anchors.fill: parent
|
|
implicitSize: 20
|
|
source: "root:/assets/media_player/skip_previous.svg"
|
|
}
|
|
}
|
|
Item {
|
|
width: 20
|
|
height: 20
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
width: 20
|
|
height: 20
|
|
hoverEnabled: true
|
|
onClicked: event => {
|
|
root.player.activePlayer.togglePlaying()
|
|
}
|
|
}
|
|
IconImage {
|
|
anchors.fill: parent
|
|
implicitSize: 20
|
|
source: (root.player.activePlayer.isPlaying) ? "root:/assets/media_player/pausebutton.svg" : "root:/assets/media_player/playbutton.svg"
|
|
}
|
|
}
|
|
Item {
|
|
width: 20
|
|
height: 20
|
|
IconImage {
|
|
anchors.fill: parent
|
|
implicitSize: 20
|
|
source: "root:/assets/media_player/skip_next.svg"
|
|
}
|
|
}
|
|
}
|
|
MouseArea {
|
|
z: 1
|
|
id: mouseAreaMediaButtons
|
|
height: parent.height + 15
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
|
|
propagateComposedEvents: true // allows events to transparently go through to an overlapping mouseArea
|
|
|
|
onEntered: event => {
|
|
positionText.visible = false;
|
|
}
|
|
onExited: event => {
|
|
positionText.visible = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Rectangle {
|
|
z: -1
|
|
color: "black"
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
}
|
|
height: 25
|
|
width: parent.width
|
|
radius: 7
|
|
}
|
|
}
|