mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-15 07:44:01 -04:00
80 lines
2.4 KiB
QML
80 lines
2.4 KiB
QML
pragma ComponentBehavior: Bound
|
|
|
|
import QtQuick
|
|
import qs.Common
|
|
import qs.Services
|
|
import qs.DCommon.Widgets
|
|
import "../../../DCommon/Common/FocusNavigation.js" as FocusNavigation
|
|
|
|
Row {
|
|
id: root
|
|
|
|
required property var player
|
|
required property var presentation
|
|
|
|
readonly property var focusTargets: [lyricsButton, volumeButton, devicesButton, playersButton]
|
|
readonly property var panelButtons: [volumeButton, devicesButton, playersButton]
|
|
|
|
height: Theme.buttonHeightS
|
|
spacing: Theme.spacingXS
|
|
|
|
Keys.onPressed: event => event.accepted = FocusNavigation.handleHorizontalKey(event, focusTargets, I18n.isRtl)
|
|
|
|
DIconButton {
|
|
id: lyricsButton
|
|
variant: "outlined"
|
|
checkable: true
|
|
checked: root.player.lyricsOpen
|
|
containerColor: MediaAccentService.accentContainer
|
|
contentColor: MediaAccentService.onAccentContainer
|
|
iconName: "notes"
|
|
visible: root.player.lyricsEnabled
|
|
enabled: !!root.presentation
|
|
tooltipText: I18n.tr("Lyrics", "Media player lyrics button")
|
|
onClicked: root.player.toggleLyrics(lyricsButton)
|
|
}
|
|
|
|
GroupButton {
|
|
id: volumeButton
|
|
panelId: "volume"
|
|
iconName: root.player.getVolumeIcon()
|
|
enabled: root.player.volumeAvailable
|
|
tooltipText: (root.player.usePlayerVolume ? I18n.tr("Media volume") : I18n.tr("Volume")) + ": " + Math.round(root.player.currentVolume * 100) + "%"
|
|
|
|
MediaVolumeWheel {
|
|
player: root.player
|
|
button: volumeButton
|
|
}
|
|
}
|
|
|
|
GroupButton {
|
|
id: devicesButton
|
|
panelId: "devices"
|
|
tooltipText: I18n.tr("Devices", "Media player output device picker") + ": " + AudioService.displayName(AudioService.sink)
|
|
iconName: AudioService.sinkIcon(AudioService.sink)
|
|
|
|
MediaSinkWheel {}
|
|
}
|
|
|
|
GroupButton {
|
|
id: playersButton
|
|
panelId: "players"
|
|
tooltipText: I18n.tr("Players", "Media player selection")
|
|
visible: (root.player.allPlayers?.length || 0) > 0
|
|
iconName: "assistant_device"
|
|
}
|
|
|
|
component GroupButton: DIconButton {
|
|
required property string panelId
|
|
|
|
readonly property bool active: root.player.panel === panelId
|
|
|
|
variant: "outlined"
|
|
checkable: true
|
|
checked: active
|
|
containerColor: MediaAccentService.accentContainer
|
|
contentColor: MediaAccentService.onAccentContainer
|
|
onClicked: root.player.togglePanel(panelId)
|
|
}
|
|
}
|