NavigationTabButton based sidebar

This commit is contained in:
Devin Lin 2022-12-11 20:09:31 -05:00 committed by Bart De Vries
parent c30bfbb5a5
commit 7afc43f833

View File

@ -11,7 +11,7 @@ import QtQuick.Layouts 1.14
import QtGraphicalEffects 1.12 import QtGraphicalEffects 1.12
import Qt.labs.settings 1.0 import Qt.labs.settings 1.0
import org.kde.kirigami 2.14 as Kirigami import org.kde.kirigami 2.20 as Kirigami
import org.kde.kasts.solidextras 1.0 import org.kde.kasts.solidextras 1.0
import org.kde.kasts 1.0 import org.kde.kasts 1.0
@ -42,7 +42,7 @@ Kirigami.ApplicationWindow {
return Kirigami.Units.largeSpacing; return Kirigami.Units.largeSpacing;
} }
} }
property int originalWidth: Kirigami.Units.gridUnit * 10 property int originalWidth: Kirigami.Units.gridUnit * 6
property var lastFeed: "" property var lastFeed: ""
property string currentPage: "" property string currentPage: ""
@ -125,81 +125,123 @@ Kirigami.ApplicationWindow {
Loader { Loader {
id: sidebar id: sidebar
active: !Kirigami.Settings.isMobile || root.isWidescreen active: !Kirigami.Settings.isMobile || root.isWidescreen
sourceComponent: Kirigami.GlobalDrawer { sourceComponent: Kirigami.OverlayDrawer {
modal: false modal: false
isMenu: false
collapsible: !Kirigami.Settings.isMobile
collapsed: !root.isWidescreen
collapseButtonVisible: false
width: root.isWidescreen ? root.originalWidth : Layout.implicitWidth width: root.isWidescreen ? root.originalWidth : Layout.implicitWidth
header: Kirigami.AbstractApplicationHeader {}
Kirigami.Theme.colorSet: Kirigami.Theme.Window Kirigami.Theme.colorSet: Kirigami.Theme.Window
Kirigami.Theme.inherit: false Kirigami.Theme.inherit: false
actions: [ leftPadding: 0
Kirigami.Action { rightPadding: 0
text: i18n("Queue") topPadding: 0
iconName: "source-playlist" bottomPadding: 0
checked: currentPage == "QueuePage"
onTriggered: { contentItem: ColumnLayout {
pushPage("QueuePage") spacing: 0
SettingsManager.lastOpenedPage = "QueuePage" // for persistency
SettingsManager.save(); Kirigami.AbstractApplicationHeader { Layout.fillWidth: true }
Controls.ScrollView {
id: scrollView
Layout.fillWidth: true
Layout.fillHeight: true
Controls.ScrollBar.vertical.policy: Controls.ScrollBar.AlwaysOff
Controls.ScrollBar.horizontal.policy: Controls.ScrollBar.AlwaysOff
contentWidth: -1 // disable horizontal scroll
ColumnLayout {
id: column
width: scrollView.width
spacing: 0
Kirigami.NavigationTabButton {
Layout.fillWidth: true
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
text: i18n("Queue")
icon.name: "source-playlist"
checked: currentPage == "QueuePage"
onClicked: {
pushPage("QueuePage")
SettingsManager.lastOpenedPage = "QueuePage" // for persistency
SettingsManager.save();
}
}
Kirigami.NavigationTabButton {
Layout.fillWidth: true
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
text: i18n("Discover")
icon.name: "search"
checked: currentPage == "DiscoverPage"
onClicked: {
pushPage("DiscoverPage")
SettingsManager.lastOpenedPage = "DiscoverPage" // for persistency
SettingsManager.save();
}
}
Kirigami.NavigationTabButton {
Layout.fillWidth: true
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
text: i18n("Subscriptions")
icon.name: "bookmarks"
checked: currentPage == "FeedListPage"
onClicked: {
pushPage("FeedListPage")
SettingsManager.lastOpenedPage = "FeedListPage" // for persistency
SettingsManager.save();
}
}
Kirigami.NavigationTabButton {
Layout.fillWidth: true
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
text: i18n("Episodes")
icon.name: "rss"
checked: currentPage == "EpisodeListPage"
onClicked: {
pushPage("EpisodeListPage")
SettingsManager.lastOpenedPage = "EpisodeListPage" // for persistency
SettingsManager.save();
}
}
Kirigami.NavigationTabButton {
Layout.fillWidth: true
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
text: i18n("Downloads")
icon.name: "download"
checked: currentPage == "DownloadListPage"
onClicked: {
pushPage("DownloadListPage")
SettingsManager.lastOpenedPage = "DownloadListPage" // for persistency
SettingsManager.save();
}
}
} }
}, }
Kirigami.Action {
text: i18n("Discover") Kirigami.Separator {
iconName: "search" Layout.fillWidth: true
checked: currentPage == "DiscoverPage" Layout.bottomMargin: Kirigami.Units.smallSpacing
onTriggered: { Layout.rightMargin: Kirigami.Units.smallSpacing
pushPage("DiscoverPage") Layout.leftMargin: Kirigami.Units.smallSpacing
SettingsManager.lastOpenedPage = "DiscoverPage" // for persistency }
SettingsManager.save();
} Kirigami.NavigationTabButton {
}, Layout.fillWidth: true
Kirigami.Action { width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
text: i18n("Subscriptions")
iconName: "bookmarks"
checked: currentPage == "FeedListPage"
onTriggered: {
pushPage("FeedListPage")
SettingsManager.lastOpenedPage = "FeedListPage" // for persistency
SettingsManager.save();
}
},
Kirigami.Action {
text: i18n("Episodes")
iconName: "rss"
checked: currentPage == "EpisodeListPage"
onTriggered: {
pushPage("EpisodeListPage")
SettingsManager.lastOpenedPage = "EpisodeListPage" // for persistency
SettingsManager.save();
}
},
Kirigami.Action {
text: i18n("Downloads")
iconName: "download"
checked: currentPage == "DownloadListPage"
onTriggered: {
pushPage("DownloadListPage")
SettingsManager.lastOpenedPage = "DownloadListPage" // for persistency
SettingsManager.save();
}
},
Kirigami.Action {
text: i18n("Settings") text: i18n("Settings")
iconName: "settings-configure" icon.name: "settings-configure"
checked: currentPage == "SettingsPage" checked: currentPage == "SettingsPage"
onTriggered: { onClicked: {
checked = false;
root.pageStack.layers.clear() root.pageStack.layers.clear()
root.pageStack.pushDialogLayer("qrc:/SettingsPage.qml", {}, { root.pageStack.pushDialogLayer("qrc:/SettingsPage.qml", {}, {
title: i18n("Settings") title: i18n("Settings")
}) })
} }
} }
] }
} }
} }