Warning, /multimedia/audiotube/src/contents/ui/Sidebar.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2022 Mathis BrĂ¼chert <mbb@kaidan.im>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004
0005 import QtQuick 2.15
0006 import QtQuick.Layouts 1.3
0007 import QtQuick.Controls 2.15 as Controls
0008 import org.kde.kirigami 2.20 as Kirigami
0009 import org.kde.ytmusic 1.0
0010
0011 Rectangle {
0012 property int sidebarWidth: 230
0013 property int sidebarWidthCollapsed: 60
0014 property bool collapsed: true
0015
0016 // workaround for label not being displayed before collapsed change
0017 Component.onCompleted: {
0018 collapsed = false
0019 }
0020
0021 id: sidebar
0022 width: sidebarWidth
0023 clip:true
0024 Kirigami.Theme.colorSet: Kirigami.Theme.Window
0025 Kirigami.Theme.inherit: false
0026 color: "transparent"
0027
0028 Rectangle {
0029 anchors.fill: parent
0030 color: Kirigami.Theme.backgroundColor
0031 opacity: 0.8
0032 }
0033
0034 NumberAnimation on width{
0035 id: collapse
0036 easing.type: Easing.OutCubic
0037 running: false
0038 from: sidebarWidth; to: sidebarWidthCollapsed
0039 }
0040 NumberAnimation on width{
0041 id: show
0042 easing.type: Easing.OutCubic
0043 running: false
0044 from: sidebarWidthCollapsed; to: sidebarWidth
0045 //this is only a workaround to stop the text from disappearing
0046 onFinished:{
0047 libraryButton.checked =!libraryButton.checked
0048 libraryButton.checked =!libraryButton.checked
0049
0050 favouritesButton.checked =!favouritesButton.checked
0051 favouritesButton.checked =!favouritesButton.checked
0052
0053 historyButton.checked =!historyButton.checked
0054 historyButton.checked =!historyButton.checked
0055
0056 searchButton.checked =!searchButton.checked
0057 searchButton.checked =!searchButton.checked
0058
0059 collapseButton.checked =!collapseButton.checked
0060 collapseButton.checked =false
0061
0062 aboutButton.checked = !aboutButton.checked
0063 aboutButton.checked = !aboutButton.checked
0064
0065 playlistsButton.checked = !playlistsButton.checked
0066 playlistsButton.checked = !playlistsButton.checked
0067 }
0068 }
0069 Kirigami.Separator {
0070 height: parent.height
0071 anchors.right: parent.right
0072 z:100
0073 }
0074
0075 ColumnLayout {
0076 anchors.fill: parent
0077 spacing: 0
0078
0079 Kirigami.Separator {
0080 Layout.fillWidth: true
0081 }
0082
0083 Controls.ScrollView {
0084
0085 id: scrollView
0086 Layout.fillWidth: true
0087 Layout.fillHeight: true
0088
0089 Controls.ScrollBar.vertical.policy: Controls.ScrollBar.AlwaysOff
0090 Controls.ScrollBar.horizontal.policy: Controls.ScrollBar.AlwaysOff
0091 contentWidth: -1 // disable horizontal scroll
0092
0093 ColumnLayout {
0094 id: column
0095 width: scrollView.width
0096 spacing: 0
0097
0098 Kirigami.NavigationTabButton {
0099 id: libraryButton
0100 Layout.fillWidth: true
0101 width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
0102 implicitHeight: 50
0103 display: collapsed ? Controls.AbstractButton.IconOnly : Controls.AbstractButton.TextBesideIcon
0104 checked: pageStack.currentItem && pageStack.currentItem.objectName == "libraryPage"
0105
0106 action: Kirigami.PagePoolAction {
0107 pagePool: pool
0108 text: i18n("Library")
0109 icon.name: "file-library-symbolic"
0110 page: Qt.resolvedUrl("qrc:/LibraryPage.qml")
0111 }
0112 }
0113 Kirigami.NavigationTabButton {
0114 id: searchButton
0115 Layout.fillWidth: true
0116 width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
0117 implicitHeight: 50
0118 display: collapsed ? Controls.AbstractButton.IconOnly : Controls.AbstractButton.TextBesideIcon
0119 text: i18n("Search")
0120 icon.name: "search"
0121 checked: pageStack.currentItem && pageStack.currentItem.objectName == "searchPage"
0122 onClicked: {
0123 searchField.forceActiveFocus()
0124 focusSearch()
0125 }
0126 }
0127
0128 Kirigami.NavigationTabButton {
0129 id: favouritesButton
0130 Layout.fillWidth: true
0131 width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
0132 implicitHeight: 50
0133 display: collapsed ? Controls.AbstractButton.IconOnly : Controls.AbstractButton.TextBesideIcon
0134 checked: pageStack.currentItem && pageStack.currentItem.objectName == "favourites"
0135
0136 action: Kirigami.PagePoolAction {
0137 pagePool: pool
0138 text: i18n("Favourites")
0139 icon.name: "non-starred-symbolic"
0140 page: Qt.resolvedUrl("qrc:/PlaybackHistory.qml#favourites")
0141 initialProperties: {
0142 "dataModel": Library.favourites,
0143 "title": i18n("Favourites"),
0144 "objectName": "favourites"
0145 }
0146 }
0147 }
0148
0149 Kirigami.NavigationTabButton {
0150 id: historyButton
0151 Layout.fillWidth: true
0152 width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
0153 implicitHeight: 50
0154 display: collapsed ? Controls.AbstractButton.IconOnly : Controls.AbstractButton.TextBesideIcon
0155 checked: pageStack.currentItem && pageStack.currentItem.objectName == "history"
0156
0157 action: Kirigami.PagePoolAction {
0158 pagePool: pool
0159 text: i18n("Played Songs")
0160 icon.name: "edit-undo-history"
0161 page: Qt.resolvedUrl("qrc:/PlaybackHistory.qml#history")
0162 initialProperties: {
0163 "dataModel": Library.playbackHistory,
0164 "title": i18n("Played Songs"),
0165 "objectName": "history"
0166 }
0167 }
0168 }
0169 Kirigami.NavigationTabButton {
0170 id: playlistsButton
0171 Layout.fillWidth: true
0172 width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
0173 implicitHeight: 50
0174 display: collapsed ? Controls.AbstractButton.IconOnly : Controls.AbstractButton.TextBesideIcon
0175 checked: pageStack.currentItem && pageStack.currentItem.objectName == "playlists"
0176
0177 action: Kirigami.PagePoolAction {
0178 pagePool: pool
0179 text: i18n("Playlists")
0180 icon.name: "amarok_playlist"
0181 page: Qt.resolvedUrl("qrc:/LocalPlaylistsPage.qml")
0182 initialProperties: {
0183 "objectName": "playlists"
0184 }
0185 }
0186 }
0187 }
0188 }
0189 Kirigami.Separator {
0190 Layout.fillWidth: true
0191 Layout.rightMargin: Kirigami.Units.smallSpacing
0192 Layout.leftMargin: Kirigami.Units.smallSpacing
0193 }
0194 Kirigami.NavigationTabButton {
0195 id: aboutButton
0196 Layout.fillWidth: true
0197 width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
0198 implicitHeight: 50
0199 display: collapsed ? Controls.AbstractButton.IconOnly : Controls.AbstractButton.TextBesideIcon
0200 text: i18n("About")
0201 checkable: false
0202 icon.name: "help-about-symbolic"
0203
0204 onClicked: {
0205 pageStack.pushDialogLayer("qrc:/AboutAudiotube.qml")
0206 }
0207 }
0208
0209 Kirigami.NavigationTabButton {
0210 id: collapseButton
0211 Layout.fillWidth: true
0212 width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
0213 display: collapsed ? Controls.AbstractButton.IconOnly : Controls.AbstractButton.TextBesideIcon
0214 text: i18n("Collapse Sidebar")
0215 checked: collapsed == true
0216 implicitHeight: 50
0217 icon.name: "sidebar-collapse"
0218 onClicked: {
0219 if (!sidebar.collapsed)
0220 collapse.running = true
0221 else
0222 show.running = true
0223
0224 sidebar.collapsed = !sidebar.collapsed
0225 }
0226
0227 }
0228 }
0229 }