Compare commits

..

No commits in common. "3940392f2d4f22b87f4d440016a6773b416a3199" and "72a985a9e4c939df11ea1bfe3adbf9c712010f5a" have entirely different histories.

6 changed files with 55 additions and 62 deletions

View file

@ -2,6 +2,8 @@ using Gtk 4.0;
using Adw 1; using Adw 1;
template $AudreyUiPlayQueue: Adw.Bin { template $AudreyUiPlayQueue: Adw.Bin {
name: "play-queue";
child: Stack { child: Stack {
visible-child-name: bind $visible_child_name(template.model as <$GListStore>.n-items) as <string>; visible-child-name: bind $visible_child_name(template.model as <$GListStore>.n-items) as <string>;
@ -17,38 +19,6 @@ template $AudreyUiPlayQueue: Adw.Bin {
StackPage { StackPage {
name: "not-empty"; name: "not-empty";
child: Box {
name: "play-queue-page";
homogeneous: true;
Adw.Clamp {
halign: center;
margin-top: 24;
margin-bottom: 24;
margin-start: 24;
margin-end: 24;
Picture {
valign: center;
styles [
"frame"
]
halign: center;
paintable: bind template.playing-cover-art;
}
}
Adw.Bin {
name: "play-queue";
hexpand: true;
halign: fill;
margin-top: 48;
margin-bottom: 48;
margin-start: 24;
margin-end: 24;
child: ScrolledWindow { child: ScrolledWindow {
hexpand: true; hexpand: true;
hscrollbar-policy: never; hscrollbar-policy: never;
@ -70,6 +40,4 @@ template $AudreyUiPlayQueue: Adw.Bin {
}; };
} }
}; };
}
};
} }

View file

@ -6,6 +6,7 @@ template $AudreyUiPlayQueueSong: Box {
Box { Box {
margin-start: 6; margin-start: 6;
width-request: 36; width-request: 36;
focusable: false; focusable: false;
homogeneous: true; homogeneous: true;

View file

@ -8,7 +8,6 @@ template $AudreyUiPlaybar: Adw.Bin {
styles [ styles [
"osd" "osd"
] ]
visible: bind template.show-pulse-bar; visible: bind template.show-pulse-bar;
valign: start; valign: start;
} }

View file

@ -7,6 +7,7 @@ template $AudreyUiWindow: Adw.ApplicationWindow {
default-height: 600; default-height: 600;
Adw.ToolbarView { Adw.ToolbarView {
[top] [top]
Adw.HeaderBar { Adw.HeaderBar {
[start] [start]
@ -83,10 +84,7 @@ template $AudreyUiWindow: Adw.ApplicationWindow {
vexpand: true; vexpand: true;
GridView { GridView {
styles [ styles [ "albums" ]
"albums"
]
single-click-activate: true; single-click-activate: true;
model: NoSelection { model: NoSelection {
@ -142,11 +140,41 @@ template $AudreyUiWindow: Adw.ApplicationWindow {
title: _("Play queue"); title: _("Play queue");
name: "play-queue"; name: "play-queue";
child: $AudreyUiPlayQueue play_queue { child: Box {
name: "play-queue-page";
homogeneous: true;
Adw.Clamp {
halign: center;
margin-top: 24;
margin-bottom: 24;
margin-start: 24;
margin-end: 24;
Picture {
valign: center;
styles [
"frame"
]
halign: center;
paintable: bind template.playing_cover_art;
}
}
$AudreyUiPlayQueue play_queue {
hexpand: true;
halign: fill;
margin-top: 48;
margin-bottom: 48;
margin-start: 24;
margin-end: 24;
model: bind template.playlist_model; model: bind template.playlist_model;
playlist-pos: bind template.playlist-pos; playlist-pos: bind template.playlist-pos;
// playbin: bind template.playbin; // playbin: bind template.playbin;
playing-cover-art: bind template.playing-cover-art; }
}; };
} }
}; };

View file

@ -2,9 +2,9 @@ pub mod song;
pub use song::Song; pub use song::Song;
mod imp { mod imp {
use adw::{gdk, gio, glib, prelude::*, subclass::prelude::*}; use adw::{gio, glib, prelude::*, subclass::prelude::*};
use glib::{subclass::InitializingObject, WeakRef}; use glib::{subclass::InitializingObject, WeakRef};
use std::cell::{Cell, RefCell}; use std::cell::Cell;
use tracing::{event, Level}; use tracing::{event, Level};
#[derive(gtk::CompositeTemplate, glib::Properties, Default)] #[derive(gtk::CompositeTemplate, glib::Properties, Default)]
@ -15,8 +15,6 @@ mod imp {
pub(super) model: WeakRef<gio::ListModel>, pub(super) model: WeakRef<gio::ListModel>,
#[property(get, set)] #[property(get, set)]
_playlist_pos: Cell<i64>, _playlist_pos: Cell<i64>,
#[property(get, set)]
playing_cover_art: RefCell<Option<gdk::Paintable>>,
} }
#[glib::object_subclass] #[glib::object_subclass]

View file

@ -193,7 +193,6 @@ mod imp {
match window.imp().state.get() { match window.imp().state.get() {
State::Idle | State::FileLoading | State::Seeking => {} State::Idle | State::FileLoading | State::Seeking => {}
State::Active => window.notify("time-pos"), State::Active => window.notify("time-pos"),
State::FileEnded => {}
other => unreachable!("{other:?}"), other => unreachable!("{other:?}"),
} }
glib::ControlFlow::Continue glib::ControlFlow::Continue