Compare commits
3 commits
72a985a9e4
...
3940392f2d
Author | SHA1 | Date | |
---|---|---|---|
3940392f2d | |||
2916fa8f71 | |||
5f46cf2b77 |
6 changed files with 62 additions and 55 deletions
|
@ -2,8 +2,6 @@ using Gtk 4.0;
|
|||
using Adw 1;
|
||||
|
||||
template $AudreyUiPlayQueue: Adw.Bin {
|
||||
name: "play-queue";
|
||||
|
||||
child: Stack {
|
||||
visible-child-name: bind $visible_child_name(template.model as <$GListStore>.n-items) as <string>;
|
||||
|
||||
|
@ -19,22 +17,56 @@ template $AudreyUiPlayQueue: Adw.Bin {
|
|||
StackPage {
|
||||
name: "not-empty";
|
||||
|
||||
child: ScrolledWindow {
|
||||
hexpand: true;
|
||||
hscrollbar-policy: never;
|
||||
child: Box {
|
||||
name: "play-queue-page";
|
||||
homogeneous: true;
|
||||
|
||||
ListView view {
|
||||
single-click-activate: true;
|
||||
activate => $on_row_activated() swapped;
|
||||
Adw.Clamp {
|
||||
halign: center;
|
||||
margin-top: 24;
|
||||
margin-bottom: 24;
|
||||
margin-start: 24;
|
||||
margin-end: 24;
|
||||
|
||||
model: NoSelection {
|
||||
model: bind template.model;
|
||||
};
|
||||
Picture {
|
||||
valign: center;
|
||||
|
||||
factory: SignalListItemFactory {
|
||||
setup => $on_song_list_setup() swapped;
|
||||
bind => $on_song_list_bind() swapped;
|
||||
unbind => $on_song_list_unbind() swapped;
|
||||
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 {
|
||||
hexpand: true;
|
||||
hscrollbar-policy: never;
|
||||
|
||||
ListView view {
|
||||
single-click-activate: true;
|
||||
activate => $on_row_activated() swapped;
|
||||
|
||||
model: NoSelection {
|
||||
model: bind template.model;
|
||||
};
|
||||
|
||||
factory: SignalListItemFactory {
|
||||
setup => $on_song_list_setup() swapped;
|
||||
bind => $on_song_list_bind() swapped;
|
||||
unbind => $on_song_list_unbind() swapped;
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
|
|
|
@ -6,7 +6,6 @@ template $AudreyUiPlayQueueSong: Box {
|
|||
|
||||
Box {
|
||||
margin-start: 6;
|
||||
|
||||
width-request: 36;
|
||||
focusable: false;
|
||||
homogeneous: true;
|
||||
|
|
|
@ -8,6 +8,7 @@ template $AudreyUiPlaybar: Adw.Bin {
|
|||
styles [
|
||||
"osd"
|
||||
]
|
||||
|
||||
visible: bind template.show-pulse-bar;
|
||||
valign: start;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@ template $AudreyUiWindow: Adw.ApplicationWindow {
|
|||
default-height: 600;
|
||||
|
||||
Adw.ToolbarView {
|
||||
|
||||
[top]
|
||||
Adw.HeaderBar {
|
||||
[start]
|
||||
|
@ -84,7 +83,10 @@ template $AudreyUiWindow: Adw.ApplicationWindow {
|
|||
vexpand: true;
|
||||
|
||||
GridView {
|
||||
styles [ "albums" ]
|
||||
styles [
|
||||
"albums"
|
||||
]
|
||||
|
||||
single-click-activate: true;
|
||||
|
||||
model: NoSelection {
|
||||
|
@ -140,41 +142,11 @@ template $AudreyUiWindow: Adw.ApplicationWindow {
|
|||
title: _("Play queue");
|
||||
name: "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;
|
||||
playlist-pos: bind template.playlist-pos;
|
||||
// playbin: bind template.playbin;
|
||||
}
|
||||
child: $AudreyUiPlayQueue play_queue {
|
||||
model: bind template.playlist_model;
|
||||
playlist-pos: bind template.playlist-pos;
|
||||
// playbin: bind template.playbin;
|
||||
playing-cover-art: bind template.playing-cover-art;
|
||||
};
|
||||
}
|
||||
};
|
||||
|
|
|
@ -2,9 +2,9 @@ pub mod song;
|
|||
pub use song::Song;
|
||||
|
||||
mod imp {
|
||||
use adw::{gio, glib, prelude::*, subclass::prelude::*};
|
||||
use adw::{gdk, gio, glib, prelude::*, subclass::prelude::*};
|
||||
use glib::{subclass::InitializingObject, WeakRef};
|
||||
use std::cell::Cell;
|
||||
use std::cell::{Cell, RefCell};
|
||||
use tracing::{event, Level};
|
||||
|
||||
#[derive(gtk::CompositeTemplate, glib::Properties, Default)]
|
||||
|
@ -15,6 +15,8 @@ mod imp {
|
|||
pub(super) model: WeakRef<gio::ListModel>,
|
||||
#[property(get, set)]
|
||||
_playlist_pos: Cell<i64>,
|
||||
#[property(get, set)]
|
||||
playing_cover_art: RefCell<Option<gdk::Paintable>>,
|
||||
}
|
||||
|
||||
#[glib::object_subclass]
|
||||
|
|
|
@ -193,6 +193,7 @@ mod imp {
|
|||
match window.imp().state.get() {
|
||||
State::Idle | State::FileLoading | State::Seeking => {}
|
||||
State::Active => window.notify("time-pos"),
|
||||
State::FileEnded => {}
|
||||
other => unreachable!("{other:?}"),
|
||||
}
|
||||
glib::ControlFlow::Continue
|
||||
|
|
Loading…
Reference in a new issue