simple playback
This commit is contained in:
parent
88adebde64
commit
119a15eb3d
6 changed files with 26 additions and 0 deletions
|
@ -356,4 +356,8 @@ public class Wavelet.Subsonic : Object {
|
||||||
|
|
||||||
assert (reader.get_error () == null);
|
assert (reader.get_error () == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string stream_uri (string id) {
|
||||||
|
return @"$(this.url)/rest/stream?id=$(id)&$(this.parameters)";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Sqlite.Database config_db;
|
Sqlite.Database config_db;
|
||||||
|
Gst.Element playbin;
|
||||||
|
|
||||||
public class Wavelet.Application : Adw.Application {
|
public class Wavelet.Application : Adw.Application {
|
||||||
public Application () {
|
public Application () {
|
||||||
|
@ -27,6 +28,9 @@ public class Wavelet.Application : Adw.Application {
|
||||||
flags: ApplicationFlags.DEFAULT_FLAGS
|
flags: ApplicationFlags.DEFAULT_FLAGS
|
||||||
);
|
);
|
||||||
|
|
||||||
|
playbin = Gst.ElementFactory.make ("playbin3", null);
|
||||||
|
assert (playbin != null);
|
||||||
|
|
||||||
var app_config_dir = Path.build_filename (Environment.get_user_config_dir (), "wavelet");
|
var app_config_dir = Path.build_filename (Environment.get_user_config_dir (), "wavelet");
|
||||||
try {
|
try {
|
||||||
File.new_build_filename (app_config_dir).make_directory_with_parents ();
|
File.new_build_filename (app_config_dir).make_directory_with_parents ();
|
||||||
|
@ -83,6 +87,12 @@ public class Wavelet.Application : Adw.Application {
|
||||||
win.shuffle_all_tracks.sensitive = true;
|
win.shuffle_all_tracks.sensitive = true;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
win.play_queue.play_now.connect ((song) => {
|
||||||
|
playbin.set_state (Gst.State.READY);
|
||||||
|
playbin.set ("uri", api.stream_uri (song.id));
|
||||||
|
playbin.set_state (Gst.State.PLAYING);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
win.setup.load (config_db);
|
win.setup.load (config_db);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,8 @@ int main (string[] args) {
|
||||||
Intl.bind_textdomain_codeset (Config.GETTEXT_PACKAGE, "UTF-8");
|
Intl.bind_textdomain_codeset (Config.GETTEXT_PACKAGE, "UTF-8");
|
||||||
Intl.textdomain (Config.GETTEXT_PACKAGE);
|
Intl.textdomain (Config.GETTEXT_PACKAGE);
|
||||||
|
|
||||||
|
Gst.init (ref args);
|
||||||
|
|
||||||
var app = new Wavelet.Application ();
|
var app = new Wavelet.Application ();
|
||||||
return app.run (args);
|
return app.run (args);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ wavelet_sources = [
|
||||||
|
|
||||||
wavelet_deps = [
|
wavelet_deps = [
|
||||||
config_dep,
|
config_dep,
|
||||||
|
dependency('gstreamer-1.0'),
|
||||||
dependency('gtk4'),
|
dependency('gtk4'),
|
||||||
dependency('json-glib-1.0'),
|
dependency('json-glib-1.0'),
|
||||||
dependency('libadwaita-1', version: '>= 1.4'),
|
dependency('libadwaita-1', version: '>= 1.4'),
|
||||||
|
|
|
@ -10,6 +10,8 @@ template $WaveletPlayQueue: Adw.NavigationPage {
|
||||||
|
|
||||||
ScrolledWindow {
|
ScrolledWindow {
|
||||||
ListView list_view {
|
ListView list_view {
|
||||||
|
single-click-activate: true;
|
||||||
|
|
||||||
factory: BuilderListItemFactory {
|
factory: BuilderListItemFactory {
|
||||||
template ListItem {
|
template ListItem {
|
||||||
child: Label {
|
child: Label {
|
||||||
|
|
|
@ -25,9 +25,16 @@ public class Wavelet.PlayQueue : Adw.NavigationPage {
|
||||||
private ListStore songs;
|
private ListStore songs;
|
||||||
private uint current;
|
private uint current;
|
||||||
|
|
||||||
|
public signal void play_now (Song song);
|
||||||
|
|
||||||
construct {
|
construct {
|
||||||
this.songs = new ListStore (typeof (Song));
|
this.songs = new ListStore (typeof (Song));
|
||||||
this.list_view.model = new Gtk.NoSelection (this.songs);
|
this.list_view.model = new Gtk.NoSelection (this.songs);
|
||||||
|
|
||||||
|
this.list_view.activate.connect ((position) => {
|
||||||
|
Song song = (Song) this.songs.get_item(position);
|
||||||
|
this.play_now (song);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clear () {
|
public void clear () {
|
||||||
|
|
Loading…
Reference in a new issue