Compare commits
No commits in common. "3940392f2d4f22b87f4d440016a6773b416a3199" and "72a985a9e4c939df11ea1bfe3adbf9c712010f5a" have entirely different histories.
3940392f2d
...
72a985a9e4
6 changed files with 55 additions and 62 deletions
|
@ -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,56 +19,22 @@ template $AudreyUiPlayQueue: Adw.Bin {
|
||||||
StackPage {
|
StackPage {
|
||||||
name: "not-empty";
|
name: "not-empty";
|
||||||
|
|
||||||
child: Box {
|
child: ScrolledWindow {
|
||||||
name: "play-queue-page";
|
hexpand: true;
|
||||||
homogeneous: true;
|
hscrollbar-policy: never;
|
||||||
|
|
||||||
Adw.Clamp {
|
ListView view {
|
||||||
halign: center;
|
single-click-activate: true;
|
||||||
margin-top: 24;
|
activate => $on_row_activated() swapped;
|
||||||
margin-bottom: 24;
|
|
||||||
margin-start: 24;
|
|
||||||
margin-end: 24;
|
|
||||||
|
|
||||||
Picture {
|
model: NoSelection {
|
||||||
valign: center;
|
model: bind template.model;
|
||||||
|
};
|
||||||
|
|
||||||
styles [
|
factory: SignalListItemFactory {
|
||||||
"frame"
|
setup => $on_song_list_setup() swapped;
|
||||||
]
|
bind => $on_song_list_bind() swapped;
|
||||||
|
unbind => $on_song_list_unbind() swapped;
|
||||||
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,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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
model: bind template.playlist_model;
|
name: "play-queue-page";
|
||||||
playlist-pos: bind template.playlist-pos;
|
homogeneous: true;
|
||||||
// playbin: bind template.playbin;
|
|
||||||
playing-cover-art: bind template.playing-cover-art;
|
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;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue