From 75cb222b9102357ff38982823ec81f272adeb158 Mon Sep 17 00:00:00 2001 From: Erica Z Date: Sun, 20 Oct 2024 15:30:22 +0200 Subject: [PATCH] kill sidebar --- src/ui/play_queue.blp | 42 +++++++------------- src/ui/play_queue.vala | 9 ++--- src/ui/window.blp | 89 ++++++++++-------------------------------- src/ui/window.vala | 52 ++++++++++-------------- 4 files changed, 60 insertions(+), 132 deletions(-) diff --git a/src/ui/play_queue.blp b/src/ui/play_queue.blp index e033a38..56ab5fa 100644 --- a/src/ui/play_queue.blp +++ b/src/ui/play_queue.blp @@ -1,36 +1,24 @@ using Gtk 4.0; -using Adw 1; -template $UiPlayQueue: Adw.NavigationPage { - title: _("Play queue"); +template $UiPlayQueue: Box { + ScrolledWindow { + hexpand: true; - Adw.ToolbarView { - [top] - Adw.HeaderBar { - Button { - icon-name: "edit-clear-all"; - clicked => $on_clear (); - sensitive: bind template.can_clear_all; - } - } + ListView view { + show-separators: true; + single-click-activate: true; - ScrolledWindow { - ListView view { - show-separators: true; - single-click-activate: true; + activate => $on_row_activated (); - activate => $on_row_activated (); + model: NoSelection { + model: bind template.playbin as <$Playbin>.play_queue; + }; - model: NoSelection { - model: bind template.playbin as <$Playbin>.play_queue; - }; - - factory: SignalListItemFactory { - setup => $on_song_list_setup (); - bind => $on_song_list_bind (); - unbind => $on_song_list_unbind (); - }; - } + factory: SignalListItemFactory { + setup => $on_song_list_setup (); + bind => $on_song_list_bind (); + unbind => $on_song_list_unbind (); + }; } } } diff --git a/src/ui/play_queue.vala b/src/ui/play_queue.vala index 05ccb36..abb869a 100644 --- a/src/ui/play_queue.vala +++ b/src/ui/play_queue.vala @@ -108,7 +108,7 @@ class Ui.PlayQueueSong : Gtk.ListBoxRow { } [GtkTemplate (ui = "/eu/callcc/audrey/ui/play_queue.ui")] -public class Ui.PlayQueue : Adw.NavigationPage { +public class Ui.PlayQueue : Gtk.Box { private Playbin _playbin; public Playbin playbin { get { return _playbin; } @@ -118,17 +118,14 @@ public class Ui.PlayQueue : Adw.NavigationPage { _playbin.play_queue.items_changed.connect (this.on_store_items_changed); this.can_clear_all = _playbin.play_queue.get_n_items () > 0; - - _playbin.notify["play-queue-position"].connect (() => { - }); } } public bool can_clear_all { get; private set; } - [GtkCallback] private void on_clear () { + /*[GtkCallback] private void on_clear () { this.playbin.clear (); - } + }*/ private void on_store_items_changed (GLib.ListModel store, uint position, uint removed, uint added) { this.can_clear_all = store.get_n_items () > 0; diff --git a/src/ui/window.blp b/src/ui/window.blp index 1e564af..9823ff8 100644 --- a/src/ui/window.blp +++ b/src/ui/window.blp @@ -10,87 +10,40 @@ template $UiWindow: Adw.ApplicationWindow { can-open: false; // broken in libadwaita [content] - Adw.OverlaySplitView { + Adw.ToolbarView { margin-bottom: bind bottom_sheet.bottom-bar-height; - vexpand: true; + [top] + Adw.HeaderBar { + [start] + Button { + icon-name: "media-playlist-shuffle"; + sensitive: bind template.can_click_shuffle_all; + clicked => $shuffle_all (); + } - [sidebar] - Adw.NavigationPage { - width-request: 100; - title: _("audrey"); + title-widget: Adw.ViewSwitcher { + stack: stack; + policy: wide; + }; - Adw.ToolbarView { - [top] - Adw.HeaderBar { - show-title: false; - - [end] - Button { - icon-name: "applications-system"; - clicked => $show_setup_dialog (); - } - } - - content: Box { - orientation: vertical; - - ListBox sidebar { - styles [ - "navigation-sidebar", - ] - - row-activated => $on_sidebar_row_activated(); - - ListBoxRow sidebar_play_queue { - Label { - xalign: 0; - label: _("Play queue"); - } - } - } - - Separator {} - - ListBox { - selection-mode: none; - - styles [ - "navigation-sidebar", - ] - - Adw.ButtonRow shuffle_all_tracks { - title: _("Shuffle all tracks"); - start-icon-name: "media-playlist-shuffle"; - sensitive: false; - } - } - - Separator { - styles [ - "spacer", - ] - vexpand: true; - } - - Picture { - paintable: bind template.playing_cover_art; - } - }; + [end] + Button { + icon-name: "applications-system"; + clicked => $show_setup_dialog (); } } - [content] - Stack stack { - StackPage { - name: "play_queue"; + content: Adw.ViewStack stack { + Adw.ViewStackPage { title: _("Play queue"); + icon-name: "media-playback-start"; child: $UiPlayQueue play_queue { playbin: bind template.playbin; }; } - } + }; } [bottom-bar] diff --git a/src/ui/window.vala b/src/ui/window.vala index a14df47..cbd3a18 100644 --- a/src/ui/window.vala +++ b/src/ui/window.vala @@ -1,12 +1,8 @@ [GtkTemplate (ui = "/eu/callcc/audrey/ui/window.ui")] class Ui.Window : Adw.ApplicationWindow { - [GtkChild] private unowned Gtk.ListBox sidebar; - [GtkChild] private unowned Gtk.ListBoxRow sidebar_play_queue; - [GtkChild] private unowned Gtk.Stack stack; - [GtkChild] public unowned Ui.PlayQueue play_queue; [GtkChild] public unowned Ui.Playbar playbar; - [GtkChild] public unowned Adw.ButtonRow shuffle_all_tracks; + //[GtkChild] public unowned Adw.ButtonRow shuffle_all_tracks; private Setup setup; @@ -79,11 +75,10 @@ class Ui.Window : Adw.ApplicationWindow { this.setup.connected.connect ((api) => { this.api = api; this.playbin.api = api; + this.can_click_shuffle_all = true; }); this.setup.load (); - this.sidebar.select_row (this.sidebar.get_row_at_index (0)); - this.playbin.new_track.connect (() => { this.now_playing (this.playbin.play_queue.get_item (this.playbin.play_queue_position) as Subsonic.Song); }); @@ -92,33 +87,28 @@ class Ui.Window : Adw.ApplicationWindow { this.playing_cover_art = null; this.song = null; }); - - this.shuffle_all_tracks.sensitive = true; - this.shuffle_all_tracks.activated.connect (() => { - this.shuffle_all_tracks.sensitive = false; - this.playbin.clear (); - api.get_random_songs.begin (null, (song) => { - this.playbin.append_track (song); - }, (obj, res) => { - try { - api.get_random_songs.end (res); - } catch (Error e) { - error ("could not get random songs: %s", e.message); - } - this.shuffle_all_tracks.sensitive = true; - - this.playbin.select_track (0); - }); - }); - } - - [GtkCallback] private void on_sidebar_row_activated (Gtk.ListBoxRow row) { - if (row == this.sidebar_play_queue) { - this.stack.set_visible_child_name("play_queue"); - } } [GtkCallback] private void show_setup_dialog () { this.setup.present (this); } + + public bool can_click_shuffle_all { get; private set; default = false; } + + [GtkCallback] private void shuffle_all () { + this.can_click_shuffle_all = false; + this.playbin.clear (); + api.get_random_songs.begin (null, (song) => { + this.playbin.append_track (song); + }, (obj, res) => { + try { + api.get_random_songs.end (res); + } catch (Error e) { + error ("could not get random songs: %s", e.message); + } + this.can_click_shuffle_all = true; + + this.playbin.select_track (0); + }); + } }