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 }