summaryrefslogtreecommitdiffstats
path: root/qml/MainPage.qml
diff options
context:
space:
mode:
Diffstat (limited to 'qml/MainPage.qml')
-rw-r--r--qml/MainPage.qml38
1 files changed, 38 insertions, 0 deletions
diff --git a/qml/MainPage.qml b/qml/MainPage.qml
index d00ead0..283db68 100644
--- a/qml/MainPage.qml
+++ b/qml/MainPage.qml
@@ -51,11 +51,49 @@ Page {
property alias tabs: tabGroup
property alias searchTabAlias: searchTab
+ property alias playlistSelection: playlistSelectionDialog
NotificationBanner {
id: errorBanner
}
+ MySelectionDialog {
+ id: playlistSelectionDialog
+
+ property variant track: null
+
+ titleText: "Playlists"
+ onAccepted: {
+ var playlistItem = model.get(playlistSelectionDialog.selectedIndex);
+ if (playlistItem.object) {
+ errorBanner.text = "Track added to " + playlistItem.name;
+ playlistItem.object.add(track);
+ } else {
+ if (spotifySession.user.createPlaylistFromTrack(track)) {
+ errorBanner.text = "Track added to new playlist";
+ } else {
+ errorBanner.text = "Could not add track to new playlist";
+ }
+ }
+ errorBanner.show();
+ }
+ }
+
+ property variant playlists: spotifySession.user ? spotifySession.user.playlists : null
+ onPlaylistsChanged: {
+ playlistSelectionDialog.model.clear();
+
+ if (playlists === null)
+ return;
+
+ for (var i in mainPage.playlists) {
+ if (mainPage.playlists[i].type == SpotifyPlaylist.Playlist && spotifySession.user.canModifyPlaylist(mainPage.playlists[i]))
+ playlistSelectionDialog.model.append({"name": mainPage.playlists[i].name, "object": mainPage.playlists[i] })
+ }
+
+ playlistSelectionDialog.model.append({"name": "New playlist" });
+ }
+
Connections {
target: spotifySession
onConnectionErrorChanged: {