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;
|
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>;
|
||||||
|
|
||||||
|
@ -19,6 +17,38 @@ 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;
|
||||||
|
@ -40,4 +70,6 @@ template $AudreyUiPlayQueue: Adw.Bin {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@ 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,6 +8,7 @@ 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,7 +7,6 @@ template $AudreyUiWindow: Adw.ApplicationWindow {
|
||||||
default-height: 600;
|
default-height: 600;
|
||||||
|
|
||||||
Adw.ToolbarView {
|
Adw.ToolbarView {
|
||||||
|
|
||||||
[top]
|
[top]
|
||||||
Adw.HeaderBar {
|
Adw.HeaderBar {
|
||||||
[start]
|
[start]
|
||||||
|
@ -84,7 +83,10 @@ template $AudreyUiWindow: Adw.ApplicationWindow {
|
||||||
vexpand: true;
|
vexpand: true;
|
||||||
|
|
||||||
GridView {
|
GridView {
|
||||||
styles [ "albums" ]
|
styles [
|
||||||
|
"albums"
|
||||||
|
]
|
||||||
|
|
||||||
single-click-activate: true;
|
single-click-activate: true;
|
||||||
|
|
||||||
model: NoSelection {
|
model: NoSelection {
|
||||||
|
@ -140,41 +142,11 @@ template $AudreyUiWindow: Adw.ApplicationWindow {
|
||||||
title: _("Play queue");
|
title: _("Play queue");
|
||||||
name: "play-queue";
|
name: "play-queue";
|
||||||
|
|
||||||
child: Box {
|
child: $AudreyUiPlayQueue play_queue {
|
||||||
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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,9 +2,9 @@ pub mod song;
|
||||||
pub use song::Song;
|
pub use song::Song;
|
||||||
|
|
||||||
mod imp {
|
mod imp {
|
||||||
use adw::{gio, glib, prelude::*, subclass::prelude::*};
|
use adw::{gdk, gio, glib, prelude::*, subclass::prelude::*};
|
||||||
use glib::{subclass::InitializingObject, WeakRef};
|
use glib::{subclass::InitializingObject, WeakRef};
|
||||||
use std::cell::Cell;
|
use std::cell::{Cell, RefCell};
|
||||||
use tracing::{event, Level};
|
use tracing::{event, Level};
|
||||||
|
|
||||||
#[derive(gtk::CompositeTemplate, glib::Properties, Default)]
|
#[derive(gtk::CompositeTemplate, glib::Properties, Default)]
|
||||||
|
@ -15,6 +15,8 @@ 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,6 +193,7 @@ 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