Warning, /multimedia/haruna/src/qml/Footer.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  * SPDX-FileCopyrightText: 2020 George Florea Bănuș <georgefb899@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 import QtQuick
0008 import QtQuick.Controls
0009 import QtQuick.Layouts
0010 
0011 import org.kde.kirigami as Kirigami
0012 import org.kde.haruna
0013 import org.kde.haruna.settings
0014 
0015 ToolBar {
0016     id: root
0017 
0018     property Item m_mpv
0019     property alias progressBar: progressBar
0020 
0021     padding: Kirigami.Units.smallSpacing
0022     position: ToolBar.Footer
0023     hoverEnabled: true
0024 
0025     Component {
0026         id: togglePlaylistButton
0027 
0028         ToolButton {
0029             action: appActions.togglePlaylistAction
0030         }
0031     }
0032 
0033     RowLayout {
0034         id: footerRow
0035         anchors.fill: parent
0036 
0037         Loader {
0038             asynchronous: true
0039             visible: menuBarLoader.state === "hidden" && !header.visible
0040             sourceComponent: HamburgerMenu {
0041                 position: HamburgerMenu.Position.Footer
0042             }
0043         }
0044 
0045         Loader {
0046             sourceComponent: togglePlaylistButton
0047             visible: !PlaylistSettings.canToggleWithMouse && PlaylistSettings.position === "left"
0048         }
0049 
0050         ToolButton {
0051             id: playPauseButton
0052             action: appActions.playPauseAction
0053             text: ""
0054             icon.name: m_mpv.pause ? "media-playback-start" : "media-playback-pause"
0055             focusPolicy: Qt.NoFocus
0056             enabled: m_mpv.duration !== 0
0057 
0058             ToolTip {
0059                 id: playPauseButtonToolTip
0060                 text: m_mpv.pause ? i18nc("@info:tooltip", "Start Playback") : i18nc("@info:tooltip", "Pause Playback")
0061             }
0062         }
0063 
0064         ToolButton {
0065             id: playPreviousFile
0066             action: appActions.playPreviousAction
0067             icon.name: root.LayoutMirroring.enabled ? "media-skip-forward" : "media-skip-backward"
0068             text: ""
0069             focusPolicy: Qt.NoFocus
0070             enabled: playlist.playlistView.count > 1
0071 
0072             ToolTip {
0073                 text: i18nc("@info:tooltip", "Play previous file")
0074             }
0075         }
0076 
0077         ToolButton {
0078             id: playNextFile
0079             action: appActions.playNextAction
0080             icon.name: root.LayoutMirroring.enabled ? "media-skip-backward" : "media-skip-forward"
0081             text: ""
0082             focusPolicy: Qt.NoFocus
0083             enabled: playlist.playlistView.count > 1
0084 
0085             ToolTip {
0086                 text: i18nc("@info:tooltip", "Play next file")
0087             }
0088         }
0089 
0090         HProgressBar {
0091             id: progressBar
0092             Layout.fillWidth: true
0093         }
0094 
0095         LabelWithTooltip {
0096             id: timeInfo
0097 
0098             text: m_mpv.formattedPosition
0099                   ? m_mpv.formattedPosition + " / " + m_mpv.formattedDuration
0100                   : "00:00:00 / 00:00:00"
0101             font.pointSize: Math.floor(Kirigami.Units.gridUnit * 0.6)
0102             toolTipText: i18nc("@info:tooltip", "Remaining: %1", m_mpv.formattedRemaining)
0103             alwaysShowToolTip: true
0104             horizontalAlignment: Qt.AlignHCenter
0105 
0106             Layout.minimumWidth: textMetrics.width
0107 
0108             TextMetrics {
0109                 id: textMetrics
0110                 font: timeInfo.font
0111                 text: "000:00:00 / 000:00:00"
0112             }
0113         }
0114 
0115         ToolButton {
0116             id: mute
0117             action: appActions.muteAction
0118             icon.name: m_mpv.mute || m_mpv.volume === 0 ? "player-volume-muted" : "player-volume"
0119             text: ""
0120             focusPolicy: Qt.NoFocus
0121 
0122             ToolTip {
0123                 text: appActions.muteAction.text
0124             }
0125         }
0126 
0127         VolumeSlider {
0128             id: volumeSlider
0129         }
0130 
0131         Loader {
0132             sourceComponent: togglePlaylistButton
0133             visible: !PlaylistSettings.canToggleWithMouse && PlaylistSettings.position === "right"
0134         }
0135 
0136     }
0137 
0138     states: [
0139         State {
0140             name: "hidden"
0141             PropertyChanges {
0142                 target: root
0143                 height: 0
0144                 opacity: 0
0145                 visible: false
0146             }
0147         },
0148         State {
0149             name : "visible"
0150             PropertyChanges {
0151                 target: root
0152                 height: root.implicitHeight
0153                 opacity: 1
0154                 visible: true
0155             }
0156         }
0157     ]
0158 
0159     transitions: [
0160         Transition {
0161             from: "visible"
0162             to: "hidden"
0163 
0164             SequentialAnimation {
0165                 ParallelAnimation {
0166                     NumberAnimation {
0167                         target: root
0168                         property: "opacity"
0169                         duration: Kirigami.Units.shortDuration
0170                         easing.type: Easing.Linear
0171                     }
0172                     NumberAnimation {
0173                         target: root
0174                         property: "height"
0175                         duration: Kirigami.Units.shortDuration
0176                         easing.type: Easing.Linear
0177                     }
0178                 }
0179                 PropertyAction {
0180                     target: root
0181                     property: "visible"
0182                     value: false
0183                 }
0184             }
0185         },
0186         Transition {
0187             from: "hidden"
0188             to: "visible"
0189 
0190             SequentialAnimation {
0191                 PropertyAction {
0192                     target: root
0193                     property: "visible"
0194                     value: true
0195                 }
0196                 ParallelAnimation {
0197                     NumberAnimation {
0198                         target: root
0199                         property: "height"
0200                         duration: Kirigami.Units.shortDuration
0201                         easing.type: Easing.Linear
0202                     }
0203                     NumberAnimation {
0204                         target: root
0205                         property: "opacity"
0206                         duration: Kirigami.Units.shortDuration
0207                         easing.type: Easing.Linear
0208                     }
0209                 }
0210             }
0211         }
0212     ]
0213 }