diff --git a/meson.build b/meson.build index e7f626f..5c61ac8 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project( 'audrey', - 'c', + ['c', 'vala'], version: '0.1.0', # AUDREY_VERSION meson_version: '>= 1.0.0', default_options: ['warning_level=0', 'werror=false'], @@ -10,6 +10,7 @@ i18n = import('i18n') gnome = import('gnome') fs = import('fs') cc = meson.get_compiler('c') +valac = meson.get_compiler('vala') srcdir = meson.project_source_root() / 'src' @@ -19,6 +20,7 @@ config_h.set_quoted('GETTEXT_PACKAGE', 'audrey') config_h.set_quoted('LOCALEDIR', get_option('prefix') / get_option('localedir')) configure_file(output: 'config.h', configuration: config_h) +config_dep = valac.find_library('config', dirs: srcdir) config_inc = include_directories('.') add_project_arguments( diff --git a/resources/meson.build b/resources/meson.build index e59fe29..9507ff1 100644 --- a/resources/meson.build +++ b/resources/meson.build @@ -10,3 +10,5 @@ blueprints = custom_target( '@INPUT@', ], ) + +removeme = gnome.compile_resources('audrey-resources', 'audrey.gresource.xml', c_name: 'audrey', dependencies: blueprints) diff --git a/src/application.c b/src/application.c deleted file mode 100644 index 8c02bfd..0000000 --- a/src/application.c +++ /dev/null @@ -1,515 +0,0 @@ -/* application.c generated by valac 0.56.16, the Vala compiler - * generated from application.vala, do not modify */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(VALA_STRICT_C) -#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14) -#pragma GCC diagnostic warning "-Wincompatible-pointer-types" -#elif defined(__clang__) && (__clang_major__ >= 16) -#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types" -#pragma clang diagnostic ignored "-Wincompatible-pointer-types" -#endif -#endif -#if !defined(VALA_EXTERN) -#if defined(_MSC_VER) -#define VALA_EXTERN __declspec(dllexport) extern -#elif __GNUC__ >= 4 -#define VALA_EXTERN __attribute__((visibility("default"))) extern -#else -#define VALA_EXTERN extern -#endif -#endif - -#define AUDREY_TYPE_APPLICATION (audrey_application_get_type ()) -#define AUDREY_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), AUDREY_TYPE_APPLICATION, AudreyApplication)) -#define AUDREY_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), AUDREY_TYPE_APPLICATION, AudreyApplicationClass)) -#define AUDREY_IS_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), AUDREY_TYPE_APPLICATION)) -#define AUDREY_IS_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), AUDREY_TYPE_APPLICATION)) -#define AUDREY_APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), AUDREY_TYPE_APPLICATION, AudreyApplicationClass)) - -typedef struct _AudreyApplication AudreyApplication; -typedef struct _AudreyApplicationClass AudreyApplicationClass; -typedef struct _AudreyApplicationPrivate AudreyApplicationPrivate; -enum { - AUDREY_APPLICATION_0_PROPERTY, - AUDREY_APPLICATION_NUM_PROPERTIES -}; -static GParamSpec* audrey_application_properties[AUDREY_APPLICATION_NUM_PROPERTIES]; - -#define UI_TYPE_WINDOW (ui_window_get_type ()) -#define UI_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_WINDOW, UiWindow)) -#define UI_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_WINDOW, UiWindowClass)) -#define UI_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_WINDOW)) -#define UI_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_WINDOW)) -#define UI_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_WINDOW, UiWindowClass)) - -typedef struct _UiWindow UiWindow; -typedef struct _UiWindowClass UiWindowClass; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define _g_free0(var) (var = (g_free (var), NULL)) -typedef void (*GSimpleActionActivateCallback) (GSimpleAction* action, GVariant* parameter, gpointer user_data); - -struct _AudreyApplication { - AdwApplication parent_instance; - AudreyApplicationPrivate * priv; -}; - -struct _AudreyApplicationClass { - AdwApplicationClass parent_class; -}; - -static gpointer audrey_application_parent_class = NULL; - -VALA_EXTERN GType audrey_application_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (AudreyApplication, g_object_unref) -VALA_EXTERN AudreyApplication* audrey_application_new (void); -VALA_EXTERN AudreyApplication* audrey_application_construct (GType object_type); -static void audrey_application_real_activate (GApplication* base); -VALA_EXTERN UiWindow* ui_window_new (GtkApplication* app); -VALA_EXTERN UiWindow* ui_window_construct (GType object_type, - GtkApplication* app); -VALA_EXTERN GType ui_window_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (UiWindow, g_object_unref) -static void audrey_application_on_about_action (AudreyApplication* self); -static gchar** _vala_array_dup1 (gchar** self, - gssize length); -static void audrey_application_on_preferences_action (AudreyApplication* self); -static GObject * audrey_application_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam * construct_properties); -static void _audrey_application_on_about_action_gsimple_action_activate_callback (GSimpleAction* action, - GVariant* parameter, - gpointer self); -static void _audrey_application_on_preferences_action_gsimple_action_activate_callback (GSimpleAction* action, - GVariant* parameter, - gpointer self); -static void _g_application_quit_gsimple_action_activate_callback (GSimpleAction* action, - GVariant* parameter, - gpointer self); -static void audrey_application_finalize (GObject * obj); -static GType audrey_application_get_type_once (void); -static void _vala_array_destroy (gpointer array, - gssize array_length, - GDestroyNotify destroy_func); -static void _vala_array_free (gpointer array, - gssize array_length, - GDestroyNotify destroy_func); - -AudreyApplication* -audrey_application_construct (GType object_type) -{ - AudreyApplication * self = NULL; -#line 3 "../src/application.vala" - self = (AudreyApplication*) g_object_new (object_type, "application-id", "eu.callcc.audrey", "flags", G_APPLICATION_DEFAULT_FLAGS, NULL); -#line 2 "../src/application.vala" - return self; -#line 115 "application.c" -} - -AudreyApplication* -audrey_application_new (void) -{ -#line 2 "../src/application.vala" - return audrey_application_construct (AUDREY_TYPE_APPLICATION); -#line 123 "application.c" -} - -static gpointer -_g_object_ref0 (gpointer self) -{ -#line 22 "../src/application.vala" - return self ? g_object_ref (self) : NULL; -#line 131 "application.c" -} - -static void -audrey_application_real_activate (GApplication* base) -{ - AudreyApplication * self; - GtkWindow* _tmp0_ = NULL; - GtkWindow* _tmp1_; - GtkWindow* _tmp2_; - GtkWindow* _tmp3_; - GtkWindow* win = NULL; - GtkWindow* _tmp5_; -#line 19 "../src/application.vala" - self = (AudreyApplication*) base; -#line 20 "../src/application.vala" - G_APPLICATION_CLASS (audrey_application_parent_class)->activate ((GApplication*) G_TYPE_CHECK_INSTANCE_CAST (self, adw_application_get_type (), AdwApplication)); -#line 22 "../src/application.vala" - _tmp1_ = gtk_application_get_active_window ((GtkApplication*) self); -#line 22 "../src/application.vala" - _tmp2_ = _tmp1_; -#line 22 "../src/application.vala" - _tmp3_ = _g_object_ref0 (_tmp2_); -#line 22 "../src/application.vala" - _tmp0_ = _tmp3_; -#line 22 "../src/application.vala" - if (_tmp0_ == NULL) { -#line 158 "application.c" - UiWindow* _tmp4_; -#line 22 "../src/application.vala" - _tmp4_ = ui_window_new ((GtkApplication*) self); -#line 22 "../src/application.vala" - g_object_ref_sink (_tmp4_); -#line 22 "../src/application.vala" - _g_object_unref0 (_tmp0_); -#line 22 "../src/application.vala" - _tmp0_ = (GtkWindow*) _tmp4_; -#line 168 "application.c" - } -#line 22 "../src/application.vala" - _tmp5_ = _tmp0_; -#line 22 "../src/application.vala" - _tmp0_ = NULL; -#line 22 "../src/application.vala" - win = _tmp5_; -#line 23 "../src/application.vala" - gtk_window_present (win); -#line 19 "../src/application.vala" - _g_object_unref0 (win); -#line 19 "../src/application.vala" - _g_object_unref0 (_tmp0_); -#line 182 "application.c" -} - -static gchar** -_vala_array_dup1 (gchar** self, - gssize length) -{ -#line 28 "../src/application.vala" - if (length >= 0) { -#line 191 "application.c" - gchar** result; - gssize i; -#line 28 "../src/application.vala" - result = g_new0 (gchar*, length + 1); -#line 28 "../src/application.vala" - for (i = 0; i < length; i++) { -#line 198 "application.c" - gchar* _tmp0_; -#line 28 "../src/application.vala" - _tmp0_ = g_strdup (self[i]); -#line 28 "../src/application.vala" - result[i] = _tmp0_; -#line 204 "application.c" - } -#line 28 "../src/application.vala" - return result; -#line 208 "application.c" - } -#line 28 "../src/application.vala" - return NULL; -#line 212 "application.c" -} - -static void -audrey_application_on_about_action (AudreyApplication* self) -{ - gchar** developers = NULL; - gchar* _tmp0_; - gchar** _tmp1_; - gint developers_length1; - gint _developers_size_; - AdwAboutDialog* about = NULL; - gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gchar* _tmp5_; - gchar* _tmp6_; - gchar** _tmp7_; - gint _tmp7__length1; - gchar* _tmp8_; - AdwAboutDialog* _tmp9_ = NULL; - GtkWindow* _tmp10_; - GtkWindow* _tmp11_; -#line 26 "../src/application.vala" - g_return_if_fail (self != NULL); -#line 27 "../src/application.vala" - _tmp0_ = g_strdup ("Erica Z"); -#line 27 "../src/application.vala" - _tmp1_ = g_new0 (gchar*, 1 + 1); -#line 27 "../src/application.vala" - _tmp1_[0] = _tmp0_; -#line 27 "../src/application.vala" - developers = _tmp1_; -#line 27 "../src/application.vala" - developers_length1 = 1; -#line 27 "../src/application.vala" - _developers_size_ = developers_length1; -#line 28 "../src/application.vala" - _tmp2_ = g_strdup ("audrey"); -#line 28 "../src/application.vala" - _tmp3_ = g_strdup ("eu.callcc.audrey"); -#line 28 "../src/application.vala" - _tmp4_ = g_strdup ("Erica Z"); -#line 28 "../src/application.vala" - _tmp5_ = g_strdup (_ ("translator-credits")); -#line 28 "../src/application.vala" - _tmp6_ = g_strdup ("0.1.0"); -#line 28 "../src/application.vala" - _tmp7_ = (developers != NULL) ? _vala_array_dup1 (developers, developers_length1) : developers; -#line 28 "../src/application.vala" - _tmp7__length1 = developers_length1; -#line 28 "../src/application.vala" - _tmp8_ = g_strdup ("© 2024 Erica Z"); -#line 28 "../src/application.vala" - _tmp9_ = (AdwAboutDialog*) adw_about_dialog_new (); -#line 28 "../src/application.vala" - adw_about_dialog_set_application_name (_tmp9_, _tmp2_); -#line 28 "../src/application.vala" - _g_free0 (_tmp2_); -#line 28 "../src/application.vala" - adw_about_dialog_set_application_icon (_tmp9_, _tmp3_); -#line 28 "../src/application.vala" - _g_free0 (_tmp3_); -#line 28 "../src/application.vala" - adw_about_dialog_set_developer_name (_tmp9_, _tmp4_); -#line 28 "../src/application.vala" - _g_free0 (_tmp4_); -#line 28 "../src/application.vala" - adw_about_dialog_set_translator_credits (_tmp9_, _tmp5_); -#line 28 "../src/application.vala" - _g_free0 (_tmp5_); -#line 28 "../src/application.vala" - adw_about_dialog_set_version (_tmp9_, _tmp6_); -#line 28 "../src/application.vala" - _g_free0 (_tmp6_); -#line 28 "../src/application.vala" - adw_about_dialog_set_developers (_tmp9_, _tmp7_); -#line 28 "../src/application.vala" - _tmp7_ = (_vala_array_free (_tmp7_, _tmp7__length1, (GDestroyNotify) g_free), NULL); -#line 28 "../src/application.vala" - adw_about_dialog_set_copyright (_tmp9_, _tmp8_); -#line 28 "../src/application.vala" - _g_free0 (_tmp8_); -#line 28 "../src/application.vala" - g_object_ref_sink (_tmp9_); -#line 28 "../src/application.vala" - about = _tmp9_; -#line 38 "../src/application.vala" - _tmp10_ = gtk_application_get_active_window ((GtkApplication*) self); -#line 38 "../src/application.vala" - _tmp11_ = _tmp10_; -#line 38 "../src/application.vala" - adw_dialog_present ((AdwDialog*) about, (GtkWidget*) _tmp11_); -#line 26 "../src/application.vala" - _g_object_unref0 (about); -#line 26 "../src/application.vala" - developers = (_vala_array_free (developers, developers_length1, (GDestroyNotify) g_free), NULL); -#line 309 "application.c" -} - -static void -audrey_application_on_preferences_action (AudreyApplication* self) -{ -#line 41 "../src/application.vala" - g_return_if_fail (self != NULL); -#line 42 "../src/application.vala" - g_message ("application.vala:42: app.preferences action activated"); -#line 319 "application.c" -} - -static void -_audrey_application_on_about_action_gsimple_action_activate_callback (GSimpleAction* action, - GVariant* parameter, - gpointer self) -{ -#line 10 "../src/application.vala" - audrey_application_on_about_action ((AudreyApplication*) self); -#line 329 "application.c" -} - -static void -_audrey_application_on_preferences_action_gsimple_action_activate_callback (GSimpleAction* action, - GVariant* parameter, - gpointer self) -{ -#line 10 "../src/application.vala" - audrey_application_on_preferences_action ((AudreyApplication*) self); -#line 339 "application.c" -} - -static void -_g_application_quit_gsimple_action_activate_callback (GSimpleAction* action, - GVariant* parameter, - gpointer self) -{ -#line 10 "../src/application.vala" - g_application_quit ((GApplication*) self); -#line 349 "application.c" -} - -static GObject * -audrey_application_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam * construct_properties) -{ - GObject * obj; - GObjectClass * parent_class; - AudreyApplication * self; - GActionEntry* action_entries = NULL; - GActionEntry _tmp0_ = {0}; - GActionEntry _tmp1_ = {0}; - GActionEntry _tmp2_ = {0}; - GActionEntry* _tmp3_; - gint action_entries_length1; - gint _action_entries_size_; - GActionEntry* _tmp4_; - gint _tmp4__length1; - gchar* _tmp5_; - gchar** _tmp6_; - gchar** _tmp7_; - gint _tmp7__length1; -#line 9 "../src/application.vala" - parent_class = G_OBJECT_CLASS (audrey_application_parent_class); -#line 9 "../src/application.vala" - obj = parent_class->constructor (type, n_construct_properties, construct_properties); -#line 9 "../src/application.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, AUDREY_TYPE_APPLICATION, AudreyApplication); -#line 10 "../src/application.vala" - memset (&_tmp0_, 0, sizeof (GActionEntry)); -#line 10 "../src/application.vala" - _tmp0_.name = "about"; -#line 10 "../src/application.vala" - _tmp0_.activate = _audrey_application_on_about_action_gsimple_action_activate_callback; -#line 10 "../src/application.vala" - memset (&_tmp1_, 0, sizeof (GActionEntry)); -#line 10 "../src/application.vala" - _tmp1_.name = "preferences"; -#line 10 "../src/application.vala" - _tmp1_.activate = _audrey_application_on_preferences_action_gsimple_action_activate_callback; -#line 10 "../src/application.vala" - memset (&_tmp2_, 0, sizeof (GActionEntry)); -#line 10 "../src/application.vala" - _tmp2_.name = "quit"; -#line 10 "../src/application.vala" - _tmp2_.activate = _g_application_quit_gsimple_action_activate_callback; -#line 10 "../src/application.vala" - _tmp3_ = g_new0 (GActionEntry, 3); -#line 10 "../src/application.vala" - _tmp3_[0] = _tmp0_; -#line 10 "../src/application.vala" - _tmp3_[1] = _tmp1_; -#line 10 "../src/application.vala" - _tmp3_[2] = _tmp2_; -#line 10 "../src/application.vala" - action_entries = _tmp3_; -#line 10 "../src/application.vala" - action_entries_length1 = 3; -#line 10 "../src/application.vala" - _action_entries_size_ = action_entries_length1; -#line 15 "../src/application.vala" - _tmp4_ = action_entries; -#line 15 "../src/application.vala" - _tmp4__length1 = action_entries_length1; -#line 15 "../src/application.vala" - g_action_map_add_action_entries ((GActionMap*) self, _tmp4_, (gint) _tmp4__length1, self); -#line 16 "../src/application.vala" - _tmp5_ = g_strdup ("q"); -#line 16 "../src/application.vala" - _tmp6_ = g_new0 (gchar*, 1 + 1); -#line 16 "../src/application.vala" - _tmp6_[0] = _tmp5_; -#line 16 "../src/application.vala" - _tmp7_ = _tmp6_; -#line 16 "../src/application.vala" - _tmp7__length1 = 1; -#line 16 "../src/application.vala" - gtk_application_set_accels_for_action ((GtkApplication*) self, "app.quit", _tmp7_); -#line 16 "../src/application.vala" - _tmp7_ = (_vala_array_free (_tmp7_, _tmp7__length1, (GDestroyNotify) g_free), NULL); -#line 9 "../src/application.vala" - action_entries = (g_free (action_entries), NULL); -#line 9 "../src/application.vala" - return obj; -#line 435 "application.c" -} - -static void -audrey_application_class_init (AudreyApplicationClass * klass, - gpointer klass_data) -{ -#line 1 "../src/application.vala" - audrey_application_parent_class = g_type_class_peek_parent (klass); -#line 1 "../src/application.vala" - ((GApplicationClass *) klass)->activate = (void (*) (GApplication*)) audrey_application_real_activate; -#line 1 "../src/application.vala" - G_OBJECT_CLASS (klass)->constructor = audrey_application_constructor; -#line 1 "../src/application.vala" - G_OBJECT_CLASS (klass)->finalize = audrey_application_finalize; -#line 450 "application.c" -} - -static void -audrey_application_instance_init (AudreyApplication * self, - gpointer klass) -{ -} - -static void -audrey_application_finalize (GObject * obj) -{ - AudreyApplication * self; -#line 1 "../src/application.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, AUDREY_TYPE_APPLICATION, AudreyApplication); -#line 46 "../src/application.vala" - g_debug ("application.vala:46: destroying application"); -#line 1 "../src/application.vala" - G_OBJECT_CLASS (audrey_application_parent_class)->finalize (obj); -#line 469 "application.c" -} - -static GType -audrey_application_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (AudreyApplicationClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) audrey_application_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AudreyApplication), 0, (GInstanceInitFunc) audrey_application_instance_init, NULL }; - GType audrey_application_type_id; - audrey_application_type_id = g_type_register_static (adw_application_get_type (), "AudreyApplication", &g_define_type_info, 0); - return audrey_application_type_id; -} - -GType -audrey_application_get_type (void) -{ - static volatile gsize audrey_application_type_id__once = 0; - if (g_once_init_enter (&audrey_application_type_id__once)) { - GType audrey_application_type_id; - audrey_application_type_id = audrey_application_get_type_once (); - g_once_init_leave (&audrey_application_type_id__once, audrey_application_type_id); - } - return audrey_application_type_id__once; -} - -static void -_vala_array_destroy (gpointer array, - gssize array_length, - GDestroyNotify destroy_func) -{ - if ((array != NULL) && (destroy_func != NULL)) { - gssize i; - for (i = 0; i < array_length; i = i + 1) { - if (((gpointer*) array)[i] != NULL) { - destroy_func (((gpointer*) array)[i]); - } - } - } -} - -static void -_vala_array_free (gpointer array, - gssize array_length, - GDestroyNotify destroy_func) -{ - _vala_array_destroy (array, array_length, destroy_func); - g_free (array); -} - diff --git a/src/application.vala b/src/application.vala new file mode 100644 index 0000000..74cf982 --- /dev/null +++ b/src/application.vala @@ -0,0 +1,48 @@ +public class Audrey.Application : Adw.Application { + public Application () { + Object ( + application_id: "eu.callcc.audrey", + flags: ApplicationFlags.DEFAULT_FLAGS + ); + } + + construct { + GLib.ActionEntry[] action_entries = { + { "about", this.on_about_action }, + { "preferences", this.on_preferences_action }, + { "quit", this.quit } + }; + this.add_action_entries (action_entries, this); + this.set_accels_for_action ("app.quit", {"q"}); + } + + public override void activate () { + base.activate (); + // if this.active_window not null, this isnt the primary instance + var win = this.active_window ?? new Ui.Window (this); + win.present (); + } + + private void on_about_action () { + string[] developers = { "Erica Z" }; + var about = new Adw.AboutDialog () { + application_name = "audrey", + application_icon = "eu.callcc.audrey", + developer_name = "Erica Z", + translator_credits = _("translator-credits"), + version = "0.1.0", // AUDREY_VERSION + developers = developers, + copyright = "© 2024 Erica Z", + }; + + about.present (this.active_window); + } + + private void on_preferences_action () { + message ("app.preferences action activated"); + } + + ~Application () { + debug ("destroying application"); + } +} diff --git a/src/config.vapi b/src/config.vapi new file mode 100644 index 0000000..d1672eb --- /dev/null +++ b/src/config.vapi @@ -0,0 +1,6 @@ +[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "config.h")] +namespace Audrey.Config { + public const string GETTEXT_PACKAGE; + public const string LOCALEDIR; + public const string PACKAGE_VERSION; +} diff --git a/src/globalconf.c b/src/globalconf.c deleted file mode 100644 index 476bc20..0000000 --- a/src/globalconf.c +++ /dev/null @@ -1,17 +0,0 @@ -/* globalconf.c generated by valac 0.56.16, the Vala compiler - * generated from globalconf.vala, do not modify */ - -#include -#include -#include - -#define AUDREY_CONST_user_agent "audrey/linux" -#if !defined(VALA_STRICT_C) -#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14) -#pragma GCC diagnostic warning "-Wincompatible-pointer-types" -#elif defined(__clang__) && (__clang_major__ >= 16) -#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types" -#pragma clang diagnostic ignored "-Wincompatible-pointer-types" -#endif -#endif - diff --git a/src/globalconf.vala b/src/globalconf.vala new file mode 100644 index 0000000..e031072 --- /dev/null +++ b/src/globalconf.vala @@ -0,0 +1,3 @@ +namespace Audrey.Const { + public const string user_agent = "audrey/linux"; +} diff --git a/src/main.vala b/src/main.vala new file mode 100644 index 0000000..db6eb0b --- /dev/null +++ b/src/main.vala @@ -0,0 +1,12 @@ +int main (string[] args) { + // do it ourselves or it's broken + Gtk.disable_setlocale (); + Intl.bindtextdomain (Audrey.Config.GETTEXT_PACKAGE, Audrey.Config.LOCALEDIR); + Intl.bind_textdomain_codeset (Audrey.Config.GETTEXT_PACKAGE, "UTF-8"); + Intl.textdomain (Audrey.Config.GETTEXT_PACKAGE); + Intl.setlocale (LocaleCategory.ALL, ""); + Intl.setlocale (LocaleCategory.NUMERIC, "C.UTF-8"); + + var app = new Audrey.Application (); + return app.run (args); +} diff --git a/src/meson.build b/src/meson.build index c163034..a2bfe06 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,13 +1,13 @@ audrey_sources = [ - 'application.c', - 'globalconf.c', - 'mpris.c', - 'playbin.c', - 'subsonic.c', - 'ui/play_queue.c', - 'ui/playbar.c', - 'ui/setup.c', - 'ui/window.c', + 'application.vala', + 'globalconf.vala', + 'mpris.vala', + 'playbin.vala', + 'subsonic.vala', + 'ui/play_queue.vala', + 'ui/playbar.vala', + 'ui/setup.vala', + 'ui/window.vala', ] audrey_deps = [ @@ -20,10 +20,18 @@ audrey_deps = [ dependency('mpv', version: '>= 2.3'), ] +audrey_sources += removeme + audrey_c = static_library( 'audrey', audrey_sources, dependencies: audrey_deps, include_directories: config_inc, install: true, + vala_args: [ + '--vapidir', + meson.current_source_dir() / 'vapi', + '--gresources', + meson.project_source_root() / 'resources/audrey.gresource.xml', + ], ) diff --git a/src/mpris.c b/src/mpris.c deleted file mode 100644 index f29c684..0000000 --- a/src/mpris.c +++ /dev/null @@ -1,4735 +0,0 @@ -/* mpris.c generated by valac 0.56.16, the Vala compiler - * generated from mpris.vala, do not modify */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(VALA_STRICT_C) -#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14) -#pragma GCC diagnostic warning "-Wincompatible-pointer-types" -#elif defined(__clang__) && (__clang_major__ >= 16) -#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types" -#pragma clang diagnostic ignored "-Wincompatible-pointer-types" -#endif -#endif -#if !defined(VALA_EXTERN) -#if defined(_MSC_VER) -#define VALA_EXTERN __declspec(dllexport) extern -#elif __GNUC__ >= 4 -#define VALA_EXTERN __attribute__((visibility("default"))) extern -#else -#define VALA_EXTERN extern -#endif -#endif - -#define TYPE_MPRIS (mpris_get_type ()) -#define MPRIS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MPRIS, Mpris)) -#define MPRIS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MPRIS, MprisClass)) -#define IS_MPRIS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MPRIS)) -#define IS_MPRIS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MPRIS)) -#define MPRIS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MPRIS, MprisClass)) - -typedef struct _Mpris Mpris; -typedef struct _MprisClass MprisClass; -typedef struct _MprisPrivate MprisPrivate; -enum { - MPRIS_0_PROPERTY, - MPRIS_CAN_RAISE_PROPERTY, - MPRIS_CAN_QUIT_PROPERTY, - MPRIS_CAN_SET_FULLSCREEN_PROPERTY, - MPRIS_FULLSCREEN_PROPERTY, - MPRIS_HAS_TRACK_LIST_PROPERTY, - MPRIS_IDENTITY_PROPERTY, - MPRIS_DESKTOP_ENTRY_PROPERTY, - MPRIS_SUPPORTED_URI_SCHEMES_PROPERTY, - MPRIS_SUPPORTED_MIME_TYPES_PROPERTY, - MPRIS_NUM_PROPERTIES -}; -static GParamSpec* mpris_properties[MPRIS_NUM_PROPERTIES]; - -#define UI_TYPE_WINDOW (ui_window_get_type ()) -#define UI_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_WINDOW, UiWindow)) -#define UI_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_WINDOW, UiWindowClass)) -#define UI_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_WINDOW)) -#define UI_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_WINDOW)) -#define UI_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_WINDOW, UiWindowClass)) - -typedef struct _UiWindow UiWindow; -typedef struct _UiWindowClass UiWindowClass; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -typedef struct _Block1Data Block1Data; -enum { - MPRIS_ON_RAISE_SIGNAL, - MPRIS_ON_QUIT_SIGNAL, - MPRIS_NUM_SIGNALS -}; -static guint mpris_signals[MPRIS_NUM_SIGNALS] = {0}; -#define _g_free0(var) (var = (g_free (var), NULL)) - -#define TYPE_MPRIS_PLAYER (mpris_player_get_type ()) -#define MPRIS_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MPRIS_PLAYER, MprisPlayer)) -#define MPRIS_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MPRIS_PLAYER, MprisPlayerClass)) -#define IS_MPRIS_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MPRIS_PLAYER)) -#define IS_MPRIS_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MPRIS_PLAYER)) -#define MPRIS_PLAYER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MPRIS_PLAYER, MprisPlayerClass)) - -typedef struct _MprisPlayer MprisPlayer; -typedef struct _MprisPlayerClass MprisPlayerClass; -typedef struct _MprisPlayerPrivate MprisPlayerPrivate; - -#define SUBSONIC_TYPE_CLIENT (subsonic_client_get_type ()) -#define SUBSONIC_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SUBSONIC_TYPE_CLIENT, SubsonicClient)) -#define SUBSONIC_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SUBSONIC_TYPE_CLIENT, SubsonicClientClass)) -#define SUBSONIC_IS_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SUBSONIC_TYPE_CLIENT)) -#define SUBSONIC_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SUBSONIC_TYPE_CLIENT)) -#define SUBSONIC_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SUBSONIC_TYPE_CLIENT, SubsonicClientClass)) - -typedef struct _SubsonicClient SubsonicClient; -typedef struct _SubsonicClientClass SubsonicClientClass; -enum { - MPRIS_PLAYER_0_PROPERTY, - MPRIS_PLAYER_PLAYBACK_STATUS_PROPERTY, - MPRIS_PLAYER_LOOP_STATUS_PROPERTY, - MPRIS_PLAYER_RATE_PROPERTY, - MPRIS_PLAYER_SHUFFLE_PROPERTY, - MPRIS_PLAYER_METADATA_PROPERTY, - MPRIS_PLAYER_VOLUME_PROPERTY, - MPRIS_PLAYER_POSITION_PROPERTY, - MPRIS_PLAYER_MINIMUM_RATE_PROPERTY, - MPRIS_PLAYER_MAXIMUM_RATE_PROPERTY, - MPRIS_PLAYER_CAN_GO_NEXT_PROPERTY, - MPRIS_PLAYER_CAN_GO_PREVIOUS_PROPERTY, - MPRIS_PLAYER_CAN_PLAY_PROPERTY, - MPRIS_PLAYER_CAN_PAUSE_PROPERTY, - MPRIS_PLAYER_CAN_SEEK_PROPERTY, - MPRIS_PLAYER_CAN_CONTROL_PROPERTY, - MPRIS_PLAYER_API_PROPERTY, - MPRIS_PLAYER_NUM_PROPERTIES -}; -static GParamSpec* mpris_player_properties[MPRIS_PLAYER_NUM_PROPERTIES]; -#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) - -#define TYPE_PLAYBIN (playbin_get_type ()) -#define PLAYBIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYBIN, Playbin)) -#define PLAYBIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYBIN, PlaybinClass)) -#define IS_PLAYBIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYBIN)) -#define IS_PLAYBIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYBIN)) -#define PLAYBIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYBIN, PlaybinClass)) - -typedef struct _Playbin Playbin; -typedef struct _PlaybinClass PlaybinClass; -typedef struct _Block2Data Block2Data; -typedef enum { - PLAYBIN_STATE_STOPPED, - PLAYBIN_STATE_PAUSED, - PLAYBIN_STATE_PLAYING -} PlaybinState; - -#define TYPE_PLAYBIN_STATE (playbin_state_get_type ()) - -#define TYPE_PLAYBIN_SONG (playbin_song_get_type ()) -#define PLAYBIN_SONG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYBIN_SONG, PlaybinSong)) -#define PLAYBIN_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYBIN_SONG, PlaybinSongClass)) -#define IS_PLAYBIN_SONG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYBIN_SONG)) -#define IS_PLAYBIN_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYBIN_SONG)) -#define PLAYBIN_SONG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYBIN_SONG, PlaybinSongClass)) - -typedef struct _PlaybinSong PlaybinSong; -typedef struct _PlaybinSongClass PlaybinSongClass; -#define _g_variant_type_free0(var) ((var == NULL) ? NULL : (var = (g_variant_type_free (var), NULL))) -#define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) -#define _g_variant_builder_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_builder_unref (var), NULL))) -#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) -enum { - MPRIS_PLAYER_ON_NEXT_SIGNAL, - MPRIS_PLAYER_ON_PREVIOUS_SIGNAL, - MPRIS_PLAYER_ON_PAUSE_SIGNAL, - MPRIS_PLAYER_ON_PLAY_PAUSE_SIGNAL, - MPRIS_PLAYER_ON_STOP_SIGNAL, - MPRIS_PLAYER_ON_PLAY_SIGNAL, - MPRIS_PLAYER_ON_SEEK_SIGNAL, - MPRIS_PLAYER_ON_SET_POSITION_SIGNAL, - MPRIS_PLAYER_SEEKED_SIGNAL, - MPRIS_PLAYER_NUM_SIGNALS -}; -static guint mpris_player_signals[MPRIS_PLAYER_NUM_SIGNALS] = {0}; -#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); -#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } -#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } -#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); - -struct _Mpris { - GObject parent_instance; - MprisPrivate * priv; -}; - -struct _MprisClass { - GObjectClass parent_class; -}; - -struct _Block1Data { - int _ref_count_; - Mpris* self; - UiWindow* window; -}; - -struct _MprisPlayer { - GObject parent_instance; - MprisPlayerPrivate * priv; -}; - -struct _MprisPlayerClass { - GObjectClass parent_class; -}; - -struct _MprisPlayerPrivate { - gchar* _playback_status; - gchar* _loop_status; - gdouble _rate; - gboolean _shuffle; - GHashTable* _metadata; - gdouble _volume; - gint64 _position; - gboolean _can_go_next; - gboolean _can_go_previous; - gboolean _can_play; - gboolean _can_pause; - gboolean _can_seek; - SubsonicClient* _api; -}; - -struct _Block2Data { - int _ref_count_; - MprisPlayer* self; - GDBusConnection* conn; - Playbin* playbin; -}; - -static gpointer mpris_parent_class = NULL; -static gint MprisPlayer_private_offset; -static gpointer mpris_player_parent_class = NULL; - -VALA_EXTERN GType mpris_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (Mpris, g_object_unref) -VALA_EXTERN guint mpris_register_object (void* object, - GDBusConnection* connection, - const gchar* path, - GError** error); -VALA_EXTERN void mpris_raise (Mpris* self, - GError** error); -VALA_EXTERN void mpris_quit (Mpris* self, - GError** error); -VALA_EXTERN GType ui_window_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (UiWindow, g_object_unref) -VALA_EXTERN Mpris* mpris_new (UiWindow* window); -VALA_EXTERN Mpris* mpris_construct (GType object_type, - UiWindow* window); -static Block1Data* block1_data_ref (Block1Data* _data1_); -static void block1_data_unref (void * _userdata_); -static void __lambda12_ (Block1Data* _data1_); -static void ___lambda12__mpris_on_raise (Mpris* _sender, - gpointer self); -static void __lambda13_ (Block1Data* _data1_); -static void ___lambda13__mpris_on_quit (Mpris* _sender, - gpointer self); -VALA_EXTERN gboolean mpris_get_can_raise (Mpris* self); -VALA_EXTERN gboolean mpris_get_can_quit (Mpris* self); -VALA_EXTERN gboolean mpris_get_can_set_fullscreen (Mpris* self); -VALA_EXTERN gboolean mpris_get_fullscreen (Mpris* self); -VALA_EXTERN void mpris_set_fullscreen (Mpris* self, - gboolean value); -VALA_EXTERN gboolean mpris_get_has_track_list (Mpris* self); -VALA_EXTERN gchar* mpris_get_identity (Mpris* self); -VALA_EXTERN gchar* mpris_get_desktop_entry (Mpris* self); -VALA_EXTERN gchar** mpris_get_supported_uri_schemes (Mpris* self, - gint* result_length1); -VALA_EXTERN gchar** mpris_get_supported_mime_types (Mpris* self, - gint* result_length1); -static void mpris_finalize (GObject * obj); -static GType mpris_get_type_once (void); -static void _vala_mpris_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec); -static void _vala_mpris_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec); -static void _dbus_mpris_raise (Mpris* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void _dbus_mpris_quit (Mpris* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void mpris_dbus_interface_method_call (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* method_name, - GVariant* parameters, - GDBusMethodInvocation* invocation, - gpointer user_data); -static GVariant* mpris_dbus_interface_get_property (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* property_name, - GError** error, - gpointer user_data); -static GVariant* _dbus_mpris_get_can_raise (Mpris* self); -static GVariant* _dbus_mpris_get_can_quit (Mpris* self); -static GVariant* _dbus_mpris_get_can_set_fullscreen (Mpris* self); -static GVariant* _dbus_mpris_get_fullscreen (Mpris* self); -static GVariant* _dbus_mpris_get_has_track_list (Mpris* self); -static GVariant* _dbus_mpris_get_identity (Mpris* self); -static GVariant* _dbus_mpris_get_desktop_entry (Mpris* self); -static GVariant* _dbus_mpris_get_supported_uri_schemes (Mpris* self); -static GVariant* _dbus_mpris_get_supported_mime_types (Mpris* self); -static gboolean mpris_dbus_interface_set_property (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* property_name, - GVariant* value, - GError** error, - gpointer user_data); -static void _dbus_mpris_set_fullscreen (Mpris* self, - GVariant* _value); -static void _mpris_unregister_object (gpointer user_data); -VALA_EXTERN GType mpris_player_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (MprisPlayer, g_object_unref) -VALA_EXTERN guint mpris_player_register_object (void* object, - GDBusConnection* connection, - const gchar* path, - GError** error); -VALA_EXTERN GType subsonic_client_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SubsonicClient, g_object_unref) -static void _g_free0_ (gpointer var); -static void _g_variant_unref0_ (gpointer var); -VALA_EXTERN void mpris_player_next (MprisPlayer* self, - GError** error); -VALA_EXTERN void mpris_player_previous (MprisPlayer* self, - GError** error); -VALA_EXTERN void mpris_player_pause (MprisPlayer* self, - GError** error); -VALA_EXTERN void mpris_player_play_pause (MprisPlayer* self, - GError** error); -VALA_EXTERN void mpris_player_stop (MprisPlayer* self, - GError** error); -VALA_EXTERN void mpris_player_play (MprisPlayer* self, - GError** error); -VALA_EXTERN void mpris_player_seek (MprisPlayer* self, - gint64 offset, - GError** error); -VALA_EXTERN void mpris_player_set_position (MprisPlayer* self, - const char* track_id, - gint64 position, - GError** error); -VALA_EXTERN void mpris_player_open_uri (MprisPlayer* self, - const gchar* uri, - GError** error); -VALA_EXTERN GType playbin_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (Playbin, g_object_unref) -VALA_EXTERN MprisPlayer* mpris_player_new (GDBusConnection* conn, - Playbin* playbin); -VALA_EXTERN MprisPlayer* mpris_player_construct (GType object_type, - GDBusConnection* conn, - Playbin* playbin); -static Block2Data* block2_data_ref (Block2Data* _data2_); -static void block2_data_unref (void * _userdata_); -static gboolean __lambda14_ (MprisPlayer* self, - GBinding* binding, - GValue* from, - GValue* to); -VALA_EXTERN GType playbin_state_get_type (void) G_GNUC_CONST ; -static void mpris_player_set_can_go_next (MprisPlayer* self, - gboolean value); -static void mpris_player_set_can_go_previous (MprisPlayer* self, - gboolean value); -static void mpris_player_set_can_play (MprisPlayer* self, - gboolean value); -static void mpris_player_set_can_pause (MprisPlayer* self, - gboolean value); -static void mpris_player_set_can_seek (MprisPlayer* self, - gboolean value); -static gboolean ___lambda14__gbinding_transform_func (GBinding* binding, - GValue* from_value, - GValue* to_value, - gpointer self); -static gboolean __lambda15_ (MprisPlayer* self, - GBinding* binding, - GValue* from, - GValue* to); -static gboolean ___lambda15__gbinding_transform_func (GBinding* binding, - GValue* from_value, - GValue* to_value, - gpointer self); -static gboolean __lambda16_ (MprisPlayer* self, - GBinding* binding, - GValue* from, - GValue* to); -static gboolean ___lambda16__gbinding_transform_func (GBinding* binding, - GValue* from_value, - GValue* to_value, - gpointer self); -static void __lambda17_ (MprisPlayer* self, - Playbin* playbin); -VALA_EXTERN GType playbin_song_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (PlaybinSong, g_object_unref) -VALA_EXTERN GListModel* playbin_get_play_queue (Playbin* self); -VALA_EXTERN gint playbin_get_play_queue_position (Playbin* self); -VALA_EXTERN const gchar* playbin_song_get_id (PlaybinSong* self); -static GVariant* _variant_new1 (char* value); -VALA_EXTERN gint64 playbin_song_get_duration (PlaybinSong* self); -static GVariant* _variant_new2 (gint64 value); -VALA_EXTERN SubsonicClient* mpris_player_get_api (MprisPlayer* self); -VALA_EXTERN gchar* subsonic_client_cover_art_uri (SubsonicClient* self, - const gchar* id, - gint size); -static GVariant* _variant_new3 (gchar* value); -VALA_EXTERN const gchar* playbin_song_get_album (PlaybinSong* self); -static GVariant* _variant_new4 (const gchar* value); -VALA_EXTERN const gchar* playbin_song_get_artist (PlaybinSong* self); -static GVariant* _variant_new5 (gchar** value, - gint value_length1); -VALA_EXTERN const gchar* playbin_song_get_genre (PlaybinSong* self); -static GVariant* _variant_new6 (const gchar* value); -VALA_EXTERN const gchar* playbin_song_get_title (PlaybinSong* self); -static GVariant* _variant_new7 (const gchar* value); -VALA_EXTERN gint64 playbin_song_get_track (PlaybinSong* self); -static GVariant* _variant_new8 (gint64 value); -VALA_EXTERN gint64 playbin_song_get_play_count (PlaybinSong* self); -static GVariant* _variant_new9 (gint64 value); -static void mpris_player_set_metadata (MprisPlayer* self, - GHashTable* value); -static void ___lambda17__playbin_new_track (Playbin* _sender, - gpointer self); -static void __lambda18_ (MprisPlayer* self); -static void ___lambda18__playbin_stopped (Playbin* _sender, - gpointer self); -static void __lambda19_ (Block2Data* _data2_); -VALA_EXTERN void playbin_go_to_next_track (Playbin* self); -static void ___lambda19__mpris_player_on_next (MprisPlayer* _sender, - gpointer self); -static void __lambda20_ (Block2Data* _data2_); -VALA_EXTERN void playbin_go_to_prev_track (Playbin* self); -static void ___lambda20__mpris_player_on_previous (MprisPlayer* _sender, - gpointer self); -static void __lambda21_ (Block2Data* _data2_); -VALA_EXTERN void playbin_play (Playbin* self); -static void ___lambda21__mpris_player_on_play (MprisPlayer* _sender, - gpointer self); -static void __lambda22_ (Block2Data* _data2_); -VALA_EXTERN void playbin_pause (Playbin* self); -static void ___lambda22__mpris_player_on_pause (MprisPlayer* _sender, - gpointer self); -static void __lambda23_ (Block2Data* _data2_); -VALA_EXTERN PlaybinState playbin_get_state (Playbin* self); -static void ___lambda23__mpris_player_on_play_pause (MprisPlayer* _sender, - gpointer self); -static void __lambda24_ (Block2Data* _data2_); -VALA_EXTERN void playbin_stop (Playbin* self); -static void ___lambda24__mpris_player_on_stop (MprisPlayer* _sender, - gpointer self); -static void __lambda25_ (Block2Data* _data2_, - GParamSpec* p); -VALA_EXTERN gchar* mpris_player_get_playback_status (MprisPlayer* self); -static GVariant* _variant_new10 (gchar* value); -VALA_EXTERN gchar* mpris_player_get_loop_status (MprisPlayer* self); -static GVariant* _variant_new11 (gchar* value); -VALA_EXTERN gdouble mpris_player_get_rate (MprisPlayer* self); -static GVariant* _variant_new12 (gdouble value); -VALA_EXTERN gboolean mpris_player_get_shuffle (MprisPlayer* self); -static GVariant* _variant_new13 (gboolean value); -VALA_EXTERN GHashTable* mpris_player_get_metadata (MprisPlayer* self); -static GVariant* _variant_new14 (GHashTable* value); -VALA_EXTERN gdouble mpris_player_get_volume (MprisPlayer* self); -static GVariant* _variant_new15 (gdouble value); -VALA_EXTERN gdouble mpris_player_get_minimum_rate (MprisPlayer* self); -static GVariant* _variant_new16 (gdouble value); -VALA_EXTERN gdouble mpris_player_get_maximum_rate (MprisPlayer* self); -static GVariant* _variant_new17 (gdouble value); -VALA_EXTERN gboolean mpris_player_get_can_go_next (MprisPlayer* self); -static GVariant* _variant_new18 (gboolean value); -VALA_EXTERN gboolean mpris_player_get_can_go_previous (MprisPlayer* self); -static GVariant* _variant_new19 (gboolean value); -VALA_EXTERN gboolean mpris_player_get_can_play (MprisPlayer* self); -static GVariant* _variant_new20 (gboolean value); -VALA_EXTERN gboolean mpris_player_get_can_pause (MprisPlayer* self); -static GVariant* _variant_new21 (gboolean value); -VALA_EXTERN gboolean mpris_player_get_can_seek (MprisPlayer* self); -static GVariant* _variant_new22 (gboolean value); -static void ___lambda25__g_object_notify (GObject* _sender, - GParamSpec* pspec, - gpointer self); -VALA_EXTERN void mpris_player_set_playback_status (MprisPlayer* self, - const gchar* value); -VALA_EXTERN void mpris_player_set_volume (MprisPlayer* self, - gdouble value); -VALA_EXTERN gint64 mpris_player_get_position (MprisPlayer* self); -VALA_EXTERN gboolean mpris_player_get_can_control (MprisPlayer* self); -VALA_EXTERN void mpris_player_set_api (MprisPlayer* self, - SubsonicClient* value); -static void g_cclosure_user_marshal_VOID__INT64 (GClosure * closure, - GValue * return_value, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint, - gpointer marshal_data); -static void g_cclosure_user_marshal_VOID__STRING_INT64 (GClosure * closure, - GValue * return_value, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint, - gpointer marshal_data); -static void mpris_player_finalize (GObject * obj); -static GType mpris_player_get_type_once (void); -static void _vala_mpris_player_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec); -static void _vala_mpris_player_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec); -static void _dbus_mpris_player_next (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void _dbus_mpris_player_previous (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void _dbus_mpris_player_pause (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void _dbus_mpris_player_play_pause (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void _dbus_mpris_player_stop (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void _dbus_mpris_player_play (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void _dbus_mpris_player_seek (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void _dbus_mpris_player_set_position (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void _dbus_mpris_player_open_uri (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation); -static void mpris_player_dbus_interface_method_call (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* method_name, - GVariant* parameters, - GDBusMethodInvocation* invocation, - gpointer user_data); -static GVariant* mpris_player_dbus_interface_get_property (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* property_name, - GError** error, - gpointer user_data); -static GVariant* _dbus_mpris_player_get_playback_status (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_loop_status (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_rate (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_shuffle (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_metadata (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_volume (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_position (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_minimum_rate (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_maximum_rate (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_can_go_next (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_can_go_previous (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_can_play (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_can_pause (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_can_seek (MprisPlayer* self); -static GVariant* _dbus_mpris_player_get_can_control (MprisPlayer* self); -static gboolean mpris_player_dbus_interface_set_property (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* property_name, - GVariant* value, - GError** error, - gpointer user_data); -static void _dbus_mpris_player_set_playback_status (MprisPlayer* self, - GVariant* _value); -static void _dbus_mpris_player_set_metadata (MprisPlayer* self, - GVariant* _value); -static void _dbus_mpris_player_set_volume (MprisPlayer* self, - GVariant* _value); -static void _dbus_mpris_player_set_can_go_next (MprisPlayer* self, - GVariant* _value); -static void _dbus_mpris_player_set_can_go_previous (MprisPlayer* self, - GVariant* _value); -static void _dbus_mpris_player_set_can_play (MprisPlayer* self, - GVariant* _value); -static void _dbus_mpris_player_set_can_pause (MprisPlayer* self, - GVariant* _value); -static void _dbus_mpris_player_set_can_seek (MprisPlayer* self, - GVariant* _value); -static void _dbus_mpris_player_seeked (GObject* _sender, - gint64 position, - gpointer* _data); -static void _mpris_player_unregister_object (gpointer user_data); -static void _vala_array_destroy (gpointer array, - gssize array_length, - GDestroyNotify destroy_func); -static void _vala_array_free (gpointer array, - gssize array_length, - GDestroyNotify destroy_func); - -static const GDBusArgInfo * const _mpris_dbus_arg_info_raise_in[] = {NULL}; -static const GDBusArgInfo * const _mpris_dbus_arg_info_raise_out[] = {NULL}; -static const GDBusMethodInfo _mpris_dbus_method_info_raise = {-1, "Raise", (GDBusArgInfo **) (&_mpris_dbus_arg_info_raise_in), (GDBusArgInfo **) (&_mpris_dbus_arg_info_raise_out), NULL}; -static const GDBusArgInfo * const _mpris_dbus_arg_info_quit_in[] = {NULL}; -static const GDBusArgInfo * const _mpris_dbus_arg_info_quit_out[] = {NULL}; -static const GDBusMethodInfo _mpris_dbus_method_info_quit = {-1, "Quit", (GDBusArgInfo **) (&_mpris_dbus_arg_info_quit_in), (GDBusArgInfo **) (&_mpris_dbus_arg_info_quit_out), NULL}; -static const GDBusMethodInfo * const _mpris_dbus_method_info[] = {&_mpris_dbus_method_info_raise, &_mpris_dbus_method_info_quit, NULL}; -static const GDBusSignalInfo * const _mpris_dbus_signal_info[] = {NULL}; -static const GDBusPropertyInfo _mpris_dbus_property_info_can_raise = {-1, "CanRaise", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_dbus_property_info_can_quit = {-1, "CanQuit", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_dbus_property_info_can_set_fullscreen = {-1, "CanSetFullscreen", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_dbus_property_info_fullscreen = {-1, "Fullscreen", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL}; -static const GDBusPropertyInfo _mpris_dbus_property_info_has_track_list = {-1, "HasTrackList", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_dbus_property_info_identity = {-1, "Identity", "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_dbus_property_info_desktop_entry = {-1, "DesktopEntry", "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_dbus_property_info_supported_uri_schemes = {-1, "SupportedUriSchemes", "as", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_dbus_property_info_supported_mime_types = {-1, "SupportedMimeTypes", "as", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo * const _mpris_dbus_property_info[] = {&_mpris_dbus_property_info_can_raise, &_mpris_dbus_property_info_can_quit, &_mpris_dbus_property_info_can_set_fullscreen, &_mpris_dbus_property_info_fullscreen, &_mpris_dbus_property_info_has_track_list, &_mpris_dbus_property_info_identity, &_mpris_dbus_property_info_desktop_entry, &_mpris_dbus_property_info_supported_uri_schemes, &_mpris_dbus_property_info_supported_mime_types, NULL}; -static const GDBusInterfaceInfo _mpris_dbus_interface_info = {-1, "org.mpris.MediaPlayer2", (GDBusMethodInfo **) (&_mpris_dbus_method_info), (GDBusSignalInfo **) (&_mpris_dbus_signal_info), (GDBusPropertyInfo **) (&_mpris_dbus_property_info), NULL}; -static const GDBusInterfaceVTable _mpris_dbus_interface_vtable = {mpris_dbus_interface_method_call, mpris_dbus_interface_get_property, mpris_dbus_interface_set_property}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_next_in[] = {NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_next_out[] = {NULL}; -static const GDBusMethodInfo _mpris_player_dbus_method_info_next = {-1, "Next", (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_next_in), (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_next_out), NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_previous_in[] = {NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_previous_out[] = {NULL}; -static const GDBusMethodInfo _mpris_player_dbus_method_info_previous = {-1, "Previous", (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_previous_in), (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_previous_out), NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_pause_in[] = {NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_pause_out[] = {NULL}; -static const GDBusMethodInfo _mpris_player_dbus_method_info_pause = {-1, "Pause", (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_pause_in), (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_pause_out), NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_play_pause_in[] = {NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_play_pause_out[] = {NULL}; -static const GDBusMethodInfo _mpris_player_dbus_method_info_play_pause = {-1, "PlayPause", (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_play_pause_in), (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_play_pause_out), NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_stop_in[] = {NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_stop_out[] = {NULL}; -static const GDBusMethodInfo _mpris_player_dbus_method_info_stop = {-1, "Stop", (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_stop_in), (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_stop_out), NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_play_in[] = {NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_play_out[] = {NULL}; -static const GDBusMethodInfo _mpris_player_dbus_method_info_play = {-1, "Play", (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_play_in), (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_play_out), NULL}; -static const GDBusArgInfo _mpris_player_dbus_arg_info_seek_offset = {-1, "offset", "x", NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_seek_in[] = {&_mpris_player_dbus_arg_info_seek_offset, NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_seek_out[] = {NULL}; -static const GDBusMethodInfo _mpris_player_dbus_method_info_seek = {-1, "Seek", (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_seek_in), (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_seek_out), NULL}; -static const GDBusArgInfo _mpris_player_dbus_arg_info_set_position_track_id = {-1, "track_id", "o", NULL}; -static const GDBusArgInfo _mpris_player_dbus_arg_info_set_position_position = {-1, "position", "x", NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_set_position_in[] = {&_mpris_player_dbus_arg_info_set_position_track_id, &_mpris_player_dbus_arg_info_set_position_position, NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_set_position_out[] = {NULL}; -static const GDBusMethodInfo _mpris_player_dbus_method_info_set_position = {-1, "SetPosition", (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_set_position_in), (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_set_position_out), NULL}; -static const GDBusArgInfo _mpris_player_dbus_arg_info_open_uri_uri = {-1, "uri", "s", NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_open_uri_in[] = {&_mpris_player_dbus_arg_info_open_uri_uri, NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_open_uri_out[] = {NULL}; -static const GDBusMethodInfo _mpris_player_dbus_method_info_open_uri = {-1, "OpenUri", (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_open_uri_in), (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_open_uri_out), NULL}; -static const GDBusMethodInfo * const _mpris_player_dbus_method_info[] = {&_mpris_player_dbus_method_info_next, &_mpris_player_dbus_method_info_previous, &_mpris_player_dbus_method_info_pause, &_mpris_player_dbus_method_info_play_pause, &_mpris_player_dbus_method_info_stop, &_mpris_player_dbus_method_info_play, &_mpris_player_dbus_method_info_seek, &_mpris_player_dbus_method_info_set_position, &_mpris_player_dbus_method_info_open_uri, NULL}; -static const GDBusArgInfo _mpris_player_dbus_arg_info_seeked_position = {-1, "position", "x", NULL}; -static const GDBusArgInfo * const _mpris_player_dbus_arg_info_seeked[] = {&_mpris_player_dbus_arg_info_seeked_position, NULL}; -static const GDBusSignalInfo _mpris_player_dbus_signal_info_seeked = {-1, "Seeked", (GDBusArgInfo **) (&_mpris_player_dbus_arg_info_seeked), NULL}; -static const GDBusSignalInfo * const _mpris_player_dbus_signal_info[] = {&_mpris_player_dbus_signal_info_seeked, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_playback_status = {-1, "PlaybackStatus", "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_loop_status = {-1, "LoopStatus", "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_rate = {-1, "Rate", "d", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_shuffle = {-1, "Shuffle", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_metadata = {-1, "Metadata", "a{sv}", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_volume = {-1, "Volume", "d", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_position = {-1, "Position", "x", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_minimum_rate = {-1, "MinimumRate", "d", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_maximum_rate = {-1, "MaximumRate", "d", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_can_go_next = {-1, "CanGoNext", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_can_go_previous = {-1, "CanGoPrevious", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_can_play = {-1, "CanPlay", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_can_pause = {-1, "CanPause", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_can_seek = {-1, "CanSeek", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL}; -static const GDBusPropertyInfo _mpris_player_dbus_property_info_can_control = {-1, "CanControl", "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL}; -static const GDBusPropertyInfo * const _mpris_player_dbus_property_info[] = {&_mpris_player_dbus_property_info_playback_status, &_mpris_player_dbus_property_info_loop_status, &_mpris_player_dbus_property_info_rate, &_mpris_player_dbus_property_info_shuffle, &_mpris_player_dbus_property_info_metadata, &_mpris_player_dbus_property_info_volume, &_mpris_player_dbus_property_info_position, &_mpris_player_dbus_property_info_minimum_rate, &_mpris_player_dbus_property_info_maximum_rate, &_mpris_player_dbus_property_info_can_go_next, &_mpris_player_dbus_property_info_can_go_previous, &_mpris_player_dbus_property_info_can_play, &_mpris_player_dbus_property_info_can_pause, &_mpris_player_dbus_property_info_can_seek, &_mpris_player_dbus_property_info_can_control, NULL}; -static const GDBusInterfaceInfo _mpris_player_dbus_interface_info = {-1, "org.mpris.MediaPlayer2.Player", (GDBusMethodInfo **) (&_mpris_player_dbus_method_info), (GDBusSignalInfo **) (&_mpris_player_dbus_signal_info), (GDBusPropertyInfo **) (&_mpris_player_dbus_property_info), NULL}; -static const GDBusInterfaceVTable _mpris_player_dbus_interface_vtable = {mpris_player_dbus_interface_method_call, mpris_player_dbus_interface_get_property, mpris_player_dbus_interface_set_property}; - -void -mpris_raise (Mpris* self, - GError** error) -{ -#line 7 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 8 "../src/mpris.vala" - g_signal_emit (self, mpris_signals[MPRIS_ON_RAISE_SIGNAL], 0); -#line 678 "mpris.c" -} - -void -mpris_quit (Mpris* self, - GError** error) -{ -#line 12 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 13 "../src/mpris.vala" - g_signal_emit (self, mpris_signals[MPRIS_ON_QUIT_SIGNAL], 0); -#line 689 "mpris.c" -} - -static gpointer -_g_object_ref0 (gpointer self) -{ -#line 24 "../src/mpris.vala" - return self ? g_object_ref (self) : NULL; -#line 697 "mpris.c" -} - -static Block1Data* -block1_data_ref (Block1Data* _data1_) -{ -#line 24 "../src/mpris.vala" - g_atomic_int_inc (&_data1_->_ref_count_); -#line 24 "../src/mpris.vala" - return _data1_; -#line 707 "mpris.c" -} - -static void -block1_data_unref (void * _userdata_) -{ - Block1Data* _data1_; - _data1_ = (Block1Data*) _userdata_; -#line 24 "../src/mpris.vala" - if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) { -#line 717 "mpris.c" - Mpris* self; -#line 24 "../src/mpris.vala" - self = _data1_->self; -#line 24 "../src/mpris.vala" - _g_object_unref0 (_data1_->window); -#line 24 "../src/mpris.vala" - _g_object_unref0 (self); -#line 24 "../src/mpris.vala" - g_slice_free (Block1Data, _data1_); -#line 727 "mpris.c" - } -} - -static void -__lambda12_ (Block1Data* _data1_) -{ - Mpris* self; -#line 25 "../src/mpris.vala" - self = _data1_->self; -#line 25 "../src/mpris.vala" - gtk_window_present ((GtkWindow*) _data1_->window); -#line 739 "mpris.c" -} - -static void -___lambda12__mpris_on_raise (Mpris* _sender, - gpointer self) -{ -#line 25 "../src/mpris.vala" - __lambda12_ (self); -#line 748 "mpris.c" -} - -static void -__lambda13_ (Block1Data* _data1_) -{ - Mpris* self; -#line 26 "../src/mpris.vala" - self = _data1_->self; -#line 26 "../src/mpris.vala" - gtk_window_close ((GtkWindow*) _data1_->window); -#line 759 "mpris.c" -} - -static void -___lambda13__mpris_on_quit (Mpris* _sender, - gpointer self) -{ -#line 26 "../src/mpris.vala" - __lambda13_ (self); -#line 768 "mpris.c" -} - -Mpris* -mpris_construct (GType object_type, - UiWindow* window) -{ - Mpris * self = NULL; - Block1Data* _data1_; - UiWindow* _tmp0_; -#line 24 "../src/mpris.vala" - g_return_val_if_fail (window != NULL, NULL); -#line 24 "../src/mpris.vala" - _data1_ = g_slice_new0 (Block1Data); -#line 24 "../src/mpris.vala" - _data1_->_ref_count_ = 1; -#line 24 "../src/mpris.vala" - _tmp0_ = _g_object_ref0 (window); -#line 24 "../src/mpris.vala" - _g_object_unref0 (_data1_->window); -#line 24 "../src/mpris.vala" - _data1_->window = _tmp0_; -#line 24 "../src/mpris.vala" - self = (Mpris*) g_object_new (object_type, NULL); -#line 24 "../src/mpris.vala" - _data1_->self = g_object_ref (self); -#line 25 "../src/mpris.vala" - g_signal_connect_data (self, "on-raise", (GCallback) ___lambda12__mpris_on_raise, block1_data_ref (_data1_), (GClosureNotify) block1_data_unref, 0); -#line 26 "../src/mpris.vala" - g_signal_connect_data (self, "on-quit", (GCallback) ___lambda13__mpris_on_quit, block1_data_ref (_data1_), (GClosureNotify) block1_data_unref, 0); -#line 24 "../src/mpris.vala" - block1_data_unref (_data1_); -#line 24 "../src/mpris.vala" - _data1_ = NULL; -#line 24 "../src/mpris.vala" - return self; -#line 804 "mpris.c" -} - -Mpris* -mpris_new (UiWindow* window) -{ -#line 24 "../src/mpris.vala" - return mpris_construct (TYPE_MPRIS, window); -#line 812 "mpris.c" -} - -gboolean -mpris_get_can_raise (Mpris* self) -{ - gboolean result; -#line 6 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 6 "../src/mpris.vala" - result = TRUE; -#line 6 "../src/mpris.vala" - return result; -#line 825 "mpris.c" -} - -gboolean -mpris_get_can_quit (Mpris* self) -{ - gboolean result; -#line 11 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 11 "../src/mpris.vala" - result = TRUE; -#line 11 "../src/mpris.vala" - return result; -#line 838 "mpris.c" -} - -gboolean -mpris_get_can_set_fullscreen (Mpris* self) -{ - gboolean result; -#line 16 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 16 "../src/mpris.vala" - result = FALSE; -#line 16 "../src/mpris.vala" - return result; -#line 851 "mpris.c" -} - -gboolean -mpris_get_fullscreen (Mpris* self) -{ - gboolean result; -#line 17 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 17 "../src/mpris.vala" - result = FALSE; -#line 17 "../src/mpris.vala" - return result; -#line 864 "mpris.c" -} - -void -mpris_set_fullscreen (Mpris* self, - gboolean value) -{ -#line 17 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 17 "../src/mpris.vala" - _vala_assert (FALSE, "false"); -#line 17 "../src/mpris.vala" - g_object_notify_by_pspec ((GObject *) self, mpris_properties[MPRIS_FULLSCREEN_PROPERTY]); -#line 877 "mpris.c" -} - -gboolean -mpris_get_has_track_list (Mpris* self) -{ - gboolean result; -#line 18 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 18 "../src/mpris.vala" - result = FALSE; -#line 18 "../src/mpris.vala" - return result; -#line 890 "mpris.c" -} - -gchar* -mpris_get_identity (Mpris* self) -{ - gchar* result; - gchar* _tmp0_; -#line 19 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 19 "../src/mpris.vala" - _tmp0_ = g_strdup ("audrey"); -#line 19 "../src/mpris.vala" - result = _tmp0_; -#line 19 "../src/mpris.vala" - return result; -#line 906 "mpris.c" -} - -gchar* -mpris_get_desktop_entry (Mpris* self) -{ - gchar* result; - gchar* _tmp0_; -#line 20 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 20 "../src/mpris.vala" - _tmp0_ = g_strdup ("eu.callcc.audrey"); -#line 20 "../src/mpris.vala" - result = _tmp0_; -#line 20 "../src/mpris.vala" - return result; -#line 922 "mpris.c" -} - -gchar** -mpris_get_supported_uri_schemes (Mpris* self, - gint* result_length1) -{ - gchar** result; - gchar** _tmp0_; - gchar** _tmp1_; - gint _tmp1__length1; -#line 21 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 21 "../src/mpris.vala" - _tmp0_ = g_new0 (gchar*, 0 + 1); -#line 21 "../src/mpris.vala" - _tmp1_ = _tmp0_; -#line 21 "../src/mpris.vala" - _tmp1__length1 = 0; -#line 21 "../src/mpris.vala" - if (result_length1) { -#line 21 "../src/mpris.vala" - *result_length1 = _tmp1__length1; -#line 945 "mpris.c" - } -#line 21 "../src/mpris.vala" - result = _tmp1_; -#line 21 "../src/mpris.vala" - return result; -#line 951 "mpris.c" -} - -gchar** -mpris_get_supported_mime_types (Mpris* self, - gint* result_length1) -{ - gchar** result; - gchar** _tmp0_; - gchar** _tmp1_; - gint _tmp1__length1; -#line 22 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 22 "../src/mpris.vala" - _tmp0_ = g_new0 (gchar*, 0 + 1); -#line 22 "../src/mpris.vala" - _tmp1_ = _tmp0_; -#line 22 "../src/mpris.vala" - _tmp1__length1 = 0; -#line 22 "../src/mpris.vala" - if (result_length1) { -#line 22 "../src/mpris.vala" - *result_length1 = _tmp1__length1; -#line 974 "mpris.c" - } -#line 22 "../src/mpris.vala" - result = _tmp1_; -#line 22 "../src/mpris.vala" - return result; -#line 980 "mpris.c" -} - -static void -mpris_class_init (MprisClass * klass, - gpointer klass_data) -{ -#line 2 "../src/mpris.vala" - mpris_parent_class = g_type_class_peek_parent (klass); -#line 2 "../src/mpris.vala" - G_OBJECT_CLASS (klass)->get_property = _vala_mpris_get_property; -#line 2 "../src/mpris.vala" - G_OBJECT_CLASS (klass)->set_property = _vala_mpris_set_property; -#line 2 "../src/mpris.vala" - G_OBJECT_CLASS (klass)->finalize = mpris_finalize; -#line 2 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_CAN_RAISE_PROPERTY, mpris_properties[MPRIS_CAN_RAISE_PROPERTY] = g_param_spec_boolean ("can-raise", "can-raise", "can-raise", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_CAN_QUIT_PROPERTY, mpris_properties[MPRIS_CAN_QUIT_PROPERTY] = g_param_spec_boolean ("can-quit", "can-quit", "can-quit", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_CAN_SET_FULLSCREEN_PROPERTY, mpris_properties[MPRIS_CAN_SET_FULLSCREEN_PROPERTY] = g_param_spec_boolean ("can-set-fullscreen", "can-set-fullscreen", "can-set-fullscreen", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_FULLSCREEN_PROPERTY, mpris_properties[MPRIS_FULLSCREEN_PROPERTY] = g_param_spec_boolean ("fullscreen", "fullscreen", "fullscreen", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 2 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_HAS_TRACK_LIST_PROPERTY, mpris_properties[MPRIS_HAS_TRACK_LIST_PROPERTY] = g_param_spec_boolean ("has-track-list", "has-track-list", "has-track-list", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_IDENTITY_PROPERTY, mpris_properties[MPRIS_IDENTITY_PROPERTY] = g_param_spec_string ("identity", "identity", "identity", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_DESKTOP_ENTRY_PROPERTY, mpris_properties[MPRIS_DESKTOP_ENTRY_PROPERTY] = g_param_spec_string ("desktop-entry", "desktop-entry", "desktop-entry", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_SUPPORTED_URI_SCHEMES_PROPERTY, mpris_properties[MPRIS_SUPPORTED_URI_SCHEMES_PROPERTY] = g_param_spec_boxed ("supported-uri-schemes", "supported-uri-schemes", "supported-uri-schemes", G_TYPE_STRV, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_SUPPORTED_MIME_TYPES_PROPERTY, mpris_properties[MPRIS_SUPPORTED_MIME_TYPES_PROPERTY] = g_param_spec_boxed ("supported-mime-types", "supported-mime-types", "supported-mime-types", G_TYPE_STRV, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/mpris.vala" - mpris_signals[MPRIS_ON_RAISE_SIGNAL] = g_signal_new ("on-raise", TYPE_MPRIS, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -#line 2 "../src/mpris.vala" - mpris_signals[MPRIS_ON_QUIT_SIGNAL] = g_signal_new ("on-quit", TYPE_MPRIS, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -#line 1017 "mpris.c" -} - -static void -mpris_instance_init (Mpris * self, - gpointer klass) -{ -} - -static void -mpris_finalize (GObject * obj) -{ - Mpris * self; -#line 2 "../src/mpris.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MPRIS, Mpris); -#line 30 "../src/mpris.vala" - g_debug ("mpris.vala:30: destroying mpris"); -#line 2 "../src/mpris.vala" - G_OBJECT_CLASS (mpris_parent_class)->finalize (obj); -#line 1036 "mpris.c" -} - -static GType -mpris_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (MprisClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mpris_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Mpris), 0, (GInstanceInitFunc) mpris_instance_init, NULL }; - GType mpris_type_id; - mpris_type_id = g_type_register_static (G_TYPE_OBJECT, "Mpris", &g_define_type_info, 0); - g_type_set_qdata (mpris_type_id, g_quark_from_static_string ("vala-dbus-register-object"), (void*) mpris_register_object); - return mpris_type_id; -} - -GType -mpris_get_type (void) -{ - static volatile gsize mpris_type_id__once = 0; - if (g_once_init_enter (&mpris_type_id__once)) { - GType mpris_type_id; - mpris_type_id = mpris_get_type_once (); - g_once_init_leave (&mpris_type_id__once, mpris_type_id); - } - return mpris_type_id__once; -} - -static void -_vala_mpris_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec) -{ - Mpris * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_MPRIS, Mpris); -#line 2 "../src/mpris.vala" - switch (property_id) { -#line 2 "../src/mpris.vala" - case MPRIS_CAN_RAISE_PROPERTY: -#line 2 "../src/mpris.vala" - g_value_set_boolean (value, mpris_get_can_raise (self)); -#line 2 "../src/mpris.vala" - break; -#line 2 "../src/mpris.vala" - case MPRIS_CAN_QUIT_PROPERTY: -#line 2 "../src/mpris.vala" - g_value_set_boolean (value, mpris_get_can_quit (self)); -#line 2 "../src/mpris.vala" - break; -#line 2 "../src/mpris.vala" - case MPRIS_CAN_SET_FULLSCREEN_PROPERTY: -#line 2 "../src/mpris.vala" - g_value_set_boolean (value, mpris_get_can_set_fullscreen (self)); -#line 2 "../src/mpris.vala" - break; -#line 2 "../src/mpris.vala" - case MPRIS_FULLSCREEN_PROPERTY: -#line 2 "../src/mpris.vala" - g_value_set_boolean (value, mpris_get_fullscreen (self)); -#line 2 "../src/mpris.vala" - break; -#line 2 "../src/mpris.vala" - case MPRIS_HAS_TRACK_LIST_PROPERTY: -#line 2 "../src/mpris.vala" - g_value_set_boolean (value, mpris_get_has_track_list (self)); -#line 2 "../src/mpris.vala" - break; -#line 2 "../src/mpris.vala" - case MPRIS_IDENTITY_PROPERTY: -#line 2 "../src/mpris.vala" - g_value_take_string (value, mpris_get_identity (self)); -#line 2 "../src/mpris.vala" - break; -#line 2 "../src/mpris.vala" - case MPRIS_DESKTOP_ENTRY_PROPERTY: -#line 2 "../src/mpris.vala" - g_value_take_string (value, mpris_get_desktop_entry (self)); -#line 2 "../src/mpris.vala" - break; -#line 2 "../src/mpris.vala" - case MPRIS_SUPPORTED_URI_SCHEMES_PROPERTY: -#line 1115 "mpris.c" - { - int length; -#line 2 "../src/mpris.vala" - g_value_take_boxed (value, mpris_get_supported_uri_schemes (self, &length)); -#line 1120 "mpris.c" - } -#line 2 "../src/mpris.vala" - break; -#line 2 "../src/mpris.vala" - case MPRIS_SUPPORTED_MIME_TYPES_PROPERTY: -#line 1126 "mpris.c" - { - int length; -#line 2 "../src/mpris.vala" - g_value_take_boxed (value, mpris_get_supported_mime_types (self, &length)); -#line 1131 "mpris.c" - } -#line 2 "../src/mpris.vala" - break; -#line 1135 "mpris.c" - default: -#line 2 "../src/mpris.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 2 "../src/mpris.vala" - break; -#line 1141 "mpris.c" - } -} - -static void -_vala_mpris_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - Mpris * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_MPRIS, Mpris); -#line 2 "../src/mpris.vala" - switch (property_id) { -#line 2 "../src/mpris.vala" - case MPRIS_FULLSCREEN_PROPERTY: -#line 2 "../src/mpris.vala" - mpris_set_fullscreen (self, g_value_get_boolean (value)); -#line 2 "../src/mpris.vala" - break; -#line 1161 "mpris.c" - default: -#line 2 "../src/mpris.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 2 "../src/mpris.vala" - break; -#line 1167 "mpris.c" - } -} - -static void -_dbus_mpris_raise (Mpris* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - mpris_raise (self, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - return; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); -} - -static void -_dbus_mpris_quit (Mpris* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - mpris_quit (self, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - return; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); -} - -static void -mpris_dbus_interface_method_call (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* method_name, - GVariant* parameters, - GDBusMethodInvocation* invocation, - gpointer user_data) -{ - gpointer* data; - gpointer object; - data = user_data; - object = data[0]; - if (strcmp (method_name, "Raise") == 0) { - _dbus_mpris_raise (object, parameters, invocation); - } else if (strcmp (method_name, "Quit") == 0) { - _dbus_mpris_quit (object, parameters, invocation); - } else { - g_object_unref (invocation); - } -} - -static GVariant* -_dbus_mpris_get_can_raise (Mpris* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_get_can_raise (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_get_can_quit (Mpris* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_get_can_quit (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_get_can_set_fullscreen (Mpris* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_get_can_set_fullscreen (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_get_fullscreen (Mpris* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_get_fullscreen (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_get_has_track_list (Mpris* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_get_has_track_list (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_get_identity (Mpris* self) -{ - gchar* result; - GVariant* _reply; - result = mpris_get_identity (self); - _reply = g_variant_new_string (result); - _g_free0 (result); - return _reply; -} - -static GVariant* -_dbus_mpris_get_desktop_entry (Mpris* self) -{ - gchar* result; - GVariant* _reply; - result = mpris_get_desktop_entry (self); - _reply = g_variant_new_string (result); - _g_free0 (result); - return _reply; -} - -static GVariant* -_dbus_mpris_get_supported_uri_schemes (Mpris* self) -{ - gchar** result; - gint result_length1 = 0; - GVariant* _reply; - gchar** _tmp0_; - GVariantBuilder _tmp1_; - gint _tmp2_; - result = mpris_get_supported_uri_schemes (self, &result_length1); - _tmp0_ = result; - g_variant_builder_init (&_tmp1_, G_VARIANT_TYPE ("as")); - for (_tmp2_ = 0; _tmp2_ < result_length1; _tmp2_++) { - g_variant_builder_add_value (&_tmp1_, g_variant_new_string (*_tmp0_)); - _tmp0_++; - } - _reply = g_variant_builder_end (&_tmp1_); - result = (_vala_array_free (result, result_length1, (GDestroyNotify) g_free), NULL); - return _reply; -} - -static GVariant* -_dbus_mpris_get_supported_mime_types (Mpris* self) -{ - gchar** result; - gint result_length1 = 0; - GVariant* _reply; - gchar** _tmp3_; - GVariantBuilder _tmp4_; - gint _tmp5_; - result = mpris_get_supported_mime_types (self, &result_length1); - _tmp3_ = result; - g_variant_builder_init (&_tmp4_, G_VARIANT_TYPE ("as")); - for (_tmp5_ = 0; _tmp5_ < result_length1; _tmp5_++) { - g_variant_builder_add_value (&_tmp4_, g_variant_new_string (*_tmp3_)); - _tmp3_++; - } - _reply = g_variant_builder_end (&_tmp4_); - result = (_vala_array_free (result, result_length1, (GDestroyNotify) g_free), NULL); - return _reply; -} - -static GVariant* -mpris_dbus_interface_get_property (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* property_name, - GError** error, - gpointer user_data) -{ - gpointer* data; - gpointer object; - data = user_data; - object = data[0]; - if (strcmp (property_name, "CanRaise") == 0) { - return _dbus_mpris_get_can_raise (object); - } else if (strcmp (property_name, "CanQuit") == 0) { - return _dbus_mpris_get_can_quit (object); - } else if (strcmp (property_name, "CanSetFullscreen") == 0) { - return _dbus_mpris_get_can_set_fullscreen (object); - } else if (strcmp (property_name, "Fullscreen") == 0) { - return _dbus_mpris_get_fullscreen (object); - } else if (strcmp (property_name, "HasTrackList") == 0) { - return _dbus_mpris_get_has_track_list (object); - } else if (strcmp (property_name, "Identity") == 0) { - return _dbus_mpris_get_identity (object); - } else if (strcmp (property_name, "DesktopEntry") == 0) { - return _dbus_mpris_get_desktop_entry (object); - } else if (strcmp (property_name, "SupportedUriSchemes") == 0) { - return _dbus_mpris_get_supported_uri_schemes (object); - } else if (strcmp (property_name, "SupportedMimeTypes") == 0) { - return _dbus_mpris_get_supported_mime_types (object); - } - return NULL; -} - -static void -_dbus_mpris_set_fullscreen (Mpris* self, - GVariant* _value) -{ - gboolean value = FALSE; - value = g_variant_get_boolean (_value); - mpris_set_fullscreen (self, value); -} - -static gboolean -mpris_dbus_interface_set_property (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* property_name, - GVariant* value, - GError** error, - gpointer user_data) -{ - gpointer* data; - gpointer object; - data = user_data; - object = data[0]; - if (strcmp (property_name, "Fullscreen") == 0) { - _dbus_mpris_set_fullscreen (object, value); - return TRUE; - } - return FALSE; -} - -guint -mpris_register_object (gpointer object, - GDBusConnection* connection, - const gchar* path, - GError** error) -{ - guint result; - gpointer *data; - data = g_new (gpointer, 3); - data[0] = g_object_ref (object); - data[1] = g_object_ref (connection); - data[2] = g_strdup (path); - result = g_dbus_connection_register_object (connection, path, (GDBusInterfaceInfo *) (&_mpris_dbus_interface_info), &_mpris_dbus_interface_vtable, data, _mpris_unregister_object, error); - if (!result) { - return 0; - } - return result; -} - -static void -_mpris_unregister_object (gpointer user_data) -{ - gpointer* data; - data = user_data; - g_object_unref (data[0]); - g_object_unref (data[1]); - g_free (data[2]); - g_free (data); -} - -static inline gpointer -mpris_player_get_instance_private (MprisPlayer* self) -{ - return G_STRUCT_MEMBER_P (self, MprisPlayer_private_offset); -} - -static void -_g_free0_ (gpointer var) -{ -#line 61 "../src/mpris.vala" - var = (g_free (var), NULL); -#line 1464 "mpris.c" -} - -static void -_g_variant_unref0_ (gpointer var) -{ -#line 61 "../src/mpris.vala" - (var == NULL) ? NULL : (var = (g_variant_unref (var), NULL)); -#line 1472 "mpris.c" -} - -void -mpris_player_next (MprisPlayer* self, - GError** error) -{ -#line 45 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 45 "../src/mpris.vala" - g_signal_emit (self, mpris_player_signals[MPRIS_PLAYER_ON_NEXT_SIGNAL], 0); -#line 1483 "mpris.c" -} - -void -mpris_player_previous (MprisPlayer* self, - GError** error) -{ -#line 46 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 46 "../src/mpris.vala" - g_signal_emit (self, mpris_player_signals[MPRIS_PLAYER_ON_PREVIOUS_SIGNAL], 0); -#line 1494 "mpris.c" -} - -void -mpris_player_pause (MprisPlayer* self, - GError** error) -{ -#line 47 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 47 "../src/mpris.vala" - g_print ("pause\n"); -#line 47 "../src/mpris.vala" - g_signal_emit (self, mpris_player_signals[MPRIS_PLAYER_ON_PAUSE_SIGNAL], 0); -#line 1507 "mpris.c" -} - -void -mpris_player_play_pause (MprisPlayer* self, - GError** error) -{ -#line 48 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 48 "../src/mpris.vala" - g_signal_emit (self, mpris_player_signals[MPRIS_PLAYER_ON_PLAY_PAUSE_SIGNAL], 0); -#line 1518 "mpris.c" -} - -void -mpris_player_stop (MprisPlayer* self, - GError** error) -{ -#line 49 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 49 "../src/mpris.vala" - g_signal_emit (self, mpris_player_signals[MPRIS_PLAYER_ON_STOP_SIGNAL], 0); -#line 1529 "mpris.c" -} - -void -mpris_player_play (MprisPlayer* self, - GError** error) -{ -#line 50 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 50 "../src/mpris.vala" - g_signal_emit (self, mpris_player_signals[MPRIS_PLAYER_ON_PLAY_SIGNAL], 0); -#line 1540 "mpris.c" -} - -void -mpris_player_seek (MprisPlayer* self, - gint64 offset, - GError** error) -{ -#line 51 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 51 "../src/mpris.vala" - g_signal_emit (self, mpris_player_signals[MPRIS_PLAYER_ON_SEEK_SIGNAL], 0, offset); -#line 1552 "mpris.c" -} - -void -mpris_player_set_position (MprisPlayer* self, - const char* track_id, - gint64 position, - GError** error) -{ -#line 52 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 52 "../src/mpris.vala" - g_return_if_fail (track_id != NULL); -#line 52 "../src/mpris.vala" - g_signal_emit (self, mpris_player_signals[MPRIS_PLAYER_ON_SET_POSITION_SIGNAL], 0, track_id, position); -#line 1567 "mpris.c" -} - -void -mpris_player_open_uri (MprisPlayer* self, - const gchar* uri, - GError** error) -{ -#line 53 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 53 "../src/mpris.vala" - g_return_if_fail (uri != NULL); -#line 53 "../src/mpris.vala" - _vala_assert (FALSE, "false"); -#line 1581 "mpris.c" -} - -static Block2Data* -block2_data_ref (Block2Data* _data2_) -{ -#line 77 "../src/mpris.vala" - g_atomic_int_inc (&_data2_->_ref_count_); -#line 77 "../src/mpris.vala" - return _data2_; -#line 1591 "mpris.c" -} - -static void -block2_data_unref (void * _userdata_) -{ - Block2Data* _data2_; - _data2_ = (Block2Data*) _userdata_; -#line 77 "../src/mpris.vala" - if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) { -#line 1601 "mpris.c" - MprisPlayer* self; -#line 77 "../src/mpris.vala" - self = _data2_->self; -#line 77 "../src/mpris.vala" - _g_object_unref0 (_data2_->conn); -#line 77 "../src/mpris.vala" - _g_object_unref0 (_data2_->playbin); -#line 77 "../src/mpris.vala" - _g_object_unref0 (self); -#line 77 "../src/mpris.vala" - g_slice_free (Block2Data, _data2_); -#line 1613 "mpris.c" - } -} - -static gboolean -__lambda14_ (MprisPlayer* self, - GBinding* binding, - GValue* from, - GValue* to) -{ - gboolean result; -#line 83 "../src/mpris.vala" - g_return_val_if_fail (binding != NULL, FALSE); -#line 83 "../src/mpris.vala" - g_return_val_if_fail (from != NULL, FALSE); -#line 83 "../src/mpris.vala" - g_return_val_if_fail (to != NULL, FALSE); -#line 84 "../src/mpris.vala" - switch (g_value_get_enum (from)) { -#line 84 "../src/mpris.vala" - case PLAYBIN_STATE_STOPPED: -#line 1634 "mpris.c" - { -#line 86 "../src/mpris.vala" - g_value_set_string (to, "Stopped"); -#line 87 "../src/mpris.vala" - mpris_player_set_can_go_next (self, FALSE); -#line 88 "../src/mpris.vala" - mpris_player_set_can_go_previous (self, FALSE); -#line 89 "../src/mpris.vala" - mpris_player_set_can_play (self, FALSE); -#line 90 "../src/mpris.vala" - mpris_player_set_can_pause (self, FALSE); -#line 91 "../src/mpris.vala" - mpris_player_set_can_seek (self, FALSE); -#line 92 "../src/mpris.vala" - result = TRUE; -#line 92 "../src/mpris.vala" - return result; -#line 1652 "mpris.c" - } -#line 84 "../src/mpris.vala" - case PLAYBIN_STATE_PAUSED: -#line 1656 "mpris.c" - { -#line 94 "../src/mpris.vala" - g_value_set_string (to, "Paused"); -#line 95 "../src/mpris.vala" - mpris_player_set_can_go_next (self, TRUE); -#line 96 "../src/mpris.vala" - mpris_player_set_can_go_previous (self, TRUE); -#line 97 "../src/mpris.vala" - mpris_player_set_can_play (self, TRUE); -#line 98 "../src/mpris.vala" - mpris_player_set_can_pause (self, TRUE); -#line 99 "../src/mpris.vala" - mpris_player_set_can_seek (self, TRUE); -#line 100 "../src/mpris.vala" - result = TRUE; -#line 100 "../src/mpris.vala" - return result; -#line 1674 "mpris.c" - } -#line 84 "../src/mpris.vala" - case PLAYBIN_STATE_PLAYING: -#line 1678 "mpris.c" - { -#line 102 "../src/mpris.vala" - g_value_set_string (to, "Playing"); -#line 103 "../src/mpris.vala" - mpris_player_set_can_go_next (self, TRUE); -#line 104 "../src/mpris.vala" - mpris_player_set_can_go_previous (self, TRUE); -#line 105 "../src/mpris.vala" - mpris_player_set_can_play (self, TRUE); -#line 106 "../src/mpris.vala" - mpris_player_set_can_pause (self, TRUE); -#line 107 "../src/mpris.vala" - mpris_player_set_can_seek (self, TRUE); -#line 108 "../src/mpris.vala" - result = TRUE; -#line 108 "../src/mpris.vala" - return result; -#line 1696 "mpris.c" - } - default: -#line 84 "../src/mpris.vala" - break; -#line 1701 "mpris.c" - } -#line 110 "../src/mpris.vala" - result = FALSE; -#line 110 "../src/mpris.vala" - return result; -#line 1707 "mpris.c" -} - -static gboolean -___lambda14__gbinding_transform_func (GBinding* binding, - GValue* from_value, - GValue* to_value, - gpointer self) -{ - gboolean result; - result = __lambda14_ ((MprisPlayer*) self, binding, from_value, to_value); -#line 78 "../src/mpris.vala" - return result; -#line 1720 "mpris.c" -} - -static gboolean -__lambda15_ (MprisPlayer* self, - GBinding* binding, - GValue* from, - GValue* to) -{ - gboolean result; -#line 118 "../src/mpris.vala" - g_return_val_if_fail (binding != NULL, FALSE); -#line 118 "../src/mpris.vala" - g_return_val_if_fail (from != NULL, FALSE); -#line 118 "../src/mpris.vala" - g_return_val_if_fail (to != NULL, FALSE); -#line 119 "../src/mpris.vala" - g_value_set_double (to, g_value_get_int (from) / 100.0); -#line 120 "../src/mpris.vala" - result = TRUE; -#line 120 "../src/mpris.vala" - return result; -#line 1742 "mpris.c" -} - -static gboolean -___lambda15__gbinding_transform_func (GBinding* binding, - GValue* from_value, - GValue* to_value, - gpointer self) -{ - gboolean result; - result = __lambda15_ ((MprisPlayer*) self, binding, from_value, to_value); -#line 113 "../src/mpris.vala" - return result; -#line 1755 "mpris.c" -} - -static gboolean -__lambda16_ (MprisPlayer* self, - GBinding* binding, - GValue* from, - GValue* to) -{ - gboolean result; -#line 122 "../src/mpris.vala" - g_return_val_if_fail (binding != NULL, FALSE); -#line 122 "../src/mpris.vala" - g_return_val_if_fail (from != NULL, FALSE); -#line 122 "../src/mpris.vala" - g_return_val_if_fail (to != NULL, FALSE); -#line 123 "../src/mpris.vala" - g_value_set_int (to, (gint) (g_value_get_double (from) * 100.0)); -#line 124 "../src/mpris.vala" - result = TRUE; -#line 124 "../src/mpris.vala" - return result; -#line 1777 "mpris.c" -} - -static gboolean -___lambda16__gbinding_transform_func (GBinding* binding, - GValue* from_value, - GValue* to_value, - gpointer self) -{ - gboolean result; - result = __lambda16_ ((MprisPlayer*) self, binding, from_value, to_value); -#line 113 "../src/mpris.vala" - return result; -#line 1790 "mpris.c" -} - -static const gchar* -string_to_string (const gchar* self) -{ - const gchar* result; -#line 1589 "glib-2.0.vapi" - g_return_val_if_fail (self != NULL, NULL); -#line 1590 "glib-2.0.vapi" - result = self; -#line 1590 "glib-2.0.vapi" - return result; -#line 1803 "mpris.c" -} - -static GVariant* -_variant_new1 (char* value) -{ -#line 131 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_object_path (value)); -#line 1811 "mpris.c" -} - -static GVariant* -_variant_new2 (gint64 value) -{ -#line 132 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_int64 (value)); -#line 1819 "mpris.c" -} - -static GVariant* -_variant_new3 (gchar* value) -{ -#line 133 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_string (value)); -#line 1827 "mpris.c" -} - -static GVariant* -_variant_new4 (const gchar* value) -{ -#line 134 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_string (value)); -#line 1835 "mpris.c" -} - -static GVariant* -_variant_new5 (gchar** value, - gint value_length1) -{ - gchar** _tmp47_; - GVariantBuilder _tmp48_; - gint _tmp49_; -#line 135 "../src/mpris.vala" - _tmp47_ = value; -#line 135 "../src/mpris.vala" - g_variant_builder_init (&_tmp48_, G_VARIANT_TYPE ("as")); -#line 135 "../src/mpris.vala" - for (_tmp49_ = 0; _tmp49_ < value_length1; _tmp49_++) { -#line 135 "../src/mpris.vala" - g_variant_builder_add_value (&_tmp48_, g_variant_new_string (*_tmp47_)); -#line 135 "../src/mpris.vala" - _tmp47_++; -#line 1855 "mpris.c" - } -#line 135 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_builder_end (&_tmp48_)); -#line 1859 "mpris.c" -} - -static GVariant* -_variant_new6 (const gchar* value) -{ -#line 136 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_string (value)); -#line 1867 "mpris.c" -} - -static GVariant* -_variant_new7 (const gchar* value) -{ -#line 137 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_string (value)); -#line 1875 "mpris.c" -} - -static GVariant* -_variant_new8 (gint64 value) -{ -#line 138 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_int64 (value)); -#line 1883 "mpris.c" -} - -static GVariant* -_variant_new9 (gint64 value) -{ -#line 139 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_int64 (value)); -#line 1891 "mpris.c" -} - -static void -__lambda17_ (MprisPlayer* self, - Playbin* playbin) -{ - PlaybinSong* song = NULL; - GListModel* _tmp0_; - GListModel* _tmp1_; - gint _tmp2_; - gint _tmp3_; - GObject* _tmp4_; - GHashTable* metadata = NULL; - GHashTable* _tmp5_; - GHashTable* _tmp6_; - gchar* _tmp7_; - PlaybinSong* _tmp8_; - const gchar* _tmp9_; - const gchar* _tmp10_; - const gchar* _tmp11_; - gchar* _tmp12_; - gchar* _tmp13_; - char* _tmp14_; - char* _tmp15_; - GVariant* _tmp16_; - GHashTable* _tmp17_; - gchar* _tmp18_; - PlaybinSong* _tmp19_; - gint64 _tmp20_; - gint64 _tmp21_; - GVariant* _tmp22_; - SubsonicClient* _tmp23_; - GHashTable* _tmp33_; - gchar* _tmp34_; - PlaybinSong* _tmp35_; - const gchar* _tmp36_; - const gchar* _tmp37_; - GVariant* _tmp38_; - GHashTable* _tmp39_; - gchar* _tmp40_; - PlaybinSong* _tmp41_; - const gchar* _tmp42_; - const gchar* _tmp43_; - gchar* _tmp44_; - gchar** _tmp45_; - gchar** _tmp46_; - gint _tmp46__length1; - GVariant* _tmp50_; - PlaybinSong* _tmp51_; - const gchar* _tmp52_; - const gchar* _tmp53_; - GHashTable* _tmp60_; - gchar* _tmp61_; - PlaybinSong* _tmp62_; - const gchar* _tmp63_; - const gchar* _tmp64_; - GVariant* _tmp65_; - GHashTable* _tmp66_; - gchar* _tmp67_; - PlaybinSong* _tmp68_; - gint64 _tmp69_; - gint64 _tmp70_; - GVariant* _tmp71_; - GHashTable* _tmp72_; - gchar* _tmp73_; - PlaybinSong* _tmp74_; - gint64 _tmp75_; - gint64 _tmp76_; - GVariant* _tmp77_; - GHashTable* _tmp78_; -#line 127 "../src/mpris.vala" - g_return_if_fail (playbin != NULL); -#line 128 "../src/mpris.vala" - _tmp0_ = playbin_get_play_queue (playbin); -#line 128 "../src/mpris.vala" - _tmp1_ = _tmp0_; -#line 128 "../src/mpris.vala" - _tmp2_ = playbin_get_play_queue_position (playbin); -#line 128 "../src/mpris.vala" - _tmp3_ = _tmp2_; -#line 128 "../src/mpris.vala" - _tmp4_ = g_list_model_get_item (_tmp1_, (guint) _tmp3_); -#line 128 "../src/mpris.vala" - song = G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_PLAYBIN_SONG, PlaybinSong); -#line 130 "../src/mpris.vala" - _tmp5_ = g_hash_table_new_full (NULL, NULL, _g_free0_, _g_variant_unref0_); -#line 130 "../src/mpris.vala" - metadata = _tmp5_; -#line 131 "../src/mpris.vala" - _tmp6_ = metadata; -#line 131 "../src/mpris.vala" - _tmp7_ = g_strdup ("mpris:trackid"); -#line 131 "../src/mpris.vala" - _tmp8_ = song; -#line 131 "../src/mpris.vala" - _tmp9_ = playbin_song_get_id (_tmp8_); -#line 131 "../src/mpris.vala" - _tmp10_ = _tmp9_; -#line 131 "../src/mpris.vala" - _tmp11_ = string_to_string (_tmp10_); -#line 131 "../src/mpris.vala" - _tmp12_ = g_strconcat ("/eu/callcc/audrey/track/", _tmp11_, NULL); -#line 131 "../src/mpris.vala" - _tmp13_ = _tmp12_; -#line 131 "../src/mpris.vala" - _tmp14_ = g_strdup (_tmp13_); -#line 131 "../src/mpris.vala" - _tmp15_ = _tmp14_; -#line 131 "../src/mpris.vala" - _tmp16_ = _variant_new1 (_tmp15_); -#line 131 "../src/mpris.vala" - g_hash_table_insert (_tmp6_, _tmp7_, _tmp16_); -#line 131 "../src/mpris.vala" - _g_free0 (_tmp15_); -#line 131 "../src/mpris.vala" - _g_free0 (_tmp13_); -#line 132 "../src/mpris.vala" - _tmp17_ = metadata; -#line 132 "../src/mpris.vala" - _tmp18_ = g_strdup ("mpris:length"); -#line 132 "../src/mpris.vala" - _tmp19_ = song; -#line 132 "../src/mpris.vala" - _tmp20_ = playbin_song_get_duration (_tmp19_); -#line 132 "../src/mpris.vala" - _tmp21_ = _tmp20_; -#line 132 "../src/mpris.vala" - _tmp22_ = _variant_new2 (((gint64) _tmp21_) * 1000000); -#line 132 "../src/mpris.vala" - g_hash_table_insert (_tmp17_, _tmp18_, _tmp22_); -#line 133 "../src/mpris.vala" - _tmp23_ = self->priv->_api; -#line 133 "../src/mpris.vala" - if (_tmp23_ != NULL) { -#line 2026 "mpris.c" - GHashTable* _tmp24_; - gchar* _tmp25_; - SubsonicClient* _tmp26_; - PlaybinSong* _tmp27_; - const gchar* _tmp28_; - const gchar* _tmp29_; - gchar* _tmp30_; - gchar* _tmp31_; - GVariant* _tmp32_; -#line 133 "../src/mpris.vala" - _tmp24_ = metadata; -#line 133 "../src/mpris.vala" - _tmp25_ = g_strdup ("mpris:artUrl"); -#line 133 "../src/mpris.vala" - _tmp26_ = self->priv->_api; -#line 133 "../src/mpris.vala" - _tmp27_ = song; -#line 133 "../src/mpris.vala" - _tmp28_ = playbin_song_get_id (_tmp27_); -#line 133 "../src/mpris.vala" - _tmp29_ = _tmp28_; -#line 133 "../src/mpris.vala" - _tmp30_ = subsonic_client_cover_art_uri (_tmp26_, _tmp29_, -1); -#line 133 "../src/mpris.vala" - _tmp31_ = _tmp30_; -#line 133 "../src/mpris.vala" - _tmp32_ = _variant_new3 (_tmp31_); -#line 133 "../src/mpris.vala" - g_hash_table_insert (_tmp24_, _tmp25_, _tmp32_); -#line 133 "../src/mpris.vala" - _g_free0 (_tmp31_); -#line 2058 "mpris.c" - } -#line 134 "../src/mpris.vala" - _tmp33_ = metadata; -#line 134 "../src/mpris.vala" - _tmp34_ = g_strdup ("xesam:album"); -#line 134 "../src/mpris.vala" - _tmp35_ = song; -#line 134 "../src/mpris.vala" - _tmp36_ = playbin_song_get_album (_tmp35_); -#line 134 "../src/mpris.vala" - _tmp37_ = _tmp36_; -#line 134 "../src/mpris.vala" - _tmp38_ = _variant_new4 (_tmp37_); -#line 134 "../src/mpris.vala" - g_hash_table_insert (_tmp33_, _tmp34_, _tmp38_); -#line 135 "../src/mpris.vala" - _tmp39_ = metadata; -#line 135 "../src/mpris.vala" - _tmp40_ = g_strdup ("xesam:artist"); -#line 135 "../src/mpris.vala" - _tmp41_ = song; -#line 135 "../src/mpris.vala" - _tmp42_ = playbin_song_get_artist (_tmp41_); -#line 135 "../src/mpris.vala" - _tmp43_ = _tmp42_; -#line 135 "../src/mpris.vala" - _tmp44_ = g_strdup (_tmp43_); -#line 135 "../src/mpris.vala" - _tmp45_ = g_new0 (gchar*, 1 + 1); -#line 135 "../src/mpris.vala" - _tmp45_[0] = _tmp44_; -#line 135 "../src/mpris.vala" - _tmp46_ = _tmp45_; -#line 135 "../src/mpris.vala" - _tmp46__length1 = 1; -#line 135 "../src/mpris.vala" - _tmp50_ = _variant_new5 (_tmp46_, 1); -#line 135 "../src/mpris.vala" - g_hash_table_insert (_tmp39_, _tmp40_, _tmp50_); -#line 135 "../src/mpris.vala" - _tmp46_ = (_vala_array_free (_tmp46_, _tmp46__length1, (GDestroyNotify) g_free), NULL); -#line 136 "../src/mpris.vala" - _tmp51_ = song; -#line 136 "../src/mpris.vala" - _tmp52_ = playbin_song_get_genre (_tmp51_); -#line 136 "../src/mpris.vala" - _tmp53_ = _tmp52_; -#line 136 "../src/mpris.vala" - if (_tmp53_ != NULL) { -#line 2108 "mpris.c" - GHashTable* _tmp54_; - gchar* _tmp55_; - PlaybinSong* _tmp56_; - const gchar* _tmp57_; - const gchar* _tmp58_; - GVariant* _tmp59_; -#line 136 "../src/mpris.vala" - _tmp54_ = metadata; -#line 136 "../src/mpris.vala" - _tmp55_ = g_strdup ("xesam:genre"); -#line 136 "../src/mpris.vala" - _tmp56_ = song; -#line 136 "../src/mpris.vala" - _tmp57_ = playbin_song_get_genre (_tmp56_); -#line 136 "../src/mpris.vala" - _tmp58_ = _tmp57_; -#line 136 "../src/mpris.vala" - _tmp59_ = _variant_new6 (_tmp58_); -#line 136 "../src/mpris.vala" - g_hash_table_insert (_tmp54_, _tmp55_, _tmp59_); -#line 2129 "mpris.c" - } -#line 137 "../src/mpris.vala" - _tmp60_ = metadata; -#line 137 "../src/mpris.vala" - _tmp61_ = g_strdup ("xesam:title"); -#line 137 "../src/mpris.vala" - _tmp62_ = song; -#line 137 "../src/mpris.vala" - _tmp63_ = playbin_song_get_title (_tmp62_); -#line 137 "../src/mpris.vala" - _tmp64_ = _tmp63_; -#line 137 "../src/mpris.vala" - _tmp65_ = _variant_new7 (_tmp64_); -#line 137 "../src/mpris.vala" - g_hash_table_insert (_tmp60_, _tmp61_, _tmp65_); -#line 138 "../src/mpris.vala" - _tmp66_ = metadata; -#line 138 "../src/mpris.vala" - _tmp67_ = g_strdup ("xesam:trackNumber"); -#line 138 "../src/mpris.vala" - _tmp68_ = song; -#line 138 "../src/mpris.vala" - _tmp69_ = playbin_song_get_track (_tmp68_); -#line 138 "../src/mpris.vala" - _tmp70_ = _tmp69_; -#line 138 "../src/mpris.vala" - _tmp71_ = _variant_new8 (_tmp70_); -#line 138 "../src/mpris.vala" - g_hash_table_insert (_tmp66_, _tmp67_, _tmp71_); -#line 139 "../src/mpris.vala" - _tmp72_ = metadata; -#line 139 "../src/mpris.vala" - _tmp73_ = g_strdup ("xesam:useCount"); -#line 139 "../src/mpris.vala" - _tmp74_ = song; -#line 139 "../src/mpris.vala" - _tmp75_ = playbin_song_get_play_count (_tmp74_); -#line 139 "../src/mpris.vala" - _tmp76_ = _tmp75_; -#line 139 "../src/mpris.vala" - _tmp77_ = _variant_new9 (_tmp76_); -#line 139 "../src/mpris.vala" - g_hash_table_insert (_tmp72_, _tmp73_, _tmp77_); -#line 142 "../src/mpris.vala" - _tmp78_ = metadata; -#line 142 "../src/mpris.vala" - mpris_player_set_metadata (self, _tmp78_); -#line 127 "../src/mpris.vala" - _g_hash_table_unref0 (metadata); -#line 127 "../src/mpris.vala" - _g_object_unref0 (song); -#line 2181 "mpris.c" -} - -static void -___lambda17__playbin_new_track (Playbin* _sender, - gpointer self) -{ -#line 127 "../src/mpris.vala" - __lambda17_ ((MprisPlayer*) self, _sender); -#line 2190 "mpris.c" -} - -static void -__lambda18_ (MprisPlayer* self) -{ - GHashTable* _tmp0_; - GHashTable* _tmp1_; -#line 146 "../src/mpris.vala" - _tmp0_ = g_hash_table_new_full (NULL, NULL, _g_free0_, _g_variant_unref0_); -#line 146 "../src/mpris.vala" - _tmp1_ = _tmp0_; -#line 146 "../src/mpris.vala" - mpris_player_set_metadata (self, _tmp1_); -#line 146 "../src/mpris.vala" - _g_hash_table_unref0 (_tmp1_); -#line 2206 "mpris.c" -} - -static void -___lambda18__playbin_stopped (Playbin* _sender, - gpointer self) -{ -#line 145 "../src/mpris.vala" - __lambda18_ ((MprisPlayer*) self); -#line 2215 "mpris.c" -} - -static void -__lambda19_ (Block2Data* _data2_) -{ - MprisPlayer* self; -#line 149 "../src/mpris.vala" - self = _data2_->self; -#line 149 "../src/mpris.vala" - playbin_go_to_next_track (_data2_->playbin); -#line 2226 "mpris.c" -} - -static void -___lambda19__mpris_player_on_next (MprisPlayer* _sender, - gpointer self) -{ -#line 149 "../src/mpris.vala" - __lambda19_ (self); -#line 2235 "mpris.c" -} - -static void -__lambda20_ (Block2Data* _data2_) -{ - MprisPlayer* self; -#line 150 "../src/mpris.vala" - self = _data2_->self; -#line 150 "../src/mpris.vala" - playbin_go_to_prev_track (_data2_->playbin); -#line 2246 "mpris.c" -} - -static void -___lambda20__mpris_player_on_previous (MprisPlayer* _sender, - gpointer self) -{ -#line 150 "../src/mpris.vala" - __lambda20_ (self); -#line 2255 "mpris.c" -} - -static void -__lambda21_ (Block2Data* _data2_) -{ - MprisPlayer* self; -#line 151 "../src/mpris.vala" - self = _data2_->self; -#line 151 "../src/mpris.vala" - playbin_play (_data2_->playbin); -#line 2266 "mpris.c" -} - -static void -___lambda21__mpris_player_on_play (MprisPlayer* _sender, - gpointer self) -{ -#line 151 "../src/mpris.vala" - __lambda21_ (self); -#line 2275 "mpris.c" -} - -static void -__lambda22_ (Block2Data* _data2_) -{ - MprisPlayer* self; -#line 152 "../src/mpris.vala" - self = _data2_->self; -#line 152 "../src/mpris.vala" - playbin_pause (_data2_->playbin); -#line 2286 "mpris.c" -} - -static void -___lambda22__mpris_player_on_pause (MprisPlayer* _sender, - gpointer self) -{ -#line 152 "../src/mpris.vala" - __lambda22_ (self); -#line 2295 "mpris.c" -} - -static void -__lambda23_ (Block2Data* _data2_) -{ - MprisPlayer* self; - PlaybinState _tmp0_; - PlaybinState _tmp1_; -#line 153 "../src/mpris.vala" - self = _data2_->self; -#line 154 "../src/mpris.vala" - _tmp0_ = playbin_get_state (_data2_->playbin); -#line 154 "../src/mpris.vala" - _tmp1_ = _tmp0_; -#line 154 "../src/mpris.vala" - if (_tmp1_ == PLAYBIN_STATE_PAUSED) { -#line 154 "../src/mpris.vala" - playbin_play (_data2_->playbin); -#line 2314 "mpris.c" - } else { - PlaybinState _tmp2_; - PlaybinState _tmp3_; -#line 155 "../src/mpris.vala" - _tmp2_ = playbin_get_state (_data2_->playbin); -#line 155 "../src/mpris.vala" - _tmp3_ = _tmp2_; -#line 155 "../src/mpris.vala" - if (_tmp3_ == PLAYBIN_STATE_PLAYING) { -#line 155 "../src/mpris.vala" - playbin_pause (_data2_->playbin); -#line 2326 "mpris.c" - } - } -} - -static void -___lambda23__mpris_player_on_play_pause (MprisPlayer* _sender, - gpointer self) -{ -#line 153 "../src/mpris.vala" - __lambda23_ (self); -#line 2337 "mpris.c" -} - -static void -__lambda24_ (Block2Data* _data2_) -{ - MprisPlayer* self; -#line 157 "../src/mpris.vala" - self = _data2_->self; -#line 158 "../src/mpris.vala" - playbin_stop (_data2_->playbin); -#line 2348 "mpris.c" -} - -static void -___lambda24__mpris_player_on_stop (MprisPlayer* _sender, - gpointer self) -{ -#line 157 "../src/mpris.vala" - __lambda24_ (self); -#line 2357 "mpris.c" -} - -static GVariant* -_variant_new10 (gchar* value) -{ -#line 174 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_string (value)); -#line 2365 "mpris.c" -} - -static GVariant* -_variant_new11 (gchar* value) -{ -#line 178 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_string (value)); -#line 2373 "mpris.c" -} - -static GVariant* -_variant_new12 (gdouble value) -{ -#line 182 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_double (value)); -#line 2381 "mpris.c" -} - -static GVariant* -_variant_new13 (gboolean value) -{ -#line 186 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_boolean (value)); -#line 2389 "mpris.c" -} - -static GVariant* -_variant_new14 (GHashTable* value) -{ - GVariantBuilder _tmp30_; - GHashTableIter _tmp31_; - gpointer _tmp32_; - gpointer _tmp33_; -#line 190 "../src/mpris.vala" - g_hash_table_iter_init (&_tmp31_, value); -#line 190 "../src/mpris.vala" - g_variant_builder_init (&_tmp30_, G_VARIANT_TYPE ("a{sv}")); -#line 190 "../src/mpris.vala" - while (g_hash_table_iter_next (&_tmp31_, &_tmp32_, &_tmp33_)) { -#line 2405 "mpris.c" - gchar* _key; - GVariant* _value; -#line 190 "../src/mpris.vala" - _key = (gchar*) _tmp32_; -#line 190 "../src/mpris.vala" - _value = (GVariant*) _tmp33_; -#line 190 "../src/mpris.vala" - g_variant_builder_add (&_tmp30_, "{?*}", g_variant_new_string (_key), g_variant_new_variant (_value)); -#line 2414 "mpris.c" - } -#line 190 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_builder_end (&_tmp30_)); -#line 2418 "mpris.c" -} - -static GVariant* -_variant_new15 (gdouble value) -{ -#line 194 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_double (value)); -#line 2426 "mpris.c" -} - -static GVariant* -_variant_new16 (gdouble value) -{ -#line 198 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_double (value)); -#line 2434 "mpris.c" -} - -static GVariant* -_variant_new17 (gdouble value) -{ -#line 202 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_double (value)); -#line 2442 "mpris.c" -} - -static GVariant* -_variant_new18 (gboolean value) -{ -#line 206 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_boolean (value)); -#line 2450 "mpris.c" -} - -static GVariant* -_variant_new19 (gboolean value) -{ -#line 210 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_boolean (value)); -#line 2458 "mpris.c" -} - -static GVariant* -_variant_new20 (gboolean value) -{ -#line 214 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_boolean (value)); -#line 2466 "mpris.c" -} - -static GVariant* -_variant_new21 (gboolean value) -{ -#line 218 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_boolean (value)); -#line 2474 "mpris.c" -} - -static GVariant* -_variant_new22 (gboolean value) -{ -#line 222 "../src/mpris.vala" - return g_variant_ref_sink (g_variant_new_boolean (value)); -#line 2482 "mpris.c" -} - -static void -__lambda25_ (Block2Data* _data2_, - GParamSpec* p) -{ - MprisPlayer* self; - GVariantBuilder* builder = NULL; - const GVariantType* _tmp0_; - GVariantBuilder* _tmp1_; - GVariantBuilder* invalid_builder = NULL; - GVariantType* _tmp2_; - GVariantType* _tmp3_; - GVariantBuilder* _tmp4_; - GVariantBuilder* _tmp5_; - gchar* dbus_name = NULL; - GVariant* dbus_value = NULL; - const gchar* _tmp6_; - const gchar* _tmp7_; - GQuark _tmp9_ = 0U; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label0 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label1 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label2 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label3 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label4 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label5 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label6 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label7 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label8 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label9 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label10 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label11 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label12 = 0; -#line 171 "../src/mpris.vala" - static GQuark _tmp8_label13 = 0; -#line 2531 "mpris.c" - GVariantBuilder* _tmp65_; - const gchar* _tmp66_; - GVariant* _tmp67_; - GError* _inner_error0_ = NULL; -#line 164 "../src/mpris.vala" - self = _data2_->self; -#line 164 "../src/mpris.vala" - g_return_if_fail (p != NULL); -#line 165 "../src/mpris.vala" - _tmp0_ = G_VARIANT_TYPE_ARRAY; -#line 165 "../src/mpris.vala" - _tmp1_ = g_variant_builder_new (_tmp0_); -#line 165 "../src/mpris.vala" - builder = _tmp1_; -#line 166 "../src/mpris.vala" - _tmp2_ = g_variant_type_new ("as"); -#line 166 "../src/mpris.vala" - _tmp3_ = _tmp2_; -#line 166 "../src/mpris.vala" - _tmp4_ = g_variant_builder_new (_tmp3_); -#line 166 "../src/mpris.vala" - _tmp5_ = _tmp4_; -#line 166 "../src/mpris.vala" - _g_variant_type_free0 (_tmp3_); -#line 166 "../src/mpris.vala" - invalid_builder = _tmp5_; -#line 171 "../src/mpris.vala" - _tmp6_ = p->name; -#line 171 "../src/mpris.vala" - _tmp7_ = _tmp6_; -#line 171 "../src/mpris.vala" - _tmp9_ = (NULL == _tmp7_) ? 0 : g_quark_from_string (_tmp7_); -#line 171 "../src/mpris.vala" - if (_tmp9_ == ((0 != _tmp8_label0) ? _tmp8_label0 : (_tmp8_label0 = g_quark_from_static_string ("playback-status")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2568 "mpris.c" - default: - { - gchar* _tmp10_; - gchar* _tmp11_; - gchar* _tmp12_; - gchar* _tmp13_; - GVariant* _tmp14_; -#line 173 "../src/mpris.vala" - _tmp10_ = g_strdup ("PlaybackStatus"); -#line 173 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 173 "../src/mpris.vala" - dbus_name = _tmp10_; -#line 174 "../src/mpris.vala" - _tmp11_ = mpris_player_get_playback_status (self); -#line 174 "../src/mpris.vala" - _tmp12_ = _tmp11_; -#line 174 "../src/mpris.vala" - _tmp13_ = _tmp12_; -#line 174 "../src/mpris.vala" - _tmp14_ = _variant_new10 (_tmp13_); -#line 174 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 174 "../src/mpris.vala" - dbus_value = _tmp14_; -#line 174 "../src/mpris.vala" - _g_free0 (_tmp13_); -#line 175 "../src/mpris.vala" - break; -#line 2598 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label1) ? _tmp8_label1 : (_tmp8_label1 = g_quark_from_static_string ("loop-status")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2604 "mpris.c" - default: - { - gchar* _tmp15_; - gchar* _tmp16_; - gchar* _tmp17_; - gchar* _tmp18_; - GVariant* _tmp19_; -#line 177 "../src/mpris.vala" - _tmp15_ = g_strdup ("LoopStatus"); -#line 177 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 177 "../src/mpris.vala" - dbus_name = _tmp15_; -#line 178 "../src/mpris.vala" - _tmp16_ = mpris_player_get_loop_status (self); -#line 178 "../src/mpris.vala" - _tmp17_ = _tmp16_; -#line 178 "../src/mpris.vala" - _tmp18_ = _tmp17_; -#line 178 "../src/mpris.vala" - _tmp19_ = _variant_new11 (_tmp18_); -#line 178 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 178 "../src/mpris.vala" - dbus_value = _tmp19_; -#line 178 "../src/mpris.vala" - _g_free0 (_tmp18_); -#line 179 "../src/mpris.vala" - break; -#line 2634 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label2) ? _tmp8_label2 : (_tmp8_label2 = g_quark_from_static_string ("rate")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2640 "mpris.c" - default: - { - gchar* _tmp20_; - gdouble _tmp21_; - GVariant* _tmp22_; -#line 181 "../src/mpris.vala" - _tmp20_ = g_strdup ("Rate"); -#line 181 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 181 "../src/mpris.vala" - dbus_name = _tmp20_; -#line 182 "../src/mpris.vala" - _tmp21_ = self->priv->_rate; -#line 182 "../src/mpris.vala" - _tmp22_ = _variant_new12 (_tmp21_); -#line 182 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 182 "../src/mpris.vala" - dbus_value = _tmp22_; -#line 183 "../src/mpris.vala" - break; -#line 2662 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label3) ? _tmp8_label3 : (_tmp8_label3 = g_quark_from_static_string ("shuffle")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2668 "mpris.c" - default: - { - gchar* _tmp23_; - gboolean _tmp24_; - GVariant* _tmp25_; -#line 185 "../src/mpris.vala" - _tmp23_ = g_strdup ("Shuffle"); -#line 185 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 185 "../src/mpris.vala" - dbus_name = _tmp23_; -#line 186 "../src/mpris.vala" - _tmp24_ = self->priv->_shuffle; -#line 186 "../src/mpris.vala" - _tmp25_ = _variant_new13 (_tmp24_); -#line 186 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 186 "../src/mpris.vala" - dbus_value = _tmp25_; -#line 187 "../src/mpris.vala" - break; -#line 2690 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label4) ? _tmp8_label4 : (_tmp8_label4 = g_quark_from_static_string ("metadata")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2696 "mpris.c" - default: - { - gchar* _tmp26_; - GHashTable* _tmp27_; - GHashTable* _tmp28_; - GHashTable* _tmp29_; - GVariant* _tmp34_; -#line 189 "../src/mpris.vala" - _tmp26_ = g_strdup ("Metadata"); -#line 189 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 189 "../src/mpris.vala" - dbus_name = _tmp26_; -#line 190 "../src/mpris.vala" - _tmp27_ = mpris_player_get_metadata (self); -#line 190 "../src/mpris.vala" - _tmp28_ = _tmp27_; -#line 190 "../src/mpris.vala" - _tmp29_ = _tmp28_; -#line 190 "../src/mpris.vala" - _tmp34_ = _variant_new14 (_tmp29_); -#line 190 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 190 "../src/mpris.vala" - dbus_value = _tmp34_; -#line 190 "../src/mpris.vala" - _g_hash_table_unref0 (_tmp29_); -#line 191 "../src/mpris.vala" - break; -#line 2726 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label5) ? _tmp8_label5 : (_tmp8_label5 = g_quark_from_static_string ("volume")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2732 "mpris.c" - default: - { - gchar* _tmp35_; - gdouble _tmp36_; - GVariant* _tmp37_; -#line 193 "../src/mpris.vala" - _tmp35_ = g_strdup ("Volume"); -#line 193 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 193 "../src/mpris.vala" - dbus_name = _tmp35_; -#line 194 "../src/mpris.vala" - _tmp36_ = self->priv->_volume; -#line 194 "../src/mpris.vala" - _tmp37_ = _variant_new15 (_tmp36_); -#line 194 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 194 "../src/mpris.vala" - dbus_value = _tmp37_; -#line 195 "../src/mpris.vala" - break; -#line 2754 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label6) ? _tmp8_label6 : (_tmp8_label6 = g_quark_from_static_string ("minimum-rate")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2760 "mpris.c" - default: - { - gchar* _tmp38_; - gdouble _tmp39_; - gdouble _tmp40_; - GVariant* _tmp41_; -#line 197 "../src/mpris.vala" - _tmp38_ = g_strdup ("MinimumRate"); -#line 197 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 197 "../src/mpris.vala" - dbus_name = _tmp38_; -#line 198 "../src/mpris.vala" - _tmp39_ = mpris_player_get_minimum_rate (self); -#line 198 "../src/mpris.vala" - _tmp40_ = _tmp39_; -#line 198 "../src/mpris.vala" - _tmp41_ = _variant_new16 (_tmp40_); -#line 198 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 198 "../src/mpris.vala" - dbus_value = _tmp41_; -#line 199 "../src/mpris.vala" - break; -#line 2785 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label7) ? _tmp8_label7 : (_tmp8_label7 = g_quark_from_static_string ("maximum-rate")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2791 "mpris.c" - default: - { - gchar* _tmp42_; - gdouble _tmp43_; - gdouble _tmp44_; - GVariant* _tmp45_; -#line 201 "../src/mpris.vala" - _tmp42_ = g_strdup ("MaximumRate"); -#line 201 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 201 "../src/mpris.vala" - dbus_name = _tmp42_; -#line 202 "../src/mpris.vala" - _tmp43_ = mpris_player_get_maximum_rate (self); -#line 202 "../src/mpris.vala" - _tmp44_ = _tmp43_; -#line 202 "../src/mpris.vala" - _tmp45_ = _variant_new17 (_tmp44_); -#line 202 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 202 "../src/mpris.vala" - dbus_value = _tmp45_; -#line 203 "../src/mpris.vala" - break; -#line 2816 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label8) ? _tmp8_label8 : (_tmp8_label8 = g_quark_from_static_string ("can-go-next")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2822 "mpris.c" - default: - { - gchar* _tmp46_; - gboolean _tmp47_; - GVariant* _tmp48_; -#line 205 "../src/mpris.vala" - _tmp46_ = g_strdup ("CanGoNext"); -#line 205 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 205 "../src/mpris.vala" - dbus_name = _tmp46_; -#line 206 "../src/mpris.vala" - _tmp47_ = self->priv->_can_go_next; -#line 206 "../src/mpris.vala" - _tmp48_ = _variant_new18 (_tmp47_); -#line 206 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 206 "../src/mpris.vala" - dbus_value = _tmp48_; -#line 207 "../src/mpris.vala" - break; -#line 2844 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label9) ? _tmp8_label9 : (_tmp8_label9 = g_quark_from_static_string ("can-go-previous")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2850 "mpris.c" - default: - { - gchar* _tmp49_; - gboolean _tmp50_; - GVariant* _tmp51_; -#line 209 "../src/mpris.vala" - _tmp49_ = g_strdup ("CanGoPrevious"); -#line 209 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 209 "../src/mpris.vala" - dbus_name = _tmp49_; -#line 210 "../src/mpris.vala" - _tmp50_ = self->priv->_can_go_previous; -#line 210 "../src/mpris.vala" - _tmp51_ = _variant_new19 (_tmp50_); -#line 210 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 210 "../src/mpris.vala" - dbus_value = _tmp51_; -#line 211 "../src/mpris.vala" - break; -#line 2872 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label10) ? _tmp8_label10 : (_tmp8_label10 = g_quark_from_static_string ("can-play")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2878 "mpris.c" - default: - { - gchar* _tmp52_; - gboolean _tmp53_; - GVariant* _tmp54_; -#line 213 "../src/mpris.vala" - _tmp52_ = g_strdup ("CanPlay"); -#line 213 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 213 "../src/mpris.vala" - dbus_name = _tmp52_; -#line 214 "../src/mpris.vala" - _tmp53_ = self->priv->_can_play; -#line 214 "../src/mpris.vala" - _tmp54_ = _variant_new20 (_tmp53_); -#line 214 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 214 "../src/mpris.vala" - dbus_value = _tmp54_; -#line 215 "../src/mpris.vala" - break; -#line 2900 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label11) ? _tmp8_label11 : (_tmp8_label11 = g_quark_from_static_string ("can-pause")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2906 "mpris.c" - default: - { - gchar* _tmp55_; - gboolean _tmp56_; - GVariant* _tmp57_; -#line 217 "../src/mpris.vala" - _tmp55_ = g_strdup ("CanPause"); -#line 217 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 217 "../src/mpris.vala" - dbus_name = _tmp55_; -#line 218 "../src/mpris.vala" - _tmp56_ = self->priv->_can_pause; -#line 218 "../src/mpris.vala" - _tmp57_ = _variant_new21 (_tmp56_); -#line 218 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 218 "../src/mpris.vala" - dbus_value = _tmp57_; -#line 219 "../src/mpris.vala" - break; -#line 2928 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label12) ? _tmp8_label12 : (_tmp8_label12 = g_quark_from_static_string ("can-seek")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2934 "mpris.c" - default: - { - gchar* _tmp58_; - gboolean _tmp59_; - GVariant* _tmp60_; -#line 221 "../src/mpris.vala" - _tmp58_ = g_strdup ("CanSeek"); -#line 221 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 221 "../src/mpris.vala" - dbus_name = _tmp58_; -#line 222 "../src/mpris.vala" - _tmp59_ = self->priv->_can_seek; -#line 222 "../src/mpris.vala" - _tmp60_ = _variant_new22 (_tmp59_); -#line 222 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 222 "../src/mpris.vala" - dbus_value = _tmp60_; -#line 223 "../src/mpris.vala" - break; -#line 2956 "mpris.c" - } - } - } else if (_tmp9_ == ((0 != _tmp8_label13) ? _tmp8_label13 : (_tmp8_label13 = g_quark_from_static_string ("api")))) { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2962 "mpris.c" - default: - { -#line 226 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 226 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 226 "../src/mpris.vala" - _g_variant_builder_unref0 (invalid_builder); -#line 226 "../src/mpris.vala" - _g_variant_builder_unref0 (builder); -#line 226 "../src/mpris.vala" - return; -#line 2975 "mpris.c" - } - } - } else { -#line 171 "../src/mpris.vala" - switch (0) { -#line 2981 "mpris.c" - default: - { - const gchar* _tmp61_; - const gchar* _tmp62_; - gchar* _tmp63_; - gchar* _tmp64_; -#line 228 "../src/mpris.vala" - _tmp61_ = p->name; -#line 228 "../src/mpris.vala" - _tmp62_ = string_to_string (_tmp61_); -#line 228 "../src/mpris.vala" - _tmp63_ = g_strconcat ("unknown mpris player property ", _tmp62_, NULL); -#line 228 "../src/mpris.vala" - _tmp64_ = _tmp63_; -#line 228 "../src/mpris.vala" - g_warning ("mpris.vala:228: %s", _tmp64_); -#line 228 "../src/mpris.vala" - _g_free0 (_tmp64_); -#line 229 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 229 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 229 "../src/mpris.vala" - _g_variant_builder_unref0 (invalid_builder); -#line 229 "../src/mpris.vala" - _g_variant_builder_unref0 (builder); -#line 229 "../src/mpris.vala" - return; -#line 3010 "mpris.c" - } - } - } -#line 232 "../src/mpris.vala" - _tmp65_ = builder; -#line 232 "../src/mpris.vala" - _tmp66_ = dbus_name; -#line 232 "../src/mpris.vala" - _tmp67_ = dbus_value; -#line 232 "../src/mpris.vala" - g_variant_builder_add (_tmp65_, "{sv}", _tmp66_, _tmp67_, NULL); -#line 3022 "mpris.c" - { - GVariantBuilder* _tmp68_; - GVariantBuilder* _tmp69_; - GVariant* _tmp70_; - GVariant* _tmp71_; -#line 235 "../src/mpris.vala" - _tmp68_ = builder; -#line 235 "../src/mpris.vala" - _tmp69_ = invalid_builder; -#line 235 "../src/mpris.vala" - _tmp70_ = g_variant_new ("(sa{sv}as)", "org.mpris.MediaPlayer2.Player", _tmp68_, _tmp69_, NULL); -#line 235 "../src/mpris.vala" - g_variant_ref_sink (_tmp70_); -#line 235 "../src/mpris.vala" - _tmp71_ = _tmp70_; -#line 235 "../src/mpris.vala" - g_dbus_connection_emit_signal (_data2_->conn, NULL, "/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties", "PropertiesChanged", _tmp71_, &_inner_error0_); -#line 235 "../src/mpris.vala" - _g_variant_unref0 (_tmp71_); -#line 235 "../src/mpris.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 3044 "mpris.c" - goto __catch0_g_error; - } - } - goto __finally0; - __catch0_g_error: - { - GError* e = NULL; - const gchar* _tmp72_; - const gchar* _tmp73_; - gchar* _tmp74_; - gchar* _tmp75_; -#line 234 "../src/mpris.vala" - e = _inner_error0_; -#line 234 "../src/mpris.vala" - _inner_error0_ = NULL; -#line 246 "../src/mpris.vala" - _tmp72_ = e->message; -#line 246 "../src/mpris.vala" - _tmp73_ = string_to_string (_tmp72_); -#line 246 "../src/mpris.vala" - _tmp74_ = g_strconcat ("could not notify of mpris property changes: ", _tmp73_, NULL); -#line 246 "../src/mpris.vala" - _tmp75_ = _tmp74_; -#line 246 "../src/mpris.vala" - g_error ("mpris.vala:246: %s", _tmp75_); -#line 246 "../src/mpris.vala" - _g_free0 (_tmp75_); -#line 234 "../src/mpris.vala" - _g_error_free0 (e); -#line 3074 "mpris.c" - } - __finally0: -#line 234 "../src/mpris.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 234 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 234 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 234 "../src/mpris.vala" - _g_variant_builder_unref0 (invalid_builder); -#line 234 "../src/mpris.vala" - _g_variant_builder_unref0 (builder); -#line 234 "../src/mpris.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); -#line 234 "../src/mpris.vala" - g_clear_error (&_inner_error0_); -#line 234 "../src/mpris.vala" - return; -#line 3093 "mpris.c" - } -#line 164 "../src/mpris.vala" - _g_variant_unref0 (dbus_value); -#line 164 "../src/mpris.vala" - _g_free0 (dbus_name); -#line 164 "../src/mpris.vala" - _g_variant_builder_unref0 (invalid_builder); -#line 164 "../src/mpris.vala" - _g_variant_builder_unref0 (builder); -#line 3103 "mpris.c" -} - -static void -___lambda25__g_object_notify (GObject* _sender, - GParamSpec* pspec, - gpointer self) -{ -#line 164 "../src/mpris.vala" - __lambda25_ (self, pspec); -#line 3113 "mpris.c" -} - -MprisPlayer* -mpris_player_construct (GType object_type, - GDBusConnection* conn, - Playbin* playbin) -{ - MprisPlayer * self = NULL; - Block2Data* _data2_; - GDBusConnection* _tmp0_; - Playbin* _tmp1_; -#line 77 "../src/mpris.vala" - g_return_val_if_fail (conn != NULL, NULL); -#line 77 "../src/mpris.vala" - g_return_val_if_fail (playbin != NULL, NULL); -#line 77 "../src/mpris.vala" - _data2_ = g_slice_new0 (Block2Data); -#line 77 "../src/mpris.vala" - _data2_->_ref_count_ = 1; -#line 77 "../src/mpris.vala" - _tmp0_ = _g_object_ref0 (conn); -#line 77 "../src/mpris.vala" - _g_object_unref0 (_data2_->conn); -#line 77 "../src/mpris.vala" - _data2_->conn = _tmp0_; -#line 77 "../src/mpris.vala" - _tmp1_ = _g_object_ref0 (playbin); -#line 77 "../src/mpris.vala" - _g_object_unref0 (_data2_->playbin); -#line 77 "../src/mpris.vala" - _data2_->playbin = _tmp1_; -#line 77 "../src/mpris.vala" - self = (MprisPlayer*) g_object_new (object_type, NULL); -#line 77 "../src/mpris.vala" - _data2_->self = g_object_ref (self); -#line 78 "../src/mpris.vala" - g_object_bind_property_with_closures ((GObject*) _data2_->playbin, "state", (GObject*) self, "playback_status", G_BINDING_DEFAULT, (GClosure*) ((___lambda14__gbinding_transform_func == NULL) ? NULL : g_cclosure_new ((GCallback) ___lambda14__gbinding_transform_func, g_object_ref (self), (GClosureNotify) g_object_unref)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL))); -#line 113 "../src/mpris.vala" - g_object_bind_property_with_closures ((GObject*) _data2_->playbin, "volume", (GObject*) self, "volume", G_BINDING_BIDIRECTIONAL, (GClosure*) ((___lambda15__gbinding_transform_func == NULL) ? NULL : g_cclosure_new ((GCallback) ___lambda15__gbinding_transform_func, g_object_ref (self), (GClosureNotify) g_object_unref)), (GClosure*) ((___lambda16__gbinding_transform_func == NULL) ? NULL : g_cclosure_new ((GCallback) ___lambda16__gbinding_transform_func, g_object_ref (self), (GClosureNotify) g_object_unref))); -#line 127 "../src/mpris.vala" - g_signal_connect_object (_data2_->playbin, "new-track", (GCallback) ___lambda17__playbin_new_track, self, 0); -#line 145 "../src/mpris.vala" - g_signal_connect_object (_data2_->playbin, "stopped", (GCallback) ___lambda18__playbin_stopped, self, 0); -#line 149 "../src/mpris.vala" - g_signal_connect_data (self, "on-next", (GCallback) ___lambda19__mpris_player_on_next, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); -#line 150 "../src/mpris.vala" - g_signal_connect_data (self, "on-previous", (GCallback) ___lambda20__mpris_player_on_previous, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); -#line 151 "../src/mpris.vala" - g_signal_connect_data (self, "on-play", (GCallback) ___lambda21__mpris_player_on_play, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); -#line 152 "../src/mpris.vala" - g_signal_connect_data (self, "on-pause", (GCallback) ___lambda22__mpris_player_on_pause, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); -#line 153 "../src/mpris.vala" - g_signal_connect_data (self, "on-play-pause", (GCallback) ___lambda23__mpris_player_on_play_pause, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); -#line 157 "../src/mpris.vala" - g_signal_connect_data (self, "on-stop", (GCallback) ___lambda24__mpris_player_on_stop, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); -#line 164 "../src/mpris.vala" - g_signal_connect_data ((GObject*) self, "notify", (GCallback) ___lambda25__g_object_notify, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); -#line 77 "../src/mpris.vala" - block2_data_unref (_data2_); -#line 77 "../src/mpris.vala" - _data2_ = NULL; -#line 77 "../src/mpris.vala" - return self; -#line 3177 "mpris.c" -} - -MprisPlayer* -mpris_player_new (GDBusConnection* conn, - Playbin* playbin) -{ -#line 77 "../src/mpris.vala" - return mpris_player_construct (TYPE_MPRIS_PLAYER, conn, playbin); -#line 3186 "mpris.c" -} - -gchar* -mpris_player_get_playback_status (MprisPlayer* self) -{ - gchar* result; - const gchar* _tmp0_; - gchar* _tmp1_; -#line 57 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 57 "../src/mpris.vala" - _tmp0_ = self->priv->_playback_status; -#line 57 "../src/mpris.vala" - _tmp1_ = g_strdup (_tmp0_); -#line 57 "../src/mpris.vala" - result = _tmp1_; -#line 57 "../src/mpris.vala" - return result; -#line 3205 "mpris.c" -} - -void -mpris_player_set_playback_status (MprisPlayer* self, - const gchar* value) -{ - gchar* old_value; -#line 57 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 57 "../src/mpris.vala" - old_value = mpris_player_get_playback_status (self); -#line 57 "../src/mpris.vala" - if (g_strcmp0 (value, old_value) != 0) { -#line 3219 "mpris.c" - gchar* _tmp0_; -#line 57 "../src/mpris.vala" - _tmp0_ = g_strdup (value); -#line 57 "../src/mpris.vala" - _g_free0 (self->priv->_playback_status); -#line 57 "../src/mpris.vala" - self->priv->_playback_status = _tmp0_; -#line 57 "../src/mpris.vala" - g_object_notify_by_pspec ((GObject *) self, mpris_player_properties[MPRIS_PLAYER_PLAYBACK_STATUS_PROPERTY]); -#line 3229 "mpris.c" - } -#line 57 "../src/mpris.vala" - _g_free0 (old_value); -#line 3233 "mpris.c" -} - -gchar* -mpris_player_get_loop_status (MprisPlayer* self) -{ - gchar* result; - const gchar* _tmp0_; - gchar* _tmp1_; -#line 58 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 58 "../src/mpris.vala" - _tmp0_ = self->priv->_loop_status; -#line 58 "../src/mpris.vala" - _tmp1_ = g_strdup (_tmp0_); -#line 58 "../src/mpris.vala" - result = _tmp1_; -#line 58 "../src/mpris.vala" - return result; -#line 3252 "mpris.c" -} - -gdouble -mpris_player_get_rate (MprisPlayer* self) -{ - gdouble result; -#line 59 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, 0.0); -#line 59 "../src/mpris.vala" - result = self->priv->_rate; -#line 59 "../src/mpris.vala" - return result; -#line 3265 "mpris.c" -} - -gboolean -mpris_player_get_shuffle (MprisPlayer* self) -{ - gboolean result; -#line 60 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 60 "../src/mpris.vala" - result = self->priv->_shuffle; -#line 60 "../src/mpris.vala" - return result; -#line 3278 "mpris.c" -} - -static gpointer -_g_hash_table_ref0 (gpointer self) -{ -#line 61 "../src/mpris.vala" - return self ? g_hash_table_ref (self) : NULL; -#line 3286 "mpris.c" -} - -GHashTable* -mpris_player_get_metadata (MprisPlayer* self) -{ - GHashTable* result; - GHashTable* _tmp0_; - GHashTable* _tmp1_; -#line 61 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 61 "../src/mpris.vala" - _tmp0_ = self->priv->_metadata; -#line 61 "../src/mpris.vala" - _tmp1_ = _g_hash_table_ref0 (_tmp0_); -#line 61 "../src/mpris.vala" - result = _tmp1_; -#line 61 "../src/mpris.vala" - return result; -#line 3305 "mpris.c" -} - -static void -mpris_player_set_metadata (MprisPlayer* self, - GHashTable* value) -{ - GHashTable* old_value; -#line 61 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 61 "../src/mpris.vala" - old_value = mpris_player_get_metadata (self); -#line 61 "../src/mpris.vala" - if (old_value != value) { -#line 3319 "mpris.c" - GHashTable* _tmp0_; -#line 61 "../src/mpris.vala" - _tmp0_ = _g_hash_table_ref0 (value); -#line 61 "../src/mpris.vala" - _g_hash_table_unref0 (self->priv->_metadata); -#line 61 "../src/mpris.vala" - self->priv->_metadata = _tmp0_; -#line 61 "../src/mpris.vala" - g_object_notify_by_pspec ((GObject *) self, mpris_player_properties[MPRIS_PLAYER_METADATA_PROPERTY]); -#line 3329 "mpris.c" - } -#line 61 "../src/mpris.vala" - _g_hash_table_unref0 (old_value); -#line 3333 "mpris.c" -} - -gdouble -mpris_player_get_volume (MprisPlayer* self) -{ - gdouble result; -#line 62 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, 0.0); -#line 62 "../src/mpris.vala" - result = self->priv->_volume; -#line 62 "../src/mpris.vala" - return result; -#line 3346 "mpris.c" -} - -void -mpris_player_set_volume (MprisPlayer* self, - gdouble value) -{ - gdouble old_value; -#line 62 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 62 "../src/mpris.vala" - old_value = mpris_player_get_volume (self); -#line 62 "../src/mpris.vala" - if (old_value != value) { -#line 62 "../src/mpris.vala" - self->priv->_volume = value; -#line 62 "../src/mpris.vala" - g_object_notify_by_pspec ((GObject *) self, mpris_player_properties[MPRIS_PLAYER_VOLUME_PROPERTY]); -#line 3364 "mpris.c" - } -} - -gint64 -mpris_player_get_position (MprisPlayer* self) -{ - gint64 result; -#line 64 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, 0LL); -#line 64 "../src/mpris.vala" - result = self->priv->_position; -#line 64 "../src/mpris.vala" - return result; -#line 3378 "mpris.c" -} - -gdouble -mpris_player_get_minimum_rate (MprisPlayer* self) -{ - gdouble result; -#line 65 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, 0.0); -#line 65 "../src/mpris.vala" - result = 1.0; -#line 65 "../src/mpris.vala" - return result; -#line 3391 "mpris.c" -} - -gdouble -mpris_player_get_maximum_rate (MprisPlayer* self) -{ - gdouble result; -#line 66 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, 0.0); -#line 66 "../src/mpris.vala" - result = 1.0; -#line 66 "../src/mpris.vala" - return result; -#line 3404 "mpris.c" -} - -gboolean -mpris_player_get_can_go_next (MprisPlayer* self) -{ - gboolean result; -#line 67 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 67 "../src/mpris.vala" - result = self->priv->_can_go_next; -#line 67 "../src/mpris.vala" - return result; -#line 3417 "mpris.c" -} - -static void -mpris_player_set_can_go_next (MprisPlayer* self, - gboolean value) -{ - gboolean old_value; -#line 67 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 67 "../src/mpris.vala" - old_value = mpris_player_get_can_go_next (self); -#line 67 "../src/mpris.vala" - if (old_value != value) { -#line 67 "../src/mpris.vala" - self->priv->_can_go_next = value; -#line 67 "../src/mpris.vala" - g_object_notify_by_pspec ((GObject *) self, mpris_player_properties[MPRIS_PLAYER_CAN_GO_NEXT_PROPERTY]); -#line 3435 "mpris.c" - } -} - -gboolean -mpris_player_get_can_go_previous (MprisPlayer* self) -{ - gboolean result; -#line 68 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 68 "../src/mpris.vala" - result = self->priv->_can_go_previous; -#line 68 "../src/mpris.vala" - return result; -#line 3449 "mpris.c" -} - -static void -mpris_player_set_can_go_previous (MprisPlayer* self, - gboolean value) -{ - gboolean old_value; -#line 68 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 68 "../src/mpris.vala" - old_value = mpris_player_get_can_go_previous (self); -#line 68 "../src/mpris.vala" - if (old_value != value) { -#line 68 "../src/mpris.vala" - self->priv->_can_go_previous = value; -#line 68 "../src/mpris.vala" - g_object_notify_by_pspec ((GObject *) self, mpris_player_properties[MPRIS_PLAYER_CAN_GO_PREVIOUS_PROPERTY]); -#line 3467 "mpris.c" - } -} - -gboolean -mpris_player_get_can_play (MprisPlayer* self) -{ - gboolean result; -#line 69 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 69 "../src/mpris.vala" - result = self->priv->_can_play; -#line 69 "../src/mpris.vala" - return result; -#line 3481 "mpris.c" -} - -static void -mpris_player_set_can_play (MprisPlayer* self, - gboolean value) -{ - gboolean old_value; -#line 69 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 69 "../src/mpris.vala" - old_value = mpris_player_get_can_play (self); -#line 69 "../src/mpris.vala" - if (old_value != value) { -#line 69 "../src/mpris.vala" - self->priv->_can_play = value; -#line 69 "../src/mpris.vala" - g_object_notify_by_pspec ((GObject *) self, mpris_player_properties[MPRIS_PLAYER_CAN_PLAY_PROPERTY]); -#line 3499 "mpris.c" - } -} - -gboolean -mpris_player_get_can_pause (MprisPlayer* self) -{ - gboolean result; -#line 70 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 70 "../src/mpris.vala" - result = self->priv->_can_pause; -#line 70 "../src/mpris.vala" - return result; -#line 3513 "mpris.c" -} - -static void -mpris_player_set_can_pause (MprisPlayer* self, - gboolean value) -{ - gboolean old_value; -#line 70 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 70 "../src/mpris.vala" - old_value = mpris_player_get_can_pause (self); -#line 70 "../src/mpris.vala" - if (old_value != value) { -#line 70 "../src/mpris.vala" - self->priv->_can_pause = value; -#line 70 "../src/mpris.vala" - g_object_notify_by_pspec ((GObject *) self, mpris_player_properties[MPRIS_PLAYER_CAN_PAUSE_PROPERTY]); -#line 3531 "mpris.c" - } -} - -gboolean -mpris_player_get_can_seek (MprisPlayer* self) -{ - gboolean result; -#line 71 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 71 "../src/mpris.vala" - result = self->priv->_can_seek; -#line 71 "../src/mpris.vala" - return result; -#line 3545 "mpris.c" -} - -static void -mpris_player_set_can_seek (MprisPlayer* self, - gboolean value) -{ - gboolean old_value; -#line 71 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 71 "../src/mpris.vala" - old_value = mpris_player_get_can_seek (self); -#line 71 "../src/mpris.vala" - if (old_value != value) { -#line 71 "../src/mpris.vala" - self->priv->_can_seek = value; -#line 71 "../src/mpris.vala" - g_object_notify_by_pspec ((GObject *) self, mpris_player_properties[MPRIS_PLAYER_CAN_SEEK_PROPERTY]); -#line 3563 "mpris.c" - } -} - -gboolean -mpris_player_get_can_control (MprisPlayer* self) -{ - gboolean result; -#line 73 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 73 "../src/mpris.vala" - result = TRUE; -#line 73 "../src/mpris.vala" - return result; -#line 3577 "mpris.c" -} - -SubsonicClient* -mpris_player_get_api (MprisPlayer* self) -{ - SubsonicClient* result; - SubsonicClient* _tmp0_; -#line 75 "../src/mpris.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 75 "../src/mpris.vala" - _tmp0_ = self->priv->_api; -#line 75 "../src/mpris.vala" - result = _tmp0_; -#line 75 "../src/mpris.vala" - return result; -#line 3593 "mpris.c" -} - -void -mpris_player_set_api (MprisPlayer* self, - SubsonicClient* value) -{ - SubsonicClient* old_value; -#line 75 "../src/mpris.vala" - g_return_if_fail (self != NULL); -#line 75 "../src/mpris.vala" - old_value = mpris_player_get_api (self); -#line 75 "../src/mpris.vala" - if (old_value != value) { -#line 3607 "mpris.c" - SubsonicClient* _tmp0_; -#line 75 "../src/mpris.vala" - _tmp0_ = _g_object_ref0 (value); -#line 75 "../src/mpris.vala" - _g_object_unref0 (self->priv->_api); -#line 75 "../src/mpris.vala" - self->priv->_api = _tmp0_; -#line 75 "../src/mpris.vala" - g_object_notify_by_pspec ((GObject *) self, mpris_player_properties[MPRIS_PLAYER_API_PROPERTY]); -#line 3617 "mpris.c" - } -} - -static void -g_cclosure_user_marshal_VOID__INT64 (GClosure * closure, - GValue * return_value, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint, - gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__INT64) (gpointer data1, gint64 arg_1, gpointer data2); - register GMarshalFunc_VOID__INT64 callback; - register GCClosure * cc; - register gpointer data1; - register gpointer data2; - cc = (GCClosure *) closure; -#line 35 "../src/mpris.vala" - g_return_if_fail (n_param_values == 2); -#line 35 "../src/mpris.vala" - if (G_CCLOSURE_SWAP_DATA (closure)) { -#line 35 "../src/mpris.vala" - data1 = closure->data; -#line 35 "../src/mpris.vala" - data2 = param_values->data[0].v_pointer; -#line 3643 "mpris.c" - } else { -#line 35 "../src/mpris.vala" - data1 = param_values->data[0].v_pointer; -#line 35 "../src/mpris.vala" - data2 = closure->data; -#line 3649 "mpris.c" - } -#line 35 "../src/mpris.vala" - callback = (GMarshalFunc_VOID__INT64) (marshal_data ? marshal_data : cc->callback); -#line 35 "../src/mpris.vala" - callback (data1, g_value_get_int64 (param_values + 1), data2); -#line 3655 "mpris.c" -} - -static void -g_cclosure_user_marshal_VOID__STRING_INT64 (GClosure * closure, - GValue * return_value, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint, - gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__STRING_INT64) (gpointer data1, const char* arg_1, gint64 arg_2, gpointer data2); - register GMarshalFunc_VOID__STRING_INT64 callback; - register GCClosure * cc; - register gpointer data1; - register gpointer data2; - cc = (GCClosure *) closure; -#line 35 "../src/mpris.vala" - g_return_if_fail (n_param_values == 3); -#line 35 "../src/mpris.vala" - if (G_CCLOSURE_SWAP_DATA (closure)) { -#line 35 "../src/mpris.vala" - data1 = closure->data; -#line 35 "../src/mpris.vala" - data2 = param_values->data[0].v_pointer; -#line 3680 "mpris.c" - } else { -#line 35 "../src/mpris.vala" - data1 = param_values->data[0].v_pointer; -#line 35 "../src/mpris.vala" - data2 = closure->data; -#line 3686 "mpris.c" - } -#line 35 "../src/mpris.vala" - callback = (GMarshalFunc_VOID__STRING_INT64) (marshal_data ? marshal_data : cc->callback); -#line 35 "../src/mpris.vala" - callback (data1, g_value_get_string (param_values + 1), g_value_get_int64 (param_values + 2), data2); -#line 3692 "mpris.c" -} - -static void -mpris_player_class_init (MprisPlayerClass * klass, - gpointer klass_data) -{ -#line 35 "../src/mpris.vala" - mpris_player_parent_class = g_type_class_peek_parent (klass); -#line 35 "../src/mpris.vala" - g_type_class_adjust_private_offset (klass, &MprisPlayer_private_offset); -#line 35 "../src/mpris.vala" - G_OBJECT_CLASS (klass)->get_property = _vala_mpris_player_get_property; -#line 35 "../src/mpris.vala" - G_OBJECT_CLASS (klass)->set_property = _vala_mpris_player_set_property; -#line 35 "../src/mpris.vala" - G_OBJECT_CLASS (klass)->finalize = mpris_player_finalize; -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_PLAYBACK_STATUS_PROPERTY, mpris_player_properties[MPRIS_PLAYER_PLAYBACK_STATUS_PROPERTY] = g_param_spec_string ("playback-status", "playback-status", "playback-status", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_LOOP_STATUS_PROPERTY, mpris_player_properties[MPRIS_PLAYER_LOOP_STATUS_PROPERTY] = g_param_spec_string ("loop-status", "loop-status", "loop-status", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_RATE_PROPERTY, mpris_player_properties[MPRIS_PLAYER_RATE_PROPERTY] = g_param_spec_double ("rate", "rate", "rate", -G_MAXDOUBLE, G_MAXDOUBLE, 1.0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_SHUFFLE_PROPERTY, mpris_player_properties[MPRIS_PLAYER_SHUFFLE_PROPERTY] = g_param_spec_boolean ("shuffle", "shuffle", "shuffle", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_METADATA_PROPERTY, mpris_player_properties[MPRIS_PLAYER_METADATA_PROPERTY] = g_param_spec_boxed ("metadata", "metadata", "metadata", G_TYPE_HASH_TABLE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_VOLUME_PROPERTY, mpris_player_properties[MPRIS_PLAYER_VOLUME_PROPERTY] = g_param_spec_double ("volume", "volume", "volume", -G_MAXDOUBLE, G_MAXDOUBLE, 1.0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_POSITION_PROPERTY, mpris_player_properties[MPRIS_PLAYER_POSITION_PROPERTY] = g_param_spec_int64 ("position", "position", "position", G_MININT64, G_MAXINT64, (gint64) 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_MINIMUM_RATE_PROPERTY, mpris_player_properties[MPRIS_PLAYER_MINIMUM_RATE_PROPERTY] = g_param_spec_double ("minimum-rate", "minimum-rate", "minimum-rate", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_MAXIMUM_RATE_PROPERTY, mpris_player_properties[MPRIS_PLAYER_MAXIMUM_RATE_PROPERTY] = g_param_spec_double ("maximum-rate", "maximum-rate", "maximum-rate", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_CAN_GO_NEXT_PROPERTY, mpris_player_properties[MPRIS_PLAYER_CAN_GO_NEXT_PROPERTY] = g_param_spec_boolean ("can-go-next", "can-go-next", "can-go-next", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_CAN_GO_PREVIOUS_PROPERTY, mpris_player_properties[MPRIS_PLAYER_CAN_GO_PREVIOUS_PROPERTY] = g_param_spec_boolean ("can-go-previous", "can-go-previous", "can-go-previous", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_CAN_PLAY_PROPERTY, mpris_player_properties[MPRIS_PLAYER_CAN_PLAY_PROPERTY] = g_param_spec_boolean ("can-play", "can-play", "can-play", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_CAN_PAUSE_PROPERTY, mpris_player_properties[MPRIS_PLAYER_CAN_PAUSE_PROPERTY] = g_param_spec_boolean ("can-pause", "can-pause", "can-pause", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_CAN_SEEK_PROPERTY, mpris_player_properties[MPRIS_PLAYER_CAN_SEEK_PROPERTY] = g_param_spec_boolean ("can-seek", "can-seek", "can-seek", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_CAN_CONTROL_PROPERTY, mpris_player_properties[MPRIS_PLAYER_CAN_CONTROL_PROPERTY] = g_param_spec_boolean ("can-control", "can-control", "can-control", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY)); -#line 35 "../src/mpris.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), MPRIS_PLAYER_API_PROPERTY, mpris_player_properties[MPRIS_PLAYER_API_PROPERTY] = g_param_spec_object ("api", "api", "api", SUBSONIC_TYPE_CLIENT, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 35 "../src/mpris.vala" - mpris_player_signals[MPRIS_PLAYER_ON_NEXT_SIGNAL] = g_signal_new ("on-next", TYPE_MPRIS_PLAYER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -#line 35 "../src/mpris.vala" - mpris_player_signals[MPRIS_PLAYER_ON_PREVIOUS_SIGNAL] = g_signal_new ("on-previous", TYPE_MPRIS_PLAYER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -#line 35 "../src/mpris.vala" - mpris_player_signals[MPRIS_PLAYER_ON_PAUSE_SIGNAL] = g_signal_new ("on-pause", TYPE_MPRIS_PLAYER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -#line 35 "../src/mpris.vala" - mpris_player_signals[MPRIS_PLAYER_ON_PLAY_PAUSE_SIGNAL] = g_signal_new ("on-play-pause", TYPE_MPRIS_PLAYER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -#line 35 "../src/mpris.vala" - mpris_player_signals[MPRIS_PLAYER_ON_STOP_SIGNAL] = g_signal_new ("on-stop", TYPE_MPRIS_PLAYER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -#line 35 "../src/mpris.vala" - mpris_player_signals[MPRIS_PLAYER_ON_PLAY_SIGNAL] = g_signal_new ("on-play", TYPE_MPRIS_PLAYER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -#line 35 "../src/mpris.vala" - mpris_player_signals[MPRIS_PLAYER_ON_SEEK_SIGNAL] = g_signal_new ("on-seek", TYPE_MPRIS_PLAYER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT64, G_TYPE_NONE, 1, G_TYPE_INT64); -#line 35 "../src/mpris.vala" - mpris_player_signals[MPRIS_PLAYER_ON_SET_POSITION_SIGNAL] = g_signal_new ("on-set-position", TYPE_MPRIS_PLAYER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_INT64, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT64); -#line 35 "../src/mpris.vala" - mpris_player_signals[MPRIS_PLAYER_SEEKED_SIGNAL] = g_signal_new ("seeked", TYPE_MPRIS_PLAYER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT64, G_TYPE_NONE, 1, G_TYPE_INT64); -#line 3759 "mpris.c" -} - -static void -mpris_player_instance_init (MprisPlayer * self, - gpointer klass) -{ - gchar* _tmp0_; - gchar* _tmp1_; - GHashTable* _tmp2_; -#line 35 "../src/mpris.vala" - self->priv = mpris_player_get_instance_private (self); -#line 57 "../src/mpris.vala" - _tmp0_ = g_strdup ("Stopped"); -#line 57 "../src/mpris.vala" - self->priv->_playback_status = _tmp0_; -#line 58 "../src/mpris.vala" - _tmp1_ = g_strdup ("None"); -#line 58 "../src/mpris.vala" - self->priv->_loop_status = _tmp1_; -#line 59 "../src/mpris.vala" - self->priv->_rate = 1.0; -#line 60 "../src/mpris.vala" - self->priv->_shuffle = FALSE; -#line 61 "../src/mpris.vala" - _tmp2_ = g_hash_table_new_full (NULL, NULL, _g_free0_, _g_variant_unref0_); -#line 61 "../src/mpris.vala" - self->priv->_metadata = _tmp2_; -#line 62 "../src/mpris.vala" - self->priv->_volume = 1.0; -#line 64 "../src/mpris.vala" - self->priv->_position = (gint64) 0; -#line 67 "../src/mpris.vala" - self->priv->_can_go_next = FALSE; -#line 68 "../src/mpris.vala" - self->priv->_can_go_previous = FALSE; -#line 69 "../src/mpris.vala" - self->priv->_can_play = FALSE; -#line 70 "../src/mpris.vala" - self->priv->_can_pause = FALSE; -#line 71 "../src/mpris.vala" - self->priv->_can_seek = FALSE; -#line 3801 "mpris.c" -} - -static void -mpris_player_finalize (GObject * obj) -{ - MprisPlayer * self; -#line 35 "../src/mpris.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MPRIS_PLAYER, MprisPlayer); -#line 252 "../src/mpris.vala" - g_debug ("mpris.vala:252: destroying mpris player"); -#line 57 "../src/mpris.vala" - _g_free0 (self->priv->_playback_status); -#line 58 "../src/mpris.vala" - _g_free0 (self->priv->_loop_status); -#line 61 "../src/mpris.vala" - _g_hash_table_unref0 (self->priv->_metadata); -#line 75 "../src/mpris.vala" - _g_object_unref0 (self->priv->_api); -#line 35 "../src/mpris.vala" - G_OBJECT_CLASS (mpris_player_parent_class)->finalize (obj); -#line 3822 "mpris.c" -} - -static GType -mpris_player_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (MprisPlayerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mpris_player_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MprisPlayer), 0, (GInstanceInitFunc) mpris_player_instance_init, NULL }; - GType mpris_player_type_id; - mpris_player_type_id = g_type_register_static (G_TYPE_OBJECT, "MprisPlayer", &g_define_type_info, 0); - g_type_set_qdata (mpris_player_type_id, g_quark_from_static_string ("vala-dbus-register-object"), (void*) mpris_player_register_object); - MprisPlayer_private_offset = g_type_add_instance_private (mpris_player_type_id, sizeof (MprisPlayerPrivate)); - return mpris_player_type_id; -} - -GType -mpris_player_get_type (void) -{ - static volatile gsize mpris_player_type_id__once = 0; - if (g_once_init_enter (&mpris_player_type_id__once)) { - GType mpris_player_type_id; - mpris_player_type_id = mpris_player_get_type_once (); - g_once_init_leave (&mpris_player_type_id__once, mpris_player_type_id); - } - return mpris_player_type_id__once; -} - -static void -_vala_mpris_player_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec) -{ - MprisPlayer * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_MPRIS_PLAYER, MprisPlayer); -#line 35 "../src/mpris.vala" - switch (property_id) { -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_PLAYBACK_STATUS_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_take_string (value, mpris_player_get_playback_status (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_LOOP_STATUS_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_take_string (value, mpris_player_get_loop_status (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_RATE_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_double (value, mpris_player_get_rate (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_SHUFFLE_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_boolean (value, mpris_player_get_shuffle (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_METADATA_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_take_boxed (value, mpris_player_get_metadata (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_VOLUME_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_double (value, mpris_player_get_volume (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_POSITION_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_int64 (value, mpris_player_get_position (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_MINIMUM_RATE_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_double (value, mpris_player_get_minimum_rate (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_MAXIMUM_RATE_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_double (value, mpris_player_get_maximum_rate (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_GO_NEXT_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_boolean (value, mpris_player_get_can_go_next (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_GO_PREVIOUS_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_boolean (value, mpris_player_get_can_go_previous (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_PLAY_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_boolean (value, mpris_player_get_can_play (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_PAUSE_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_boolean (value, mpris_player_get_can_pause (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_SEEK_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_boolean (value, mpris_player_get_can_seek (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_CONTROL_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_boolean (value, mpris_player_get_can_control (self)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_API_PROPERTY: -#line 35 "../src/mpris.vala" - g_value_set_object (value, mpris_player_get_api (self)); -#line 35 "../src/mpris.vala" - break; -#line 3954 "mpris.c" - default: -#line 35 "../src/mpris.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 35 "../src/mpris.vala" - break; -#line 3960 "mpris.c" - } -} - -static void -_vala_mpris_player_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - MprisPlayer * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_MPRIS_PLAYER, MprisPlayer); -#line 35 "../src/mpris.vala" - switch (property_id) { -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_PLAYBACK_STATUS_PROPERTY: -#line 35 "../src/mpris.vala" - mpris_player_set_playback_status (self, g_value_get_string (value)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_METADATA_PROPERTY: -#line 35 "../src/mpris.vala" - mpris_player_set_metadata (self, g_value_get_boxed (value)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_VOLUME_PROPERTY: -#line 35 "../src/mpris.vala" - mpris_player_set_volume (self, g_value_get_double (value)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_GO_NEXT_PROPERTY: -#line 35 "../src/mpris.vala" - mpris_player_set_can_go_next (self, g_value_get_boolean (value)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_GO_PREVIOUS_PROPERTY: -#line 35 "../src/mpris.vala" - mpris_player_set_can_go_previous (self, g_value_get_boolean (value)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_PLAY_PROPERTY: -#line 35 "../src/mpris.vala" - mpris_player_set_can_play (self, g_value_get_boolean (value)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_PAUSE_PROPERTY: -#line 35 "../src/mpris.vala" - mpris_player_set_can_pause (self, g_value_get_boolean (value)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_CAN_SEEK_PROPERTY: -#line 35 "../src/mpris.vala" - mpris_player_set_can_seek (self, g_value_get_boolean (value)); -#line 35 "../src/mpris.vala" - break; -#line 35 "../src/mpris.vala" - case MPRIS_PLAYER_API_PROPERTY: -#line 35 "../src/mpris.vala" - mpris_player_set_api (self, g_value_get_object (value)); -#line 35 "../src/mpris.vala" - break; -#line 4028 "mpris.c" - default: -#line 35 "../src/mpris.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 35 "../src/mpris.vala" - break; -#line 4034 "mpris.c" - } -} - -static void -_dbus_mpris_player_next (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - mpris_player_next (self, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - return; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); -} - -static void -_dbus_mpris_player_previous (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - mpris_player_previous (self, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - return; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); -} - -static void -_dbus_mpris_player_pause (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - mpris_player_pause (self, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - return; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); -} - -static void -_dbus_mpris_player_play_pause (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - mpris_player_play_pause (self, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - return; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); -} - -static void -_dbus_mpris_player_stop (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - mpris_player_stop (self, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - return; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); -} - -static void -_dbus_mpris_player_play (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - mpris_player_play (self, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - return; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); -} - -static void -_dbus_mpris_player_seek (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - gint64 offset = 0LL; - GVariant* _tmp6_; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - _tmp6_ = g_variant_iter_next_value (&_arguments_iter); - offset = g_variant_get_int64 (_tmp6_); - g_variant_unref (_tmp6_); - mpris_player_seek (self, offset, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - return; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); -} - -static void -_dbus_mpris_player_set_position (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - char* track_id = NULL; - GVariant* _tmp7_; - gint64 position = 0LL; - GVariant* _tmp8_; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - _tmp7_ = g_variant_iter_next_value (&_arguments_iter); - track_id = g_variant_dup_string (_tmp7_, NULL); - g_variant_unref (_tmp7_); - _tmp8_ = g_variant_iter_next_value (&_arguments_iter); - position = g_variant_get_int64 (_tmp8_); - g_variant_unref (_tmp8_); - mpris_player_set_position (self, track_id, position, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - goto _error; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); - _error: - _g_free0 (track_id); - ; -} - -static void -_dbus_mpris_player_open_uri (MprisPlayer* self, - GVariant* _parameters_, - GDBusMethodInvocation* invocation) -{ - GError* error = NULL; - GVariantIter _arguments_iter; - gchar* uri = NULL; - GVariant* _tmp9_; - GDBusMessage* _reply_message = NULL; - GVariant* _reply; - GVariantBuilder _reply_builder; - g_variant_iter_init (&_arguments_iter, _parameters_); - _tmp9_ = g_variant_iter_next_value (&_arguments_iter); - uri = g_variant_dup_string (_tmp9_, NULL); - g_variant_unref (_tmp9_); - mpris_player_open_uri (self, uri, &error); - if (error) { - g_dbus_method_invocation_take_error (invocation, error); - goto _error; - } - _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation)); - g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); - _reply = g_variant_builder_end (&_reply_builder); - g_dbus_message_set_body (_reply_message, _reply); - g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); - g_object_unref (invocation); - g_object_unref (_reply_message); - _error: - _g_free0 (uri); - ; -} - -static void -mpris_player_dbus_interface_method_call (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* method_name, - GVariant* parameters, - GDBusMethodInvocation* invocation, - gpointer user_data) -{ - gpointer* data; - gpointer object; - data = user_data; - object = data[0]; - if (strcmp (method_name, "Next") == 0) { - _dbus_mpris_player_next (object, parameters, invocation); - } else if (strcmp (method_name, "Previous") == 0) { - _dbus_mpris_player_previous (object, parameters, invocation); - } else if (strcmp (method_name, "Pause") == 0) { - _dbus_mpris_player_pause (object, parameters, invocation); - } else if (strcmp (method_name, "PlayPause") == 0) { - _dbus_mpris_player_play_pause (object, parameters, invocation); - } else if (strcmp (method_name, "Stop") == 0) { - _dbus_mpris_player_stop (object, parameters, invocation); - } else if (strcmp (method_name, "Play") == 0) { - _dbus_mpris_player_play (object, parameters, invocation); - } else if (strcmp (method_name, "Seek") == 0) { - _dbus_mpris_player_seek (object, parameters, invocation); - } else if (strcmp (method_name, "SetPosition") == 0) { - _dbus_mpris_player_set_position (object, parameters, invocation); - } else if (strcmp (method_name, "OpenUri") == 0) { - _dbus_mpris_player_open_uri (object, parameters, invocation); - } else { - g_object_unref (invocation); - } -} - -static GVariant* -_dbus_mpris_player_get_playback_status (MprisPlayer* self) -{ - gchar* result; - GVariant* _reply; - result = mpris_player_get_playback_status (self); - _reply = g_variant_new_string (result); - _g_free0 (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_loop_status (MprisPlayer* self) -{ - gchar* result; - GVariant* _reply; - result = mpris_player_get_loop_status (self); - _reply = g_variant_new_string (result); - _g_free0 (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_rate (MprisPlayer* self) -{ - gdouble result; - GVariant* _reply; - result = mpris_player_get_rate (self); - _reply = g_variant_new_double (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_shuffle (MprisPlayer* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_player_get_shuffle (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_metadata (MprisPlayer* self) -{ - GHashTable* result; - GVariant* _reply; - GVariantBuilder _tmp10_; - GHashTableIter _tmp11_; - gpointer _tmp12_; - gpointer _tmp13_; - result = mpris_player_get_metadata (self); - g_hash_table_iter_init (&_tmp11_, result); - g_variant_builder_init (&_tmp10_, G_VARIANT_TYPE ("a{sv}")); - while (g_hash_table_iter_next (&_tmp11_, &_tmp12_, &_tmp13_)) { - gchar* _key; - GVariant* _value; - _key = (gchar*) _tmp12_; - _value = (GVariant*) _tmp13_; - g_variant_builder_add (&_tmp10_, "{?*}", g_variant_new_string (_key), g_variant_new_variant (_value)); - } - _reply = g_variant_builder_end (&_tmp10_); - _g_hash_table_unref0 (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_volume (MprisPlayer* self) -{ - gdouble result; - GVariant* _reply; - result = mpris_player_get_volume (self); - _reply = g_variant_new_double (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_position (MprisPlayer* self) -{ - gint64 result; - GVariant* _reply; - result = mpris_player_get_position (self); - _reply = g_variant_new_int64 (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_minimum_rate (MprisPlayer* self) -{ - gdouble result; - GVariant* _reply; - result = mpris_player_get_minimum_rate (self); - _reply = g_variant_new_double (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_maximum_rate (MprisPlayer* self) -{ - gdouble result; - GVariant* _reply; - result = mpris_player_get_maximum_rate (self); - _reply = g_variant_new_double (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_can_go_next (MprisPlayer* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_player_get_can_go_next (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_can_go_previous (MprisPlayer* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_player_get_can_go_previous (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_can_play (MprisPlayer* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_player_get_can_play (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_can_pause (MprisPlayer* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_player_get_can_pause (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_can_seek (MprisPlayer* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_player_get_can_seek (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -_dbus_mpris_player_get_can_control (MprisPlayer* self) -{ - gboolean result; - GVariant* _reply; - result = mpris_player_get_can_control (self); - _reply = g_variant_new_boolean (result); - return _reply; -} - -static GVariant* -mpris_player_dbus_interface_get_property (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* property_name, - GError** error, - gpointer user_data) -{ - gpointer* data; - gpointer object; - data = user_data; - object = data[0]; - if (strcmp (property_name, "PlaybackStatus") == 0) { - return _dbus_mpris_player_get_playback_status (object); - } else if (strcmp (property_name, "LoopStatus") == 0) { - return _dbus_mpris_player_get_loop_status (object); - } else if (strcmp (property_name, "Rate") == 0) { - return _dbus_mpris_player_get_rate (object); - } else if (strcmp (property_name, "Shuffle") == 0) { - return _dbus_mpris_player_get_shuffle (object); - } else if (strcmp (property_name, "Metadata") == 0) { - return _dbus_mpris_player_get_metadata (object); - } else if (strcmp (property_name, "Volume") == 0) { - return _dbus_mpris_player_get_volume (object); - } else if (strcmp (property_name, "Position") == 0) { - return _dbus_mpris_player_get_position (object); - } else if (strcmp (property_name, "MinimumRate") == 0) { - return _dbus_mpris_player_get_minimum_rate (object); - } else if (strcmp (property_name, "MaximumRate") == 0) { - return _dbus_mpris_player_get_maximum_rate (object); - } else if (strcmp (property_name, "CanGoNext") == 0) { - return _dbus_mpris_player_get_can_go_next (object); - } else if (strcmp (property_name, "CanGoPrevious") == 0) { - return _dbus_mpris_player_get_can_go_previous (object); - } else if (strcmp (property_name, "CanPlay") == 0) { - return _dbus_mpris_player_get_can_play (object); - } else if (strcmp (property_name, "CanPause") == 0) { - return _dbus_mpris_player_get_can_pause (object); - } else if (strcmp (property_name, "CanSeek") == 0) { - return _dbus_mpris_player_get_can_seek (object); - } else if (strcmp (property_name, "CanControl") == 0) { - return _dbus_mpris_player_get_can_control (object); - } - return NULL; -} - -static void -_dbus_mpris_player_set_playback_status (MprisPlayer* self, - GVariant* _value) -{ - gchar* value = NULL; - value = g_variant_dup_string (_value, NULL); - mpris_player_set_playback_status (self, value); - _g_free0 (value); -} - -static void -_dbus_mpris_player_set_metadata (MprisPlayer* self, - GVariant* _value) -{ - GHashTable* value = NULL; - GHashTable* _tmp14_; - GVariantIter _tmp15_; - GVariant* _tmp16_; - GVariant* _tmp17_; - _tmp14_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_variant_unref); - g_variant_iter_init (&_tmp15_, _value); - while (g_variant_iter_loop (&_tmp15_, "{?*}", &_tmp16_, &_tmp17_)) { - g_hash_table_insert (_tmp14_, g_variant_dup_string (_tmp16_, NULL), g_variant_get_variant (_tmp17_)); - } - value = _tmp14_; - mpris_player_set_metadata (self, value); - _g_hash_table_unref0 (value); -} - -static void -_dbus_mpris_player_set_volume (MprisPlayer* self, - GVariant* _value) -{ - gdouble value = 0.0; - value = g_variant_get_double (_value); - mpris_player_set_volume (self, value); -} - -static void -_dbus_mpris_player_set_can_go_next (MprisPlayer* self, - GVariant* _value) -{ - gboolean value = FALSE; - value = g_variant_get_boolean (_value); - mpris_player_set_can_go_next (self, value); -} - -static void -_dbus_mpris_player_set_can_go_previous (MprisPlayer* self, - GVariant* _value) -{ - gboolean value = FALSE; - value = g_variant_get_boolean (_value); - mpris_player_set_can_go_previous (self, value); -} - -static void -_dbus_mpris_player_set_can_play (MprisPlayer* self, - GVariant* _value) -{ - gboolean value = FALSE; - value = g_variant_get_boolean (_value); - mpris_player_set_can_play (self, value); -} - -static void -_dbus_mpris_player_set_can_pause (MprisPlayer* self, - GVariant* _value) -{ - gboolean value = FALSE; - value = g_variant_get_boolean (_value); - mpris_player_set_can_pause (self, value); -} - -static void -_dbus_mpris_player_set_can_seek (MprisPlayer* self, - GVariant* _value) -{ - gboolean value = FALSE; - value = g_variant_get_boolean (_value); - mpris_player_set_can_seek (self, value); -} - -static gboolean -mpris_player_dbus_interface_set_property (GDBusConnection* connection, - const gchar* sender, - const gchar* object_path, - const gchar* interface_name, - const gchar* property_name, - GVariant* value, - GError** error, - gpointer user_data) -{ - gpointer* data; - gpointer object; - data = user_data; - object = data[0]; - if (strcmp (property_name, "PlaybackStatus") == 0) { - _dbus_mpris_player_set_playback_status (object, value); - return TRUE; - } else if (strcmp (property_name, "Metadata") == 0) { - _dbus_mpris_player_set_metadata (object, value); - return TRUE; - } else if (strcmp (property_name, "Volume") == 0) { - _dbus_mpris_player_set_volume (object, value); - return TRUE; - } else if (strcmp (property_name, "CanGoNext") == 0) { - _dbus_mpris_player_set_can_go_next (object, value); - return TRUE; - } else if (strcmp (property_name, "CanGoPrevious") == 0) { - _dbus_mpris_player_set_can_go_previous (object, value); - return TRUE; - } else if (strcmp (property_name, "CanPlay") == 0) { - _dbus_mpris_player_set_can_play (object, value); - return TRUE; - } else if (strcmp (property_name, "CanPause") == 0) { - _dbus_mpris_player_set_can_pause (object, value); - return TRUE; - } else if (strcmp (property_name, "CanSeek") == 0) { - _dbus_mpris_player_set_can_seek (object, value); - return TRUE; - } - return FALSE; -} - -static void -_dbus_mpris_player_seeked (GObject* _sender, - gint64 position, - gpointer* _data) -{ - GDBusConnection * _connection; - const gchar * _path; - GVariant *_arguments; - GVariantBuilder _arguments_builder; - _connection = _data[1]; - _path = _data[2]; - g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE); - g_variant_builder_add_value (&_arguments_builder, g_variant_new_int64 (position)); - _arguments = g_variant_builder_end (&_arguments_builder); - g_dbus_connection_emit_signal (_connection, NULL, _path, "org.mpris.MediaPlayer2.Player", "Seeked", _arguments, NULL); -} - -guint -mpris_player_register_object (gpointer object, - GDBusConnection* connection, - const gchar* path, - GError** error) -{ - guint result; - gpointer *data; - data = g_new (gpointer, 3); - data[0] = g_object_ref (object); - data[1] = g_object_ref (connection); - data[2] = g_strdup (path); - result = g_dbus_connection_register_object (connection, path, (GDBusInterfaceInfo *) (&_mpris_player_dbus_interface_info), &_mpris_player_dbus_interface_vtable, data, _mpris_player_unregister_object, error); - if (!result) { - return 0; - } - g_signal_connect (object, "seeked", (GCallback) _dbus_mpris_player_seeked, data); - return result; -} - -static void -_mpris_player_unregister_object (gpointer user_data) -{ - gpointer* data; - data = user_data; - g_signal_handlers_disconnect_by_func (data[0], _dbus_mpris_player_seeked, data); - g_object_unref (data[0]); - g_object_unref (data[1]); - g_free (data[2]); - g_free (data); -} - -static void -_vala_array_destroy (gpointer array, - gssize array_length, - GDestroyNotify destroy_func) -{ - if ((array != NULL) && (destroy_func != NULL)) { - gssize i; - for (i = 0; i < array_length; i = i + 1) { - if (((gpointer*) array)[i] != NULL) { - destroy_func (((gpointer*) array)[i]); - } - } - } -} - -static void -_vala_array_free (gpointer array, - gssize array_length, - GDestroyNotify destroy_func) -{ - _vala_array_destroy (array, array_length, destroy_func); - g_free (array); -} - diff --git a/src/mpris.vala b/src/mpris.vala new file mode 100644 index 0000000..fa7e8b5 --- /dev/null +++ b/src/mpris.vala @@ -0,0 +1,254 @@ +[DBus (name = "org.mpris.MediaPlayer2")] +class Mpris : Object { + internal signal void on_raise (); + internal signal void on_quit (); + + public bool can_raise { get { return true; } } + public void raise () throws Error { + this.on_raise (); + } + + public bool can_quit { get { return true; } } + public void quit () throws Error { + this.on_quit (); + } + + public bool can_set_fullscreen { get { return false; } } + public bool fullscreen { get { return false; } set { assert (false); } } + public bool has_track_list { get { return false; } } + public string identity { owned get { return "audrey"; } } + public string desktop_entry { owned get { return "eu.callcc.audrey"; } } + public string[] supported_uri_schemes { owned get { return {}; } } + public string[] supported_mime_types { owned get { return {}; } } + + internal Mpris (Ui.Window window) { + this.on_raise.connect (() => window.present ()); + this.on_quit.connect (() => window.close ()); + } + + ~Mpris () { + debug ("destroying mpris"); + } +} + +[DBus (name = "org.mpris.MediaPlayer2.Player")] +class MprisPlayer : Object { + internal signal void on_next (); + internal signal void on_previous (); + internal signal void on_pause (); + internal signal void on_play_pause (); + internal signal void on_stop (); + internal signal void on_play (); + internal signal void on_seek (int64 offset); + internal signal void on_set_position (ObjectPath track_id, int64 position); + + public void next () throws Error { this.on_next (); } + public void previous () throws Error { this.on_previous (); } + public void pause () throws Error { print("pause\n");this.on_pause (); } + public void play_pause () throws Error { this.on_play_pause (); } + public void stop () throws Error { this.on_stop (); } + public void play () throws Error { this.on_play (); } + public void seek (int64 offset) throws Error { this.on_seek (offset); } + public void set_position (ObjectPath track_id, int64 position) throws Error { this.on_set_position (track_id, position); } + public void open_uri (string uri) throws Error { assert (false); } + + public signal void seeked (int64 position); + + public string playback_status { owned get; internal set; default = "Stopped"; } + public string loop_status { owned get; /*set;*/ default = "None"; } + public double rate { get; /*set*/ default = 1.0; } + public bool shuffle { get; /*set*/ default = false; } + public HashTable metadata { owned get; private set; default = new HashTable (null, null); } + public double volume { get; set; default = 1.0; } + [CCode (notify = false)] + public int64 position { get; default = 0; } + public double minimum_rate { get { return 1.0; } } + public double maximum_rate { get { return 1.0; } } + public bool can_go_next { get; private set; default = false; } + public bool can_go_previous { get; private set; default = false; } + public bool can_play { get; private set; default = false; } + public bool can_pause { get; private set; default = false; } + public bool can_seek { get; private set; default = false; } + [CCode (notify = false)] + public bool can_control { get { return true; } } + + internal Subsonic.Client api { get; set; } + + internal MprisPlayer (DBusConnection conn, Playbin playbin) { + playbin.bind_property ( + "state", + this, + "playback_status", + BindingFlags.DEFAULT, + (binding, from, ref to) => { + switch (from.get_enum ()) { + case PlaybinState.STOPPED: + to.set_string ("Stopped"); + this.can_go_next = false; + this.can_go_previous = false; + this.can_play = false; + this.can_pause = false; + this.can_seek = false; + return true; + case PlaybinState.PAUSED: + to.set_string ("Paused"); + this.can_go_next = true; + this.can_go_previous = true; + this.can_play = true; + this.can_pause = true; + this.can_seek = true; + return true; + case PlaybinState.PLAYING: + to.set_string ("Playing"); + this.can_go_next = true; + this.can_go_previous = true; + this.can_play = true; + this.can_pause = true; + this.can_seek = true; + return true; + } + return false; + }); + + playbin.bind_property ( + "volume", + this, + "volume", + BindingFlags.BIDIRECTIONAL, + (binding, from, ref to) => { + to.set_double (from.get_int () / 100.0); + return true; + }, + (binding, from, ref to) => { + to.set_int ((int) (from.get_double () * 100.0)); + return true; + }); + + playbin.new_track.connect ((playbin) => { + PlaybinSong song = (PlaybinSong) playbin.play_queue.get_item (playbin.play_queue_position); + + var metadata = new HashTable (null, null); + metadata["mpris:trackid"] = new ObjectPath (@"/eu/callcc/audrey/track/$(song.id)"); + metadata["mpris:length"] = (int64) song.duration * 1000000; + if (this.api != null) metadata["mpris:artUrl"] = this.api.cover_art_uri (song.id); + metadata["xesam:album"] = song.album; + metadata["xesam:artist"] = new string[] {song.artist}; + if (song.genre != null) metadata["xesam:genre"] = song.genre; + metadata["xesam:title"] = song.title; + metadata["xesam:trackNumber"] = song.track; + metadata["xesam:useCount"] = song.play_count; + // TODO metadata["xesam:userRating"] = song.starred != null ? 1.0 : 0.0; + + this.metadata = metadata; + }); + + playbin.stopped.connect (() => { + this.metadata = new HashTable (null, null); + }); + + this.on_next.connect (() => playbin.go_to_next_track ()); + this.on_previous.connect (() => playbin.go_to_prev_track ()); + this.on_play.connect (() => playbin.play ()); + this.on_pause.connect (() => playbin.pause ()); + this.on_play_pause.connect (() => { + if (playbin.state == PlaybinState.PAUSED) playbin.play (); + else if (playbin.state == PlaybinState.PLAYING) playbin.pause (); + }); + this.on_stop.connect (() => { + playbin.stop (); + }); + + // TODO: seeking from mpris + // TODO: trigger the seeked signal when applicable + + this.notify.connect ((p) => { + var builder = new VariantBuilder (VariantType.ARRAY); + var invalid_builder = new VariantBuilder (new VariantType ("as")); + + string dbus_name; + Variant dbus_value; + + switch (p.name) { + case "playback-status": + dbus_name = "PlaybackStatus"; + dbus_value = this.playback_status; + break; + case "loop-status": + dbus_name = "LoopStatus"; + dbus_value = this.loop_status; + break; + case "rate": + dbus_name = "Rate"; + dbus_value = this.rate; + break; + case "shuffle": + dbus_name = "Shuffle"; + dbus_value = this.shuffle; + break; + case "metadata": + dbus_name = "Metadata"; + dbus_value = this.metadata; + break; + case "volume": + dbus_name = "Volume"; + dbus_value = this.volume; + break; + case "minimum-rate": + dbus_name = "MinimumRate"; + dbus_value = this.minimum_rate; + break; + case "maximum-rate": + dbus_name = "MaximumRate"; + dbus_value = this.maximum_rate; + break; + case "can-go-next": + dbus_name = "CanGoNext"; + dbus_value = this.can_go_next; + break; + case "can-go-previous": + dbus_name = "CanGoPrevious"; + dbus_value = this.can_go_previous; + break; + case "can-play": + dbus_name = "CanPlay"; + dbus_value = this.can_play; + break; + case "can-pause": + dbus_name = "CanPause"; + dbus_value = this.can_pause; + break; + case "can-seek": + dbus_name = "CanSeek"; + dbus_value = this.can_seek; + break; + case "api": + // internal, ignored + return; + default: + warning (@"unknown mpris player property $(p.name)"); + return; + } + + builder.add ("{sv}", dbus_name, dbus_value); + + try { + conn.emit_signal ( + null, + "/org/mpris/MediaPlayer2", + "org.freedesktop.DBus.Properties", + "PropertiesChanged", + new Variant ( + "(sa{sv}as)", + "org.mpris.MediaPlayer2.Player", + builder, + invalid_builder)); + } catch (Error e) { + error (@"could not notify of mpris property changes: $(e.message)"); + } + }); + } + + ~MprisPlayer () { + debug ("destroying mpris player"); + } +} diff --git a/src/playbin.c b/src/playbin.c deleted file mode 100644 index 93fa00e..0000000 --- a/src/playbin.c +++ /dev/null @@ -1,3647 +0,0 @@ -/* playbin.c generated by valac 0.56.16, the Vala compiler - * generated from playbin.vala, do not modify */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define AUDREY_CONST_user_agent "audrey/linux" -#if !defined(VALA_STRICT_C) -#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14) -#pragma GCC diagnostic warning "-Wincompatible-pointer-types" -#elif defined(__clang__) && (__clang_major__ >= 16) -#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types" -#pragma clang diagnostic ignored "-Wincompatible-pointer-types" -#endif -#endif -#if !defined(VALA_EXTERN) -#if defined(_MSC_VER) -#define VALA_EXTERN __declspec(dllexport) extern -#elif __GNUC__ >= 4 -#define VALA_EXTERN __attribute__((visibility("default"))) extern -#else -#define VALA_EXTERN extern -#endif -#endif - -typedef enum { - PLAYBIN_STATE_STOPPED, - PLAYBIN_STATE_PAUSED, - PLAYBIN_STATE_PLAYING -} PlaybinState; - -#define TYPE_PLAYBIN_STATE (playbin_state_get_type ()) - -#define TYPE_COMMAND_CALLBACK (command_callback_get_type ()) -typedef struct _CommandCallback CommandCallback; - -#define TYPE_PLAYBIN_SONG (playbin_song_get_type ()) -#define PLAYBIN_SONG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYBIN_SONG, PlaybinSong)) -#define PLAYBIN_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYBIN_SONG, PlaybinSongClass)) -#define IS_PLAYBIN_SONG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYBIN_SONG)) -#define IS_PLAYBIN_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYBIN_SONG)) -#define PLAYBIN_SONG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYBIN_SONG, PlaybinSongClass)) - -typedef struct _PlaybinSong PlaybinSong; -typedef struct _PlaybinSongClass PlaybinSongClass; -typedef struct _PlaybinSongPrivate PlaybinSongPrivate; - -#define SUBSONIC_TYPE_SONG (subsonic_song_get_type ()) -typedef struct _SubsonicSong SubsonicSong; - -#define SUBSONIC_TYPE_CLIENT (subsonic_client_get_type ()) -#define SUBSONIC_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SUBSONIC_TYPE_CLIENT, SubsonicClient)) -#define SUBSONIC_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SUBSONIC_TYPE_CLIENT, SubsonicClientClass)) -#define SUBSONIC_IS_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SUBSONIC_TYPE_CLIENT)) -#define SUBSONIC_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SUBSONIC_TYPE_CLIENT)) -#define SUBSONIC_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SUBSONIC_TYPE_CLIENT, SubsonicClientClass)) - -typedef struct _SubsonicClient SubsonicClient; -typedef struct _SubsonicClientClass SubsonicClientClass; -enum { - PLAYBIN_SONG_0_PROPERTY, - PLAYBIN_SONG_ID_PROPERTY, - PLAYBIN_SONG_TITLE_PROPERTY, - PLAYBIN_SONG_ARTIST_PROPERTY, - PLAYBIN_SONG_ALBUM_PROPERTY, - PLAYBIN_SONG_GENRE_PROPERTY, - PLAYBIN_SONG_DURATION_PROPERTY, - PLAYBIN_SONG_TRACK_PROPERTY, - PLAYBIN_SONG_PLAY_COUNT_PROPERTY, - PLAYBIN_SONG_THUMBNAIL_PROPERTY, - PLAYBIN_SONG_NUM_PROPERTIES -}; -static GParamSpec* playbin_song_properties[PLAYBIN_SONG_NUM_PROPERTIES]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) - -#define TYPE_PLAYBIN (playbin_get_type ()) -#define PLAYBIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYBIN, Playbin)) -#define PLAYBIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYBIN, PlaybinClass)) -#define IS_PLAYBIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYBIN)) -#define IS_PLAYBIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYBIN)) -#define PLAYBIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYBIN, PlaybinClass)) - -typedef struct _Playbin Playbin; -typedef struct _PlaybinClass PlaybinClass; -typedef struct _PlaybinPrivate PlaybinPrivate; -enum { - PLAYBIN_0_PROPERTY, - PLAYBIN_STATE_PROPERTY, - PLAYBIN_VOLUME_PROPERTY, - PLAYBIN_MUTE_PROPERTY, - PLAYBIN_PLAY_QUEUE_POSITION_PROPERTY, - PLAYBIN_POSITION_PROPERTY, - PLAYBIN_DURATION_PROPERTY, - PLAYBIN_API_PROPERTY, - PLAYBIN_PLAY_QUEUE_PROPERTY, - PLAYBIN_PLAY_QUEUE_LENGTH_PROPERTY, - PLAYBIN_NUM_PROPERTIES -}; -static GParamSpec* playbin_properties[PLAYBIN_NUM_PROPERTIES]; -#define _mpv_terminate_destroy0(var) ((var == NULL) ? NULL : (var = (mpv_terminate_destroy (var), NULL))) -typedef struct _PlaybinMpvCommandAsyncData PlaybinMpvCommandAsyncData; -#define __vala_mpv_event_free0(var) ((var == NULL) ? NULL : (var = (_vala_mpv_event_free (var), NULL))) -#define __vala_mpv_event_property_free0(var) ((var == NULL) ? NULL : (var = (_vala_mpv_event_property_free (var), NULL))) -#define _g_free0(var) (var = (g_free (var), NULL)) -#define __vala_mpv_event_end_file_free0(var) ((var == NULL) ? NULL : (var = (_vala_mpv_event_end_file_free (var), NULL))) -typedef struct _PlaybinAppendTrackAsyncData PlaybinAppendTrackAsyncData; -enum { - PLAYBIN_NEW_TRACK_SIGNAL, - PLAYBIN_STOPPED_SIGNAL, - PLAYBIN_NUM_SIGNALS -}; -static guint playbin_signals[PLAYBIN_NUM_SIGNALS] = {0}; -#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); -#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } -#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } -#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); - -struct _CommandCallback { - GSourceFunc callback; - gpointer callback_target; - gint error; -}; - -struct _PlaybinSong { - GObject parent_instance; - PlaybinSongPrivate * priv; -}; - -struct _PlaybinSongClass { - GObjectClass parent_class; -}; - -struct _SubsonicSong { - gchar* id; - gchar* title; - gchar* album; - gchar* artist; - gint64 track; - gint64 year; - GDateTime* starred; - gint64 duration; - gint64 play_count; - gchar* genre; - gchar* cover_art; -}; - -struct _PlaybinSongPrivate { - SubsonicSong inner; - GdkPaintable* _thumbnail; - GCancellable* cancel_loading_thumbnail; - SubsonicClient* api; -}; - -struct _Playbin { - GObject parent_instance; - PlaybinPrivate * priv; -}; - -struct _PlaybinClass { - GObjectClass parent_class; -}; - -struct _PlaybinPrivate { - mpv_handle* mpv; - gint _volume; - gboolean _mute; - GListStore* _play_queue; - gboolean is_handling_event; - PlaybinState _state; - gint _play_queue_position; - gdouble _position; - gdouble _duration; - SubsonicClient* _api; - guint _play_queue_length; -}; - -struct _PlaybinMpvCommandAsyncData { - int _state_; - GObject* _source_object_; - GAsyncResult* _res_; - GTask* _async_result; - Playbin* self; - gchar** args; - gint args_length1; - mpv_error result; - CommandCallback cc; - CommandCallback _tmp0_; - mpv_handle* _tmp1_; - CommandCallback _tmp2_; -}; - -struct _PlaybinAppendTrackAsyncData { - int _state_; - GObject* _source_object_; - GAsyncResult* _res_; - GTask* _async_result; - Playbin* self; - SubsonicSong song; - mpv_error err; - gchar* _tmp0_; - SubsonicClient* _tmp1_; - SubsonicSong _tmp2_; - const gchar* _tmp3_; - gchar* _tmp4_; - gchar* _tmp5_; - gchar** _tmp6_; - gchar** _tmp7_; - gint _tmp7__length1; - mpv_error _tmp8_; - GListStore* _tmp9_; - SubsonicClient* _tmp10_; - SubsonicSong _tmp11_; - PlaybinSong* _tmp12_; - PlaybinSong* _tmp13_; - guint _tmp14_; -}; - -static gint PlaybinSong_private_offset; -static gpointer playbin_song_parent_class = NULL; -static gint Playbin_private_offset; -static gpointer playbin_parent_class = NULL; - -VALA_EXTERN GType playbin_state_get_type (void) G_GNUC_CONST ; -VALA_EXTERN GType command_callback_get_type (void) G_GNUC_CONST ; -VALA_EXTERN CommandCallback* command_callback_dup (const CommandCallback* self); -VALA_EXTERN void command_callback_free (CommandCallback* self); -VALA_EXTERN GType playbin_song_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (PlaybinSong, g_object_unref) -VALA_EXTERN GType subsonic_song_get_type (void) G_GNUC_CONST ; -VALA_EXTERN SubsonicSong* subsonic_song_dup (const SubsonicSong* self); -VALA_EXTERN void subsonic_song_free (SubsonicSong* self); -VALA_EXTERN void subsonic_song_copy (const SubsonicSong* self, - SubsonicSong* dest); -VALA_EXTERN void subsonic_song_destroy (SubsonicSong* self); -G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (SubsonicSong, subsonic_song_destroy) -VALA_EXTERN GType subsonic_client_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SubsonicClient, g_object_unref) -VALA_EXTERN PlaybinSong* playbin_song_new (SubsonicClient* api, - SubsonicSong* song); -VALA_EXTERN PlaybinSong* playbin_song_construct (GType object_type, - SubsonicClient* api, - SubsonicSong* song); -VALA_EXTERN void playbin_song_need_cover_art (PlaybinSong* self); -VALA_EXTERN const gchar* playbin_song_get_id (PlaybinSong* self); -VALA_EXTERN const gchar* playbin_song_get_title (PlaybinSong* self); -VALA_EXTERN const gchar* playbin_song_get_artist (PlaybinSong* self); -VALA_EXTERN const gchar* playbin_song_get_album (PlaybinSong* self); -VALA_EXTERN const gchar* playbin_song_get_genre (PlaybinSong* self); -VALA_EXTERN gint64 playbin_song_get_duration (PlaybinSong* self); -VALA_EXTERN gint64 playbin_song_get_track (PlaybinSong* self); -VALA_EXTERN gint64 playbin_song_get_play_count (PlaybinSong* self); -VALA_EXTERN GdkPaintable* playbin_song_get_thumbnail (PlaybinSong* self); -static void playbin_song_set_thumbnail (PlaybinSong* self, - GdkPaintable* value); -static void playbin_song_finalize (GObject * obj); -static GType playbin_song_get_type_once (void); -static void _vala_playbin_song_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec); -static void _vala_playbin_song_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec); -VALA_EXTERN GType playbin_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (Playbin, g_object_unref) -static void playbin_mpv_command_async_data_free (gpointer _data); -static void playbin_mpv_command_async (Playbin* self, - gchar** args, - gint args_length1, - GAsyncReadyCallback _callback_, - gpointer _user_data_); -static mpv_error playbin_mpv_command_finish (Playbin* self, - GAsyncResult* _res_); -static gboolean playbin_mpv_command_async_co (PlaybinMpvCommandAsyncData* _data_); -static gboolean _playbin_mpv_command_async_co_gsource_func (gpointer self); -VALA_EXTERN Playbin* playbin_new (void); -VALA_EXTERN Playbin* playbin_construct (GType object_type); -static void __lambda4_ (Playbin* self); -static gboolean __lambda5_ (Playbin* self); -static void mpv_event_copy (const mpv_event * self, - mpv_event * dest); -static mpv_event* _mpv_event_dup (mpv_event* self); -static void _vala_mpv_event_free (mpv_event* self); -static void mpv_event_property_copy (const mpv_event_property * self, - mpv_event_property * dest); -static mpv_event_property* _mpv_event_property_dup (mpv_event_property* self); -static void playbin_set_position (Playbin* self, - gdouble value); -static void playbin_set_duration (Playbin* self, - gdouble value); -VALA_EXTERN PlaybinState playbin_get_state (Playbin* self); -VALA_EXTERN gint playbin_get_play_queue_position (Playbin* self); -static void _vala_mpv_event_property_free (mpv_event_property* self); -static void mpv_event_end_file_copy (const mpv_event_end_file * self, - mpv_event_end_file * dest); -static mpv_event_end_file* _mpv_event_end_file_dup (mpv_event_end_file* self); -static const char* _mpv_end_file_reason_to_string (mpv_end_file_reason value); -static void playbin_set_play_queue_position (Playbin* self, - gint value); -static void playbin_set_state (Playbin* self, - PlaybinState value); -static void _vala_mpv_event_end_file_free (mpv_event_end_file* self); -static gboolean ___lambda5__gsource_func (gpointer self); -static void ___lambda4__mpv_wakeup_callback (gpointer self); -VALA_EXTERN void playbin_seek (Playbin* self, - gdouble position); -VALA_EXTERN void playbin_select_track (Playbin* self, - guint position); -VALA_EXTERN GListModel* playbin_get_play_queue (Playbin* self); -VALA_EXTERN void playbin_play (Playbin* self); -VALA_EXTERN void playbin_pause (Playbin* self); -VALA_EXTERN void playbin_go_to_next_track (Playbin* self); -VALA_EXTERN void playbin_go_to_prev_track (Playbin* self); -VALA_EXTERN void playbin_remove_track (Playbin* self, - guint position); -VALA_EXTERN guint playbin_get_play_queue_length (Playbin* self); -static void playbin_set_play_queue_length (Playbin* self, - guint value); -VALA_EXTERN void playbin_clear (Playbin* self); -VALA_EXTERN void playbin_append_track (Playbin* self, - SubsonicSong* song); -VALA_EXTERN SubsonicClient* playbin_get_api (Playbin* self); -VALA_EXTERN gchar* subsonic_client_stream_uri (SubsonicClient* self, - const gchar* id); -static void playbin_append_track_async_data_free (gpointer _data); -VALA_EXTERN void playbin_append_track_async (Playbin* self, - SubsonicSong* song, - GAsyncReadyCallback _callback_, - gpointer _user_data_); -VALA_EXTERN void playbin_append_track_finish (Playbin* self, - GAsyncResult* _res_); -static gboolean playbin_append_track_async_co (PlaybinAppendTrackAsyncData* _data_); -static void playbin_append_track_async_ready (GObject* source_object, - GAsyncResult* _res_, - gpointer _user_data_); -VALA_EXTERN void playbin_move_track (Playbin* self, - guint from, - guint to); -VALA_EXTERN void playbin_stop (Playbin* self); -VALA_EXTERN gint playbin_get_volume (Playbin* self); -VALA_EXTERN void playbin_set_volume (Playbin* self, - gint value); -VALA_EXTERN gboolean playbin_get_mute (Playbin* self); -VALA_EXTERN void playbin_set_mute (Playbin* self, - gboolean value); -VALA_EXTERN gdouble playbin_get_position (Playbin* self); -VALA_EXTERN gdouble playbin_get_duration (Playbin* self); -VALA_EXTERN void playbin_set_api (Playbin* self, - SubsonicClient* value); -static void playbin_finalize (GObject * obj); -static GType playbin_get_type_once (void); -static void _vala_playbin_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec); -static void _vala_playbin_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec); -static void _vala_array_destroy (gpointer array, - gssize array_length, - GDestroyNotify destroy_func); -static void _vala_array_free (gpointer array, - gssize array_length, - GDestroyNotify destroy_func); - -static GType -playbin_state_get_type_once (void) -{ - static const GEnumValue values[] = {{PLAYBIN_STATE_STOPPED, "PLAYBIN_STATE_STOPPED", "stopped"}, {PLAYBIN_STATE_PAUSED, "PLAYBIN_STATE_PAUSED", "paused"}, {PLAYBIN_STATE_PLAYING, "PLAYBIN_STATE_PLAYING", "playing"}, {0, NULL, NULL}}; - GType playbin_state_type_id; - playbin_state_type_id = g_enum_register_static ("PlaybinState", values); - return playbin_state_type_id; -} - -GType -playbin_state_get_type (void) -{ - static volatile gsize playbin_state_type_id__once = 0; - if (g_once_init_enter (&playbin_state_type_id__once)) { - GType playbin_state_type_id; - playbin_state_type_id = playbin_state_get_type_once (); - g_once_init_leave (&playbin_state_type_id__once, playbin_state_type_id); - } - return playbin_state_type_id__once; -} - -CommandCallback* -command_callback_dup (const CommandCallback* self) -{ - CommandCallback* dup; -#line 7 "../src/playbin.vala" - dup = g_new0 (CommandCallback, 1); -#line 7 "../src/playbin.vala" - memcpy (dup, self, sizeof (CommandCallback)); -#line 7 "../src/playbin.vala" - return dup; -#line 407 "playbin.c" -} - -void -command_callback_free (CommandCallback* self) -{ -#line 7 "../src/playbin.vala" - g_free (self); -#line 415 "playbin.c" -} - -static GType -command_callback_get_type_once (void) -{ - GType command_callback_type_id; - command_callback_type_id = g_boxed_type_register_static ("CommandCallback", (GBoxedCopyFunc) command_callback_dup, (GBoxedFreeFunc) command_callback_free); - return command_callback_type_id; -} - -GType -command_callback_get_type (void) -{ - static volatile gsize command_callback_type_id__once = 0; - if (g_once_init_enter (&command_callback_type_id__once)) { - GType command_callback_type_id; - command_callback_type_id = command_callback_get_type_once (); - g_once_init_leave (&command_callback_type_id__once, command_callback_type_id); - } - return command_callback_type_id__once; -} - -static inline gpointer -playbin_song_get_instance_private (PlaybinSong* self) -{ - return G_STRUCT_MEMBER_P (self, PlaybinSong_private_offset); -} - -static gpointer -_g_object_ref0 (gpointer self) -{ -#line 28 "../src/playbin.vala" - return self ? g_object_ref (self) : NULL; -#line 449 "playbin.c" -} - -PlaybinSong* -playbin_song_construct (GType object_type, - SubsonicClient* api, - SubsonicSong* song) -{ - PlaybinSong * self = NULL; - SubsonicClient* _tmp0_; - SubsonicSong _tmp1_; - SubsonicSong _tmp2_; - SubsonicSong _tmp3_ = {0}; -#line 27 "../src/playbin.vala" - g_return_val_if_fail (api != NULL, NULL); -#line 27 "../src/playbin.vala" - g_return_val_if_fail (song != NULL, NULL); -#line 27 "../src/playbin.vala" - self = (PlaybinSong*) g_object_new (object_type, NULL); -#line 28 "../src/playbin.vala" - _tmp0_ = _g_object_ref0 (api); -#line 28 "../src/playbin.vala" - _g_object_unref0 (self->priv->api); -#line 28 "../src/playbin.vala" - self->priv->api = _tmp0_; -#line 29 "../src/playbin.vala" - _tmp1_ = *song; -#line 29 "../src/playbin.vala" - _tmp2_ = _tmp1_; -#line 29 "../src/playbin.vala" - subsonic_song_copy (&_tmp2_, &_tmp3_); -#line 29 "../src/playbin.vala" - subsonic_song_destroy (&self->priv->inner); -#line 29 "../src/playbin.vala" - self->priv->inner = _tmp3_; -#line 27 "../src/playbin.vala" - return self; -#line 486 "playbin.c" -} - -PlaybinSong* -playbin_song_new (SubsonicClient* api, - SubsonicSong* song) -{ -#line 27 "../src/playbin.vala" - return playbin_song_construct (TYPE_PLAYBIN_SONG, api, song); -#line 495 "playbin.c" -} - -void -playbin_song_need_cover_art (PlaybinSong* self) -{ -#line 34 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 503 "playbin.c" -} - -const gchar* -playbin_song_get_id (PlaybinSong* self) -{ - const gchar* result; - SubsonicSong _tmp0_; - const gchar* _tmp1_; -#line 14 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 14 "../src/playbin.vala" - _tmp0_ = self->priv->inner; -#line 14 "../src/playbin.vala" - _tmp1_ = _tmp0_.id; -#line 14 "../src/playbin.vala" - result = _tmp1_; -#line 14 "../src/playbin.vala" - return result; -#line 522 "playbin.c" -} - -const gchar* -playbin_song_get_title (PlaybinSong* self) -{ - const gchar* result; - SubsonicSong _tmp0_; - const gchar* _tmp1_; -#line 15 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 15 "../src/playbin.vala" - _tmp0_ = self->priv->inner; -#line 15 "../src/playbin.vala" - _tmp1_ = _tmp0_.title; -#line 15 "../src/playbin.vala" - result = _tmp1_; -#line 15 "../src/playbin.vala" - return result; -#line 541 "playbin.c" -} - -const gchar* -playbin_song_get_artist (PlaybinSong* self) -{ - const gchar* result; - SubsonicSong _tmp0_; - const gchar* _tmp1_; -#line 16 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 16 "../src/playbin.vala" - _tmp0_ = self->priv->inner; -#line 16 "../src/playbin.vala" - _tmp1_ = _tmp0_.artist; -#line 16 "../src/playbin.vala" - result = _tmp1_; -#line 16 "../src/playbin.vala" - return result; -#line 560 "playbin.c" -} - -const gchar* -playbin_song_get_album (PlaybinSong* self) -{ - const gchar* result; - SubsonicSong _tmp0_; - const gchar* _tmp1_; -#line 17 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 17 "../src/playbin.vala" - _tmp0_ = self->priv->inner; -#line 17 "../src/playbin.vala" - _tmp1_ = _tmp0_.album; -#line 17 "../src/playbin.vala" - result = _tmp1_; -#line 17 "../src/playbin.vala" - return result; -#line 579 "playbin.c" -} - -const gchar* -playbin_song_get_genre (PlaybinSong* self) -{ - const gchar* result; - SubsonicSong _tmp0_; - const gchar* _tmp1_; -#line 18 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 18 "../src/playbin.vala" - _tmp0_ = self->priv->inner; -#line 18 "../src/playbin.vala" - _tmp1_ = _tmp0_.genre; -#line 18 "../src/playbin.vala" - result = _tmp1_; -#line 18 "../src/playbin.vala" - return result; -#line 598 "playbin.c" -} - -gint64 -playbin_song_get_duration (PlaybinSong* self) -{ - gint64 result; - SubsonicSong _tmp0_; -#line 19 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, 0LL); -#line 19 "../src/playbin.vala" - _tmp0_ = self->priv->inner; -#line 19 "../src/playbin.vala" - result = _tmp0_.duration; -#line 19 "../src/playbin.vala" - return result; -#line 614 "playbin.c" -} - -gint64 -playbin_song_get_track (PlaybinSong* self) -{ - gint64 result; - SubsonicSong _tmp0_; -#line 20 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, 0LL); -#line 20 "../src/playbin.vala" - _tmp0_ = self->priv->inner; -#line 20 "../src/playbin.vala" - result = _tmp0_.track; -#line 20 "../src/playbin.vala" - return result; -#line 630 "playbin.c" -} - -gint64 -playbin_song_get_play_count (PlaybinSong* self) -{ - gint64 result; - SubsonicSong _tmp0_; -#line 21 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, 0LL); -#line 21 "../src/playbin.vala" - _tmp0_ = self->priv->inner; -#line 21 "../src/playbin.vala" - result = _tmp0_.play_count; -#line 21 "../src/playbin.vala" - return result; -#line 646 "playbin.c" -} - -GdkPaintable* -playbin_song_get_thumbnail (PlaybinSong* self) -{ - GdkPaintable* result; - GdkPaintable* _tmp0_; -#line 23 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 23 "../src/playbin.vala" - _tmp0_ = self->priv->_thumbnail; -#line 23 "../src/playbin.vala" - result = _tmp0_; -#line 23 "../src/playbin.vala" - return result; -#line 662 "playbin.c" -} - -static void -playbin_song_set_thumbnail (PlaybinSong* self, - GdkPaintable* value) -{ - GdkPaintable* old_value; -#line 23 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 23 "../src/playbin.vala" - old_value = playbin_song_get_thumbnail (self); -#line 23 "../src/playbin.vala" - if (old_value != value) { -#line 676 "playbin.c" - GdkPaintable* _tmp0_; -#line 23 "../src/playbin.vala" - _tmp0_ = _g_object_ref0 (value); -#line 23 "../src/playbin.vala" - _g_object_unref0 (self->priv->_thumbnail); -#line 23 "../src/playbin.vala" - self->priv->_thumbnail = _tmp0_; -#line 23 "../src/playbin.vala" - g_object_notify_by_pspec ((GObject *) self, playbin_song_properties[PLAYBIN_SONG_THUMBNAIL_PROPERTY]); -#line 686 "playbin.c" - } -} - -static void -playbin_song_class_init (PlaybinSongClass * klass, - gpointer klass_data) -{ -#line 12 "../src/playbin.vala" - playbin_song_parent_class = g_type_class_peek_parent (klass); -#line 12 "../src/playbin.vala" - g_type_class_adjust_private_offset (klass, &PlaybinSong_private_offset); -#line 12 "../src/playbin.vala" - G_OBJECT_CLASS (klass)->get_property = _vala_playbin_song_get_property; -#line 12 "../src/playbin.vala" - G_OBJECT_CLASS (klass)->set_property = _vala_playbin_song_set_property; -#line 12 "../src/playbin.vala" - G_OBJECT_CLASS (klass)->finalize = playbin_song_finalize; -#line 12 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_SONG_ID_PROPERTY, playbin_song_properties[PLAYBIN_SONG_ID_PROPERTY] = g_param_spec_string ("id", "id", "id", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 12 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_SONG_TITLE_PROPERTY, playbin_song_properties[PLAYBIN_SONG_TITLE_PROPERTY] = g_param_spec_string ("title", "title", "title", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 12 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_SONG_ARTIST_PROPERTY, playbin_song_properties[PLAYBIN_SONG_ARTIST_PROPERTY] = g_param_spec_string ("artist", "artist", "artist", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 12 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_SONG_ALBUM_PROPERTY, playbin_song_properties[PLAYBIN_SONG_ALBUM_PROPERTY] = g_param_spec_string ("album", "album", "album", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 12 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_SONG_GENRE_PROPERTY, playbin_song_properties[PLAYBIN_SONG_GENRE_PROPERTY] = g_param_spec_string ("genre", "genre", "genre", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 12 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_SONG_DURATION_PROPERTY, playbin_song_properties[PLAYBIN_SONG_DURATION_PROPERTY] = g_param_spec_int64 ("duration", "duration", "duration", G_MININT64, G_MAXINT64, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 12 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_SONG_TRACK_PROPERTY, playbin_song_properties[PLAYBIN_SONG_TRACK_PROPERTY] = g_param_spec_int64 ("track", "track", "track", G_MININT64, G_MAXINT64, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 12 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_SONG_PLAY_COUNT_PROPERTY, playbin_song_properties[PLAYBIN_SONG_PLAY_COUNT_PROPERTY] = g_param_spec_int64 ("play-count", "play-count", "play-count", G_MININT64, G_MAXINT64, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 12 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_SONG_THUMBNAIL_PROPERTY, playbin_song_properties[PLAYBIN_SONG_THUMBNAIL_PROPERTY] = g_param_spec_object ("thumbnail", "thumbnail", "thumbnail", gdk_paintable_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 722 "playbin.c" -} - -static void -playbin_song_instance_init (PlaybinSong * self, - gpointer klass) -{ -#line 12 "../src/playbin.vala" - self->priv = playbin_song_get_instance_private (self); -#line 731 "playbin.c" -} - -static void -playbin_song_finalize (GObject * obj) -{ - PlaybinSong * self; - GCancellable* _tmp0_; -#line 12 "../src/playbin.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PLAYBIN_SONG, PlaybinSong); -#line 56 "../src/playbin.vala" - _tmp0_ = self->priv->cancel_loading_thumbnail; -#line 56 "../src/playbin.vala" - if (_tmp0_ != NULL) { -#line 745 "playbin.c" - GCancellable* _tmp1_; -#line 57 "../src/playbin.vala" - _tmp1_ = self->priv->cancel_loading_thumbnail; -#line 57 "../src/playbin.vala" - g_cancellable_cancel (_tmp1_); -#line 751 "playbin.c" - } -#line 13 "../src/playbin.vala" - subsonic_song_destroy (&self->priv->inner); -#line 23 "../src/playbin.vala" - _g_object_unref0 (self->priv->_thumbnail); -#line 25 "../src/playbin.vala" - _g_object_unref0 (self->priv->cancel_loading_thumbnail); -#line 32 "../src/playbin.vala" - _g_object_unref0 (self->priv->api); -#line 12 "../src/playbin.vala" - G_OBJECT_CLASS (playbin_song_parent_class)->finalize (obj); -#line 763 "playbin.c" -} - -static GType -playbin_song_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (PlaybinSongClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) playbin_song_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PlaybinSong), 0, (GInstanceInitFunc) playbin_song_instance_init, NULL }; - GType playbin_song_type_id; - playbin_song_type_id = g_type_register_static (G_TYPE_OBJECT, "PlaybinSong", &g_define_type_info, 0); - PlaybinSong_private_offset = g_type_add_instance_private (playbin_song_type_id, sizeof (PlaybinSongPrivate)); - return playbin_song_type_id; -} - -GType -playbin_song_get_type (void) -{ - static volatile gsize playbin_song_type_id__once = 0; - if (g_once_init_enter (&playbin_song_type_id__once)) { - GType playbin_song_type_id; - playbin_song_type_id = playbin_song_get_type_once (); - g_once_init_leave (&playbin_song_type_id__once, playbin_song_type_id); - } - return playbin_song_type_id__once; -} - -static void -_vala_playbin_song_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec) -{ - PlaybinSong * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_PLAYBIN_SONG, PlaybinSong); -#line 12 "../src/playbin.vala" - switch (property_id) { -#line 12 "../src/playbin.vala" - case PLAYBIN_SONG_ID_PROPERTY: -#line 12 "../src/playbin.vala" - g_value_set_string (value, playbin_song_get_id (self)); -#line 12 "../src/playbin.vala" - break; -#line 12 "../src/playbin.vala" - case PLAYBIN_SONG_TITLE_PROPERTY: -#line 12 "../src/playbin.vala" - g_value_set_string (value, playbin_song_get_title (self)); -#line 12 "../src/playbin.vala" - break; -#line 12 "../src/playbin.vala" - case PLAYBIN_SONG_ARTIST_PROPERTY: -#line 12 "../src/playbin.vala" - g_value_set_string (value, playbin_song_get_artist (self)); -#line 12 "../src/playbin.vala" - break; -#line 12 "../src/playbin.vala" - case PLAYBIN_SONG_ALBUM_PROPERTY: -#line 12 "../src/playbin.vala" - g_value_set_string (value, playbin_song_get_album (self)); -#line 12 "../src/playbin.vala" - break; -#line 12 "../src/playbin.vala" - case PLAYBIN_SONG_GENRE_PROPERTY: -#line 12 "../src/playbin.vala" - g_value_set_string (value, playbin_song_get_genre (self)); -#line 12 "../src/playbin.vala" - break; -#line 12 "../src/playbin.vala" - case PLAYBIN_SONG_DURATION_PROPERTY: -#line 12 "../src/playbin.vala" - g_value_set_int64 (value, playbin_song_get_duration (self)); -#line 12 "../src/playbin.vala" - break; -#line 12 "../src/playbin.vala" - case PLAYBIN_SONG_TRACK_PROPERTY: -#line 12 "../src/playbin.vala" - g_value_set_int64 (value, playbin_song_get_track (self)); -#line 12 "../src/playbin.vala" - break; -#line 12 "../src/playbin.vala" - case PLAYBIN_SONG_PLAY_COUNT_PROPERTY: -#line 12 "../src/playbin.vala" - g_value_set_int64 (value, playbin_song_get_play_count (self)); -#line 12 "../src/playbin.vala" - break; -#line 12 "../src/playbin.vala" - case PLAYBIN_SONG_THUMBNAIL_PROPERTY: -#line 12 "../src/playbin.vala" - g_value_set_object (value, playbin_song_get_thumbnail (self)); -#line 12 "../src/playbin.vala" - break; -#line 852 "playbin.c" - default: -#line 12 "../src/playbin.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 12 "../src/playbin.vala" - break; -#line 858 "playbin.c" - } -} - -static void -_vala_playbin_song_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - PlaybinSong * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_PLAYBIN_SONG, PlaybinSong); -#line 12 "../src/playbin.vala" - switch (property_id) { -#line 12 "../src/playbin.vala" - case PLAYBIN_SONG_THUMBNAIL_PROPERTY: -#line 12 "../src/playbin.vala" - playbin_song_set_thumbnail (self, g_value_get_object (value)); -#line 12 "../src/playbin.vala" - break; -#line 878 "playbin.c" - default: -#line 12 "../src/playbin.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 12 "../src/playbin.vala" - break; -#line 884 "playbin.c" - } -} - -static inline gpointer -playbin_get_instance_private (Playbin* self) -{ - return G_STRUCT_MEMBER_P (self, Playbin_private_offset); -} - -static void -playbin_mpv_command_async_data_free (gpointer _data) -{ - PlaybinMpvCommandAsyncData* _data_; - _data_ = _data; -#line 62 "../src/playbin.vala" - _g_object_unref0 (_data_->self); -#line 62 "../src/playbin.vala" - g_slice_free (PlaybinMpvCommandAsyncData, _data_); -#line 903 "playbin.c" -} - -static void -playbin_mpv_command_async (Playbin* self, - gchar** args, - gint args_length1, - GAsyncReadyCallback _callback_, - gpointer _user_data_) -{ - PlaybinMpvCommandAsyncData* _data_; - Playbin* _tmp0_; -#line 62 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 62 "../src/playbin.vala" - _data_ = g_slice_new0 (PlaybinMpvCommandAsyncData); -#line 62 "../src/playbin.vala" - _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_); -#line 62 "../src/playbin.vala" - g_task_set_task_data (_data_->_async_result, _data_, playbin_mpv_command_async_data_free); -#line 62 "../src/playbin.vala" - _tmp0_ = _g_object_ref0 (self); -#line 62 "../src/playbin.vala" - _data_->self = _tmp0_; -#line 62 "../src/playbin.vala" - _data_->args = args; -#line 62 "../src/playbin.vala" - _data_->args_length1 = args_length1; -#line 62 "../src/playbin.vala" - playbin_mpv_command_async_co (_data_); -#line 933 "playbin.c" -} - -static mpv_error -playbin_mpv_command_finish (Playbin* self, - GAsyncResult* _res_) -{ - mpv_error result; - PlaybinMpvCommandAsyncData* _data_; -#line 62 "../src/playbin.vala" - _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL); -#line 62 "../src/playbin.vala" - result = _data_->result; -#line 62 "../src/playbin.vala" - return result; -#line 948 "playbin.c" -} - -static gboolean -_playbin_mpv_command_async_co_gsource_func (gpointer self) -{ - gboolean result; - result = playbin_mpv_command_async_co (self); -#line 119 "../src/playbin.vala" - return result; -#line 958 "playbin.c" -} - -static gboolean -playbin_mpv_command_async_co (PlaybinMpvCommandAsyncData* _data_) -{ -#line 114 "../src/playbin.vala" - switch (_data_->_state_) { -#line 114 "../src/playbin.vala" - case 0: -#line 968 "playbin.c" - goto _state_0; -#line 114 "../src/playbin.vala" - case 1: -#line 972 "playbin.c" - goto _state_1; - default: -#line 114 "../src/playbin.vala" - g_assert_not_reached (); -#line 977 "playbin.c" - } - _state_0: -#line 115 "../src/playbin.vala" - memset (&_data_->_tmp0_, 0, sizeof (CommandCallback)); -#line 115 "../src/playbin.vala" - _data_->cc = _data_->_tmp0_; -#line 117 "../src/playbin.vala" - _data_->_tmp1_ = _data_->self->priv->mpv; -#line 117 "../src/playbin.vala" - mpv_command_async (_data_->_tmp1_, (guint64) (&_data_->cc), _data_->args); -#line 119 "../src/playbin.vala" - _data_->cc.callback = _playbin_mpv_command_async_co_gsource_func; -#line 119 "../src/playbin.vala" - _data_->cc.callback_target = _data_; -#line 120 "../src/playbin.vala" - _data_->_state_ = 1; -#line 120 "../src/playbin.vala" - return FALSE; -#line 996 "playbin.c" - _state_1: - ; -#line 121 "../src/playbin.vala" - _data_->_tmp2_ = _data_->cc; -#line 121 "../src/playbin.vala" - _data_->result = _data_->_tmp2_.error; -#line 121 "../src/playbin.vala" - g_task_return_pointer (_data_->_async_result, _data_, NULL); -#line 121 "../src/playbin.vala" - if (_data_->_state_ != 0) { -#line 121 "../src/playbin.vala" - while (!g_task_get_completed (_data_->_async_result)) { -#line 121 "../src/playbin.vala" - g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE); -#line 1011 "playbin.c" - } - } -#line 121 "../src/playbin.vala" - g_object_unref (_data_->_async_result); -#line 121 "../src/playbin.vala" - return FALSE; -#line 1018 "playbin.c" -} - -static void -mpv_event_copy (const mpv_event * self, - mpv_event * dest) -{ - void* _tmp0_; -#line 145 "../src/playbin.vala" - (*dest).event_id = (*self).event_id; -#line 145 "../src/playbin.vala" - (*dest).error = (*self).error; -#line 145 "../src/playbin.vala" - (*dest).reply_userdata = (*self).reply_userdata; -#line 145 "../src/playbin.vala" - _tmp0_ = (*self).data; -#line 145 "../src/playbin.vala" - (*dest).data = _tmp0_; -#line 1036 "playbin.c" -} - -static mpv_event* -_mpv_event_dup (mpv_event* self) -{ - mpv_event* dup; -#line 145 "../src/playbin.vala" - dup = g_new0 (mpv_event, 1); -#line 145 "../src/playbin.vala" - mpv_event_copy (self, dup); -#line 145 "../src/playbin.vala" - return dup; -#line 1049 "playbin.c" -} - -static gpointer -__mpv_event_dup0 (gpointer self) -{ -#line 145 "../src/playbin.vala" - return self ? _mpv_event_dup (self) : NULL; -#line 1057 "playbin.c" -} - -static void -_vala_mpv_event_free (mpv_event* self) -{ -#line 146 "../src/playbin.vala" - (self); -#line 146 "../src/playbin.vala" - g_free (self); -#line 1067 "playbin.c" -} - -static mpv_event_property* -mpv_event_parse_property (mpv_event *self) -{ - void* _tmp0_; - mpv_event_property* result; -#line 120 "mpv.vapi" - _vala_return_val_if_fail ((*self).event_id == MPV_EVENT_PROPERTY_CHANGE, "event_id == EventId.PROPERTY_CHANGE", NULL); -#line 120 "mpv.vapi" - _vala_return_val_if_fail ((*self).error >= 0, "error >= 0", NULL); -#line 124 "mpv.vapi" - _tmp0_ = (*self).data; -#line 124 "mpv.vapi" - result = (mpv_event_property*) _tmp0_; -#line 124 "mpv.vapi" - return result; -#line 1085 "playbin.c" -} - -static void -mpv_event_property_copy (const mpv_event_property * self, - mpv_event_property * dest) -{ - const gchar* _tmp0_; - void* _tmp1_; -#line 150 "../src/playbin.vala" - _tmp0_ = (*self).name; -#line 150 "../src/playbin.vala" - (*dest).name = _tmp0_; -#line 150 "../src/playbin.vala" - (*dest).format = (*self).format; -#line 150 "../src/playbin.vala" - _tmp1_ = (*self).data; -#line 150 "../src/playbin.vala" - (*dest).data = _tmp1_; -#line 1104 "playbin.c" -} - -static mpv_event_property* -_mpv_event_property_dup (mpv_event_property* self) -{ - mpv_event_property* dup; -#line 150 "../src/playbin.vala" - dup = g_new0 (mpv_event_property, 1); -#line 150 "../src/playbin.vala" - mpv_event_property_copy (self, dup); -#line 150 "../src/playbin.vala" - return dup; -#line 1117 "playbin.c" -} - -static gpointer -__mpv_event_property_dup0 (gpointer self) -{ -#line 150 "../src/playbin.vala" - return self ? _mpv_event_property_dup (self) : NULL; -#line 1125 "playbin.c" -} - -static gdouble -mpv_event_property_parse_double (mpv_event_property *self) -{ - void* _tmp0_; - gdouble result; -#line 147 "mpv.vapi" - _vala_return_val_if_fail ((*self).format == MPV_FORMAT_DOUBLE, "format == Format.DOUBLE", 0.0); -#line 150 "mpv.vapi" - _tmp0_ = (*self).data; -#line 150 "mpv.vapi" - result = *((gdouble*) _tmp0_); -#line 150 "mpv.vapi" - return result; -#line 1141 "playbin.c" -} - -static gint64 -mpv_event_property_parse_int64 (mpv_event_property *self) -{ - void* _tmp0_; - gint64 result; -#line 141 "mpv.vapi" - _vala_return_val_if_fail ((*self).format == MPV_FORMAT_INT64, "format == Format.INT64", 0LL); -#line 144 "mpv.vapi" - _tmp0_ = (*self).data; -#line 144 "mpv.vapi" - result = *((gint64*) _tmp0_); -#line 144 "mpv.vapi" - return result; -#line 1157 "playbin.c" -} - -static gboolean -mpv_event_property_parse_flag (mpv_event_property *self) -{ - void* _tmp0_; - gboolean result; -#line 153 "mpv.vapi" - _vala_return_val_if_fail ((*self).format == MPV_FORMAT_FLAG, "format == Format.FLAG", FALSE); -#line 156 "mpv.vapi" - _tmp0_ = (*self).data; -#line 156 "mpv.vapi" - result = (*((gint*) _tmp0_)) == 1; -#line 156 "mpv.vapi" - return result; -#line 1173 "playbin.c" -} - -static void -_vala_mpv_event_property_free (mpv_event_property* self) -{ -#line 207 "../src/playbin.vala" - (self); -#line 207 "../src/playbin.vala" - g_free (self); -#line 1183 "playbin.c" -} - -static mpv_event_end_file* -mpv_event_parse_end_file (mpv_event *self) -{ - void* _tmp0_; - mpv_event_end_file* result; -#line 127 "mpv.vapi" - _vala_return_val_if_fail ((*self).event_id == MPV_EVENT_END_FILE, "event_id == EventId.END_FILE", NULL); -#line 127 "mpv.vapi" - _vala_return_val_if_fail ((*self).error >= 0, "error >= 0", NULL); -#line 131 "mpv.vapi" - _tmp0_ = (*self).data; -#line 131 "mpv.vapi" - result = (mpv_event_end_file*) _tmp0_; -#line 131 "mpv.vapi" - return result; -#line 1201 "playbin.c" -} - -static void -mpv_event_end_file_copy (const mpv_event_end_file * self, - mpv_event_end_file * dest) -{ -#line 220 "../src/playbin.vala" - (*dest).reason = (*self).reason; -#line 220 "../src/playbin.vala" - (*dest).error = (*self).error; -#line 220 "../src/playbin.vala" - (*dest).playlist_entry_id = (*self).playlist_entry_id; -#line 220 "../src/playbin.vala" - (*dest).playlist_insert_num_entries = (*self).playlist_insert_num_entries; -#line 1216 "playbin.c" -} - -static mpv_event_end_file* -_mpv_event_end_file_dup (mpv_event_end_file* self) -{ - mpv_event_end_file* dup; -#line 220 "../src/playbin.vala" - dup = g_new0 (mpv_event_end_file, 1); -#line 220 "../src/playbin.vala" - mpv_event_end_file_copy (self, dup); -#line 220 "../src/playbin.vala" - return dup; -#line 1229 "playbin.c" -} - -static gpointer -__mpv_event_end_file_dup0 (gpointer self) -{ -#line 220 "../src/playbin.vala" - return self ? _mpv_event_end_file_dup (self) : NULL; -#line 1237 "playbin.c" -} - -static const char* -_mpv_end_file_reason_to_string (mpv_end_file_reason value) -{ -#line 221 "../src/playbin.vala" - switch (value) { -#line 221 "../src/playbin.vala" - case MPV_END_FILE_REASON_EOF: -#line 221 "../src/playbin.vala" - return "MPV_END_FILE_REASON_EOF"; -#line 221 "../src/playbin.vala" - case MPV_END_FILE_REASON_STOP: -#line 221 "../src/playbin.vala" - return "MPV_END_FILE_REASON_STOP"; -#line 221 "../src/playbin.vala" - case MPV_END_FILE_REASON_QUIT: -#line 221 "../src/playbin.vala" - return "MPV_END_FILE_REASON_QUIT"; -#line 221 "../src/playbin.vala" - case MPV_END_FILE_REASON_ERROR: -#line 221 "../src/playbin.vala" - return "MPV_END_FILE_REASON_ERROR"; -#line 221 "../src/playbin.vala" - case MPV_END_FILE_REASON_REDIRECT: -#line 221 "../src/playbin.vala" - return "MPV_END_FILE_REASON_REDIRECT"; -#line 1265 "playbin.c" - } -#line 221 "../src/playbin.vala" - return NULL; -#line 1269 "playbin.c" -} - -static void -_vala_mpv_event_end_file_free (mpv_event_end_file* self) -{ -#line 239 "../src/playbin.vala" - (self); -#line 239 "../src/playbin.vala" - g_free (self); -#line 1279 "playbin.c" -} - -static gboolean -__lambda5_ (Playbin* self) -{ - gboolean result; -#line 138 "../src/playbin.vala" - if (self->priv->is_handling_event) { -#line 139 "../src/playbin.vala" - g_warning ("playbin.vala:139: main thread mpv wakeup callback called twice"); -#line 140 "../src/playbin.vala" - result = FALSE; -#line 140 "../src/playbin.vala" - return result; -#line 1294 "playbin.c" - } -#line 142 "../src/playbin.vala" - self->priv->is_handling_event = TRUE; -#line 144 "../src/playbin.vala" - while (TRUE) { -#line 1300 "playbin.c" - mpv_event* event = NULL; - mpv_handle* _tmp0_; - mpv_event* _tmp1_; - mpv_event* _tmp2_; - mpv_event* _tmp3_; -#line 145 "../src/playbin.vala" - _tmp0_ = self->priv->mpv; -#line 145 "../src/playbin.vala" - _tmp1_ = __mpv_event_dup0 (mpv_wait_event (_tmp0_, 0.0)); -#line 145 "../src/playbin.vala" - event = _tmp1_; -#line 146 "../src/playbin.vala" - _tmp2_ = event; -#line 146 "../src/playbin.vala" - if ((*_tmp2_).event_id == MPV_EVENT_NONE) { -#line 146 "../src/playbin.vala" - __vala_mpv_event_free0 (event); -#line 146 "../src/playbin.vala" - break; -#line 1320 "playbin.c" - } -#line 148 "../src/playbin.vala" - _tmp3_ = event; -#line 148 "../src/playbin.vala" - switch ((*_tmp3_).event_id) { -#line 148 "../src/playbin.vala" - case MPV_EVENT_PROPERTY_CHANGE: -#line 1328 "playbin.c" - { - mpv_event_property* data = NULL; - mpv_event* _tmp4_; - mpv_event_property* _tmp5_; - mpv_event* _tmp6_; -#line 150 "../src/playbin.vala" - _tmp4_ = event; -#line 150 "../src/playbin.vala" - _tmp5_ = __mpv_event_property_dup0 (mpv_event_parse_property (_tmp4_)); -#line 150 "../src/playbin.vala" - data = _tmp5_; -#line 151 "../src/playbin.vala" - _tmp6_ = event; -#line 151 "../src/playbin.vala" - switch ((*_tmp6_).reply_userdata) { -#line 151 "../src/playbin.vala" - case 0: -#line 1346 "playbin.c" - { - mpv_event_property* _tmp7_; - const gchar* _tmp8_; - mpv_event_property* _tmp9_; -#line 153 "../src/playbin.vala" - _tmp7_ = data; -#line 153 "../src/playbin.vala" - _tmp8_ = (*_tmp7_).name; -#line 153 "../src/playbin.vala" - _vala_assert (g_strcmp0 (_tmp8_, "time-pos") == 0, "data.name == \"time-pos\""); -#line 154 "../src/playbin.vala" - _tmp9_ = data; -#line 154 "../src/playbin.vala" - if ((*_tmp9_).format == MPV_FORMAT_NONE) { -#line 155 "../src/playbin.vala" - playbin_set_position (self, 0.0); -#line 1363 "playbin.c" - } else { - mpv_event_property* _tmp10_; -#line 157 "../src/playbin.vala" - _tmp10_ = data; -#line 157 "../src/playbin.vala" - playbin_set_position (self, mpv_event_property_parse_double (_tmp10_)); -#line 1370 "playbin.c" - } -#line 159 "../src/playbin.vala" - break; -#line 1374 "playbin.c" - } -#line 151 "../src/playbin.vala" - case 1: -#line 1378 "playbin.c" - { - mpv_event_property* _tmp11_; - const gchar* _tmp12_; - mpv_event_property* _tmp13_; -#line 162 "../src/playbin.vala" - _tmp11_ = data; -#line 162 "../src/playbin.vala" - _tmp12_ = (*_tmp11_).name; -#line 162 "../src/playbin.vala" - _vala_assert (g_strcmp0 (_tmp12_, "duration") == 0, "data.name == \"duration\""); -#line 163 "../src/playbin.vala" - _tmp13_ = data; -#line 163 "../src/playbin.vala" - if ((*_tmp13_).format == MPV_FORMAT_NONE) { -#line 1393 "playbin.c" - } else { - mpv_event_property* _tmp14_; -#line 166 "../src/playbin.vala" - _tmp14_ = data; -#line 166 "../src/playbin.vala" - playbin_set_duration (self, mpv_event_property_parse_double (_tmp14_)); -#line 1400 "playbin.c" - } -#line 168 "../src/playbin.vala" - break; -#line 1404 "playbin.c" - } -#line 151 "../src/playbin.vala" - case 2: -#line 1408 "playbin.c" - { - mpv_event_property* _tmp15_; - const gchar* _tmp16_; - gint64 playlist_pos = 0LL; - mpv_event_property* _tmp17_; -#line 173 "../src/playbin.vala" - _tmp15_ = data; -#line 173 "../src/playbin.vala" - _tmp16_ = (*_tmp15_).name; -#line 173 "../src/playbin.vala" - _vala_assert (g_strcmp0 (_tmp16_, "playlist-pos") == 0, "data.name == \"playlist-pos\""); -#line 174 "../src/playbin.vala" - _tmp17_ = data; -#line 174 "../src/playbin.vala" - playlist_pos = mpv_event_property_parse_int64 (_tmp17_); -#line 175 "../src/playbin.vala" - if (playlist_pos < ((gint64) 0)) { -#line 1426 "playbin.c" - PlaybinState _tmp18_; - gint _tmp20_; -#line 176 "../src/playbin.vala" - _tmp18_ = self->priv->_state; -#line 176 "../src/playbin.vala" - if (_tmp18_ != PLAYBIN_STATE_STOPPED) { -#line 1433 "playbin.c" - gint _tmp19_; -#line 177 "../src/playbin.vala" - _tmp19_ = self->priv->_play_queue_position; -#line 177 "../src/playbin.vala" - g_error ("playbin.vala:177: mpv has no current playlist entry, but we think it's" \ -" index %d", _tmp19_); -#line 1439 "playbin.c" - } -#line 179 "../src/playbin.vala" - _tmp20_ = self->priv->_play_queue_position; -#line 179 "../src/playbin.vala" - _vala_assert (_tmp20_ < 0, "this.play_queue_position < 0"); -#line 1445 "playbin.c" - } else { - PlaybinState _tmp21_; - gint _tmp22_; -#line 181 "../src/playbin.vala" - _tmp21_ = self->priv->_state; -#line 181 "../src/playbin.vala" - if (_tmp21_ == PLAYBIN_STATE_STOPPED) { -#line 182 "../src/playbin.vala" - g_error ("playbin.vala:182: mpv is at playlist entry %d, but we're stopped", (gint) playlist_pos); -#line 1455 "playbin.c" - } -#line 184 "../src/playbin.vala" - _tmp22_ = self->priv->_play_queue_position; -#line 184 "../src/playbin.vala" - if (_tmp22_ != ((gint) playlist_pos)) { -#line 1461 "playbin.c" - gint _tmp23_; -#line 185 "../src/playbin.vala" - _tmp23_ = self->priv->_play_queue_position; -#line 185 "../src/playbin.vala" - g_error ("playbin.vala:185: mpv is at playlist entry %d, but we think it's %d", (gint) playlist_pos, _tmp23_); -#line 1467 "playbin.c" - } - } -#line 188 "../src/playbin.vala" - break; -#line 1472 "playbin.c" - } -#line 151 "../src/playbin.vala" - case 3: -#line 1476 "playbin.c" - { - mpv_event_property* _tmp24_; - const gchar* _tmp25_; - gboolean pause = FALSE; - mpv_event_property* _tmp26_; - gboolean _tmp27_ = FALSE; - gboolean _tmp29_ = FALSE; -#line 193 "../src/playbin.vala" - _tmp24_ = data; -#line 193 "../src/playbin.vala" - _tmp25_ = (*_tmp24_).name; -#line 193 "../src/playbin.vala" - _vala_assert (g_strcmp0 (_tmp25_, "pause") == 0, "data.name == \"pause\""); -#line 194 "../src/playbin.vala" - _tmp26_ = data; -#line 194 "../src/playbin.vala" - pause = mpv_event_property_parse_flag (_tmp26_); -#line 195 "../src/playbin.vala" - if (pause) { -#line 1496 "playbin.c" - PlaybinState _tmp28_; -#line 195 "../src/playbin.vala" - _tmp28_ = self->priv->_state; -#line 195 "../src/playbin.vala" - _tmp27_ = _tmp28_ != PLAYBIN_STATE_PAUSED; -#line 1502 "playbin.c" - } else { -#line 195 "../src/playbin.vala" - _tmp27_ = FALSE; -#line 1506 "playbin.c" - } -#line 195 "../src/playbin.vala" - if (_tmp27_) { -#line 196 "../src/playbin.vala" - g_error ("playbin.vala:196: %s", "mpv is paused, but we are @(this.state)"); -#line 1512 "playbin.c" - } -#line 198 "../src/playbin.vala" - if (!pause) { -#line 1516 "playbin.c" - PlaybinState _tmp30_; -#line 198 "../src/playbin.vala" - _tmp30_ = self->priv->_state; -#line 198 "../src/playbin.vala" - _tmp29_ = _tmp30_ == PLAYBIN_STATE_PAUSED; -#line 1522 "playbin.c" - } else { -#line 198 "../src/playbin.vala" - _tmp29_ = FALSE; -#line 1526 "playbin.c" - } -#line 198 "../src/playbin.vala" - if (_tmp29_) { -#line 199 "../src/playbin.vala" - g_error ("playbin.vala:199: mpv is not paused, but we are paused"); -#line 1532 "playbin.c" - } -#line 201 "../src/playbin.vala" - break; -#line 1536 "playbin.c" - } - default: - { -#line 204 "../src/playbin.vala" - _vala_assert (FALSE, "false"); -#line 205 "../src/playbin.vala" - break; -#line 1544 "playbin.c" - } - } -#line 207 "../src/playbin.vala" - __vala_mpv_event_property_free0 (data); -#line 207 "../src/playbin.vala" - break; -#line 1551 "playbin.c" - } -#line 148 "../src/playbin.vala" - case MPV_EVENT_START_FILE: -#line 1555 "playbin.c" - { - GListStore* _tmp31_; - gint _tmp32_; - GObject* _tmp33_; - PlaybinSong* _tmp34_; - gint64 _tmp35_; - gint64 _tmp36_; -#line 210 "../src/playbin.vala" - g_debug ("playbin.vala:210: START_FILE received"); -#line 214 "../src/playbin.vala" - _tmp31_ = self->priv->_play_queue; -#line 214 "../src/playbin.vala" - _tmp32_ = self->priv->_play_queue_position; -#line 214 "../src/playbin.vala" - _tmp33_ = g_list_model_get_item ((GListModel*) _tmp31_, (guint) _tmp32_); -#line 214 "../src/playbin.vala" - _tmp34_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp33_, TYPE_PLAYBIN_SONG, PlaybinSong); -#line 214 "../src/playbin.vala" - _tmp35_ = playbin_song_get_duration (_tmp34_); -#line 214 "../src/playbin.vala" - _tmp36_ = _tmp35_; -#line 214 "../src/playbin.vala" - playbin_set_duration (self, (gdouble) _tmp36_); -#line 214 "../src/playbin.vala" - _g_object_unref0 (_tmp34_); -#line 216 "../src/playbin.vala" - g_signal_emit (self, playbin_signals[PLAYBIN_NEW_TRACK_SIGNAL], 0); -#line 217 "../src/playbin.vala" - break; -#line 1585 "playbin.c" - } -#line 148 "../src/playbin.vala" - case MPV_EVENT_END_FILE: -#line 1589 "playbin.c" - { - mpv_event_end_file* data = NULL; - mpv_event* _tmp37_; - mpv_event_end_file* _tmp38_; - mpv_event_end_file* _tmp39_; - const gchar* _tmp40_; - gchar* _tmp41_; - gchar* _tmp42_; - mpv_event_end_file* _tmp43_; - mpv_event_end_file* _tmp46_; -#line 220 "../src/playbin.vala" - _tmp37_ = event; -#line 220 "../src/playbin.vala" - _tmp38_ = __mpv_event_end_file_dup0 (mpv_event_parse_end_file (_tmp37_)); -#line 220 "../src/playbin.vala" - data = _tmp38_; -#line 221 "../src/playbin.vala" - _tmp39_ = data; -#line 221 "../src/playbin.vala" - _tmp40_ = _mpv_end_file_reason_to_string ((*_tmp39_).reason); -#line 221 "../src/playbin.vala" - _tmp41_ = g_strconcat ("END_FILE received (reason: ", _tmp40_, ")", NULL); -#line 221 "../src/playbin.vala" - _tmp42_ = _tmp41_; -#line 221 "../src/playbin.vala" - g_debug ("playbin.vala:221: %s", _tmp42_); -#line 221 "../src/playbin.vala" - _g_free0 (_tmp42_); -#line 223 "../src/playbin.vala" - _tmp43_ = data; -#line 223 "../src/playbin.vala" - if ((*_tmp43_).error < 0) { -#line 1622 "playbin.c" - mpv_event_end_file* _tmp44_; - const gchar* _tmp45_; -#line 224 "../src/playbin.vala" - _tmp44_ = data; -#line 224 "../src/playbin.vala" - _tmp45_ = mpv_error_string ((*_tmp44_).error); -#line 224 "../src/playbin.vala" - g_warning ("playbin.vala:224: playback of track aborted: %s", _tmp45_); -#line 1631 "playbin.c" - } -#line 227 "../src/playbin.vala" - _tmp46_ = data; -#line 227 "../src/playbin.vala" - if ((*_tmp46_).reason == MPV_END_FILE_REASON_EOF) { -#line 1637 "playbin.c" - gint _tmp47_; - gint _tmp48_; - GListStore* _tmp49_; -#line 229 "../src/playbin.vala" - _tmp47_ = self->priv->_play_queue_position; -#line 229 "../src/playbin.vala" - playbin_set_play_queue_position (self, _tmp47_ + 1); -#line 231 "../src/playbin.vala" - _tmp48_ = self->priv->_play_queue_position; -#line 231 "../src/playbin.vala" - _tmp49_ = self->priv->_play_queue; -#line 231 "../src/playbin.vala" - if (((guint) _tmp48_) == g_list_model_get_n_items ((GListModel*) _tmp49_)) { -#line 233 "../src/playbin.vala" - playbin_set_state (self, PLAYBIN_STATE_STOPPED); -#line 234 "../src/playbin.vala" - playbin_set_play_queue_position (self, -1); -#line 235 "../src/playbin.vala" - g_signal_emit (self, playbin_signals[PLAYBIN_STOPPED_SIGNAL], 0); -#line 1657 "playbin.c" - } - } -#line 239 "../src/playbin.vala" - __vala_mpv_event_end_file_free0 (data); -#line 239 "../src/playbin.vala" - break; -#line 1664 "playbin.c" - } -#line 148 "../src/playbin.vala" - case MPV_EVENT_COMMAND_REPLY: -#line 1668 "playbin.c" - { - CommandCallback* cc = NULL; - mpv_event* _tmp50_; - mpv_event* _tmp51_; - CommandCallback* _tmp52_; - GSourceFunc _tmp53_; - gpointer _tmp53__target; -#line 242 "../src/playbin.vala" - _tmp50_ = event; -#line 242 "../src/playbin.vala" - cc = (CommandCallback*) (*_tmp50_).reply_userdata; -#line 243 "../src/playbin.vala" - _tmp51_ = event; -#line 243 "../src/playbin.vala" - (*cc).error = (gint) (*_tmp51_).error; -#line 244 "../src/playbin.vala" - _tmp52_ = cc; -#line 244 "../src/playbin.vala" - _tmp53_ = (*_tmp52_).callback; -#line 244 "../src/playbin.vala" - _tmp53__target = (*_tmp52_).callback_target; -#line 244 "../src/playbin.vala" - _tmp53_ (_tmp53__target); -#line 245 "../src/playbin.vala" - break; -#line 1694 "playbin.c" - } - default: - { -#line 249 "../src/playbin.vala" - break; -#line 1700 "playbin.c" - } - } -#line 144 "../src/playbin.vala" - __vala_mpv_event_free0 (event); -#line 1705 "playbin.c" - } -#line 253 "../src/playbin.vala" - self->priv->is_handling_event = FALSE; -#line 254 "../src/playbin.vala" - result = FALSE; -#line 254 "../src/playbin.vala" - return result; -#line 1713 "playbin.c" -} - -static gboolean -___lambda5__gsource_func (gpointer self) -{ - gboolean result; - result = __lambda5_ ((Playbin*) self); -#line 137 "../src/playbin.vala" - return result; -#line 1723 "playbin.c" -} - -static void -__lambda4_ (Playbin* self) -{ -#line 137 "../src/playbin.vala" - g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ___lambda5__gsource_func, g_object_ref (self), g_object_unref); -#line 1731 "playbin.c" -} - -static void -___lambda4__mpv_wakeup_callback (gpointer self) -{ -#line 136 "../src/playbin.vala" - __lambda4_ ((Playbin*) self); -#line 1739 "playbin.c" -} - -Playbin* -playbin_construct (GType object_type) -{ - Playbin * self = NULL; - mpv_handle* _tmp0_; - mpv_handle* _tmp1_; - mpv_handle* _tmp2_; - mpv_handle* _tmp3_; - mpv_handle* _tmp4_; - mpv_handle* _tmp5_; - mpv_handle* _tmp6_; - mpv_handle* _tmp7_; - mpv_handle* _tmp8_; - mpv_handle* _tmp9_; - mpv_handle* _tmp10_; -#line 124 "../src/playbin.vala" - self = (Playbin*) g_object_new (object_type, NULL); -#line 125 "../src/playbin.vala" - _tmp0_ = self->priv->mpv; -#line 125 "../src/playbin.vala" - _vala_assert (mpv_initialize (_tmp0_) >= 0, "this.mpv.initialize () >= 0"); -#line 126 "../src/playbin.vala" - _tmp1_ = self->priv->mpv; -#line 126 "../src/playbin.vala" - _vala_assert (mpv_set_property_string (_tmp1_, "audio-client-name", "audrey") >= 0, "this.mpv.set_property_string (\"audio-client-name\", \"audrey\") >= 0"); -#line 127 "../src/playbin.vala" - _tmp2_ = self->priv->mpv; -#line 127 "../src/playbin.vala" - _vala_assert (mpv_set_property_string (_tmp2_, "user-agent", AUDREY_CONST_user_agent) >= 0, "this.mpv.set_property_string (\"user-agent\", Audrey.Const.user_agent) >= 0"); -#line 128 "../src/playbin.vala" - _tmp3_ = self->priv->mpv; -#line 128 "../src/playbin.vala" - _vala_assert (mpv_set_property_string (_tmp3_, "video", "no") >= 0, "this.mpv.set_property_string (\"video\", \"no\") >= 0"); -#line 129 "../src/playbin.vala" - _tmp4_ = self->priv->mpv; -#line 129 "../src/playbin.vala" - _vala_assert (mpv_set_property_string (_tmp4_, "prefetch-playlist", "yes") >= 0, "this.mpv.set_property_string (\"prefetch-playlist\", \"yes\") >= 0"); -#line 130 "../src/playbin.vala" - _tmp5_ = self->priv->mpv; -#line 130 "../src/playbin.vala" - _vala_assert (mpv_set_property_string (_tmp5_, "gapless-audio", "yes") >= 0, "this.mpv.set_property_string (\"gapless-audio\", \"yes\") >= 0"); -#line 131 "../src/playbin.vala" - _tmp6_ = self->priv->mpv; -#line 131 "../src/playbin.vala" - _vala_assert (mpv_observe_property (_tmp6_, (guint64) 0, "time-pos", MPV_FORMAT_DOUBLE) >= 0, "this.mpv.observe_property (0, \"time-pos\", Mpv.Format.DOUBLE) >= 0"); -#line 132 "../src/playbin.vala" - _tmp7_ = self->priv->mpv; -#line 132 "../src/playbin.vala" - _vala_assert (mpv_observe_property (_tmp7_, (guint64) 1, "duration", MPV_FORMAT_DOUBLE) >= 0, "this.mpv.observe_property (1, \"duration\", Mpv.Format.DOUBLE) >= 0"); -#line 133 "../src/playbin.vala" - _tmp8_ = self->priv->mpv; -#line 133 "../src/playbin.vala" - _vala_assert (mpv_observe_property (_tmp8_, (guint64) 2, "playlist-pos", MPV_FORMAT_INT64) >= 0, "this.mpv.observe_property (2, \"playlist-pos\", Mpv.Format.INT64) >= 0"); -#line 134 "../src/playbin.vala" - _tmp9_ = self->priv->mpv; -#line 134 "../src/playbin.vala" - _vala_assert (mpv_observe_property (_tmp9_, (guint64) 3, "pause", MPV_FORMAT_FLAG) >= 0, "this.mpv.observe_property (3, \"pause\", Mpv.Format.FLAG) >= 0"); -#line 136 "../src/playbin.vala" - _tmp10_ = self->priv->mpv; -#line 136 "../src/playbin.vala" - mpv_set_wakeup_callback (_tmp10_, ___lambda4__mpv_wakeup_callback, self); -#line 124 "../src/playbin.vala" - return self; -#line 1805 "playbin.c" -} - -Playbin* -playbin_new (void) -{ -#line 124 "../src/playbin.vala" - return playbin_construct (TYPE_PLAYBIN); -#line 1813 "playbin.c" -} - -static gchar* -double_to_string (gdouble self) -{ - gchar* _tmp0_; - gchar* _tmp1_; - gint _tmp1__length1; - const gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gchar* result; -#line 997 "glib-2.0.vapi" - _tmp0_ = g_new0 (gchar, G_ASCII_DTOSTR_BUF_SIZE); -#line 997 "glib-2.0.vapi" - _tmp1_ = _tmp0_; -#line 997 "glib-2.0.vapi" - _tmp1__length1 = G_ASCII_DTOSTR_BUF_SIZE; -#line 997 "glib-2.0.vapi" - _tmp2_ = g_ascii_dtostr (_tmp1_, (gint) G_ASCII_DTOSTR_BUF_SIZE, self); -#line 997 "glib-2.0.vapi" - _tmp3_ = g_strdup (_tmp2_); -#line 997 "glib-2.0.vapi" - _tmp4_ = _tmp3_; -#line 997 "glib-2.0.vapi" - _tmp1_ = (g_free (_tmp1_), NULL); -#line 997 "glib-2.0.vapi" - result = _tmp4_; -#line 997 "glib-2.0.vapi" - return result; -#line 1844 "playbin.c" -} - -void -playbin_seek (Playbin* self, - gdouble position) -{ - mpv_error rc = 0; - mpv_handle* _tmp0_; - gchar* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; - gchar** _tmp4_; - gchar** _tmp5_; - gint _tmp5__length1; - mpv_error _tmp6_; -#line 259 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 260 "../src/playbin.vala" - _tmp0_ = self->priv->mpv; -#line 260 "../src/playbin.vala" - _tmp1_ = g_strdup ("seek"); -#line 260 "../src/playbin.vala" - _tmp2_ = double_to_string (position); -#line 260 "../src/playbin.vala" - _tmp3_ = g_strdup ("absolute"); -#line 260 "../src/playbin.vala" - _tmp4_ = g_new0 (gchar*, 3 + 1); -#line 260 "../src/playbin.vala" - _tmp4_[0] = _tmp1_; -#line 260 "../src/playbin.vala" - _tmp4_[1] = _tmp2_; -#line 260 "../src/playbin.vala" - _tmp4_[2] = _tmp3_; -#line 260 "../src/playbin.vala" - _tmp5_ = _tmp4_; -#line 260 "../src/playbin.vala" - _tmp5__length1 = 3; -#line 260 "../src/playbin.vala" - _tmp6_ = mpv_command (_tmp0_, _tmp5_); -#line 260 "../src/playbin.vala" - _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL); -#line 260 "../src/playbin.vala" - rc = _tmp6_; -#line 261 "../src/playbin.vala" - if (rc < 0) { -#line 1890 "playbin.c" - gchar* _tmp7_; - gchar* _tmp8_; - const gchar* _tmp9_; - gchar* _tmp10_; - gchar* _tmp11_; -#line 262 "../src/playbin.vala" - _tmp7_ = double_to_string (position); -#line 262 "../src/playbin.vala" - _tmp8_ = _tmp7_; -#line 262 "../src/playbin.vala" - _tmp9_ = mpv_error_string (rc); -#line 262 "../src/playbin.vala" - _tmp10_ = g_strconcat ("could not seek to ", _tmp8_, ": ", _tmp9_, NULL); -#line 262 "../src/playbin.vala" - _tmp11_ = _tmp10_; -#line 262 "../src/playbin.vala" - g_warning ("playbin.vala:262: %s", _tmp11_); -#line 262 "../src/playbin.vala" - _g_free0 (_tmp11_); -#line 262 "../src/playbin.vala" - _g_free0 (_tmp8_); -#line 1912 "playbin.c" - } else { -#line 264 "../src/playbin.vala" - playbin_set_position (self, position); -#line 1916 "playbin.c" - } -} - -void -playbin_select_track (Playbin* self, - guint position) -{ - GListModel* _tmp0_; - GListModel* _tmp1_; - mpv_handle* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gchar** _tmp5_; - gchar** _tmp6_; - gint _tmp6__length1; -#line 269 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 269 "../src/playbin.vala" - _tmp0_ = playbin_get_play_queue (self); -#line 269 "../src/playbin.vala" - _tmp1_ = _tmp0_; -#line 269 "../src/playbin.vala" - _vala_return_if_fail (position < g_list_model_get_n_items (_tmp1_), "position < this.play_queue.get_n_items ()"); -#line 272 "../src/playbin.vala" - _tmp2_ = self->priv->mpv; -#line 272 "../src/playbin.vala" - _tmp3_ = g_strdup ("playlist-play-index"); -#line 272 "../src/playbin.vala" - _tmp4_ = g_strdup_printf ("%u", position); -#line 272 "../src/playbin.vala" - _tmp5_ = g_new0 (gchar*, 2 + 1); -#line 272 "../src/playbin.vala" - _tmp5_[0] = _tmp3_; -#line 272 "../src/playbin.vala" - _tmp5_[1] = _tmp4_; -#line 272 "../src/playbin.vala" - _tmp6_ = _tmp5_; -#line 272 "../src/playbin.vala" - _tmp6__length1 = 2; -#line 272 "../src/playbin.vala" - _vala_assert (mpv_command (_tmp2_, _tmp6_) >= 0, "this.mpv.command ({\"playlist-play-index\", position.to_string ()}) >= 0"); -#line 272 "../src/playbin.vala" - _tmp6_ = (_vala_array_free (_tmp6_, _tmp6__length1, (GDestroyNotify) g_free), NULL); -#line 273 "../src/playbin.vala" - playbin_set_play_queue_position (self, (gint) position); -#line 274 "../src/playbin.vala" - playbin_set_state (self, PLAYBIN_STATE_PLAYING); -#line 275 "../src/playbin.vala" - playbin_play (self); -#line 1966 "playbin.c" -} - -static mpv_error -mpv_handle_set_property_flag (mpv_handle* self, - const gchar* name, - gboolean value) -{ - gint _tmp0_ = 0; - gint flag = 0; - mpv_error result; -#line 60 "mpv.vapi" - g_return_val_if_fail (self != NULL, 0); -#line 60 "mpv.vapi" - g_return_val_if_fail (name != NULL, 0); -#line 61 "mpv.vapi" - if (value) { -#line 61 "mpv.vapi" - _tmp0_ = 1; -#line 1985 "playbin.c" - } else { -#line 61 "mpv.vapi" - _tmp0_ = 0; -#line 1989 "playbin.c" - } -#line 61 "mpv.vapi" - flag = _tmp0_; -#line 62 "mpv.vapi" - result = mpv_set_property (self, name, MPV_FORMAT_FLAG, &flag); -#line 62 "mpv.vapi" - return result; -#line 1997 "playbin.c" -} - -static const gchar* -string_to_string (const gchar* self) -{ - const gchar* result; -#line 1589 "glib-2.0.vapi" - g_return_val_if_fail (self != NULL, NULL); -#line 1590 "glib-2.0.vapi" - result = self; -#line 1590 "glib-2.0.vapi" - return result; -#line 2010 "playbin.c" -} - -void -playbin_pause (Playbin* self) -{ - PlaybinState _tmp0_; - mpv_error ret = 0; - mpv_handle* _tmp1_; -#line 278 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 279 "../src/playbin.vala" - _tmp0_ = self->priv->_state; -#line 279 "../src/playbin.vala" - _vala_assert (_tmp0_ != PLAYBIN_STATE_STOPPED, "this.state != PlaybinState.STOPPED"); -#line 280 "../src/playbin.vala" - playbin_set_state (self, PLAYBIN_STATE_PAUSED); -#line 281 "../src/playbin.vala" - g_debug ("playbin.vala:281: setting state to paused"); -#line 283 "../src/playbin.vala" - _tmp1_ = self->priv->mpv; -#line 283 "../src/playbin.vala" - ret = mpv_handle_set_property_flag (_tmp1_, "pause", TRUE); -#line 284 "../src/playbin.vala" - if (ret != 0) { -#line 2035 "playbin.c" - const gchar* _tmp2_; - const gchar* _tmp3_; - const gchar* _tmp4_; - gchar* _tmp5_; - gchar* _tmp6_; -#line 285 "../src/playbin.vala" - _tmp2_ = mpv_error_string (ret); -#line 285 "../src/playbin.vala" - _tmp3_ = mpv_error_string (ret); -#line 285 "../src/playbin.vala" - _tmp4_ = string_to_string (_tmp3_); -#line 285 "../src/playbin.vala" - _tmp5_ = g_strconcat ("failed to set state to paused (", _tmp2_, "): ", _tmp4_, NULL); -#line 285 "../src/playbin.vala" - _tmp6_ = _tmp5_; -#line 285 "../src/playbin.vala" - g_debug ("playbin.vala:285: %s", _tmp6_); -#line 285 "../src/playbin.vala" - _g_free0 (_tmp6_); -#line 2055 "playbin.c" - } -} - -void -playbin_play (Playbin* self) -{ - PlaybinState _tmp0_; -#line 289 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 290 "../src/playbin.vala" - _tmp0_ = self->priv->_state; -#line 290 "../src/playbin.vala" - if (_tmp0_ == PLAYBIN_STATE_STOPPED) { -#line 2069 "playbin.c" - GListStore* _tmp1_; -#line 293 "../src/playbin.vala" - _tmp1_ = self->priv->_play_queue; -#line 293 "../src/playbin.vala" - _vala_assert (g_list_model_get_n_items ((GListModel*) _tmp1_) > ((guint) 0), "this._play_queue.get_n_items () > 0"); -#line 294 "../src/playbin.vala" - playbin_select_track (self, (guint) 0); -#line 2077 "playbin.c" - } else { - mpv_error ret = 0; - mpv_handle* _tmp2_; -#line 296 "../src/playbin.vala" - playbin_set_state (self, PLAYBIN_STATE_PLAYING); -#line 297 "../src/playbin.vala" - g_debug ("playbin.vala:297: setting state to playing"); -#line 298 "../src/playbin.vala" - _tmp2_ = self->priv->mpv; -#line 298 "../src/playbin.vala" - ret = mpv_handle_set_property_flag (_tmp2_, "pause", FALSE); -#line 299 "../src/playbin.vala" - if (ret != 0) { -#line 2091 "playbin.c" - const gchar* _tmp3_; - const gchar* _tmp4_; - const gchar* _tmp5_; - gchar* _tmp6_; - gchar* _tmp7_; -#line 300 "../src/playbin.vala" - _tmp3_ = mpv_error_string (ret); -#line 300 "../src/playbin.vala" - _tmp4_ = mpv_error_string (ret); -#line 300 "../src/playbin.vala" - _tmp5_ = string_to_string (_tmp4_); -#line 300 "../src/playbin.vala" - _tmp6_ = g_strconcat ("failed to set state to playing (", _tmp3_, "): ", _tmp5_, NULL); -#line 300 "../src/playbin.vala" - _tmp7_ = _tmp6_; -#line 300 "../src/playbin.vala" - g_debug ("playbin.vala:300: %s", _tmp7_); -#line 300 "../src/playbin.vala" - _g_free0 (_tmp7_); -#line 2111 "playbin.c" - } - } -} - -void -playbin_go_to_next_track (Playbin* self) -{ - PlaybinState _tmp0_; - gint _tmp1_; - GListStore* _tmp2_; -#line 305 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 305 "../src/playbin.vala" - _tmp0_ = self->priv->_state; -#line 305 "../src/playbin.vala" - _vala_return_if_fail (_tmp0_ != PLAYBIN_STATE_STOPPED, "this.state != PlaybinState.STOPPED"); -#line 308 "../src/playbin.vala" - _tmp1_ = self->priv->_play_queue_position; -#line 308 "../src/playbin.vala" - _tmp2_ = self->priv->_play_queue; -#line 308 "../src/playbin.vala" - if (((guint) (_tmp1_ + 1)) < g_list_model_get_n_items ((GListModel*) _tmp2_)) { -#line 2134 "playbin.c" - gint _tmp3_; - mpv_handle* _tmp4_; - gchar* _tmp5_; - gchar** _tmp6_; - gchar** _tmp7_; - gint _tmp7__length1; -#line 309 "../src/playbin.vala" - _tmp3_ = self->priv->_play_queue_position; -#line 309 "../src/playbin.vala" - playbin_set_play_queue_position (self, _tmp3_ + 1); -#line 310 "../src/playbin.vala" - _tmp4_ = self->priv->mpv; -#line 310 "../src/playbin.vala" - _tmp5_ = g_strdup ("playlist-next-playlist"); -#line 310 "../src/playbin.vala" - _tmp6_ = g_new0 (gchar*, 1 + 1); -#line 310 "../src/playbin.vala" - _tmp6_[0] = _tmp5_; -#line 310 "../src/playbin.vala" - _tmp7_ = _tmp6_; -#line 310 "../src/playbin.vala" - _tmp7__length1 = 1; -#line 310 "../src/playbin.vala" - _vala_assert (mpv_command (_tmp4_, _tmp7_) >= 0, "this.mpv.command ({\"playlist-next-playlist\"}) >= 0"); -#line 310 "../src/playbin.vala" - _tmp7_ = (_vala_array_free (_tmp7_, _tmp7__length1, (GDestroyNotify) g_free), NULL); -#line 2161 "playbin.c" - } else { -#line 312 "../src/playbin.vala" - g_warning ("playbin.vala:312: tried to skip forward at end of play queue, ignoring"); -#line 2165 "playbin.c" - } -} - -void -playbin_go_to_prev_track (Playbin* self) -{ - PlaybinState _tmp0_; - gint _tmp1_; -#line 316 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 316 "../src/playbin.vala" - _tmp0_ = self->priv->_state; -#line 316 "../src/playbin.vala" - _vala_return_if_fail (_tmp0_ != PLAYBIN_STATE_STOPPED, "this.state != PlaybinState.STOPPED"); -#line 319 "../src/playbin.vala" - _tmp1_ = self->priv->_play_queue_position; -#line 319 "../src/playbin.vala" - if (_tmp1_ > 0) { -#line 2184 "playbin.c" - gint _tmp2_; - mpv_handle* _tmp3_; - gchar* _tmp4_; - gchar** _tmp5_; - gchar** _tmp6_; - gint _tmp6__length1; -#line 320 "../src/playbin.vala" - _tmp2_ = self->priv->_play_queue_position; -#line 320 "../src/playbin.vala" - playbin_set_play_queue_position (self, _tmp2_ - 1); -#line 321 "../src/playbin.vala" - _tmp3_ = self->priv->mpv; -#line 321 "../src/playbin.vala" - _tmp4_ = g_strdup ("playlist-prev-playlist"); -#line 321 "../src/playbin.vala" - _tmp5_ = g_new0 (gchar*, 1 + 1); -#line 321 "../src/playbin.vala" - _tmp5_[0] = _tmp4_; -#line 321 "../src/playbin.vala" - _tmp6_ = _tmp5_; -#line 321 "../src/playbin.vala" - _tmp6__length1 = 1; -#line 321 "../src/playbin.vala" - _vala_assert (mpv_command (_tmp3_, _tmp6_) >= 0, "this.mpv.command ({\"playlist-prev-playlist\"}) >= 0"); -#line 321 "../src/playbin.vala" - _tmp6_ = (_vala_array_free (_tmp6_, _tmp6__length1, (GDestroyNotify) g_free), NULL); -#line 2211 "playbin.c" - } else { -#line 323 "../src/playbin.vala" - g_warning ("playbin.vala:323: tried to skip to prev track at start of play queue, " \ -"ignoring"); -#line 2215 "playbin.c" - } -} - -void -playbin_remove_track (Playbin* self, - guint position) -{ - GListStore* _tmp0_; - mpv_handle* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; - gchar** _tmp4_; - gchar** _tmp5_; - gint _tmp5__length1; - GListStore* _tmp6_; - guint _tmp7_; - gint _tmp8_; - gint _tmp10_; - GListStore* _tmp11_; -#line 327 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 327 "../src/playbin.vala" - _tmp0_ = self->priv->_play_queue; -#line 327 "../src/playbin.vala" - _vala_return_if_fail (position < g_list_model_get_n_items ((GListModel*) _tmp0_), "position < this._play_queue.get_n_items ()"); -#line 330 "../src/playbin.vala" - _tmp1_ = self->priv->mpv; -#line 330 "../src/playbin.vala" - _tmp2_ = g_strdup ("playlist-remove"); -#line 330 "../src/playbin.vala" - _tmp3_ = g_strdup_printf ("%u", position); -#line 330 "../src/playbin.vala" - _tmp4_ = g_new0 (gchar*, 2 + 1); -#line 330 "../src/playbin.vala" - _tmp4_[0] = _tmp2_; -#line 330 "../src/playbin.vala" - _tmp4_[1] = _tmp3_; -#line 330 "../src/playbin.vala" - _tmp5_ = _tmp4_; -#line 330 "../src/playbin.vala" - _tmp5__length1 = 2; -#line 330 "../src/playbin.vala" - _vala_assert (mpv_command (_tmp1_, _tmp5_) >= 0, "this.mpv.command({\"playlist-remove\", position.to_string ()}) >= 0"); -#line 330 "../src/playbin.vala" - _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL); -#line 331 "../src/playbin.vala" - _tmp6_ = self->priv->_play_queue; -#line 331 "../src/playbin.vala" - g_list_store_remove (_tmp6_, position); -#line 332 "../src/playbin.vala" - _tmp7_ = self->priv->_play_queue_length; -#line 332 "../src/playbin.vala" - playbin_set_play_queue_length (self, _tmp7_ - 1); -#line 333 "../src/playbin.vala" - _tmp8_ = self->priv->_play_queue_position; -#line 333 "../src/playbin.vala" - if (((guint) _tmp8_) > position) { -#line 2273 "playbin.c" - gint _tmp9_; -#line 333 "../src/playbin.vala" - _tmp9_ = self->priv->_play_queue_position; -#line 333 "../src/playbin.vala" - playbin_set_play_queue_position (self, _tmp9_ - 1); -#line 2279 "playbin.c" - } -#line 334 "../src/playbin.vala" - _tmp10_ = self->priv->_play_queue_position; -#line 334 "../src/playbin.vala" - _tmp11_ = self->priv->_play_queue; -#line 334 "../src/playbin.vala" - if (((guint) _tmp10_) == g_list_model_get_n_items ((GListModel*) _tmp11_)) { -#line 336 "../src/playbin.vala" - playbin_set_state (self, PLAYBIN_STATE_STOPPED); -#line 337 "../src/playbin.vala" - playbin_set_play_queue_position (self, -1); -#line 338 "../src/playbin.vala" - g_signal_emit (self, playbin_signals[PLAYBIN_STOPPED_SIGNAL], 0); -#line 2293 "playbin.c" - } -} - -void -playbin_clear (Playbin* self) -{ - mpv_handle* _tmp0_; - gchar* _tmp1_; - gchar** _tmp2_; - gchar** _tmp3_; - gint _tmp3__length1; - PlaybinState _tmp4_; - GListStore* _tmp10_; -#line 342 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 343 "../src/playbin.vala" - _tmp0_ = self->priv->mpv; -#line 343 "../src/playbin.vala" - _tmp1_ = g_strdup ("playlist-clear"); -#line 343 "../src/playbin.vala" - _tmp2_ = g_new0 (gchar*, 1 + 1); -#line 343 "../src/playbin.vala" - _tmp2_[0] = _tmp1_; -#line 343 "../src/playbin.vala" - _tmp3_ = _tmp2_; -#line 343 "../src/playbin.vala" - _tmp3__length1 = 1; -#line 343 "../src/playbin.vala" - _vala_assert (mpv_command (_tmp0_, _tmp3_) >= 0, "this.mpv.command({\"playlist-clear\"}) >= 0"); -#line 343 "../src/playbin.vala" - _tmp3_ = (_vala_array_free (_tmp3_, _tmp3__length1, (GDestroyNotify) g_free), NULL); -#line 344 "../src/playbin.vala" - _tmp4_ = self->priv->_state; -#line 344 "../src/playbin.vala" - if (_tmp4_ != PLAYBIN_STATE_STOPPED) { -#line 2329 "playbin.c" - mpv_handle* _tmp5_; - gchar* _tmp6_; - gchar* _tmp7_; - gchar** _tmp8_; - gchar** _tmp9_; - gint _tmp9__length1; -#line 345 "../src/playbin.vala" - _tmp5_ = self->priv->mpv; -#line 345 "../src/playbin.vala" - _tmp6_ = g_strdup ("playlist-remove"); -#line 345 "../src/playbin.vala" - _tmp7_ = g_strdup ("current"); -#line 345 "../src/playbin.vala" - _tmp8_ = g_new0 (gchar*, 2 + 1); -#line 345 "../src/playbin.vala" - _tmp8_[0] = _tmp6_; -#line 345 "../src/playbin.vala" - _tmp8_[1] = _tmp7_; -#line 345 "../src/playbin.vala" - _tmp9_ = _tmp8_; -#line 345 "../src/playbin.vala" - _tmp9__length1 = 2; -#line 345 "../src/playbin.vala" - _vala_assert (mpv_command (_tmp5_, _tmp9_) >= 0, "this.mpv.command({\"playlist-remove\", \"current\"}) >= 0"); -#line 345 "../src/playbin.vala" - _tmp9_ = (_vala_array_free (_tmp9_, _tmp9__length1, (GDestroyNotify) g_free), NULL); -#line 2356 "playbin.c" - } -#line 347 "../src/playbin.vala" - playbin_set_state (self, PLAYBIN_STATE_STOPPED); -#line 348 "../src/playbin.vala" - _tmp10_ = self->priv->_play_queue; -#line 348 "../src/playbin.vala" - g_list_store_remove_all (_tmp10_); -#line 349 "../src/playbin.vala" - playbin_set_play_queue_length (self, (guint) 0); -#line 350 "../src/playbin.vala" - playbin_set_play_queue_position (self, -1); -#line 352 "../src/playbin.vala" - g_signal_emit (self, playbin_signals[PLAYBIN_STOPPED_SIGNAL], 0); -#line 2370 "playbin.c" -} - -void -playbin_append_track (Playbin* self, - SubsonicSong* song) -{ - mpv_handle* _tmp0_; - gchar* _tmp1_; - SubsonicClient* _tmp2_; - SubsonicSong _tmp3_; - const gchar* _tmp4_; - gchar* _tmp5_; - gchar* _tmp6_; - gchar** _tmp7_; - gchar** _tmp8_; - gint _tmp8__length1; - GListStore* _tmp9_; - SubsonicClient* _tmp10_; - SubsonicSong _tmp11_; - PlaybinSong* _tmp12_; - PlaybinSong* _tmp13_; - guint _tmp14_; -#line 355 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 355 "../src/playbin.vala" - g_return_if_fail (song != NULL); -#line 356 "../src/playbin.vala" - _tmp0_ = self->priv->mpv; -#line 356 "../src/playbin.vala" - _tmp1_ = g_strdup ("loadfile"); -#line 356 "../src/playbin.vala" - _tmp2_ = self->priv->_api; -#line 356 "../src/playbin.vala" - _tmp3_ = *song; -#line 356 "../src/playbin.vala" - _tmp4_ = _tmp3_.id; -#line 356 "../src/playbin.vala" - _tmp5_ = subsonic_client_stream_uri (_tmp2_, _tmp4_); -#line 356 "../src/playbin.vala" - _tmp6_ = g_strdup ("append"); -#line 356 "../src/playbin.vala" - _tmp7_ = g_new0 (gchar*, 3 + 1); -#line 356 "../src/playbin.vala" - _tmp7_[0] = _tmp1_; -#line 356 "../src/playbin.vala" - _tmp7_[1] = _tmp5_; -#line 356 "../src/playbin.vala" - _tmp7_[2] = _tmp6_; -#line 356 "../src/playbin.vala" - _tmp8_ = _tmp7_; -#line 356 "../src/playbin.vala" - _tmp8__length1 = 3; -#line 356 "../src/playbin.vala" - _vala_assert (mpv_command (_tmp0_, _tmp8_) >= 0, "this.mpv.command ({ \"loadfile\", this.api.stream_uri (song.id), \"append\", }) >= 0"); -#line 356 "../src/playbin.vala" - _tmp8_ = (_vala_array_free (_tmp8_, _tmp8__length1, (GDestroyNotify) g_free), NULL); -#line 361 "../src/playbin.vala" - _tmp9_ = self->priv->_play_queue; -#line 361 "../src/playbin.vala" - _tmp10_ = self->priv->_api; -#line 361 "../src/playbin.vala" - _tmp11_ = *song; -#line 361 "../src/playbin.vala" - _tmp12_ = playbin_song_new (_tmp10_, &_tmp11_); -#line 361 "../src/playbin.vala" - _tmp13_ = _tmp12_; -#line 361 "../src/playbin.vala" - g_list_store_append (_tmp9_, (GObject*) _tmp13_); -#line 361 "../src/playbin.vala" - _g_object_unref0 (_tmp13_); -#line 362 "../src/playbin.vala" - _tmp14_ = self->priv->_play_queue_length; -#line 362 "../src/playbin.vala" - playbin_set_play_queue_length (self, _tmp14_ + 1); -#line 2445 "playbin.c" -} - -static void -playbin_append_track_async_data_free (gpointer _data) -{ - PlaybinAppendTrackAsyncData* _data_; - _data_ = _data; -#line 62 "../src/playbin.vala" - subsonic_song_destroy (&_data_->song); -#line 62 "../src/playbin.vala" - _g_object_unref0 (_data_->self); -#line 62 "../src/playbin.vala" - g_slice_free (PlaybinAppendTrackAsyncData, _data_); -#line 2459 "playbin.c" -} - -void -playbin_append_track_async (Playbin* self, - SubsonicSong* song, - GAsyncReadyCallback _callback_, - gpointer _user_data_) -{ - PlaybinAppendTrackAsyncData* _data_; - Playbin* _tmp0_; - SubsonicSong _tmp1_; - SubsonicSong _tmp2_; - SubsonicSong _tmp3_ = {0}; -#line 62 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 62 "../src/playbin.vala" - g_return_if_fail (song != NULL); -#line 62 "../src/playbin.vala" - _data_ = g_slice_new0 (PlaybinAppendTrackAsyncData); -#line 62 "../src/playbin.vala" - _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_); -#line 62 "../src/playbin.vala" - g_task_set_task_data (_data_->_async_result, _data_, playbin_append_track_async_data_free); -#line 62 "../src/playbin.vala" - _tmp0_ = _g_object_ref0 (self); -#line 62 "../src/playbin.vala" - _data_->self = _tmp0_; -#line 62 "../src/playbin.vala" - _tmp1_ = *song; -#line 62 "../src/playbin.vala" - _tmp2_ = _tmp1_; -#line 62 "../src/playbin.vala" - subsonic_song_copy (&_tmp2_, &_tmp3_); -#line 62 "../src/playbin.vala" - subsonic_song_destroy (&_data_->song); -#line 62 "../src/playbin.vala" - _data_->song = _tmp3_; -#line 62 "../src/playbin.vala" - playbin_append_track_async_co (_data_); -#line 2499 "playbin.c" -} - -void -playbin_append_track_finish (Playbin* self, - GAsyncResult* _res_) -{ - PlaybinAppendTrackAsyncData* _data_; -#line 62 "../src/playbin.vala" - _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL); -#line 2509 "playbin.c" -} - -static void -playbin_append_track_async_ready (GObject* source_object, - GAsyncResult* _res_, - gpointer _user_data_) -{ - PlaybinAppendTrackAsyncData* _data_; -#line 366 "../src/playbin.vala" - _data_ = _user_data_; -#line 366 "../src/playbin.vala" - _data_->_source_object_ = source_object; -#line 366 "../src/playbin.vala" - _data_->_res_ = _res_; -#line 366 "../src/playbin.vala" - playbin_append_track_async_co (_data_); -#line 2526 "playbin.c" -} - -static gboolean -playbin_append_track_async_co (PlaybinAppendTrackAsyncData* _data_) -{ -#line 365 "../src/playbin.vala" - switch (_data_->_state_) { -#line 365 "../src/playbin.vala" - case 0: -#line 2536 "playbin.c" - goto _state_0; -#line 365 "../src/playbin.vala" - case 1: -#line 2540 "playbin.c" - goto _state_1; - default: -#line 365 "../src/playbin.vala" - g_assert_not_reached (); -#line 2545 "playbin.c" - } - _state_0: -#line 366 "../src/playbin.vala" - _data_->_tmp0_ = g_strdup ("loadfile"); -#line 366 "../src/playbin.vala" - _data_->_tmp1_ = _data_->self->priv->_api; -#line 366 "../src/playbin.vala" - _data_->_tmp2_ = _data_->song; -#line 366 "../src/playbin.vala" - _data_->_tmp3_ = _data_->_tmp2_.id; -#line 366 "../src/playbin.vala" - _data_->_tmp4_ = subsonic_client_stream_uri (_data_->_tmp1_, _data_->_tmp3_); -#line 366 "../src/playbin.vala" - _data_->_tmp5_ = g_strdup ("append"); -#line 366 "../src/playbin.vala" - _data_->_tmp6_ = g_new0 (gchar*, 3 + 1); -#line 366 "../src/playbin.vala" - _data_->_tmp6_[0] = _data_->_tmp0_; -#line 366 "../src/playbin.vala" - _data_->_tmp6_[1] = _data_->_tmp4_; -#line 366 "../src/playbin.vala" - _data_->_tmp6_[2] = _data_->_tmp5_; -#line 366 "../src/playbin.vala" - _data_->_tmp7_ = _data_->_tmp6_; -#line 366 "../src/playbin.vala" - _data_->_tmp7__length1 = 3; -#line 366 "../src/playbin.vala" - _data_->_state_ = 1; -#line 366 "../src/playbin.vala" - playbin_mpv_command_async (_data_->self, _data_->_tmp7_, (gint) 3, playbin_append_track_async_ready, _data_); -#line 366 "../src/playbin.vala" - return FALSE; -#line 2578 "playbin.c" - _state_1: -#line 366 "../src/playbin.vala" - _data_->_tmp8_ = playbin_mpv_command_finish (_data_->self, _data_->_res_); -#line 366 "../src/playbin.vala" - _data_->_tmp7_ = (_vala_array_free (_data_->_tmp7_, _data_->_tmp7__length1, (GDestroyNotify) g_free), NULL); -#line 366 "../src/playbin.vala" - _data_->err = _data_->_tmp8_; -#line 371 "../src/playbin.vala" - _vala_assert (_data_->err >= 0, "err >= 0"); -#line 373 "../src/playbin.vala" - _data_->_tmp9_ = _data_->self->priv->_play_queue; -#line 373 "../src/playbin.vala" - _data_->_tmp10_ = _data_->self->priv->_api; -#line 373 "../src/playbin.vala" - _data_->_tmp11_ = _data_->song; -#line 373 "../src/playbin.vala" - _data_->_tmp12_ = playbin_song_new (_data_->_tmp10_, &_data_->_tmp11_); -#line 373 "../src/playbin.vala" - _data_->_tmp13_ = _data_->_tmp12_; -#line 373 "../src/playbin.vala" - g_list_store_append (_data_->_tmp9_, (GObject*) _data_->_tmp13_); -#line 373 "../src/playbin.vala" - _g_object_unref0 (_data_->_tmp13_); -#line 374 "../src/playbin.vala" - _data_->_tmp14_ = _data_->self->priv->_play_queue_length; -#line 374 "../src/playbin.vala" - playbin_set_play_queue_length (_data_->self, _data_->_tmp14_ + 1); -#line 365 "../src/playbin.vala" - g_task_return_pointer (_data_->_async_result, _data_, NULL); -#line 365 "../src/playbin.vala" - if (_data_->_state_ != 0) { -#line 365 "../src/playbin.vala" - while (!g_task_get_completed (_data_->_async_result)) { -#line 365 "../src/playbin.vala" - g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE); -#line 2614 "playbin.c" - } - } -#line 365 "../src/playbin.vala" - g_object_unref (_data_->_async_result); -#line 365 "../src/playbin.vala" - return FALSE; -#line 2621 "playbin.c" -} - -void -playbin_move_track (Playbin* self, - guint from, - guint to) -{ - GListStore* _tmp0_; - GListStore* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gchar* _tmp5_; - gchar* _tmp6_; - gchar* _tmp7_; -#line 377 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 377 "../src/playbin.vala" - _tmp0_ = self->priv->_play_queue; -#line 377 "../src/playbin.vala" - _vala_return_if_fail (from < g_list_model_get_n_items ((GListModel*) _tmp0_), "from < this._play_queue.get_n_items ()"); -#line 377 "../src/playbin.vala" - _tmp1_ = self->priv->_play_queue; -#line 377 "../src/playbin.vala" - _vala_return_if_fail (to < g_list_model_get_n_items ((GListModel*) _tmp1_), "to < this._play_queue.get_n_items ()"); -#line 381 "../src/playbin.vala" - _tmp2_ = g_strdup_printf ("%u", from); -#line 381 "../src/playbin.vala" - _tmp3_ = _tmp2_; -#line 381 "../src/playbin.vala" - _tmp4_ = g_strdup_printf ("%u", to); -#line 381 "../src/playbin.vala" - _tmp5_ = _tmp4_; -#line 381 "../src/playbin.vala" - _tmp6_ = g_strconcat ("moving track ", _tmp3_, " to ", _tmp5_, NULL); -#line 381 "../src/playbin.vala" - _tmp7_ = _tmp6_; -#line 381 "../src/playbin.vala" - g_debug ("playbin.vala:381: %s", _tmp7_); -#line 381 "../src/playbin.vala" - _g_free0 (_tmp7_); -#line 381 "../src/playbin.vala" - _g_free0 (_tmp5_); -#line 381 "../src/playbin.vala" - _g_free0 (_tmp3_); -#line 383 "../src/playbin.vala" - if (from < to) { -#line 2669 "playbin.c" - mpv_handle* _tmp8_; - gchar* _tmp9_; - gchar* _tmp10_; - gchar* _tmp11_; - gchar** _tmp12_; - gchar** _tmp13_; - gint _tmp13__length1; - GObject** additions = NULL; - GObject** _tmp14_; - gint additions_length1; - gint _additions_size_; - GObject** _tmp19_; - gint _tmp19__length1; - GListStore* _tmp20_; - GObject* _tmp21_; - GObject** _tmp22_; - gint _tmp22__length1; - GListStore* _tmp23_; - GObject* _tmp24_; - GListStore* _tmp25_; - GObject** _tmp26_; - gint _tmp26__length1; - gint _tmp27_; -#line 389 "../src/playbin.vala" - _tmp8_ = self->priv->mpv; -#line 389 "../src/playbin.vala" - _tmp9_ = g_strdup ("playlist-move"); -#line 389 "../src/playbin.vala" - _tmp10_ = g_strdup_printf ("%u", from); -#line 389 "../src/playbin.vala" - _tmp11_ = g_strdup_printf ("%u", to + 1); -#line 389 "../src/playbin.vala" - _tmp12_ = g_new0 (gchar*, 3 + 1); -#line 389 "../src/playbin.vala" - _tmp12_[0] = _tmp9_; -#line 389 "../src/playbin.vala" - _tmp12_[1] = _tmp10_; -#line 389 "../src/playbin.vala" - _tmp12_[2] = _tmp11_; -#line 389 "../src/playbin.vala" - _tmp13_ = _tmp12_; -#line 389 "../src/playbin.vala" - _tmp13__length1 = 3; -#line 389 "../src/playbin.vala" - _vala_assert (mpv_command (_tmp8_, _tmp13_) >= 0, "this.mpv.command({ \"playlist-move\", from.to_string (), (to+1).to_string (), }) >= 0"); -#line 389 "../src/playbin.vala" - _tmp13_ = (_vala_array_free (_tmp13_, _tmp13__length1, (GDestroyNotify) g_free), NULL); -#line 396 "../src/playbin.vala" - _tmp14_ = g_new0 (GObject*, ((to - from) + 1) + 1); -#line 396 "../src/playbin.vala" - additions = _tmp14_; -#line 396 "../src/playbin.vala" - additions_length1 = (to - from) + 1; -#line 396 "../src/playbin.vala" - _additions_size_ = additions_length1; -#line 2725 "playbin.c" - { - guint i = 0U; -#line 397 "../src/playbin.vala" - i = from + 1; -#line 2730 "playbin.c" - { - gboolean _tmp15_ = FALSE; -#line 397 "../src/playbin.vala" - _tmp15_ = TRUE; -#line 397 "../src/playbin.vala" - while (TRUE) { -#line 2737 "playbin.c" - GObject** _tmp16_; - gint _tmp16__length1; - GListStore* _tmp17_; - GObject* _tmp18_; -#line 397 "../src/playbin.vala" - if (!_tmp15_) { -#line 397 "../src/playbin.vala" - i += (guint) 1; -#line 2746 "playbin.c" - } -#line 397 "../src/playbin.vala" - _tmp15_ = FALSE; -#line 397 "../src/playbin.vala" - if (!(i < to)) { -#line 397 "../src/playbin.vala" - break; -#line 2754 "playbin.c" - } -#line 398 "../src/playbin.vala" - _tmp16_ = additions; -#line 398 "../src/playbin.vala" - _tmp16__length1 = additions_length1; -#line 398 "../src/playbin.vala" - _tmp17_ = self->priv->_play_queue; -#line 398 "../src/playbin.vala" - _tmp18_ = g_list_model_get_item ((GListModel*) _tmp17_, i); -#line 398 "../src/playbin.vala" - _g_object_unref0 (_tmp16_[(i - from) - 1]); -#line 398 "../src/playbin.vala" - _tmp16_[(i - from) - 1] = _tmp18_; -#line 2768 "playbin.c" - } - } - } -#line 400 "../src/playbin.vala" - _tmp19_ = additions; -#line 400 "../src/playbin.vala" - _tmp19__length1 = additions_length1; -#line 400 "../src/playbin.vala" - _tmp20_ = self->priv->_play_queue; -#line 400 "../src/playbin.vala" - _tmp21_ = g_list_model_get_item ((GListModel*) _tmp20_, to); -#line 400 "../src/playbin.vala" - _g_object_unref0 (_tmp19_[(to - from) - 1]); -#line 400 "../src/playbin.vala" - _tmp19_[(to - from) - 1] = _tmp21_; -#line 401 "../src/playbin.vala" - _tmp22_ = additions; -#line 401 "../src/playbin.vala" - _tmp22__length1 = additions_length1; -#line 401 "../src/playbin.vala" - _tmp23_ = self->priv->_play_queue; -#line 401 "../src/playbin.vala" - _tmp24_ = g_list_model_get_item ((GListModel*) _tmp23_, from); -#line 401 "../src/playbin.vala" - _g_object_unref0 (_tmp22_[to - from]); -#line 401 "../src/playbin.vala" - _tmp22_[to - from] = _tmp24_; -#line 402 "../src/playbin.vala" - _tmp25_ = self->priv->_play_queue; -#line 402 "../src/playbin.vala" - _tmp26_ = additions; -#line 402 "../src/playbin.vala" - _tmp26__length1 = additions_length1; -#line 402 "../src/playbin.vala" - g_list_store_splice (_tmp25_, from, (to - from) + 1, _tmp26_, (guint) _tmp26__length1); -#line 404 "../src/playbin.vala" - _tmp27_ = self->priv->_play_queue_position; -#line 404 "../src/playbin.vala" - if (_tmp27_ == ((gint) from)) { -#line 404 "../src/playbin.vala" - playbin_set_play_queue_position (self, (gint) to); -#line 2810 "playbin.c" - } else { - gboolean _tmp28_ = FALSE; - gint _tmp29_; -#line 405 "../src/playbin.vala" - _tmp29_ = self->priv->_play_queue_position; -#line 405 "../src/playbin.vala" - if (_tmp29_ > ((gint) from)) { -#line 2818 "playbin.c" - gint _tmp30_; -#line 405 "../src/playbin.vala" - _tmp30_ = self->priv->_play_queue_position; -#line 405 "../src/playbin.vala" - _tmp28_ = _tmp30_ <= ((gint) to); -#line 2824 "playbin.c" - } else { -#line 405 "../src/playbin.vala" - _tmp28_ = FALSE; -#line 2828 "playbin.c" - } -#line 405 "../src/playbin.vala" - if (_tmp28_) { -#line 2832 "playbin.c" - gint _tmp31_; -#line 405 "../src/playbin.vala" - _tmp31_ = self->priv->_play_queue_position; -#line 405 "../src/playbin.vala" - playbin_set_play_queue_position (self, _tmp31_ - 1); -#line 2838 "playbin.c" - } - } -#line 383 "../src/playbin.vala" - additions = (_vala_array_free (additions, additions_length1, (GDestroyNotify) g_object_unref), NULL); -#line 2843 "playbin.c" - } else { -#line 406 "../src/playbin.vala" - if (from > to) { -#line 2847 "playbin.c" - mpv_handle* _tmp32_; - gchar* _tmp33_; - gchar* _tmp34_; - gchar* _tmp35_; - gchar** _tmp36_; - gchar** _tmp37_; - gint _tmp37__length1; - GObject** additions = NULL; - GObject** _tmp38_; - gint additions_length1; - gint _additions_size_; - GObject** _tmp39_; - gint _tmp39__length1; - GListStore* _tmp40_; - GObject* _tmp41_; - GListStore* _tmp46_; - GObject** _tmp47_; - gint _tmp47__length1; - gint _tmp48_; -#line 407 "../src/playbin.vala" - _tmp32_ = self->priv->mpv; -#line 407 "../src/playbin.vala" - _tmp33_ = g_strdup ("playlist-move"); -#line 407 "../src/playbin.vala" - _tmp34_ = g_strdup_printf ("%u", from); -#line 407 "../src/playbin.vala" - _tmp35_ = g_strdup_printf ("%u", to); -#line 407 "../src/playbin.vala" - _tmp36_ = g_new0 (gchar*, 3 + 1); -#line 407 "../src/playbin.vala" - _tmp36_[0] = _tmp33_; -#line 407 "../src/playbin.vala" - _tmp36_[1] = _tmp34_; -#line 407 "../src/playbin.vala" - _tmp36_[2] = _tmp35_; -#line 407 "../src/playbin.vala" - _tmp37_ = _tmp36_; -#line 407 "../src/playbin.vala" - _tmp37__length1 = 3; -#line 407 "../src/playbin.vala" - _vala_assert (mpv_command (_tmp32_, _tmp37_) >= 0, "this.mpv.command({ \"playlist-move\", from.to_string (), to.to_string (), }) >= 0"); -#line 407 "../src/playbin.vala" - _tmp37_ = (_vala_array_free (_tmp37_, _tmp37__length1, (GDestroyNotify) g_free), NULL); -#line 414 "../src/playbin.vala" - _tmp38_ = g_new0 (GObject*, ((from - to) + 1) + 1); -#line 414 "../src/playbin.vala" - additions = _tmp38_; -#line 414 "../src/playbin.vala" - additions_length1 = (from - to) + 1; -#line 414 "../src/playbin.vala" - _additions_size_ = additions_length1; -#line 415 "../src/playbin.vala" - _tmp39_ = additions; -#line 415 "../src/playbin.vala" - _tmp39__length1 = additions_length1; -#line 415 "../src/playbin.vala" - _tmp40_ = self->priv->_play_queue; -#line 415 "../src/playbin.vala" - _tmp41_ = g_list_model_get_item ((GListModel*) _tmp40_, from); -#line 415 "../src/playbin.vala" - _g_object_unref0 (_tmp39_[0]); -#line 415 "../src/playbin.vala" - _tmp39_[0] = _tmp41_; -#line 2911 "playbin.c" - { - guint i = 0U; -#line 416 "../src/playbin.vala" - i = to; -#line 2916 "playbin.c" - { - gboolean _tmp42_ = FALSE; -#line 416 "../src/playbin.vala" - _tmp42_ = TRUE; -#line 416 "../src/playbin.vala" - while (TRUE) { -#line 2923 "playbin.c" - GObject** _tmp43_; - gint _tmp43__length1; - GListStore* _tmp44_; - GObject* _tmp45_; -#line 416 "../src/playbin.vala" - if (!_tmp42_) { -#line 416 "../src/playbin.vala" - i += (guint) 1; -#line 2932 "playbin.c" - } -#line 416 "../src/playbin.vala" - _tmp42_ = FALSE; -#line 416 "../src/playbin.vala" - if (!(i < from)) { -#line 416 "../src/playbin.vala" - break; -#line 2940 "playbin.c" - } -#line 417 "../src/playbin.vala" - _tmp43_ = additions; -#line 417 "../src/playbin.vala" - _tmp43__length1 = additions_length1; -#line 417 "../src/playbin.vala" - _tmp44_ = self->priv->_play_queue; -#line 417 "../src/playbin.vala" - _tmp45_ = g_list_model_get_item ((GListModel*) _tmp44_, i); -#line 417 "../src/playbin.vala" - _g_object_unref0 (_tmp43_[(i - to) + 1]); -#line 417 "../src/playbin.vala" - _tmp43_[(i - to) + 1] = _tmp45_; -#line 2954 "playbin.c" - } - } - } -#line 419 "../src/playbin.vala" - _tmp46_ = self->priv->_play_queue; -#line 419 "../src/playbin.vala" - _tmp47_ = additions; -#line 419 "../src/playbin.vala" - _tmp47__length1 = additions_length1; -#line 419 "../src/playbin.vala" - g_list_store_splice (_tmp46_, to, (from - to) + 1, _tmp47_, (guint) _tmp47__length1); -#line 421 "../src/playbin.vala" - _tmp48_ = self->priv->_play_queue_position; -#line 421 "../src/playbin.vala" - if (_tmp48_ == ((gint) from)) { -#line 421 "../src/playbin.vala" - playbin_set_play_queue_position (self, (gint) to); -#line 2972 "playbin.c" - } else { - gboolean _tmp49_ = FALSE; - gint _tmp50_; -#line 422 "../src/playbin.vala" - _tmp50_ = self->priv->_play_queue_position; -#line 422 "../src/playbin.vala" - if (_tmp50_ >= ((gint) to)) { -#line 2980 "playbin.c" - gint _tmp51_; -#line 422 "../src/playbin.vala" - _tmp51_ = self->priv->_play_queue_position; -#line 422 "../src/playbin.vala" - _tmp49_ = _tmp51_ < ((gint) from); -#line 2986 "playbin.c" - } else { -#line 422 "../src/playbin.vala" - _tmp49_ = FALSE; -#line 2990 "playbin.c" - } -#line 422 "../src/playbin.vala" - if (_tmp49_) { -#line 2994 "playbin.c" - gint _tmp52_; -#line 422 "../src/playbin.vala" - _tmp52_ = self->priv->_play_queue_position; -#line 422 "../src/playbin.vala" - playbin_set_play_queue_position (self, _tmp52_ + 1); -#line 3000 "playbin.c" - } - } -#line 406 "../src/playbin.vala" - additions = (_vala_array_free (additions, additions_length1, (GDestroyNotify) g_object_unref), NULL); -#line 3005 "playbin.c" - } - } -} - -void -playbin_stop (Playbin* self) -{ - mpv_handle* _tmp0_; - gchar* _tmp1_; - gchar* _tmp2_; - gchar** _tmp3_; - gchar** _tmp4_; - gint _tmp4__length1; -#line 426 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 427 "../src/playbin.vala" - g_debug ("playbin.vala:427: stopping playback"); -#line 429 "../src/playbin.vala" - _tmp0_ = self->priv->mpv; -#line 429 "../src/playbin.vala" - _tmp1_ = g_strdup ("stop"); -#line 429 "../src/playbin.vala" - _tmp2_ = g_strdup ("keep-playlist"); -#line 429 "../src/playbin.vala" - _tmp3_ = g_new0 (gchar*, 2 + 1); -#line 429 "../src/playbin.vala" - _tmp3_[0] = _tmp1_; -#line 429 "../src/playbin.vala" - _tmp3_[1] = _tmp2_; -#line 429 "../src/playbin.vala" - _tmp4_ = _tmp3_; -#line 429 "../src/playbin.vala" - _tmp4__length1 = 2; -#line 429 "../src/playbin.vala" - _vala_assert (mpv_command (_tmp0_, _tmp4_) >= 0, "this.mpv.command({\"stop\", \"keep-playlist\"}) >= 0"); -#line 429 "../src/playbin.vala" - _tmp4_ = (_vala_array_free (_tmp4_, _tmp4__length1, (GDestroyNotify) g_free), NULL); -#line 430 "../src/playbin.vala" - playbin_set_state (self, PLAYBIN_STATE_STOPPED); -#line 431 "../src/playbin.vala" - playbin_set_play_queue_position (self, -1); -#line 432 "../src/playbin.vala" - g_signal_emit (self, playbin_signals[PLAYBIN_STOPPED_SIGNAL], 0); -#line 3049 "playbin.c" -} - -PlaybinState -playbin_get_state (Playbin* self) -{ - PlaybinState result; -#line 71 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, 0); -#line 71 "../src/playbin.vala" - result = self->priv->_state; -#line 71 "../src/playbin.vala" - return result; -#line 3062 "playbin.c" -} - -static void -playbin_set_state (Playbin* self, - PlaybinState value) -{ - PlaybinState old_value; -#line 71 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 71 "../src/playbin.vala" - old_value = playbin_get_state (self); -#line 71 "../src/playbin.vala" - if (old_value != value) { -#line 71 "../src/playbin.vala" - self->priv->_state = value; -#line 71 "../src/playbin.vala" - g_object_notify_by_pspec ((GObject *) self, playbin_properties[PLAYBIN_STATE_PROPERTY]); -#line 3080 "playbin.c" - } -} - -gint -playbin_get_volume (Playbin* self) -{ - gint result; -#line 74 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, 0); -#line 74 "../src/playbin.vala" - result = self->priv->_volume; -#line 74 "../src/playbin.vala" - return result; -#line 3094 "playbin.c" -} - -static mpv_error -mpv_handle_set_property_int64 (mpv_handle* self, - const gchar* name, - gint64 value) -{ - mpv_error result; -#line 56 "mpv.vapi" - g_return_val_if_fail (self != NULL, 0); -#line 56 "mpv.vapi" - g_return_val_if_fail (name != NULL, 0); -#line 57 "mpv.vapi" - result = mpv_set_property (self, name, MPV_FORMAT_INT64, &value); -#line 57 "mpv.vapi" - return result; -#line 3111 "playbin.c" -} - -void -playbin_set_volume (Playbin* self, - gint value) -{ - mpv_error ret = 0; - mpv_handle* _tmp0_; -#line 75 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 76 "../src/playbin.vala" - _tmp0_ = self->priv->mpv; -#line 76 "../src/playbin.vala" - ret = mpv_handle_set_property_int64 (_tmp0_, "volume", (gint64) value); -#line 77 "../src/playbin.vala" - if (ret >= 0) { -#line 78 "../src/playbin.vala" - self->priv->_volume = value; -#line 3130 "playbin.c" - } else { - const gchar* _tmp1_; -#line 80 "../src/playbin.vala" - _tmp1_ = mpv_error_string (ret); -#line 80 "../src/playbin.vala" - g_warning ("playbin.vala:80: failed to set volume: %s", _tmp1_); -#line 3137 "playbin.c" - } -#line 75 "../src/playbin.vala" - g_object_notify_by_pspec ((GObject *) self, playbin_properties[PLAYBIN_VOLUME_PROPERTY]); -#line 3141 "playbin.c" -} - -gboolean -playbin_get_mute (Playbin* self) -{ - gboolean result; -#line 86 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 86 "../src/playbin.vala" - result = self->priv->_mute; -#line 86 "../src/playbin.vala" - return result; -#line 3154 "playbin.c" -} - -void -playbin_set_mute (Playbin* self, - gboolean value) -{ - mpv_error ret = 0; - mpv_handle* _tmp0_; -#line 87 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 88 "../src/playbin.vala" - _tmp0_ = self->priv->mpv; -#line 88 "../src/playbin.vala" - ret = mpv_handle_set_property_flag (_tmp0_, "mute", value); -#line 89 "../src/playbin.vala" - if (ret >= 0) { -#line 90 "../src/playbin.vala" - self->priv->_mute = value; -#line 3173 "playbin.c" - } else { - const gchar* _tmp1_; -#line 92 "../src/playbin.vala" - _tmp1_ = mpv_error_string (ret); -#line 92 "../src/playbin.vala" - g_warning ("playbin.vala:92: failed to set mute status: %s", _tmp1_); -#line 3180 "playbin.c" - } -#line 87 "../src/playbin.vala" - g_object_notify_by_pspec ((GObject *) self, playbin_properties[PLAYBIN_MUTE_PROPERTY]); -#line 3184 "playbin.c" -} - -gint -playbin_get_play_queue_position (Playbin* self) -{ - gint result; -#line 98 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, 0); -#line 98 "../src/playbin.vala" - result = self->priv->_play_queue_position; -#line 98 "../src/playbin.vala" - return result; -#line 3197 "playbin.c" -} - -static void -playbin_set_play_queue_position (Playbin* self, - gint value) -{ - gint old_value; -#line 98 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 98 "../src/playbin.vala" - old_value = playbin_get_play_queue_position (self); -#line 98 "../src/playbin.vala" - if (old_value != value) { -#line 98 "../src/playbin.vala" - self->priv->_play_queue_position = value; -#line 98 "../src/playbin.vala" - g_object_notify_by_pspec ((GObject *) self, playbin_properties[PLAYBIN_PLAY_QUEUE_POSITION_PROPERTY]); -#line 3215 "playbin.c" - } -} - -gdouble -playbin_get_position (Playbin* self) -{ - gdouble result; -#line 106 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, 0.0); -#line 106 "../src/playbin.vala" - result = self->priv->_position; -#line 106 "../src/playbin.vala" - return result; -#line 3229 "playbin.c" -} - -static void -playbin_set_position (Playbin* self, - gdouble value) -{ - gdouble old_value; -#line 106 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 106 "../src/playbin.vala" - old_value = playbin_get_position (self); -#line 106 "../src/playbin.vala" - if (old_value != value) { -#line 106 "../src/playbin.vala" - self->priv->_position = value; -#line 106 "../src/playbin.vala" - g_object_notify_by_pspec ((GObject *) self, playbin_properties[PLAYBIN_POSITION_PROPERTY]); -#line 3247 "playbin.c" - } -} - -gdouble -playbin_get_duration (Playbin* self) -{ - gdouble result; -#line 107 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, 0.0); -#line 107 "../src/playbin.vala" - result = self->priv->_duration; -#line 107 "../src/playbin.vala" - return result; -#line 3261 "playbin.c" -} - -static void -playbin_set_duration (Playbin* self, - gdouble value) -{ - gdouble old_value; -#line 107 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 107 "../src/playbin.vala" - old_value = playbin_get_duration (self); -#line 107 "../src/playbin.vala" - if (old_value != value) { -#line 107 "../src/playbin.vala" - self->priv->_duration = value; -#line 107 "../src/playbin.vala" - g_object_notify_by_pspec ((GObject *) self, playbin_properties[PLAYBIN_DURATION_PROPERTY]); -#line 3279 "playbin.c" - } -} - -SubsonicClient* -playbin_get_api (Playbin* self) -{ - SubsonicClient* result; - SubsonicClient* _tmp0_; -#line 109 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 109 "../src/playbin.vala" - _tmp0_ = self->priv->_api; -#line 109 "../src/playbin.vala" - result = _tmp0_; -#line 109 "../src/playbin.vala" - return result; -#line 3296 "playbin.c" -} - -void -playbin_set_api (Playbin* self, - SubsonicClient* value) -{ - SubsonicClient* old_value; -#line 109 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 109 "../src/playbin.vala" - old_value = playbin_get_api (self); -#line 109 "../src/playbin.vala" - if (old_value != value) { -#line 109 "../src/playbin.vala" - self->priv->_api = value; -#line 109 "../src/playbin.vala" - g_object_notify_by_pspec ((GObject *) self, playbin_properties[PLAYBIN_API_PROPERTY]); -#line 3314 "playbin.c" - } -} - -GListModel* -playbin_get_play_queue (Playbin* self) -{ - GListModel* result; - GListStore* _tmp0_; -#line 111 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 111 "../src/playbin.vala" - _tmp0_ = self->priv->_play_queue; -#line 111 "../src/playbin.vala" - result = (GListModel*) _tmp0_; -#line 111 "../src/playbin.vala" - return result; -#line 3331 "playbin.c" -} - -guint -playbin_get_play_queue_length (Playbin* self) -{ - guint result; -#line 112 "../src/playbin.vala" - g_return_val_if_fail (self != NULL, 0U); -#line 112 "../src/playbin.vala" - result = self->priv->_play_queue_length; -#line 112 "../src/playbin.vala" - return result; -#line 3344 "playbin.c" -} - -static void -playbin_set_play_queue_length (Playbin* self, - guint value) -{ - guint old_value; -#line 112 "../src/playbin.vala" - g_return_if_fail (self != NULL); -#line 112 "../src/playbin.vala" - old_value = playbin_get_play_queue_length (self); -#line 112 "../src/playbin.vala" - if (old_value != value) { -#line 112 "../src/playbin.vala" - self->priv->_play_queue_length = value; -#line 112 "../src/playbin.vala" - g_object_notify_by_pspec ((GObject *) self, playbin_properties[PLAYBIN_PLAY_QUEUE_LENGTH_PROPERTY]); -#line 3362 "playbin.c" - } -} - -static void -playbin_class_init (PlaybinClass * klass, - gpointer klass_data) -{ -#line 62 "../src/playbin.vala" - playbin_parent_class = g_type_class_peek_parent (klass); -#line 62 "../src/playbin.vala" - g_type_class_adjust_private_offset (klass, &Playbin_private_offset); -#line 62 "../src/playbin.vala" - G_OBJECT_CLASS (klass)->get_property = _vala_playbin_get_property; -#line 62 "../src/playbin.vala" - G_OBJECT_CLASS (klass)->set_property = _vala_playbin_set_property; -#line 62 "../src/playbin.vala" - G_OBJECT_CLASS (klass)->finalize = playbin_finalize; -#line 62 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_STATE_PROPERTY, playbin_properties[PLAYBIN_STATE_PROPERTY] = g_param_spec_enum ("state", "state", "state", TYPE_PLAYBIN_STATE, PLAYBIN_STATE_STOPPED, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 62 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_VOLUME_PROPERTY, playbin_properties[PLAYBIN_VOLUME_PROPERTY] = g_param_spec_int ("volume", "volume", "volume", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 62 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_MUTE_PROPERTY, playbin_properties[PLAYBIN_MUTE_PROPERTY] = g_param_spec_boolean ("mute", "mute", "mute", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 62 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_PLAY_QUEUE_POSITION_PROPERTY, playbin_properties[PLAYBIN_PLAY_QUEUE_POSITION_PROPERTY] = g_param_spec_int ("play-queue-position", "play-queue-position", "play-queue-position", G_MININT, G_MAXINT, -1, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 62 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_POSITION_PROPERTY, playbin_properties[PLAYBIN_POSITION_PROPERTY] = g_param_spec_double ("position", "position", "position", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 62 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_DURATION_PROPERTY, playbin_properties[PLAYBIN_DURATION_PROPERTY] = g_param_spec_double ("duration", "duration", "duration", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 62 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_API_PROPERTY, playbin_properties[PLAYBIN_API_PROPERTY] = g_param_spec_object ("api", "api", "api", SUBSONIC_TYPE_CLIENT, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 62 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_PLAY_QUEUE_PROPERTY, playbin_properties[PLAYBIN_PLAY_QUEUE_PROPERTY] = g_param_spec_object ("play-queue", "play-queue", "play-queue", g_list_model_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 62 "../src/playbin.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), PLAYBIN_PLAY_QUEUE_LENGTH_PROPERTY, playbin_properties[PLAYBIN_PLAY_QUEUE_LENGTH_PROPERTY] = g_param_spec_uint ("play-queue-length", "play-queue-length", "play-queue-length", 0, G_MAXUINT, (guint) 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 62 "../src/playbin.vala" - playbin_signals[PLAYBIN_NEW_TRACK_SIGNAL] = g_signal_new ("new-track", TYPE_PLAYBIN, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -#line 62 "../src/playbin.vala" - playbin_signals[PLAYBIN_STOPPED_SIGNAL] = g_signal_new ("stopped", TYPE_PLAYBIN, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -#line 3402 "playbin.c" -} - -static void -playbin_instance_init (Playbin * self, - gpointer klass) -{ - mpv_handle* _tmp0_; - GListStore* _tmp1_; -#line 62 "../src/playbin.vala" - self->priv = playbin_get_instance_private (self); -#line 63 "../src/playbin.vala" - _tmp0_ = mpv_create (); -#line 63 "../src/playbin.vala" - self->priv->mpv = _tmp0_; -#line 64 "../src/playbin.vala" - self->priv->_volume = 100; -#line 65 "../src/playbin.vala" - self->priv->_mute = FALSE; -#line 66 "../src/playbin.vala" - _tmp1_ = g_list_store_new (TYPE_PLAYBIN_SONG); -#line 66 "../src/playbin.vala" - self->priv->_play_queue = _tmp1_; -#line 69 "../src/playbin.vala" - self->priv->is_handling_event = FALSE; -#line 71 "../src/playbin.vala" - self->priv->_state = PLAYBIN_STATE_STOPPED; -#line 98 "../src/playbin.vala" - self->priv->_play_queue_position = -1; -#line 106 "../src/playbin.vala" - self->priv->_position = 0.0; -#line 107 "../src/playbin.vala" - self->priv->_duration = 0.0; -#line 109 "../src/playbin.vala" - self->priv->_api = NULL; -#line 112 "../src/playbin.vala" - self->priv->_play_queue_length = (guint) 0; -#line 3439 "playbin.c" -} - -static void -playbin_finalize (GObject * obj) -{ - Playbin * self; -#line 62 "../src/playbin.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PLAYBIN, Playbin); -#line 436 "../src/playbin.vala" - g_debug ("playbin.vala:436: destroying playbin"); -#line 63 "../src/playbin.vala" - _mpv_terminate_destroy0 (self->priv->mpv); -#line 66 "../src/playbin.vala" - _g_object_unref0 (self->priv->_play_queue); -#line 62 "../src/playbin.vala" - G_OBJECT_CLASS (playbin_parent_class)->finalize (obj); -#line 3456 "playbin.c" -} - -static GType -playbin_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (PlaybinClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) playbin_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Playbin), 0, (GInstanceInitFunc) playbin_instance_init, NULL }; - GType playbin_type_id; - playbin_type_id = g_type_register_static (G_TYPE_OBJECT, "Playbin", &g_define_type_info, 0); - Playbin_private_offset = g_type_add_instance_private (playbin_type_id, sizeof (PlaybinPrivate)); - return playbin_type_id; -} - -GType -playbin_get_type (void) -{ - static volatile gsize playbin_type_id__once = 0; - if (g_once_init_enter (&playbin_type_id__once)) { - GType playbin_type_id; - playbin_type_id = playbin_get_type_once (); - g_once_init_leave (&playbin_type_id__once, playbin_type_id); - } - return playbin_type_id__once; -} - -static void -_vala_playbin_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec) -{ - Playbin * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_PLAYBIN, Playbin); -#line 62 "../src/playbin.vala" - switch (property_id) { -#line 62 "../src/playbin.vala" - case PLAYBIN_STATE_PROPERTY: -#line 62 "../src/playbin.vala" - g_value_set_enum (value, playbin_get_state (self)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_VOLUME_PROPERTY: -#line 62 "../src/playbin.vala" - g_value_set_int (value, playbin_get_volume (self)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_MUTE_PROPERTY: -#line 62 "../src/playbin.vala" - g_value_set_boolean (value, playbin_get_mute (self)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_PLAY_QUEUE_POSITION_PROPERTY: -#line 62 "../src/playbin.vala" - g_value_set_int (value, playbin_get_play_queue_position (self)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_POSITION_PROPERTY: -#line 62 "../src/playbin.vala" - g_value_set_double (value, playbin_get_position (self)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_DURATION_PROPERTY: -#line 62 "../src/playbin.vala" - g_value_set_double (value, playbin_get_duration (self)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_API_PROPERTY: -#line 62 "../src/playbin.vala" - g_value_set_object (value, playbin_get_api (self)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_PLAY_QUEUE_PROPERTY: -#line 62 "../src/playbin.vala" - g_value_set_object (value, playbin_get_play_queue (self)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_PLAY_QUEUE_LENGTH_PROPERTY: -#line 62 "../src/playbin.vala" - g_value_set_uint (value, playbin_get_play_queue_length (self)); -#line 62 "../src/playbin.vala" - break; -#line 3545 "playbin.c" - default: -#line 62 "../src/playbin.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 62 "../src/playbin.vala" - break; -#line 3551 "playbin.c" - } -} - -static void -_vala_playbin_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - Playbin * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_PLAYBIN, Playbin); -#line 62 "../src/playbin.vala" - switch (property_id) { -#line 62 "../src/playbin.vala" - case PLAYBIN_STATE_PROPERTY: -#line 62 "../src/playbin.vala" - playbin_set_state (self, g_value_get_enum (value)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_VOLUME_PROPERTY: -#line 62 "../src/playbin.vala" - playbin_set_volume (self, g_value_get_int (value)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_MUTE_PROPERTY: -#line 62 "../src/playbin.vala" - playbin_set_mute (self, g_value_get_boolean (value)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_PLAY_QUEUE_POSITION_PROPERTY: -#line 62 "../src/playbin.vala" - playbin_set_play_queue_position (self, g_value_get_int (value)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_POSITION_PROPERTY: -#line 62 "../src/playbin.vala" - playbin_set_position (self, g_value_get_double (value)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_DURATION_PROPERTY: -#line 62 "../src/playbin.vala" - playbin_set_duration (self, g_value_get_double (value)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_API_PROPERTY: -#line 62 "../src/playbin.vala" - playbin_set_api (self, g_value_get_object (value)); -#line 62 "../src/playbin.vala" - break; -#line 62 "../src/playbin.vala" - case PLAYBIN_PLAY_QUEUE_LENGTH_PROPERTY: -#line 62 "../src/playbin.vala" - playbin_set_play_queue_length (self, g_value_get_uint (value)); -#line 62 "../src/playbin.vala" - break; -#line 3613 "playbin.c" - default: -#line 62 "../src/playbin.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 62 "../src/playbin.vala" - break; -#line 3619 "playbin.c" - } -} - -static void -_vala_array_destroy (gpointer array, - gssize array_length, - GDestroyNotify destroy_func) -{ - if ((array != NULL) && (destroy_func != NULL)) { - gssize i; - for (i = 0; i < array_length; i = i + 1) { - if (((gpointer*) array)[i] != NULL) { - destroy_func (((gpointer*) array)[i]); - } - } - } -} - -static void -_vala_array_free (gpointer array, - gssize array_length, - GDestroyNotify destroy_func) -{ - _vala_array_destroy (array, array_length, destroy_func); - g_free (array); -} - diff --git a/src/playbin.vala b/src/playbin.vala new file mode 100644 index 0000000..424f3ab --- /dev/null +++ b/src/playbin.vala @@ -0,0 +1,438 @@ +public enum PlaybinState { + STOPPED, + PAUSED, + PLAYING, +} + +private struct CommandCallback { + unowned SourceFunc callback; + int error; +} + +public class PlaybinSong : Object { + private Subsonic.Song inner; + public string id { get { return inner.id; } } + public string title { get { return inner.title; } } + public string artist { get { return inner.artist; } } + public string album { get { return inner.album; } } + public string? genre { get { return inner.genre; } } + public int64 duration { get { return inner.duration; } } + public int64 track { get { return inner.track; } } + public int64 play_count { get { return inner.play_count; } } + + public Gdk.Paintable? thumbnail { get; private set; } + + private Cancellable cancel_loading_thumbnail; + + public PlaybinSong (Subsonic.Client api, Subsonic.Song song) { + this.api = api; + this.inner = song; + } + + private Subsonic.Client api; + + public void need_cover_art () { + /* TODO + if (this.cancel_loading_thumbnail != null) return; + if (this.thumbnail != null) return; + + this.cancel_loading_thumbnail = new Cancellable (); + // TODO: dpi scaling maybe?? probably + api.cover_art.begin (this.id, 50, Priority.LOW, this.cancel_loading_thumbnail, (obj, res) => { + try { + var pixbuf = api.cover_art.end (res); + this.thumbnail = Gdk.Texture.for_pixbuf (pixbuf); + } catch (Error e) { + if (!(e is IOError.CANCELLED)) { + warning ("could not fetch cover art for song %s: %s", this.id, e.message); + } + } + this.cancel_loading_thumbnail = null; + }); + */ + } + + ~PlaybinSong () { + if (this.cancel_loading_thumbnail != null) { + this.cancel_loading_thumbnail.cancel (); + } + } +} + +public class Playbin : GLib.Object { + private Mpv.Handle mpv = new Mpv.Handle (); + private int _volume = 100; + private bool _mute = false; + private ListStore _play_queue = new ListStore (typeof (PlaybinSong)); + + // try to prevent wait_event to be called twice + private bool is_handling_event = false; + + public PlaybinState state { get; private set; default = PlaybinState.STOPPED; } + + public int volume { + get { return _volume; } + set { + var ret = mpv.set_property_int64 ("volume", value); + if (ret >= 0) { + _volume = value; + } else { + warning ("failed to set volume: %s", ret.to_string ()); + } + } + } + + public bool mute { + get { return _mute; } + set { + var ret = mpv.set_property_flag ("mute", value); + if (ret >= 0) { + _mute = value; + } else { + warning ("failed to set mute status: %s", ret.to_string ()); + } + } + } + + // invariant: negative iff stopped, otherwise < play queue length + public int play_queue_position { get; private set; default = -1; } + + // signalled when a new track is current + public signal void new_track (); + // signalled when the last track is over + public signal void stopped (); + + // these are mostly synced with mpv + public double position { get; private set; default = 0.0; } + public double duration { get; private set; default = 0.0; } + + public weak Subsonic.Client api { get; set; default = null; } + + public ListModel play_queue { get { return this._play_queue; } } + public uint play_queue_length { get; private set; default = 0; } + + private async Mpv.Error mpv_command_async (string[] args) { + CommandCallback cc = {}; + + this.mpv.command_async ((uint64) &cc, args); + + cc.callback = this.mpv_command_async.callback; + yield; + return cc.error; + } + + public Playbin () { + assert (this.mpv.initialize () >= 0); + assert (this.mpv.set_property_string ("audio-client-name", "audrey") >= 0); + assert (this.mpv.set_property_string ("user-agent", Audrey.Const.user_agent) >= 0); + assert (this.mpv.set_property_string ("video", "no") >= 0); + assert (this.mpv.set_property_string ("prefetch-playlist", "yes") >= 0); + assert (this.mpv.set_property_string ("gapless-audio", "yes") >= 0); + assert (this.mpv.observe_property (0, "time-pos", Mpv.Format.DOUBLE) >= 0); + assert (this.mpv.observe_property (1, "duration", Mpv.Format.DOUBLE) >= 0); + assert (this.mpv.observe_property (2, "playlist-pos", Mpv.Format.INT64) >= 0); + assert (this.mpv.observe_property (3, "pause", Mpv.Format.FLAG) >= 0); + + this.mpv.wakeup_callback = () => { + Idle.add (() => { + if (this.is_handling_event) { + warning ("main thread mpv wakeup callback called twice"); + return false; + } + this.is_handling_event = true; + + while (true) { + var event = this.mpv.wait_event (0.0); + if (event.event_id == Mpv.EventId.NONE) break; + + switch (event.event_id) { + case Mpv.EventId.PROPERTY_CHANGE: + var data = event.parse_property (); + switch (event.reply_userdata) { + case 0: + assert (data.name == "time-pos"); + if (data.format == Mpv.Format.NONE) { + this.position = 0.0; + } else { + this.position = data.parse_double (); + } + break; + + case 1: + assert (data.name == "duration"); + if (data.format == Mpv.Format.NONE) { + // this.duration = 0.0; i think this prevents the fallback below from working + } else { + this.duration = data.parse_double (); + } + break; + + case 2: + // here as a sanity check + // should always match our own play_queu_position/state + assert (data.name == "playlist-pos"); + int64 playlist_pos = data.parse_int64 (); + if (playlist_pos < 0) { + if (this.state != PlaybinState.STOPPED) { + error ("mpv has no current playlist entry, but we think it's index %d", this.play_queue_position); + } + assert (this.play_queue_position < 0); + } else { + if (this.state == PlaybinState.STOPPED) { + error ("mpv is at playlist entry %d, but we're stopped", (int) playlist_pos); + } + if (this.play_queue_position != (int) playlist_pos) { + error ("mpv is at playlist entry %d, but we think it's %d", (int) playlist_pos, this.play_queue_position); + } + } + break; + + case 3: + // also here as a sanity check + // should always match our own state + assert (data.name == "pause"); + bool pause = data.parse_flag (); + if (pause && this.state != PlaybinState.PAUSED) { + error (@"mpv is paused, but we are @(this.state)"); + } + if (!pause && this.state == PlaybinState.PAUSED) { + error ("mpv is not paused, but we are paused"); + } + break; + + default: + assert (false); + break; + } + break; + + case Mpv.EventId.START_FILE: + debug ("START_FILE received"); + + // estimate duration from api data + // while mpv doesn't know it + this.duration = ((PlaybinSong) this._play_queue.get_item (this.play_queue_position)).duration; + + this.new_track (); + break; + + case Mpv.EventId.END_FILE: + var data = event.parse_end_file (); + debug (@"END_FILE received (reason: $(data.reason))"); + + if (data.error < 0) { + warning ("playback of track aborted: %s", data.error.to_string ()); + } + + if (data.reason == Mpv.EndFileReason.EOF) { + // assume this is a proper transition + this.play_queue_position += 1; + + if (this.play_queue_position == this._play_queue.get_n_items ()) { + // reached the end (?) + this.state = PlaybinState.STOPPED; + this.play_queue_position = -1; + this.stopped (); + } + } + + break; + + case Mpv.EventId.COMMAND_REPLY: + unowned CommandCallback *cc = (CommandCallback *) event.reply_userdata; + cc.error = event.error; + cc.callback (); + break; + + default: + // ignore by default + break; + } + } + + this.is_handling_event = false; + return false; + }); + }; + } + + public void seek (double position) { + var rc = this.mpv.command ({"seek", position.to_string (), "absolute"}); + if (rc < 0) { + warning (@"could not seek to $position: $rc"); + } else { + this.position = position; + } + } + + // manually changes which track in the play queue to play + public void select_track (uint position) + requires (position < this.play_queue.get_n_items ()) + { + assert (this.mpv.command ({"playlist-play-index", position.to_string ()}) >= 0); + this.play_queue_position = (int) position; + this.state = PlaybinState.PLAYING; + this.play (); // make sure mpv actually starts playing the track + } + + public void pause () { + assert (this.state != PlaybinState.STOPPED); + this.state = PlaybinState.PAUSED; + debug ("setting state to paused"); + // TODO: abstract away this handling around mpv api a bit for auto debug printing + var ret = this.mpv.set_property_flag("pause", true); + if (ret != 0) { + debug (@"failed to set state to paused ($(ret)): $(ret.to_string())"); + } + } + + public void play () { + if (this.state == PlaybinState.STOPPED) { + // allow only when playlist is not empty + // and start from the top + assert (this._play_queue.get_n_items () > 0); + this.select_track (0); + } else { + this.state = PlaybinState.PLAYING; + debug ("setting state to playing"); + var ret = this.mpv.set_property_flag("pause", false); + if (ret != 0) { + debug (@"failed to set state to playing ($(ret)): $(ret.to_string())"); + } + } + } + + public void go_to_next_track () + requires (this.state != PlaybinState.STOPPED) + { + if (this.play_queue_position+1 < this._play_queue.get_n_items ()) { + this.play_queue_position += 1; + assert (this.mpv.command ({"playlist-next-playlist"}) >= 0); + } else { + warning ("tried to skip forward at end of play queue, ignoring"); + } + } + + public void go_to_prev_track () + requires (this.state != PlaybinState.STOPPED) + { + if (this.play_queue_position > 0) { + this.play_queue_position -= 1; + assert (this.mpv.command ({"playlist-prev-playlist"}) >= 0); + } else { + warning ("tried to skip to prev track at start of play queue, ignoring"); + } + } + + public void remove_track (uint position) + requires (position < this._play_queue.get_n_items ()) + { + assert (this.mpv.command({"playlist-remove", position.to_string ()}) >= 0); + this._play_queue.remove (position); + this.play_queue_length -= 1; + if (this.play_queue_position > position) this.play_queue_position -= 1; + if (this.play_queue_position == this._play_queue.get_n_items ()) { + // we just killed the last track + this.state = PlaybinState.STOPPED; + this.play_queue_position = -1; + this.stopped (); + } + } + + public void clear () { + assert (this.mpv.command({"playlist-clear"}) >= 0); + if (this.state != PlaybinState.STOPPED) { + assert (this.mpv.command({"playlist-remove", "current"}) >= 0); + } + this.state = PlaybinState.STOPPED; + this._play_queue.remove_all (); + this.play_queue_length = 0; + this.play_queue_position = -1; + + this.stopped (); + } + + public void append_track (Subsonic.Song song) { + assert (this.mpv.command ({ + "loadfile", + this.api.stream_uri (song.id), + "append", + }) >= 0); + this._play_queue.append (new PlaybinSong (this.api, song)); + this.play_queue_length += 1; + } + + public async void append_track_async (Subsonic.Song song) { + var err = yield this.mpv_command_async ({ + "loadfile", + this.api.stream_uri (song.id), + "append", + }); + assert (err >= 0); + + this._play_queue.append (new PlaybinSong (this.api, song)); + this.play_queue_length += 1; + } + + public void move_track (uint from, uint to) + requires (from < this._play_queue.get_n_items ()) + requires (to < this._play_queue.get_n_items ()) + { + debug (@"moving track $from to $to"); + + if (from < to) { + // why offset to? because if the playlist is 01234, + // mpv takes "move 1 to 3" to mean 02134, not 02314 + // that is, the target is a "gap", not a playlist entry + // from -> 0 1 2 3 4 5 + // to -> 0 1 2 3 4 5 6 + assert(this.mpv.command({ + "playlist-move", + from.to_string (), + (to+1).to_string (), + }) >= 0); + + // F0123T -> 0123TF + var additions = new Object[to-from+1]; + for (uint i = from+1; i < to; i += 1) { + additions[i-from-1] = this._play_queue.get_item (i); + } + additions[to-from-1] = this._play_queue.get_item (to); + additions[to-from] = this._play_queue.get_item (from); + this._play_queue.splice(from, to-from+1, additions); + + if (this.play_queue_position == (int) from) this.play_queue_position = (int) to; + else if (this.play_queue_position > (int) from && this.play_queue_position <= (int) to) this.play_queue_position -= 1; + } else if (from > to) { + assert(this.mpv.command({ + "playlist-move", + from.to_string (), + to.to_string (), + }) >= 0); + + // T0123F -> FT0123 + var additions = new Object[from-to+1]; + additions[0] = this._play_queue.get_item (from); + for (uint i = to; i < from; i += 1) { + additions[i-to+1] = this._play_queue.get_item (i); + } + this._play_queue.splice (to, from-to+1, additions); + + if (this.play_queue_position == (int) from) this.play_queue_position = (int) to; + else if (this.play_queue_position >= (int) to && this.play_queue_position < (int) from) this.play_queue_position += 1; + } + } + + public void stop () { + debug ("stopping playback"); + // don't clear the playlist, just in case (less state changes to sync) + assert(this.mpv.command({"stop", "keep-playlist"}) >= 0); + this.state = PlaybinState.STOPPED; + this.play_queue_position = -1; + this.stopped (); + } + + ~Playbin () { + debug ("destroying playbin"); + } +} diff --git a/src/subsonic.c b/src/subsonic.c deleted file mode 100644 index 09dfb48..0000000 --- a/src/subsonic.c +++ /dev/null @@ -1,2597 +0,0 @@ -/* subsonic.c generated by valac 0.56.16, the Vala compiler - * generated from subsonic.vala, do not modify */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#define AUDREY_CONST_user_agent "audrey/linux" -#if !defined(VALA_STRICT_C) -#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14) -#pragma GCC diagnostic warning "-Wincompatible-pointer-types" -#elif defined(__clang__) && (__clang_major__ >= 16) -#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types" -#pragma clang diagnostic ignored "-Wincompatible-pointer-types" -#endif -#endif -#if !defined(VALA_EXTERN) -#if defined(_MSC_VER) -#define VALA_EXTERN __declspec(dllexport) extern -#elif __GNUC__ >= 4 -#define VALA_EXTERN __attribute__((visibility("default"))) extern -#else -#define VALA_EXTERN extern -#endif -#endif - -#define SUBSONIC_TYPE_ERROR (subsonic_error_get_type ()) - -#define SUBSONIC_TYPE_SONG (subsonic_song_get_type ()) -typedef struct _SubsonicSong SubsonicSong; -typedef void (*SubsonicSongCallback) (SubsonicSong* song, gpointer user_data); - -#define SUBSONIC_TYPE_ARTIST (subsonic_artist_get_type ()) -#define SUBSONIC_ARTIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SUBSONIC_TYPE_ARTIST, SubsonicArtist)) -#define SUBSONIC_ARTIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SUBSONIC_TYPE_ARTIST, SubsonicArtistClass)) -#define SUBSONIC_IS_ARTIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SUBSONIC_TYPE_ARTIST)) -#define SUBSONIC_IS_ARTIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SUBSONIC_TYPE_ARTIST)) -#define SUBSONIC_ARTIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SUBSONIC_TYPE_ARTIST, SubsonicArtistClass)) - -typedef struct _SubsonicArtist SubsonicArtist; -typedef struct _SubsonicArtistClass SubsonicArtistClass; -typedef struct _SubsonicArtistPrivate SubsonicArtistPrivate; -enum { - SUBSONIC_ARTIST_0_PROPERTY, - SUBSONIC_ARTIST_NAME_PROPERTY, - SUBSONIC_ARTIST_NUM_PROPERTIES -}; -static GParamSpec* subsonic_artist_properties[SUBSONIC_ARTIST_NUM_PROPERTIES]; -#define _g_free0(var) (var = (g_free (var), NULL)) - -#define SUBSONIC_TYPE_ALBUM (subsonic_album_get_type ()) -#define SUBSONIC_ALBUM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SUBSONIC_TYPE_ALBUM, SubsonicAlbum)) -#define SUBSONIC_ALBUM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SUBSONIC_TYPE_ALBUM, SubsonicAlbumClass)) -#define SUBSONIC_IS_ALBUM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SUBSONIC_TYPE_ALBUM)) -#define SUBSONIC_IS_ALBUM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SUBSONIC_TYPE_ALBUM)) -#define SUBSONIC_ALBUM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SUBSONIC_TYPE_ALBUM, SubsonicAlbumClass)) - -typedef struct _SubsonicAlbum SubsonicAlbum; -typedef struct _SubsonicAlbumClass SubsonicAlbumClass; -typedef struct _SubsonicAlbumPrivate SubsonicAlbumPrivate; -enum { - SUBSONIC_ALBUM_0_PROPERTY, - SUBSONIC_ALBUM_NUM_PROPERTIES -}; -static GParamSpec* subsonic_album_properties[SUBSONIC_ALBUM_NUM_PROPERTIES]; -#define _g_date_time_unref0(var) ((var == NULL) ? NULL : (var = (g_date_time_unref (var), NULL))) - -#define SUBSONIC_TYPE_CLIENT (subsonic_client_get_type ()) -#define SUBSONIC_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SUBSONIC_TYPE_CLIENT, SubsonicClient)) -#define SUBSONIC_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SUBSONIC_TYPE_CLIENT, SubsonicClientClass)) -#define SUBSONIC_IS_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SUBSONIC_TYPE_CLIENT)) -#define SUBSONIC_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SUBSONIC_TYPE_CLIENT)) -#define SUBSONIC_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SUBSONIC_TYPE_CLIENT, SubsonicClientClass)) - -typedef struct _SubsonicClient SubsonicClient; -typedef struct _SubsonicClientClass SubsonicClientClass; -typedef struct _SubsonicClientPrivate SubsonicClientPrivate; -enum { - SUBSONIC_CLIENT_0_PROPERTY, - SUBSONIC_CLIENT_NUM_PROPERTIES -}; -static GParamSpec* subsonic_client_properties[SUBSONIC_CLIENT_NUM_PROPERTIES]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define _g_bytes_unref0(var) ((var == NULL) ? NULL : (var = (g_bytes_unref (var), NULL))) -typedef struct _SubsonicClientPingData SubsonicClientPingData; -typedef struct _SubsonicClientScrobbleData SubsonicClientScrobbleData; -typedef struct _SubsonicClientGetRandomSongsData SubsonicClientGetRandomSongsData; -typedef struct _SubsonicClientCoverArtData SubsonicClientCoverArtData; -#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); -#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } -#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } -#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); - -typedef enum { - SUBSONIC_ERROR_BAD_AUTHN, - SUBSONIC_ERROR_ERROR -} SubsonicError; -#define SUBSONIC_ERROR subsonic_error_quark () - -struct _SubsonicSong { - gchar* id; - gchar* title; - gchar* album; - gchar* artist; - gint64 track; - gint64 year; - GDateTime* starred; - gint64 duration; - gint64 play_count; - gchar* genre; - gchar* cover_art; -}; - -struct _SubsonicArtist { - GObject parent_instance; - SubsonicArtistPrivate * priv; - gchar* index; - gchar* id; - gchar* cover_art; - gchar* artist_image_url; - gint64 album_count; -}; - -struct _SubsonicArtistClass { - GObjectClass parent_class; -}; - -struct _SubsonicArtistPrivate { - gchar* _name; -}; - -struct _SubsonicAlbum { - GObject parent_instance; - SubsonicAlbumPrivate * priv; - gchar* id; - gchar* name; -}; - -struct _SubsonicAlbumClass { - GObjectClass parent_class; -}; - -struct _SubsonicClient { - GObject parent_instance; - SubsonicClientPrivate * priv; -}; - -struct _SubsonicClientClass { - GObjectClass parent_class; -}; - -struct _SubsonicClientPrivate { - SoupSession* session; - gchar* url; - gchar* parameters; -}; - -struct _SubsonicClientPingData { - int _state_; - GObject* _source_object_; - GAsyncResult* _res_; - GTask* _async_result; - SubsonicClient* self; - SoupMessage* msg; - const gchar* _tmp0_; - const gchar* _tmp1_; - const gchar* _tmp2_; - const gchar* _tmp3_; - gchar* _tmp4_; - gchar* _tmp5_; - SoupMessage* _tmp6_; - SoupMessage* _tmp7_; - GError* _tmp8_; - GBytes* bytes; - SoupSession* _tmp9_; - GBytes* _tmp10_; - JsonParser* parser; - JsonParser* _tmp11_; - JsonParser* _tmp12_; - GBytes* _tmp13_; - gsize _tmp14_; - guint8* _tmp15_; - JsonReader* reader; - JsonParser* _tmp16_; - JsonNode* _tmp17_; - JsonReader* _tmp18_; - JsonReader* _tmp19_; - GError* _inner_error0_; -}; - -struct _SubsonicClientScrobbleData { - int _state_; - GObject* _source_object_; - GAsyncResult* _res_; - GTask* _async_result; - SubsonicClient* self; - gchar* id; - SoupMessage* msg; - const gchar* _tmp0_; - const gchar* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; - const gchar* _tmp4_; - const gchar* _tmp5_; - const gchar* _tmp6_; - gchar* _tmp7_; - gchar* _tmp8_; - SoupMessage* _tmp9_; - SoupMessage* _tmp10_; - SoupMessage* _tmp11_; - GBytes* bytes; - SoupSession* _tmp12_; - SoupMessage* _tmp13_; - GBytes* _tmp14_; - SoupMessage* _tmp15_; - JsonParser* parser; - JsonParser* _tmp16_; - JsonParser* _tmp17_; - GBytes* _tmp18_; - gsize _tmp19_; - guint8* _tmp20_; - JsonReader* reader; - JsonParser* _tmp21_; - JsonNode* _tmp22_; - JsonReader* _tmp23_; - JsonReader* _tmp24_; - GError* _inner_error0_; -}; - -struct _SubsonicClientGetRandomSongsData { - int _state_; - GObject* _source_object_; - GAsyncResult* _res_; - GTask* _async_result; - SubsonicClient* self; - gchar* parameters; - SubsonicSongCallback callback; - gpointer callback_target; - gchar* str_parameters; - gchar* _tmp0_; - const gchar* _tmp1_; - gchar* _tmp2_; - SoupMessage* msg; - const gchar* _tmp3_; - const gchar* _tmp4_; - const gchar* _tmp5_; - const gchar* _tmp6_; - const gchar* _tmp7_; - const gchar* _tmp8_; - gchar* _tmp9_; - gchar* _tmp10_; - SoupMessage* _tmp11_; - SoupMessage* _tmp12_; - SoupMessage* _tmp13_; - GBytes* bytes; - SoupSession* _tmp14_; - SoupMessage* _tmp15_; - GBytes* _tmp16_; - SoupMessage* _tmp17_; - JsonParser* parser; - JsonParser* _tmp18_; - JsonParser* _tmp19_; - GBytes* _tmp20_; - gsize _tmp21_; - guint8* _tmp22_; - JsonReader* reader; - JsonParser* _tmp23_; - JsonNode* _tmp24_; - JsonReader* _tmp25_; - JsonReader* _tmp26_; - JsonReader* _tmp27_; - JsonReader* _tmp28_; - gint i; - gboolean _tmp29_; - JsonReader* _tmp30_; - JsonReader* _tmp31_; - JsonReader* _tmp32_; - SubsonicSong _tmp33_; - SubsonicSong _tmp34_; - JsonReader* _tmp35_; - JsonReader* _tmp36_; - GError* _tmp37_; - GError* _inner_error0_; -}; - -struct _SubsonicClientCoverArtData { - int _state_; - GObject* _source_object_; - GAsyncResult* _res_; - GTask* _async_result; - SubsonicClient* self; - gchar* id; - gint size; - gint priority; - GCancellable* cancellable; - GdkPixbuf* result; - SoupMessage* msg; - gchar* _tmp0_; - gchar* _tmp1_; - SoupMessage* _tmp2_; - SoupMessage* _tmp3_; - SoupMessage* _tmp4_; - GInputStream* stream; - SoupSession* _tmp5_; - SoupMessage* _tmp6_; - GInputStream* _tmp7_; - SoupMessage* _tmp8_; - SoupMessage* _tmp9_; - const gchar* _tmp10_; - GdkPixbuf* _tmp11_; - GInputStream* _tmp12_; - GdkPixbuf* _tmp13_; - GdkPixbuf* _tmp14_; - GError* _inner_error0_; -}; - -static gint SubsonicArtist_private_offset; -static gpointer subsonic_artist_parent_class = NULL; -static gpointer subsonic_album_parent_class = NULL; -static gint SubsonicClient_private_offset; -static gpointer subsonic_client_parent_class = NULL; - -VALA_EXTERN GQuark subsonic_error_quark (void); -VALA_EXTERN GType subsonic_error_get_type (void) G_GNUC_CONST ; -VALA_EXTERN GType subsonic_song_get_type (void) G_GNUC_CONST ; -VALA_EXTERN SubsonicSong* subsonic_song_dup (const SubsonicSong* self); -VALA_EXTERN void subsonic_song_free (SubsonicSong* self); -VALA_EXTERN void subsonic_song_copy (const SubsonicSong* self, - SubsonicSong* dest); -VALA_EXTERN void subsonic_song_destroy (SubsonicSong* self); -G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (SubsonicSong, subsonic_song_destroy) -VALA_EXTERN GType subsonic_artist_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SubsonicArtist, g_object_unref) -VALA_EXTERN SubsonicArtist* subsonic_artist_new (const gchar* index, - JsonReader* reader); -VALA_EXTERN SubsonicArtist* subsonic_artist_construct (GType object_type, - const gchar* index, - JsonReader* reader); -static void subsonic_artist_set_name (SubsonicArtist* self, - const gchar* value); -VALA_EXTERN const gchar* subsonic_artist_get_name (SubsonicArtist* self); -static void subsonic_artist_finalize (GObject * obj); -static GType subsonic_artist_get_type_once (void); -static void _vala_subsonic_artist_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec); -static void _vala_subsonic_artist_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec); -VALA_EXTERN GType subsonic_album_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SubsonicAlbum, g_object_unref) -VALA_EXTERN SubsonicAlbum* subsonic_album_new (JsonReader* reader); -VALA_EXTERN SubsonicAlbum* subsonic_album_construct (GType object_type, - JsonReader* reader); -static void subsonic_album_finalize (GObject * obj); -static GType subsonic_album_get_type_once (void); -VALA_EXTERN void subsonic_song_init (SubsonicSong *self, - JsonReader* reader); -VALA_EXTERN GType subsonic_client_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SubsonicClient, g_object_unref) -VALA_EXTERN SubsonicClient* subsonic_client_new_with_token (const gchar* url, - const gchar* username, - const gchar* token, - const gchar* salt); -VALA_EXTERN SubsonicClient* subsonic_client_construct_with_token (GType object_type, - const gchar* url, - const gchar* username, - const gchar* token, - const gchar* salt); -static void subsonic_client_unwrap_response (SubsonicClient* self, - JsonReader* reader, - GError** error); -static void subsonic_client_ping_data_free (gpointer _data); -VALA_EXTERN void subsonic_client_ping (SubsonicClient* self, - GAsyncReadyCallback _callback_, - gpointer _user_data_); -VALA_EXTERN void subsonic_client_ping_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error); -static gboolean subsonic_client_ping_co (SubsonicClientPingData* _data_); -static void subsonic_client_ping_ready (GObject* source_object, - GAsyncResult* _res_, - gpointer _user_data_); -static void subsonic_client_scrobble_data_free (gpointer _data); -VALA_EXTERN void subsonic_client_scrobble (SubsonicClient* self, - const gchar* id, - GAsyncReadyCallback _callback_, - gpointer _user_data_); -VALA_EXTERN void subsonic_client_scrobble_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error); -static gboolean subsonic_client_scrobble_co (SubsonicClientScrobbleData* _data_); -static void subsonic_client_scrobble_ready (GObject* source_object, - GAsyncResult* _res_, - gpointer _user_data_); -static void subsonic_client_get_random_songs_data_free (gpointer _data); -VALA_EXTERN void subsonic_client_get_random_songs (SubsonicClient* self, - const gchar* parameters, - SubsonicSongCallback callback, - gpointer callback_target, - GAsyncReadyCallback _callback_, - gpointer _user_data_); -VALA_EXTERN void subsonic_client_get_random_songs_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error); -static gboolean subsonic_client_get_random_songs_co (SubsonicClientGetRandomSongsData* _data_); -static void subsonic_client_get_random_songs_ready (GObject* source_object, - GAsyncResult* _res_, - gpointer _user_data_); -static gboolean _subsonic_client_get_random_songs_co_gsource_func (gpointer self); -VALA_EXTERN gchar* subsonic_client_stream_uri (SubsonicClient* self, - const gchar* id); -VALA_EXTERN gchar* subsonic_client_cover_art_uri (SubsonicClient* self, - const gchar* id, - gint size); -static void subsonic_client_cover_art_data_free (gpointer _data); -VALA_EXTERN void subsonic_client_cover_art (SubsonicClient* self, - const gchar* id, - gint size, - gint priority, - GCancellable* cancellable, - GAsyncReadyCallback _callback_, - gpointer _user_data_); -VALA_EXTERN GdkPixbuf* subsonic_client_cover_art_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error); -static gboolean subsonic_client_cover_art_co (SubsonicClientCoverArtData* _data_); -static void subsonic_client_cover_art_ready (GObject* source_object, - GAsyncResult* _res_, - gpointer _user_data_); -VALA_EXTERN SubsonicClient* subsonic_client_new (void); -VALA_EXTERN SubsonicClient* subsonic_client_construct (GType object_type); -static void subsonic_client_finalize (GObject * obj); -static GType subsonic_client_get_type_once (void); - -GQuark -subsonic_error_quark (void) -{ - return g_quark_from_static_string ("subsonic-error-quark"); -} - -static GType -subsonic_error_get_type_once (void) -{ - static const GEnumValue values[] = {{SUBSONIC_ERROR_BAD_AUTHN, "SUBSONIC_ERROR_BAD_AUTHN", "bad-authn"}, {SUBSONIC_ERROR_ERROR, "SUBSONIC_ERROR_ERROR", "error"}, {0, NULL, NULL}}; - GType subsonic_error_type_id; - subsonic_error_type_id = g_enum_register_static ("SubsonicError", values); - return subsonic_error_type_id; -} - -GType -subsonic_error_get_type (void) -{ - static volatile gsize subsonic_error_type_id__once = 0; - if (g_once_init_enter (&subsonic_error_type_id__once)) { - GType subsonic_error_type_id; - subsonic_error_type_id = subsonic_error_get_type_once (); - g_once_init_leave (&subsonic_error_type_id__once, subsonic_error_type_id); - } - return subsonic_error_type_id__once; -} - -static inline gpointer -subsonic_artist_get_instance_private (SubsonicArtist* self) -{ - return G_STRUCT_MEMBER_P (self, SubsonicArtist_private_offset); -} - -SubsonicArtist* -subsonic_artist_construct (GType object_type, - const gchar* index, - JsonReader* reader) -{ - SubsonicArtist * self = NULL; - gchar* _tmp0_; - const gchar* _tmp1_; - gchar* _tmp2_; - const gchar* _tmp3_; - const gchar* _tmp4_; - gchar* _tmp5_; - const gchar* _tmp6_; - gchar* _tmp7_; -#line 16 "../src/subsonic.vala" - g_return_val_if_fail (index != NULL, NULL); -#line 16 "../src/subsonic.vala" - g_return_val_if_fail (reader != NULL, NULL); -#line 16 "../src/subsonic.vala" - self = (SubsonicArtist*) g_object_new (object_type, NULL); -#line 17 "../src/subsonic.vala" - _tmp0_ = g_strdup (index); -#line 17 "../src/subsonic.vala" - _g_free0 (self->index); -#line 17 "../src/subsonic.vala" - self->index = _tmp0_; -#line 19 "../src/subsonic.vala" - json_reader_read_member (reader, "id"); -#line 20 "../src/subsonic.vala" - _tmp1_ = json_reader_get_string_value (reader); -#line 20 "../src/subsonic.vala" - _tmp2_ = g_strdup (_tmp1_); -#line 20 "../src/subsonic.vala" - _g_free0 (self->id); -#line 20 "../src/subsonic.vala" - self->id = _tmp2_; -#line 21 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 23 "../src/subsonic.vala" - json_reader_read_member (reader, "name"); -#line 24 "../src/subsonic.vala" - _tmp3_ = json_reader_get_string_value (reader); -#line 24 "../src/subsonic.vala" - subsonic_artist_set_name (self, _tmp3_); -#line 25 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 27 "../src/subsonic.vala" - json_reader_read_member (reader, "coverArt"); -#line 28 "../src/subsonic.vala" - _tmp4_ = json_reader_get_string_value (reader); -#line 28 "../src/subsonic.vala" - _tmp5_ = g_strdup (_tmp4_); -#line 28 "../src/subsonic.vala" - _g_free0 (self->cover_art); -#line 28 "../src/subsonic.vala" - self->cover_art = _tmp5_; -#line 29 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 31 "../src/subsonic.vala" - json_reader_read_member (reader, "artistImageUrl"); -#line 32 "../src/subsonic.vala" - _tmp6_ = json_reader_get_string_value (reader); -#line 32 "../src/subsonic.vala" - _tmp7_ = g_strdup (_tmp6_); -#line 32 "../src/subsonic.vala" - _g_free0 (self->artist_image_url); -#line 32 "../src/subsonic.vala" - self->artist_image_url = _tmp7_; -#line 33 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 35 "../src/subsonic.vala" - json_reader_read_member (reader, "albumCount"); -#line 36 "../src/subsonic.vala" - self->album_count = json_reader_get_int_value (reader); -#line 37 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 16 "../src/subsonic.vala" - return self; -#line 555 "subsonic.c" -} - -SubsonicArtist* -subsonic_artist_new (const gchar* index, - JsonReader* reader) -{ -#line 16 "../src/subsonic.vala" - return subsonic_artist_construct (SUBSONIC_TYPE_ARTIST, index, reader); -#line 564 "subsonic.c" -} - -const gchar* -subsonic_artist_get_name (SubsonicArtist* self) -{ - const gchar* result; - const gchar* _tmp0_; -#line 11 "../src/subsonic.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 11 "../src/subsonic.vala" - _tmp0_ = self->priv->_name; -#line 11 "../src/subsonic.vala" - result = _tmp0_; -#line 11 "../src/subsonic.vala" - return result; -#line 580 "subsonic.c" -} - -static void -subsonic_artist_set_name (SubsonicArtist* self, - const gchar* value) -{ - gchar* old_value; -#line 11 "../src/subsonic.vala" - g_return_if_fail (self != NULL); -#line 11 "../src/subsonic.vala" - old_value = subsonic_artist_get_name (self); -#line 11 "../src/subsonic.vala" - if (g_strcmp0 (value, old_value) != 0) { -#line 594 "subsonic.c" - gchar* _tmp0_; -#line 11 "../src/subsonic.vala" - _tmp0_ = g_strdup (value); -#line 11 "../src/subsonic.vala" - _g_free0 (self->priv->_name); -#line 11 "../src/subsonic.vala" - self->priv->_name = _tmp0_; -#line 11 "../src/subsonic.vala" - g_object_notify_by_pspec ((GObject *) self, subsonic_artist_properties[SUBSONIC_ARTIST_NAME_PROPERTY]); -#line 604 "subsonic.c" - } -} - -static void -subsonic_artist_class_init (SubsonicArtistClass * klass, - gpointer klass_data) -{ -#line 8 "../src/subsonic.vala" - subsonic_artist_parent_class = g_type_class_peek_parent (klass); -#line 8 "../src/subsonic.vala" - g_type_class_adjust_private_offset (klass, &SubsonicArtist_private_offset); -#line 8 "../src/subsonic.vala" - G_OBJECT_CLASS (klass)->get_property = _vala_subsonic_artist_get_property; -#line 8 "../src/subsonic.vala" - G_OBJECT_CLASS (klass)->set_property = _vala_subsonic_artist_set_property; -#line 8 "../src/subsonic.vala" - G_OBJECT_CLASS (klass)->finalize = subsonic_artist_finalize; -#line 8 "../src/subsonic.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), SUBSONIC_ARTIST_NAME_PROPERTY, subsonic_artist_properties[SUBSONIC_ARTIST_NAME_PROPERTY] = g_param_spec_string ("name", "name", "name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 624 "subsonic.c" -} - -static void -subsonic_artist_instance_init (SubsonicArtist * self, - gpointer klass) -{ -#line 8 "../src/subsonic.vala" - self->priv = subsonic_artist_get_instance_private (self); -#line 633 "subsonic.c" -} - -static void -subsonic_artist_finalize (GObject * obj) -{ - SubsonicArtist * self; -#line 8 "../src/subsonic.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, SUBSONIC_TYPE_ARTIST, SubsonicArtist); -#line 9 "../src/subsonic.vala" - _g_free0 (self->index); -#line 10 "../src/subsonic.vala" - _g_free0 (self->id); -#line 11 "../src/subsonic.vala" - _g_free0 (self->priv->_name); -#line 12 "../src/subsonic.vala" - _g_free0 (self->cover_art); -#line 13 "../src/subsonic.vala" - _g_free0 (self->artist_image_url); -#line 8 "../src/subsonic.vala" - G_OBJECT_CLASS (subsonic_artist_parent_class)->finalize (obj); -#line 654 "subsonic.c" -} - -static GType -subsonic_artist_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (SubsonicArtistClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) subsonic_artist_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SubsonicArtist), 0, (GInstanceInitFunc) subsonic_artist_instance_init, NULL }; - GType subsonic_artist_type_id; - subsonic_artist_type_id = g_type_register_static (G_TYPE_OBJECT, "SubsonicArtist", &g_define_type_info, 0); - SubsonicArtist_private_offset = g_type_add_instance_private (subsonic_artist_type_id, sizeof (SubsonicArtistPrivate)); - return subsonic_artist_type_id; -} - -GType -subsonic_artist_get_type (void) -{ - static volatile gsize subsonic_artist_type_id__once = 0; - if (g_once_init_enter (&subsonic_artist_type_id__once)) { - GType subsonic_artist_type_id; - subsonic_artist_type_id = subsonic_artist_get_type_once (); - g_once_init_leave (&subsonic_artist_type_id__once, subsonic_artist_type_id); - } - return subsonic_artist_type_id__once; -} - -static void -_vala_subsonic_artist_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec) -{ - SubsonicArtist * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, SUBSONIC_TYPE_ARTIST, SubsonicArtist); -#line 8 "../src/subsonic.vala" - switch (property_id) { -#line 8 "../src/subsonic.vala" - case SUBSONIC_ARTIST_NAME_PROPERTY: -#line 8 "../src/subsonic.vala" - g_value_set_string (value, subsonic_artist_get_name (self)); -#line 8 "../src/subsonic.vala" - break; -#line 695 "subsonic.c" - default: -#line 8 "../src/subsonic.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 8 "../src/subsonic.vala" - break; -#line 701 "subsonic.c" - } -} - -static void -_vala_subsonic_artist_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - SubsonicArtist * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, SUBSONIC_TYPE_ARTIST, SubsonicArtist); -#line 8 "../src/subsonic.vala" - switch (property_id) { -#line 8 "../src/subsonic.vala" - case SUBSONIC_ARTIST_NAME_PROPERTY: -#line 8 "../src/subsonic.vala" - subsonic_artist_set_name (self, g_value_get_string (value)); -#line 8 "../src/subsonic.vala" - break; -#line 721 "subsonic.c" - default: -#line 8 "../src/subsonic.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 8 "../src/subsonic.vala" - break; -#line 727 "subsonic.c" - } -} - -SubsonicAlbum* -subsonic_album_construct (GType object_type, - JsonReader* reader) -{ - SubsonicAlbum * self = NULL; - const gchar* _tmp0_; - gchar* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; -#line 45 "../src/subsonic.vala" - g_return_val_if_fail (reader != NULL, NULL); -#line 45 "../src/subsonic.vala" - self = (SubsonicAlbum*) g_object_new (object_type, NULL); -#line 46 "../src/subsonic.vala" - json_reader_read_member (reader, "id"); -#line 47 "../src/subsonic.vala" - _tmp0_ = json_reader_get_string_value (reader); -#line 47 "../src/subsonic.vala" - _tmp1_ = g_strdup (_tmp0_); -#line 47 "../src/subsonic.vala" - _g_free0 (self->id); -#line 47 "../src/subsonic.vala" - self->id = _tmp1_; -#line 48 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 50 "../src/subsonic.vala" - json_reader_read_member (reader, "name"); -#line 51 "../src/subsonic.vala" - _tmp2_ = json_reader_get_string_value (reader); -#line 51 "../src/subsonic.vala" - _tmp3_ = g_strdup (_tmp2_); -#line 51 "../src/subsonic.vala" - _g_free0 (self->name); -#line 51 "../src/subsonic.vala" - self->name = _tmp3_; -#line 52 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 45 "../src/subsonic.vala" - return self; -#line 770 "subsonic.c" -} - -SubsonicAlbum* -subsonic_album_new (JsonReader* reader) -{ -#line 45 "../src/subsonic.vala" - return subsonic_album_construct (SUBSONIC_TYPE_ALBUM, reader); -#line 778 "subsonic.c" -} - -static void -subsonic_album_class_init (SubsonicAlbumClass * klass, - gpointer klass_data) -{ -#line 41 "../src/subsonic.vala" - subsonic_album_parent_class = g_type_class_peek_parent (klass); -#line 41 "../src/subsonic.vala" - G_OBJECT_CLASS (klass)->finalize = subsonic_album_finalize; -#line 789 "subsonic.c" -} - -static void -subsonic_album_instance_init (SubsonicAlbum * self, - gpointer klass) -{ -} - -static void -subsonic_album_finalize (GObject * obj) -{ - SubsonicAlbum * self; -#line 41 "../src/subsonic.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, SUBSONIC_TYPE_ALBUM, SubsonicAlbum); -#line 42 "../src/subsonic.vala" - _g_free0 (self->id); -#line 43 "../src/subsonic.vala" - _g_free0 (self->name); -#line 41 "../src/subsonic.vala" - G_OBJECT_CLASS (subsonic_album_parent_class)->finalize (obj); -#line 810 "subsonic.c" -} - -static GType -subsonic_album_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (SubsonicAlbumClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) subsonic_album_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SubsonicAlbum), 0, (GInstanceInitFunc) subsonic_album_instance_init, NULL }; - GType subsonic_album_type_id; - subsonic_album_type_id = g_type_register_static (G_TYPE_OBJECT, "SubsonicAlbum", &g_define_type_info, 0); - return subsonic_album_type_id; -} - -GType -subsonic_album_get_type (void) -{ - static volatile gsize subsonic_album_type_id__once = 0; - if (g_once_init_enter (&subsonic_album_type_id__once)) { - GType subsonic_album_type_id; - subsonic_album_type_id = subsonic_album_get_type_once (); - g_once_init_leave (&subsonic_album_type_id__once, subsonic_album_type_id); - } - return subsonic_album_type_id__once; -} - -void -subsonic_song_init (SubsonicSong *self, - JsonReader* reader) -{ - const gchar* _tmp0_; - gchar* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - const gchar* _tmp4_; - gchar* _tmp5_; - const gchar* _tmp6_; - gchar* _tmp7_; - const gchar* _tmp8_; - gchar* _tmp9_; - const gchar* _tmp10_; - gchar* _tmp11_; -#line 69 "../src/subsonic.vala" - g_return_if_fail (reader != NULL); -#line 69 "../src/subsonic.vala" - memset (self, 0, sizeof (SubsonicSong)); -#line 70 "../src/subsonic.vala" - json_reader_read_member (reader, "id"); -#line 71 "../src/subsonic.vala" - _tmp0_ = json_reader_get_string_value (reader); -#line 71 "../src/subsonic.vala" - _tmp1_ = g_strdup (_tmp0_); -#line 71 "../src/subsonic.vala" - _g_free0 ((*self).id); -#line 71 "../src/subsonic.vala" - (*self).id = _tmp1_; -#line 72 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 74 "../src/subsonic.vala" - json_reader_read_member (reader, "title"); -#line 75 "../src/subsonic.vala" - _tmp2_ = json_reader_get_string_value (reader); -#line 75 "../src/subsonic.vala" - _tmp3_ = g_strdup (_tmp2_); -#line 75 "../src/subsonic.vala" - _g_free0 ((*self).title); -#line 75 "../src/subsonic.vala" - (*self).title = _tmp3_; -#line 76 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 78 "../src/subsonic.vala" - json_reader_read_member (reader, "album"); -#line 79 "../src/subsonic.vala" - _tmp4_ = json_reader_get_string_value (reader); -#line 79 "../src/subsonic.vala" - _tmp5_ = g_strdup (_tmp4_); -#line 79 "../src/subsonic.vala" - _g_free0 ((*self).album); -#line 79 "../src/subsonic.vala" - (*self).album = _tmp5_; -#line 80 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 82 "../src/subsonic.vala" - json_reader_read_member (reader, "artist"); -#line 83 "../src/subsonic.vala" - _tmp6_ = json_reader_get_string_value (reader); -#line 83 "../src/subsonic.vala" - _tmp7_ = g_strdup (_tmp6_); -#line 83 "../src/subsonic.vala" - _g_free0 ((*self).artist); -#line 83 "../src/subsonic.vala" - (*self).artist = _tmp7_; -#line 84 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 86 "../src/subsonic.vala" - json_reader_read_member (reader, "track"); -#line 87 "../src/subsonic.vala" - (*self).track = json_reader_get_int_value (reader); -#line 88 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 90 "../src/subsonic.vala" - json_reader_read_member (reader, "year"); -#line 91 "../src/subsonic.vala" - (*self).year = json_reader_get_int_value (reader); -#line 92 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 94 "../src/subsonic.vala" - json_reader_read_member (reader, "duration"); -#line 95 "../src/subsonic.vala" - (*self).duration = json_reader_get_int_value (reader); -#line 96 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 98 "../src/subsonic.vala" - json_reader_read_member (reader, "playCount"); -#line 99 "../src/subsonic.vala" - (*self).play_count = json_reader_get_int_value (reader); -#line 100 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 102 "../src/subsonic.vala" - json_reader_read_member (reader, "genre"); -#line 103 "../src/subsonic.vala" - _tmp8_ = json_reader_get_string_value (reader); -#line 103 "../src/subsonic.vala" - _tmp9_ = g_strdup (_tmp8_); -#line 103 "../src/subsonic.vala" - _g_free0 ((*self).genre); -#line 103 "../src/subsonic.vala" - (*self).genre = _tmp9_; -#line 104 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 106 "../src/subsonic.vala" - json_reader_read_member (reader, "coverArt"); -#line 107 "../src/subsonic.vala" - _tmp10_ = json_reader_get_string_value (reader); -#line 107 "../src/subsonic.vala" - _tmp11_ = g_strdup (_tmp10_); -#line 107 "../src/subsonic.vala" - _g_free0 ((*self).cover_art); -#line 107 "../src/subsonic.vala" - (*self).cover_art = _tmp11_; -#line 108 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 950 "subsonic.c" -} - -static gpointer -_g_date_time_ref0 (gpointer self) -{ -#line 56 "../src/subsonic.vala" - return self ? g_date_time_ref (self) : NULL; -#line 958 "subsonic.c" -} - -void -subsonic_song_copy (const SubsonicSong* self, - SubsonicSong* dest) -{ - const gchar* _tmp0_; - gchar* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - const gchar* _tmp4_; - gchar* _tmp5_; - const gchar* _tmp6_; - gchar* _tmp7_; - GDateTime* _tmp8_; - GDateTime* _tmp9_; - const gchar* _tmp10_; - gchar* _tmp11_; - const gchar* _tmp12_; - gchar* _tmp13_; -#line 56 "../src/subsonic.vala" - _tmp0_ = (*self).id; -#line 56 "../src/subsonic.vala" - _tmp1_ = g_strdup (_tmp0_); -#line 56 "../src/subsonic.vala" - _g_free0 ((*dest).id); -#line 56 "../src/subsonic.vala" - (*dest).id = _tmp1_; -#line 56 "../src/subsonic.vala" - _tmp2_ = (*self).title; -#line 56 "../src/subsonic.vala" - _tmp3_ = g_strdup (_tmp2_); -#line 56 "../src/subsonic.vala" - _g_free0 ((*dest).title); -#line 56 "../src/subsonic.vala" - (*dest).title = _tmp3_; -#line 56 "../src/subsonic.vala" - _tmp4_ = (*self).album; -#line 56 "../src/subsonic.vala" - _tmp5_ = g_strdup (_tmp4_); -#line 56 "../src/subsonic.vala" - _g_free0 ((*dest).album); -#line 56 "../src/subsonic.vala" - (*dest).album = _tmp5_; -#line 56 "../src/subsonic.vala" - _tmp6_ = (*self).artist; -#line 56 "../src/subsonic.vala" - _tmp7_ = g_strdup (_tmp6_); -#line 56 "../src/subsonic.vala" - _g_free0 ((*dest).artist); -#line 56 "../src/subsonic.vala" - (*dest).artist = _tmp7_; -#line 56 "../src/subsonic.vala" - (*dest).track = (*self).track; -#line 56 "../src/subsonic.vala" - (*dest).year = (*self).year; -#line 56 "../src/subsonic.vala" - _tmp8_ = (*self).starred; -#line 56 "../src/subsonic.vala" - _tmp9_ = _g_date_time_ref0 (_tmp8_); -#line 56 "../src/subsonic.vala" - _g_date_time_unref0 ((*dest).starred); -#line 56 "../src/subsonic.vala" - (*dest).starred = _tmp9_; -#line 56 "../src/subsonic.vala" - (*dest).duration = (*self).duration; -#line 56 "../src/subsonic.vala" - (*dest).play_count = (*self).play_count; -#line 56 "../src/subsonic.vala" - _tmp10_ = (*self).genre; -#line 56 "../src/subsonic.vala" - _tmp11_ = g_strdup (_tmp10_); -#line 56 "../src/subsonic.vala" - _g_free0 ((*dest).genre); -#line 56 "../src/subsonic.vala" - (*dest).genre = _tmp11_; -#line 56 "../src/subsonic.vala" - _tmp12_ = (*self).cover_art; -#line 56 "../src/subsonic.vala" - _tmp13_ = g_strdup (_tmp12_); -#line 56 "../src/subsonic.vala" - _g_free0 ((*dest).cover_art); -#line 56 "../src/subsonic.vala" - (*dest).cover_art = _tmp13_; -#line 1043 "subsonic.c" -} - -void -subsonic_song_destroy (SubsonicSong* self) -{ -#line 57 "../src/subsonic.vala" - _g_free0 ((*self).id); -#line 58 "../src/subsonic.vala" - _g_free0 ((*self).title); -#line 59 "../src/subsonic.vala" - _g_free0 ((*self).album); -#line 60 "../src/subsonic.vala" - _g_free0 ((*self).artist); -#line 63 "../src/subsonic.vala" - _g_date_time_unref0 ((*self).starred); -#line 66 "../src/subsonic.vala" - _g_free0 ((*self).genre); -#line 67 "../src/subsonic.vala" - _g_free0 ((*self).cover_art); -#line 1063 "subsonic.c" -} - -SubsonicSong* -subsonic_song_dup (const SubsonicSong* self) -{ - SubsonicSong* dup; -#line 56 "../src/subsonic.vala" - dup = g_new0 (SubsonicSong, 1); -#line 56 "../src/subsonic.vala" - subsonic_song_copy (self, dup); -#line 56 "../src/subsonic.vala" - return dup; -#line 1076 "subsonic.c" -} - -void -subsonic_song_free (SubsonicSong* self) -{ -#line 56 "../src/subsonic.vala" - subsonic_song_destroy (self); -#line 56 "../src/subsonic.vala" - g_free (self); -#line 1086 "subsonic.c" -} - -static GType -subsonic_song_get_type_once (void) -{ - GType subsonic_song_type_id; - subsonic_song_type_id = g_boxed_type_register_static ("SubsonicSong", (GBoxedCopyFunc) subsonic_song_dup, (GBoxedFreeFunc) subsonic_song_free); - return subsonic_song_type_id; -} - -GType -subsonic_song_get_type (void) -{ - static volatile gsize subsonic_song_type_id__once = 0; - if (g_once_init_enter (&subsonic_song_type_id__once)) { - GType subsonic_song_type_id; - subsonic_song_type_id = subsonic_song_get_type_once (); - g_once_init_leave (&subsonic_song_type_id__once, subsonic_song_type_id); - } - return subsonic_song_type_id__once; -} - -static inline gpointer -subsonic_client_get_instance_private (SubsonicClient* self) -{ - return G_STRUCT_MEMBER_P (self, SubsonicClient_private_offset); -} - -static const gchar* -string_to_string (const gchar* self) -{ - const gchar* result; -#line 1589 "glib-2.0.vapi" - g_return_val_if_fail (self != NULL, NULL); -#line 1590 "glib-2.0.vapi" - result = self; -#line 1590 "glib-2.0.vapi" - return result; -#line 1125 "subsonic.c" -} - -SubsonicClient* -subsonic_client_construct_with_token (GType object_type, - const gchar* url, - const gchar* username, - const gchar* token, - const gchar* salt) -{ - SubsonicClient * self = NULL; - gchar* _tmp0_; - gchar* _tmp1_; - gchar* _tmp2_; - const gchar* _tmp3_; - gchar* _tmp4_; - gchar* _tmp5_; - const gchar* _tmp6_; - gchar* _tmp7_; - gchar* _tmp8_; - const gchar* _tmp9_; - gchar* _tmp10_; - SoupSession* _tmp11_; - SoupSession* _tmp12_; -#line 117 "../src/subsonic.vala" - g_return_val_if_fail (url != NULL, NULL); -#line 117 "../src/subsonic.vala" - g_return_val_if_fail (username != NULL, NULL); -#line 117 "../src/subsonic.vala" - g_return_val_if_fail (token != NULL, NULL); -#line 117 "../src/subsonic.vala" - g_return_val_if_fail (salt != NULL, NULL); -#line 117 "../src/subsonic.vala" - self = (SubsonicClient*) g_object_new (object_type, NULL); -#line 118 "../src/subsonic.vala" - _tmp0_ = g_strdup (url); -#line 118 "../src/subsonic.vala" - _g_free0 (self->priv->url); -#line 118 "../src/subsonic.vala" - self->priv->url = _tmp0_; -#line 119 "../src/subsonic.vala" - _tmp1_ = g_uri_escape_string (username, NULL, TRUE); -#line 119 "../src/subsonic.vala" - _tmp2_ = _tmp1_; -#line 119 "../src/subsonic.vala" - _tmp3_ = string_to_string (_tmp2_); -#line 119 "../src/subsonic.vala" - _tmp4_ = g_uri_escape_string (token, NULL, TRUE); -#line 119 "../src/subsonic.vala" - _tmp5_ = _tmp4_; -#line 119 "../src/subsonic.vala" - _tmp6_ = string_to_string (_tmp5_); -#line 119 "../src/subsonic.vala" - _tmp7_ = g_uri_escape_string (salt, NULL, TRUE); -#line 119 "../src/subsonic.vala" - _tmp8_ = _tmp7_; -#line 119 "../src/subsonic.vala" - _tmp9_ = string_to_string (_tmp8_); -#line 119 "../src/subsonic.vala" - _tmp10_ = g_strconcat ("u=", _tmp3_, "&t=", _tmp6_, "&s=", _tmp9_, "&v=1.16.1&c=eu.callcc.audrey", NULL); -#line 119 "../src/subsonic.vala" - _g_free0 (self->priv->parameters); -#line 119 "../src/subsonic.vala" - self->priv->parameters = _tmp10_; -#line 119 "../src/subsonic.vala" - _g_free0 (_tmp8_); -#line 119 "../src/subsonic.vala" - _g_free0 (_tmp5_); -#line 119 "../src/subsonic.vala" - _g_free0 (_tmp2_); -#line 121 "../src/subsonic.vala" - _tmp11_ = soup_session_new (); -#line 121 "../src/subsonic.vala" - _g_object_unref0 (self->priv->session); -#line 121 "../src/subsonic.vala" - self->priv->session = _tmp11_; -#line 122 "../src/subsonic.vala" - _tmp12_ = self->priv->session; -#line 122 "../src/subsonic.vala" - soup_session_set_user_agent (_tmp12_, AUDREY_CONST_user_agent); -#line 117 "../src/subsonic.vala" - return self; -#line 1207 "subsonic.c" -} - -SubsonicClient* -subsonic_client_new_with_token (const gchar* url, - const gchar* username, - const gchar* token, - const gchar* salt) -{ -#line 117 "../src/subsonic.vala" - return subsonic_client_construct_with_token (SUBSONIC_TYPE_CLIENT, url, username, token, salt); -#line 1218 "subsonic.c" -} - -static void -subsonic_client_unwrap_response (SubsonicClient* self, - JsonReader* reader, - GError** error) -{ - const gchar* _tmp0_; - GError* _inner_error0_ = NULL; -#line 125 "../src/subsonic.vala" - g_return_if_fail (self != NULL); -#line 125 "../src/subsonic.vala" - g_return_if_fail (reader != NULL); -#line 126 "../src/subsonic.vala" - json_reader_read_member (reader, "subsonic-response"); -#line 128 "../src/subsonic.vala" - json_reader_read_member (reader, "status"); -#line 129 "../src/subsonic.vala" - _tmp0_ = json_reader_get_string_value (reader); -#line 129 "../src/subsonic.vala" - if (g_strcmp0 (_tmp0_, "ok") != 0) { -#line 1240 "subsonic.c" - const gchar* _tmp1_ = NULL; - const gchar* _tmp2_; - GError* _tmp3_; -#line 130 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 131 "../src/subsonic.vala" - json_reader_read_member (reader, "error"); -#line 132 "../src/subsonic.vala" - json_reader_read_member (reader, "message"); -#line 133 "../src/subsonic.vala" - _tmp2_ = json_reader_get_string_value (reader); -#line 133 "../src/subsonic.vala" - _tmp1_ = _tmp2_; -#line 133 "../src/subsonic.vala" - if (_tmp1_ == NULL) { -#line 133 "../src/subsonic.vala" - _tmp1_ = "???"; -#line 1258 "subsonic.c" - } -#line 133 "../src/subsonic.vala" - _tmp3_ = g_error_new_literal (SUBSONIC_ERROR, SUBSONIC_ERROR_ERROR, _tmp1_); -#line 133 "../src/subsonic.vala" - _inner_error0_ = _tmp3_; -#line 133 "../src/subsonic.vala" - g_propagate_error (error, _inner_error0_); -#line 133 "../src/subsonic.vala" - return; -#line 1268 "subsonic.c" - } -#line 135 "../src/subsonic.vala" - json_reader_end_member (reader); -#line 1272 "subsonic.c" -} - -static void -subsonic_client_ping_data_free (gpointer _data) -{ - SubsonicClientPingData* _data_; - _data_ = _data; -#line 112 "../src/subsonic.vala" - _g_object_unref0 (_data_->self); -#line 112 "../src/subsonic.vala" - g_slice_free (SubsonicClientPingData, _data_); -#line 1284 "subsonic.c" -} - -static gpointer -_g_object_ref0 (gpointer self) -{ -#line 112 "../src/subsonic.vala" - return self ? g_object_ref (self) : NULL; -#line 1292 "subsonic.c" -} - -void -subsonic_client_ping (SubsonicClient* self, - GAsyncReadyCallback _callback_, - gpointer _user_data_) -{ - SubsonicClientPingData* _data_; - SubsonicClient* _tmp0_; -#line 112 "../src/subsonic.vala" - g_return_if_fail (self != NULL); -#line 112 "../src/subsonic.vala" - _data_ = g_slice_new0 (SubsonicClientPingData); -#line 112 "../src/subsonic.vala" - _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_); -#line 112 "../src/subsonic.vala" - g_task_set_task_data (_data_->_async_result, _data_, subsonic_client_ping_data_free); -#line 112 "../src/subsonic.vala" - _tmp0_ = _g_object_ref0 (self); -#line 112 "../src/subsonic.vala" - _data_->self = _tmp0_; -#line 112 "../src/subsonic.vala" - subsonic_client_ping_co (_data_); -#line 1316 "subsonic.c" -} - -void -subsonic_client_ping_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error) -{ - SubsonicClientPingData* _data_; -#line 112 "../src/subsonic.vala" - _data_ = g_task_propagate_pointer (G_TASK (_res_), error); -#line 112 "../src/subsonic.vala" - if (NULL == _data_) { -#line 112 "../src/subsonic.vala" - return; -#line 1331 "subsonic.c" - } -} - -static void -subsonic_client_ping_ready (GObject* source_object, - GAsyncResult* _res_, - gpointer _user_data_) -{ - SubsonicClientPingData* _data_; -#line 144 "../src/subsonic.vala" - _data_ = _user_data_; -#line 144 "../src/subsonic.vala" - _data_->_source_object_ = source_object; -#line 144 "../src/subsonic.vala" - _data_->_res_ = _res_; -#line 144 "../src/subsonic.vala" - subsonic_client_ping_co (_data_); -#line 1349 "subsonic.c" -} - -static gboolean -subsonic_client_ping_co (SubsonicClientPingData* _data_) -{ -#line 138 "../src/subsonic.vala" - switch (_data_->_state_) { -#line 138 "../src/subsonic.vala" - case 0: -#line 1359 "subsonic.c" - goto _state_0; -#line 138 "../src/subsonic.vala" - case 1: -#line 1363 "subsonic.c" - goto _state_1; - default: -#line 138 "../src/subsonic.vala" - g_assert_not_reached (); -#line 1368 "subsonic.c" - } - _state_0: -#line 139 "../src/subsonic.vala" - _data_->_tmp0_ = _data_->self->priv->url; -#line 139 "../src/subsonic.vala" - _data_->_tmp1_ = string_to_string (_data_->_tmp0_); -#line 139 "../src/subsonic.vala" - _data_->_tmp2_ = _data_->self->priv->parameters; -#line 139 "../src/subsonic.vala" - _data_->_tmp3_ = string_to_string (_data_->_tmp2_); -#line 139 "../src/subsonic.vala" - _data_->_tmp4_ = g_strconcat (_data_->_tmp1_, "/rest/ping?f=json&", _data_->_tmp3_, NULL); -#line 139 "../src/subsonic.vala" - _data_->_tmp5_ = _data_->_tmp4_; -#line 139 "../src/subsonic.vala" - _data_->_tmp6_ = soup_message_new ("GET", _data_->_tmp5_); -#line 139 "../src/subsonic.vala" - _data_->_tmp7_ = _data_->_tmp6_; -#line 139 "../src/subsonic.vala" - _g_free0 (_data_->_tmp5_); -#line 139 "../src/subsonic.vala" - _data_->msg = _data_->_tmp7_; -#line 140 "../src/subsonic.vala" - if (_data_->msg == NULL) { -#line 141 "../src/subsonic.vala" - _data_->_tmp8_ = g_error_new_literal (SUBSONIC_ERROR, SUBSONIC_ERROR_BAD_AUTHN, "Bad message"); -#line 141 "../src/subsonic.vala" - _data_->_inner_error0_ = _data_->_tmp8_; -#line 141 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 141 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 141 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 141 "../src/subsonic.vala" - return FALSE; -#line 1405 "subsonic.c" - } -#line 144 "../src/subsonic.vala" - _data_->_tmp9_ = _data_->self->priv->session; -#line 144 "../src/subsonic.vala" - _data_->_state_ = 1; -#line 144 "../src/subsonic.vala" - soup_session_send_and_read_async (_data_->_tmp9_, _data_->msg, G_PRIORITY_DEFAULT, NULL, subsonic_client_ping_ready, _data_); -#line 144 "../src/subsonic.vala" - return FALSE; -#line 1415 "subsonic.c" - _state_1: -#line 144 "../src/subsonic.vala" - _data_->_tmp10_ = soup_session_send_and_read_finish (_data_->_tmp9_, _data_->_res_, &_data_->_inner_error0_); -#line 144 "../src/subsonic.vala" - _data_->bytes = _data_->_tmp10_; -#line 144 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 144 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 144 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 144 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 144 "../src/subsonic.vala" - return FALSE; -#line 1431 "subsonic.c" - } -#line 145 "../src/subsonic.vala" - _vala_assert (soup_message_get_status (_data_->msg) == SOUP_STATUS_OK, "msg.get_status () == Soup.Status.OK"); -#line 147 "../src/subsonic.vala" - _data_->_tmp11_ = json_parser_new (); -#line 147 "../src/subsonic.vala" - _data_->parser = _data_->_tmp11_; -#line 148 "../src/subsonic.vala" - _data_->_tmp12_ = _data_->parser; -#line 148 "../src/subsonic.vala" - _data_->_tmp13_ = _data_->bytes; -#line 148 "../src/subsonic.vala" - _data_->_tmp14_ = 0; -#line 148 "../src/subsonic.vala" - _data_->_tmp15_ = g_bytes_get_data (_data_->_tmp13_, &_data_->_tmp14_); -#line 148 "../src/subsonic.vala" - json_parser_load_from_data (_data_->_tmp12_, (const gchar*) _data_->_tmp15_, (gssize) -1, &_data_->_inner_error0_); -#line 148 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 148 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 148 "../src/subsonic.vala" - _g_object_unref0 (_data_->parser); -#line 148 "../src/subsonic.vala" - _g_bytes_unref0 (_data_->bytes); -#line 148 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 148 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 148 "../src/subsonic.vala" - return FALSE; -#line 1463 "subsonic.c" - } -#line 150 "../src/subsonic.vala" - _data_->_tmp16_ = _data_->parser; -#line 150 "../src/subsonic.vala" - _data_->_tmp17_ = json_parser_get_root (_data_->_tmp16_); -#line 150 "../src/subsonic.vala" - _data_->_tmp18_ = json_reader_new (_data_->_tmp17_); -#line 150 "../src/subsonic.vala" - _data_->reader = _data_->_tmp18_; -#line 151 "../src/subsonic.vala" - _data_->_tmp19_ = _data_->reader; -#line 151 "../src/subsonic.vala" - subsonic_client_unwrap_response (_data_->self, _data_->_tmp19_, &_data_->_inner_error0_); -#line 151 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 151 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 151 "../src/subsonic.vala" - _g_object_unref0 (_data_->reader); -#line 151 "../src/subsonic.vala" - _g_object_unref0 (_data_->parser); -#line 151 "../src/subsonic.vala" - _g_bytes_unref0 (_data_->bytes); -#line 151 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 151 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 151 "../src/subsonic.vala" - return FALSE; -#line 1493 "subsonic.c" - } -#line 138 "../src/subsonic.vala" - _g_object_unref0 (_data_->reader); -#line 138 "../src/subsonic.vala" - _g_object_unref0 (_data_->parser); -#line 138 "../src/subsonic.vala" - _g_bytes_unref0 (_data_->bytes); -#line 138 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 138 "../src/subsonic.vala" - g_task_return_pointer (_data_->_async_result, _data_, NULL); -#line 138 "../src/subsonic.vala" - if (_data_->_state_ != 0) { -#line 138 "../src/subsonic.vala" - while (!g_task_get_completed (_data_->_async_result)) { -#line 138 "../src/subsonic.vala" - g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE); -#line 1511 "subsonic.c" - } - } -#line 138 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 138 "../src/subsonic.vala" - return FALSE; -#line 1518 "subsonic.c" -} - -static void -subsonic_client_scrobble_data_free (gpointer _data) -{ - SubsonicClientScrobbleData* _data_; - _data_ = _data; -#line 112 "../src/subsonic.vala" - _g_free0 (_data_->id); -#line 112 "../src/subsonic.vala" - _g_object_unref0 (_data_->self); -#line 112 "../src/subsonic.vala" - g_slice_free (SubsonicClientScrobbleData, _data_); -#line 1532 "subsonic.c" -} - -void -subsonic_client_scrobble (SubsonicClient* self, - const gchar* id, - GAsyncReadyCallback _callback_, - gpointer _user_data_) -{ - SubsonicClientScrobbleData* _data_; - SubsonicClient* _tmp0_; - gchar* _tmp1_; -#line 112 "../src/subsonic.vala" - g_return_if_fail (self != NULL); -#line 112 "../src/subsonic.vala" - g_return_if_fail (id != NULL); -#line 112 "../src/subsonic.vala" - _data_ = g_slice_new0 (SubsonicClientScrobbleData); -#line 112 "../src/subsonic.vala" - _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_); -#line 112 "../src/subsonic.vala" - g_task_set_task_data (_data_->_async_result, _data_, subsonic_client_scrobble_data_free); -#line 112 "../src/subsonic.vala" - _tmp0_ = _g_object_ref0 (self); -#line 112 "../src/subsonic.vala" - _data_->self = _tmp0_; -#line 112 "../src/subsonic.vala" - _tmp1_ = g_strdup (id); -#line 112 "../src/subsonic.vala" - _g_free0 (_data_->id); -#line 112 "../src/subsonic.vala" - _data_->id = _tmp1_; -#line 112 "../src/subsonic.vala" - subsonic_client_scrobble_co (_data_); -#line 1566 "subsonic.c" -} - -void -subsonic_client_scrobble_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error) -{ - SubsonicClientScrobbleData* _data_; -#line 112 "../src/subsonic.vala" - _data_ = g_task_propagate_pointer (G_TASK (_res_), error); -#line 112 "../src/subsonic.vala" - if (NULL == _data_) { -#line 112 "../src/subsonic.vala" - return; -#line 1581 "subsonic.c" - } -} - -static void -subsonic_client_scrobble_ready (GObject* source_object, - GAsyncResult* _res_, - gpointer _user_data_) -{ - SubsonicClientScrobbleData* _data_; -#line 158 "../src/subsonic.vala" - _data_ = _user_data_; -#line 158 "../src/subsonic.vala" - _data_->_source_object_ = source_object; -#line 158 "../src/subsonic.vala" - _data_->_res_ = _res_; -#line 158 "../src/subsonic.vala" - subsonic_client_scrobble_co (_data_); -#line 1599 "subsonic.c" -} - -static gboolean -subsonic_client_scrobble_co (SubsonicClientScrobbleData* _data_) -{ -#line 154 "../src/subsonic.vala" - switch (_data_->_state_) { -#line 154 "../src/subsonic.vala" - case 0: -#line 1609 "subsonic.c" - goto _state_0; -#line 154 "../src/subsonic.vala" - case 1: -#line 1613 "subsonic.c" - goto _state_1; - default: -#line 154 "../src/subsonic.vala" - g_assert_not_reached (); -#line 1618 "subsonic.c" - } - _state_0: -#line 155 "../src/subsonic.vala" - _data_->_tmp0_ = _data_->self->priv->url; -#line 155 "../src/subsonic.vala" - _data_->_tmp1_ = string_to_string (_data_->_tmp0_); -#line 155 "../src/subsonic.vala" - _data_->_tmp2_ = g_uri_escape_string (_data_->id, NULL, TRUE); -#line 155 "../src/subsonic.vala" - _data_->_tmp3_ = _data_->_tmp2_; -#line 155 "../src/subsonic.vala" - _data_->_tmp4_ = string_to_string (_data_->_tmp3_); -#line 155 "../src/subsonic.vala" - _data_->_tmp5_ = _data_->self->priv->parameters; -#line 155 "../src/subsonic.vala" - _data_->_tmp6_ = string_to_string (_data_->_tmp5_); -#line 155 "../src/subsonic.vala" - _data_->_tmp7_ = g_strconcat (_data_->_tmp1_, "/rest/scrobble?id=", _data_->_tmp4_, "&f=json&", _data_->_tmp6_, NULL); -#line 155 "../src/subsonic.vala" - _data_->_tmp8_ = _data_->_tmp7_; -#line 155 "../src/subsonic.vala" - _data_->_tmp9_ = soup_message_new ("GET", _data_->_tmp8_); -#line 155 "../src/subsonic.vala" - _data_->_tmp10_ = _data_->_tmp9_; -#line 155 "../src/subsonic.vala" - _g_free0 (_data_->_tmp8_); -#line 155 "../src/subsonic.vala" - _g_free0 (_data_->_tmp3_); -#line 155 "../src/subsonic.vala" - _data_->msg = _data_->_tmp10_; -#line 156 "../src/subsonic.vala" - _data_->_tmp11_ = _data_->msg; -#line 156 "../src/subsonic.vala" - _vala_assert (_data_->_tmp11_ != NULL, "msg != null"); -#line 158 "../src/subsonic.vala" - _data_->_tmp12_ = _data_->self->priv->session; -#line 158 "../src/subsonic.vala" - _data_->_tmp13_ = _data_->msg; -#line 158 "../src/subsonic.vala" - _data_->_state_ = 1; -#line 158 "../src/subsonic.vala" - soup_session_send_and_read_async (_data_->_tmp12_, _data_->_tmp13_, G_PRIORITY_DEFAULT, NULL, subsonic_client_scrobble_ready, _data_); -#line 158 "../src/subsonic.vala" - return FALSE; -#line 1663 "subsonic.c" - _state_1: -#line 158 "../src/subsonic.vala" - _data_->_tmp14_ = soup_session_send_and_read_finish (_data_->_tmp12_, _data_->_res_, &_data_->_inner_error0_); -#line 158 "../src/subsonic.vala" - _data_->bytes = _data_->_tmp14_; -#line 158 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 158 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 158 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 158 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 158 "../src/subsonic.vala" - return FALSE; -#line 1679 "subsonic.c" - } -#line 159 "../src/subsonic.vala" - _data_->_tmp15_ = _data_->msg; -#line 159 "../src/subsonic.vala" - _vala_assert (soup_message_get_status (_data_->_tmp15_) == SOUP_STATUS_OK, "msg.get_status () == Soup.Status.OK"); -#line 161 "../src/subsonic.vala" - _data_->_tmp16_ = json_parser_new (); -#line 161 "../src/subsonic.vala" - _data_->parser = _data_->_tmp16_; -#line 162 "../src/subsonic.vala" - _data_->_tmp17_ = _data_->parser; -#line 162 "../src/subsonic.vala" - _data_->_tmp18_ = _data_->bytes; -#line 162 "../src/subsonic.vala" - _data_->_tmp19_ = 0; -#line 162 "../src/subsonic.vala" - _data_->_tmp20_ = g_bytes_get_data (_data_->_tmp18_, &_data_->_tmp19_); -#line 162 "../src/subsonic.vala" - json_parser_load_from_data (_data_->_tmp17_, (const gchar*) _data_->_tmp20_, (gssize) -1, &_data_->_inner_error0_); -#line 162 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 162 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 162 "../src/subsonic.vala" - _g_object_unref0 (_data_->parser); -#line 162 "../src/subsonic.vala" - _g_bytes_unref0 (_data_->bytes); -#line 162 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 162 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 162 "../src/subsonic.vala" - return FALSE; -#line 1713 "subsonic.c" - } -#line 164 "../src/subsonic.vala" - _data_->_tmp21_ = _data_->parser; -#line 164 "../src/subsonic.vala" - _data_->_tmp22_ = json_parser_get_root (_data_->_tmp21_); -#line 164 "../src/subsonic.vala" - _data_->_tmp23_ = json_reader_new (_data_->_tmp22_); -#line 164 "../src/subsonic.vala" - _data_->reader = _data_->_tmp23_; -#line 165 "../src/subsonic.vala" - _data_->_tmp24_ = _data_->reader; -#line 165 "../src/subsonic.vala" - subsonic_client_unwrap_response (_data_->self, _data_->_tmp24_, &_data_->_inner_error0_); -#line 165 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 165 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 165 "../src/subsonic.vala" - _g_object_unref0 (_data_->reader); -#line 165 "../src/subsonic.vala" - _g_object_unref0 (_data_->parser); -#line 165 "../src/subsonic.vala" - _g_bytes_unref0 (_data_->bytes); -#line 165 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 165 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 165 "../src/subsonic.vala" - return FALSE; -#line 1743 "subsonic.c" - } -#line 154 "../src/subsonic.vala" - _g_object_unref0 (_data_->reader); -#line 154 "../src/subsonic.vala" - _g_object_unref0 (_data_->parser); -#line 154 "../src/subsonic.vala" - _g_bytes_unref0 (_data_->bytes); -#line 154 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 154 "../src/subsonic.vala" - g_task_return_pointer (_data_->_async_result, _data_, NULL); -#line 154 "../src/subsonic.vala" - if (_data_->_state_ != 0) { -#line 154 "../src/subsonic.vala" - while (!g_task_get_completed (_data_->_async_result)) { -#line 154 "../src/subsonic.vala" - g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE); -#line 1761 "subsonic.c" - } - } -#line 154 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 154 "../src/subsonic.vala" - return FALSE; -#line 1768 "subsonic.c" -} - -static void -subsonic_client_get_random_songs_data_free (gpointer _data) -{ - SubsonicClientGetRandomSongsData* _data_; - _data_ = _data; -#line 112 "../src/subsonic.vala" - _g_free0 (_data_->parameters); -#line 112 "../src/subsonic.vala" - _g_object_unref0 (_data_->self); -#line 112 "../src/subsonic.vala" - g_slice_free (SubsonicClientGetRandomSongsData, _data_); -#line 1782 "subsonic.c" -} - -void -subsonic_client_get_random_songs (SubsonicClient* self, - const gchar* parameters, - SubsonicSongCallback callback, - gpointer callback_target, - GAsyncReadyCallback _callback_, - gpointer _user_data_) -{ - SubsonicClientGetRandomSongsData* _data_; - SubsonicClient* _tmp0_; - gchar* _tmp1_; -#line 112 "../src/subsonic.vala" - g_return_if_fail (self != NULL); -#line 112 "../src/subsonic.vala" - _data_ = g_slice_new0 (SubsonicClientGetRandomSongsData); -#line 112 "../src/subsonic.vala" - _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_); -#line 112 "../src/subsonic.vala" - g_task_set_task_data (_data_->_async_result, _data_, subsonic_client_get_random_songs_data_free); -#line 112 "../src/subsonic.vala" - _tmp0_ = _g_object_ref0 (self); -#line 112 "../src/subsonic.vala" - _data_->self = _tmp0_; -#line 112 "../src/subsonic.vala" - _tmp1_ = g_strdup (parameters); -#line 112 "../src/subsonic.vala" - _g_free0 (_data_->parameters); -#line 112 "../src/subsonic.vala" - _data_->parameters = _tmp1_; -#line 112 "../src/subsonic.vala" - _data_->callback = callback; -#line 112 "../src/subsonic.vala" - _data_->callback_target = callback_target; -#line 112 "../src/subsonic.vala" - subsonic_client_get_random_songs_co (_data_); -#line 1820 "subsonic.c" -} - -void -subsonic_client_get_random_songs_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error) -{ - SubsonicClientGetRandomSongsData* _data_; -#line 112 "../src/subsonic.vala" - _data_ = g_task_propagate_pointer (G_TASK (_res_), error); -#line 112 "../src/subsonic.vala" - if (NULL == _data_) { -#line 112 "../src/subsonic.vala" - return; -#line 1835 "subsonic.c" - } -} - -static void -subsonic_client_get_random_songs_ready (GObject* source_object, - GAsyncResult* _res_, - gpointer _user_data_) -{ - SubsonicClientGetRandomSongsData* _data_; -#line 179 "../src/subsonic.vala" - _data_ = _user_data_; -#line 179 "../src/subsonic.vala" - _data_->_source_object_ = source_object; -#line 179 "../src/subsonic.vala" - _data_->_res_ = _res_; -#line 179 "../src/subsonic.vala" - subsonic_client_get_random_songs_co (_data_); -#line 1853 "subsonic.c" -} - -static gboolean -_subsonic_client_get_random_songs_co_gsource_func (gpointer self) -{ - gboolean result; - result = subsonic_client_get_random_songs_co (self); -#line 196 "../src/subsonic.vala" - return result; -#line 1863 "subsonic.c" -} - -static gboolean -subsonic_client_get_random_songs_co (SubsonicClientGetRandomSongsData* _data_) -{ -#line 168 "../src/subsonic.vala" - switch (_data_->_state_) { -#line 168 "../src/subsonic.vala" - case 0: -#line 1873 "subsonic.c" - goto _state_0; -#line 168 "../src/subsonic.vala" - case 1: -#line 1877 "subsonic.c" - goto _state_1; -#line 168 "../src/subsonic.vala" - case 2: -#line 1881 "subsonic.c" - goto _state_2; - default: -#line 168 "../src/subsonic.vala" - g_assert_not_reached (); -#line 1886 "subsonic.c" - } - _state_0: -#line 170 "../src/subsonic.vala" - if (_data_->parameters == NULL) { -#line 171 "../src/subsonic.vala" - _data_->_tmp0_ = g_strdup (""); -#line 171 "../src/subsonic.vala" - _g_free0 (_data_->str_parameters); -#line 171 "../src/subsonic.vala" - _data_->str_parameters = _data_->_tmp0_; -#line 1897 "subsonic.c" - } else { -#line 173 "../src/subsonic.vala" - _data_->_tmp1_ = string_to_string (_data_->parameters); -#line 173 "../src/subsonic.vala" - _data_->_tmp2_ = g_strconcat (_data_->_tmp1_, "&", NULL); -#line 173 "../src/subsonic.vala" - _g_free0 (_data_->str_parameters); -#line 173 "../src/subsonic.vala" - _data_->str_parameters = _data_->_tmp2_; -#line 1907 "subsonic.c" - } -#line 176 "../src/subsonic.vala" - _data_->_tmp3_ = _data_->self->priv->url; -#line 176 "../src/subsonic.vala" - _data_->_tmp4_ = string_to_string (_data_->_tmp3_); -#line 176 "../src/subsonic.vala" - _data_->_tmp5_ = _data_->str_parameters; -#line 176 "../src/subsonic.vala" - _data_->_tmp6_ = string_to_string (_data_->_tmp5_); -#line 176 "../src/subsonic.vala" - _data_->_tmp7_ = _data_->self->priv->parameters; -#line 176 "../src/subsonic.vala" - _data_->_tmp8_ = string_to_string (_data_->_tmp7_); -#line 176 "../src/subsonic.vala" - _data_->_tmp9_ = g_strconcat (_data_->_tmp4_, "/rest/getRandomSongs?", _data_->_tmp6_, "size=500&f=json&", _data_->_tmp8_, NULL); -#line 176 "../src/subsonic.vala" - _data_->_tmp10_ = _data_->_tmp9_; -#line 176 "../src/subsonic.vala" - _data_->_tmp11_ = soup_message_new ("GET", _data_->_tmp10_); -#line 176 "../src/subsonic.vala" - _data_->_tmp12_ = _data_->_tmp11_; -#line 176 "../src/subsonic.vala" - _g_free0 (_data_->_tmp10_); -#line 176 "../src/subsonic.vala" - _data_->msg = _data_->_tmp12_; -#line 177 "../src/subsonic.vala" - _data_->_tmp13_ = _data_->msg; -#line 177 "../src/subsonic.vala" - _vala_assert (_data_->_tmp13_ != NULL, "msg != null"); -#line 179 "../src/subsonic.vala" - _data_->_tmp14_ = _data_->self->priv->session; -#line 179 "../src/subsonic.vala" - _data_->_tmp15_ = _data_->msg; -#line 179 "../src/subsonic.vala" - _data_->_state_ = 1; -#line 179 "../src/subsonic.vala" - soup_session_send_and_read_async (_data_->_tmp14_, _data_->_tmp15_, G_PRIORITY_DEFAULT, NULL, subsonic_client_get_random_songs_ready, _data_); -#line 179 "../src/subsonic.vala" - return FALSE; -#line 1947 "subsonic.c" - _state_1: -#line 179 "../src/subsonic.vala" - _data_->_tmp16_ = soup_session_send_and_read_finish (_data_->_tmp14_, _data_->_res_, &_data_->_inner_error0_); -#line 179 "../src/subsonic.vala" - _data_->bytes = _data_->_tmp16_; -#line 179 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 179 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 179 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 179 "../src/subsonic.vala" - _g_free0 (_data_->str_parameters); -#line 179 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 179 "../src/subsonic.vala" - return FALSE; -#line 1965 "subsonic.c" - } -#line 180 "../src/subsonic.vala" - _data_->_tmp17_ = _data_->msg; -#line 180 "../src/subsonic.vala" - _vala_assert (soup_message_get_status (_data_->_tmp17_) == SOUP_STATUS_OK, "msg.get_status () == Soup.Status.OK"); -#line 182 "../src/subsonic.vala" - _data_->_tmp18_ = json_parser_new (); -#line 182 "../src/subsonic.vala" - _data_->parser = _data_->_tmp18_; -#line 183 "../src/subsonic.vala" - _data_->_tmp19_ = _data_->parser; -#line 183 "../src/subsonic.vala" - _data_->_tmp20_ = _data_->bytes; -#line 183 "../src/subsonic.vala" - _data_->_tmp21_ = 0; -#line 183 "../src/subsonic.vala" - _data_->_tmp22_ = g_bytes_get_data (_data_->_tmp20_, &_data_->_tmp21_); -#line 183 "../src/subsonic.vala" - json_parser_load_from_data (_data_->_tmp19_, (const gchar*) _data_->_tmp22_, (gssize) -1, &_data_->_inner_error0_); -#line 183 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 183 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 183 "../src/subsonic.vala" - _g_object_unref0 (_data_->parser); -#line 183 "../src/subsonic.vala" - _g_bytes_unref0 (_data_->bytes); -#line 183 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 183 "../src/subsonic.vala" - _g_free0 (_data_->str_parameters); -#line 183 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 183 "../src/subsonic.vala" - return FALSE; -#line 2001 "subsonic.c" - } -#line 185 "../src/subsonic.vala" - _data_->_tmp23_ = _data_->parser; -#line 185 "../src/subsonic.vala" - _data_->_tmp24_ = json_parser_get_root (_data_->_tmp23_); -#line 185 "../src/subsonic.vala" - _data_->_tmp25_ = json_reader_new (_data_->_tmp24_); -#line 185 "../src/subsonic.vala" - _data_->reader = _data_->_tmp25_; -#line 186 "../src/subsonic.vala" - _data_->_tmp26_ = _data_->reader; -#line 186 "../src/subsonic.vala" - subsonic_client_unwrap_response (_data_->self, _data_->_tmp26_, &_data_->_inner_error0_); -#line 186 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 186 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 186 "../src/subsonic.vala" - _g_object_unref0 (_data_->reader); -#line 186 "../src/subsonic.vala" - _g_object_unref0 (_data_->parser); -#line 186 "../src/subsonic.vala" - _g_bytes_unref0 (_data_->bytes); -#line 186 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 186 "../src/subsonic.vala" - _g_free0 (_data_->str_parameters); -#line 186 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 186 "../src/subsonic.vala" - return FALSE; -#line 2033 "subsonic.c" - } -#line 188 "../src/subsonic.vala" - _data_->_tmp27_ = _data_->reader; -#line 188 "../src/subsonic.vala" - json_reader_read_member (_data_->_tmp27_, "randomSongs"); -#line 189 "../src/subsonic.vala" - _data_->_tmp28_ = _data_->reader; -#line 189 "../src/subsonic.vala" - json_reader_read_member (_data_->_tmp28_, "song"); -#line 2043 "subsonic.c" - { -#line 191 "../src/subsonic.vala" - _data_->i = 0; -#line 2047 "subsonic.c" - { -#line 191 "../src/subsonic.vala" - _data_->_tmp29_ = TRUE; -#line 191 "../src/subsonic.vala" - while (TRUE) { -#line 191 "../src/subsonic.vala" - if (!_data_->_tmp29_) { -#line 191 "../src/subsonic.vala" - _data_->i += 1; -#line 2057 "subsonic.c" - } -#line 191 "../src/subsonic.vala" - _data_->_tmp29_ = FALSE; -#line 191 "../src/subsonic.vala" - _data_->_tmp30_ = _data_->reader; -#line 191 "../src/subsonic.vala" - if (!(_data_->i < json_reader_count_elements (_data_->_tmp30_))) { -#line 191 "../src/subsonic.vala" - break; -#line 2067 "subsonic.c" - } -#line 192 "../src/subsonic.vala" - _data_->_tmp31_ = _data_->reader; -#line 192 "../src/subsonic.vala" - json_reader_read_element (_data_->_tmp31_, (guint) _data_->i); -#line 193 "../src/subsonic.vala" - _data_->_tmp32_ = _data_->reader; -#line 193 "../src/subsonic.vala" - memset (&_data_->_tmp33_, 0, sizeof (SubsonicSong)); -#line 193 "../src/subsonic.vala" - subsonic_song_init (&_data_->_tmp33_, _data_->_tmp32_); -#line 193 "../src/subsonic.vala" - _data_->_tmp34_ = _data_->_tmp33_; -#line 193 "../src/subsonic.vala" - _data_->callback (&_data_->_tmp34_, _data_->callback_target); -#line 193 "../src/subsonic.vala" - subsonic_song_destroy (&_data_->_tmp34_); -#line 194 "../src/subsonic.vala" - _data_->_tmp35_ = _data_->reader; -#line 194 "../src/subsonic.vala" - json_reader_end_element (_data_->_tmp35_); -#line 196 "../src/subsonic.vala" - g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, _subsonic_client_get_random_songs_co_gsource_func, _data_, NULL); -#line 197 "../src/subsonic.vala" - _data_->_state_ = 2; -#line 197 "../src/subsonic.vala" - return FALSE; -#line 2095 "subsonic.c" - _state_2: - ; - } - } - } -#line 200 "../src/subsonic.vala" - _data_->_tmp36_ = _data_->reader; -#line 200 "../src/subsonic.vala" - _data_->_tmp37_ = json_reader_get_error (_data_->_tmp36_); -#line 200 "../src/subsonic.vala" - _vala_assert (_data_->_tmp37_ == NULL, "reader.get_error () == null"); -#line 168 "../src/subsonic.vala" - _g_object_unref0 (_data_->reader); -#line 168 "../src/subsonic.vala" - _g_object_unref0 (_data_->parser); -#line 168 "../src/subsonic.vala" - _g_bytes_unref0 (_data_->bytes); -#line 168 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 168 "../src/subsonic.vala" - _g_free0 (_data_->str_parameters); -#line 168 "../src/subsonic.vala" - g_task_return_pointer (_data_->_async_result, _data_, NULL); -#line 168 "../src/subsonic.vala" - if (_data_->_state_ != 0) { -#line 168 "../src/subsonic.vala" - while (!g_task_get_completed (_data_->_async_result)) { -#line 168 "../src/subsonic.vala" - g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE); -#line 2125 "subsonic.c" - } - } -#line 168 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 168 "../src/subsonic.vala" - return FALSE; -#line 2132 "subsonic.c" -} - -gchar* -subsonic_client_stream_uri (SubsonicClient* self, - const gchar* id) -{ - const gchar* _tmp0_; - const gchar* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; - const gchar* _tmp4_; - const gchar* _tmp5_; - const gchar* _tmp6_; - gchar* _tmp7_; - gchar* _tmp8_; - gchar* result; -#line 203 "../src/subsonic.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 203 "../src/subsonic.vala" - g_return_val_if_fail (id != NULL, NULL); -#line 204 "../src/subsonic.vala" - _tmp0_ = self->priv->url; -#line 204 "../src/subsonic.vala" - _tmp1_ = string_to_string (_tmp0_); -#line 204 "../src/subsonic.vala" - _tmp2_ = g_uri_escape_string (id, NULL, TRUE); -#line 204 "../src/subsonic.vala" - _tmp3_ = _tmp2_; -#line 204 "../src/subsonic.vala" - _tmp4_ = string_to_string (_tmp3_); -#line 204 "../src/subsonic.vala" - _tmp5_ = self->priv->parameters; -#line 204 "../src/subsonic.vala" - _tmp6_ = string_to_string (_tmp5_); -#line 204 "../src/subsonic.vala" - _tmp7_ = g_strconcat (_tmp1_, "/rest/stream?id=", _tmp4_, "&", _tmp6_, NULL); -#line 204 "../src/subsonic.vala" - _tmp8_ = _tmp7_; -#line 204 "../src/subsonic.vala" - _g_free0 (_tmp3_); -#line 204 "../src/subsonic.vala" - result = _tmp8_; -#line 204 "../src/subsonic.vala" - return result; -#line 2177 "subsonic.c" -} - -gchar* -subsonic_client_cover_art_uri (SubsonicClient* self, - const gchar* id, - gint size) -{ - gchar* result; -#line 207 "../src/subsonic.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 207 "../src/subsonic.vala" - g_return_val_if_fail (id != NULL, NULL); -#line 208 "../src/subsonic.vala" - if (size >= 0) { -#line 2192 "subsonic.c" - const gchar* _tmp0_; - const gchar* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; - const gchar* _tmp4_; - const gchar* _tmp5_; - const gchar* _tmp6_; - gchar* _tmp7_; - gchar* _tmp8_; -#line 209 "../src/subsonic.vala" - _tmp0_ = self->priv->url; -#line 209 "../src/subsonic.vala" - _tmp1_ = string_to_string (_tmp0_); -#line 209 "../src/subsonic.vala" - _tmp2_ = g_uri_escape_string (id, NULL, TRUE); -#line 209 "../src/subsonic.vala" - _tmp3_ = _tmp2_; -#line 209 "../src/subsonic.vala" - _tmp4_ = string_to_string (_tmp3_); -#line 209 "../src/subsonic.vala" - _tmp5_ = self->priv->parameters; -#line 209 "../src/subsonic.vala" - _tmp6_ = string_to_string (_tmp5_); -#line 209 "../src/subsonic.vala" - _tmp7_ = g_strconcat (_tmp1_, "/rest/getCoverArt?id=", _tmp4_, "&", _tmp6_, NULL); -#line 209 "../src/subsonic.vala" - _tmp8_ = _tmp7_; -#line 209 "../src/subsonic.vala" - _g_free0 (_tmp3_); -#line 209 "../src/subsonic.vala" - result = _tmp8_; -#line 209 "../src/subsonic.vala" - return result; -#line 2226 "subsonic.c" - } else { - const gchar* _tmp9_; - const gchar* _tmp10_; - gchar* _tmp11_; - gchar* _tmp12_; - gchar* _tmp13_; - gchar* _tmp14_; - const gchar* _tmp15_; - const gchar* _tmp16_; - const gchar* _tmp17_; - gchar* _tmp18_; - gchar* _tmp19_; -#line 211 "../src/subsonic.vala" - _tmp9_ = self->priv->url; -#line 211 "../src/subsonic.vala" - _tmp10_ = string_to_string (_tmp9_); -#line 211 "../src/subsonic.vala" - _tmp11_ = g_strdup_printf ("%i", size); -#line 211 "../src/subsonic.vala" - _tmp12_ = _tmp11_; -#line 211 "../src/subsonic.vala" - _tmp13_ = g_uri_escape_string (id, NULL, TRUE); -#line 211 "../src/subsonic.vala" - _tmp14_ = _tmp13_; -#line 211 "../src/subsonic.vala" - _tmp15_ = string_to_string (_tmp14_); -#line 211 "../src/subsonic.vala" - _tmp16_ = self->priv->parameters; -#line 211 "../src/subsonic.vala" - _tmp17_ = string_to_string (_tmp16_); -#line 211 "../src/subsonic.vala" - _tmp18_ = g_strconcat (_tmp10_, "/rest/getCoverArt?size=", _tmp12_, "&id=", _tmp15_, "&", _tmp17_, NULL); -#line 211 "../src/subsonic.vala" - _tmp19_ = _tmp18_; -#line 211 "../src/subsonic.vala" - _g_free0 (_tmp14_); -#line 211 "../src/subsonic.vala" - _g_free0 (_tmp12_); -#line 211 "../src/subsonic.vala" - result = _tmp19_; -#line 211 "../src/subsonic.vala" - return result; -#line 2269 "subsonic.c" - } -} - -static void -subsonic_client_cover_art_data_free (gpointer _data) -{ - SubsonicClientCoverArtData* _data_; - _data_ = _data; -#line 112 "../src/subsonic.vala" - _g_free0 (_data_->id); -#line 112 "../src/subsonic.vala" - _g_object_unref0 (_data_->cancellable); -#line 112 "../src/subsonic.vala" - _g_object_unref0 (_data_->result); -#line 112 "../src/subsonic.vala" - _g_object_unref0 (_data_->self); -#line 112 "../src/subsonic.vala" - g_slice_free (SubsonicClientCoverArtData, _data_); -#line 2288 "subsonic.c" -} - -void -subsonic_client_cover_art (SubsonicClient* self, - const gchar* id, - gint size, - gint priority, - GCancellable* cancellable, - GAsyncReadyCallback _callback_, - gpointer _user_data_) -{ - SubsonicClientCoverArtData* _data_; - SubsonicClient* _tmp0_; - gchar* _tmp1_; - GCancellable* _tmp2_; -#line 112 "../src/subsonic.vala" - g_return_if_fail (self != NULL); -#line 112 "../src/subsonic.vala" - g_return_if_fail (id != NULL); -#line 112 "../src/subsonic.vala" - _data_ = g_slice_new0 (SubsonicClientCoverArtData); -#line 112 "../src/subsonic.vala" - _data_->_async_result = g_task_new (G_OBJECT (self), cancellable, _callback_, _user_data_); -#line 112 "../src/subsonic.vala" - g_task_set_task_data (_data_->_async_result, _data_, subsonic_client_cover_art_data_free); -#line 112 "../src/subsonic.vala" - _tmp0_ = _g_object_ref0 (self); -#line 112 "../src/subsonic.vala" - _data_->self = _tmp0_; -#line 112 "../src/subsonic.vala" - _tmp1_ = g_strdup (id); -#line 112 "../src/subsonic.vala" - _g_free0 (_data_->id); -#line 112 "../src/subsonic.vala" - _data_->id = _tmp1_; -#line 112 "../src/subsonic.vala" - _data_->size = size; -#line 112 "../src/subsonic.vala" - _data_->priority = priority; -#line 112 "../src/subsonic.vala" - _tmp2_ = _g_object_ref0 (cancellable); -#line 112 "../src/subsonic.vala" - _g_object_unref0 (_data_->cancellable); -#line 112 "../src/subsonic.vala" - _data_->cancellable = _tmp2_; -#line 112 "../src/subsonic.vala" - subsonic_client_cover_art_co (_data_); -#line 2336 "subsonic.c" -} - -GdkPixbuf* -subsonic_client_cover_art_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error) -{ - GdkPixbuf* result; - SubsonicClientCoverArtData* _data_; -#line 112 "../src/subsonic.vala" - _data_ = g_task_propagate_pointer (G_TASK (_res_), error); -#line 112 "../src/subsonic.vala" - if (NULL == _data_) { -#line 112 "../src/subsonic.vala" - return NULL; -#line 2352 "subsonic.c" - } -#line 112 "../src/subsonic.vala" - result = _data_->result; -#line 112 "../src/subsonic.vala" - _data_->result = NULL; -#line 112 "../src/subsonic.vala" - return result; -#line 2360 "subsonic.c" -} - -static void -subsonic_client_cover_art_ready (GObject* source_object, - GAsyncResult* _res_, - gpointer _user_data_) -{ - SubsonicClientCoverArtData* _data_; -#line 226 "../src/subsonic.vala" - _data_ = _user_data_; -#line 226 "../src/subsonic.vala" - _data_->_source_object_ = source_object; -#line 226 "../src/subsonic.vala" - _data_->_res_ = _res_; -#line 226 "../src/subsonic.vala" - subsonic_client_cover_art_co (_data_); -#line 2377 "subsonic.c" -} - -static gboolean -subsonic_client_cover_art_co (SubsonicClientCoverArtData* _data_) -{ -#line 215 "../src/subsonic.vala" - switch (_data_->_state_) { -#line 215 "../src/subsonic.vala" - case 0: -#line 2387 "subsonic.c" - goto _state_0; -#line 215 "../src/subsonic.vala" - case 1: -#line 2391 "subsonic.c" - goto _state_1; -#line 215 "../src/subsonic.vala" - case 2: -#line 2395 "subsonic.c" - goto _state_2; - default: -#line 215 "../src/subsonic.vala" - g_assert_not_reached (); -#line 2400 "subsonic.c" - } - _state_0: -#line 223 "../src/subsonic.vala" - _data_->_tmp0_ = subsonic_client_cover_art_uri (_data_->self, _data_->id, _data_->size); -#line 223 "../src/subsonic.vala" - _data_->_tmp1_ = _data_->_tmp0_; -#line 223 "../src/subsonic.vala" - _data_->_tmp2_ = soup_message_new ("GET", _data_->_tmp1_); -#line 223 "../src/subsonic.vala" - _data_->_tmp3_ = _data_->_tmp2_; -#line 223 "../src/subsonic.vala" - _g_free0 (_data_->_tmp1_); -#line 223 "../src/subsonic.vala" - _data_->msg = _data_->_tmp3_; -#line 224 "../src/subsonic.vala" - _data_->_tmp4_ = _data_->msg; -#line 224 "../src/subsonic.vala" - _vala_assert (_data_->_tmp4_ != NULL, "msg != null"); -#line 226 "../src/subsonic.vala" - _data_->_tmp5_ = _data_->self->priv->session; -#line 226 "../src/subsonic.vala" - _data_->_tmp6_ = _data_->msg; -#line 226 "../src/subsonic.vala" - _data_->_state_ = 1; -#line 226 "../src/subsonic.vala" - soup_session_send_async (_data_->_tmp5_, _data_->_tmp6_, _data_->priority, _data_->cancellable, subsonic_client_cover_art_ready, _data_); -#line 226 "../src/subsonic.vala" - return FALSE; -#line 2429 "subsonic.c" - _state_1: -#line 226 "../src/subsonic.vala" - _data_->_tmp7_ = soup_session_send_finish (_data_->_tmp5_, _data_->_res_, &_data_->_inner_error0_); -#line 226 "../src/subsonic.vala" - _data_->stream = _data_->_tmp7_; -#line 226 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 226 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 226 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 226 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 226 "../src/subsonic.vala" - return FALSE; -#line 2445 "subsonic.c" - } -#line 227 "../src/subsonic.vala" - _data_->_tmp8_ = _data_->msg; -#line 227 "../src/subsonic.vala" - if (soup_message_get_status (_data_->_tmp8_) != SOUP_STATUS_OK) { -#line 228 "../src/subsonic.vala" - _data_->_tmp9_ = _data_->msg; -#line 228 "../src/subsonic.vala" - _data_->_tmp10_ = soup_status_get_phrase ((guint) soup_message_get_status (_data_->_tmp9_)); -#line 228 "../src/subsonic.vala" - g_warning ("subsonic.vala:228: could not load cover art for %s: %s", _data_->id, _data_->_tmp10_); -#line 2457 "subsonic.c" - } -#line 230 "../src/subsonic.vala" - _data_->_tmp12_ = _data_->stream; -#line 230 "../src/subsonic.vala" - _data_->_state_ = 2; -#line 230 "../src/subsonic.vala" - gdk_pixbuf_new_from_stream_async (_data_->_tmp12_, _data_->cancellable, subsonic_client_cover_art_ready, _data_); -#line 230 "../src/subsonic.vala" - return FALSE; -#line 2467 "subsonic.c" - _state_2: -#line 230 "../src/subsonic.vala" - _data_->_tmp13_ = (GdkPixbuf*) gdk_pixbuf_new_from_stream_finish (_data_->_res_, &_data_->_inner_error0_); -#line 230 "../src/subsonic.vala" - _data_->_tmp11_ = _data_->_tmp13_; -#line 230 "../src/subsonic.vala" - if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) { -#line 230 "../src/subsonic.vala" - g_task_return_error (_data_->_async_result, _data_->_inner_error0_); -#line 230 "../src/subsonic.vala" - _g_object_unref0 (_data_->stream); -#line 230 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 230 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 230 "../src/subsonic.vala" - return FALSE; -#line 2485 "subsonic.c" - } -#line 230 "../src/subsonic.vala" - _data_->_tmp14_ = _data_->_tmp11_; -#line 230 "../src/subsonic.vala" - _data_->_tmp11_ = NULL; -#line 230 "../src/subsonic.vala" - _data_->result = _data_->_tmp14_; -#line 230 "../src/subsonic.vala" - _g_object_unref0 (_data_->_tmp11_); -#line 230 "../src/subsonic.vala" - _g_object_unref0 (_data_->stream); -#line 230 "../src/subsonic.vala" - _g_object_unref0 (_data_->msg); -#line 230 "../src/subsonic.vala" - g_task_return_pointer (_data_->_async_result, _data_, NULL); -#line 230 "../src/subsonic.vala" - if (_data_->_state_ != 0) { -#line 230 "../src/subsonic.vala" - while (!g_task_get_completed (_data_->_async_result)) { -#line 230 "../src/subsonic.vala" - g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE); -#line 2507 "subsonic.c" - } - } -#line 230 "../src/subsonic.vala" - g_object_unref (_data_->_async_result); -#line 230 "../src/subsonic.vala" - return FALSE; -#line 2514 "subsonic.c" -} - -SubsonicClient* -subsonic_client_construct (GType object_type) -{ - SubsonicClient * self = NULL; -#line 112 "../src/subsonic.vala" - self = (SubsonicClient*) g_object_new (object_type, NULL); -#line 112 "../src/subsonic.vala" - return self; -#line 2525 "subsonic.c" -} - -SubsonicClient* -subsonic_client_new (void) -{ -#line 112 "../src/subsonic.vala" - return subsonic_client_construct (SUBSONIC_TYPE_CLIENT); -#line 2533 "subsonic.c" -} - -static void -subsonic_client_class_init (SubsonicClientClass * klass, - gpointer klass_data) -{ -#line 112 "../src/subsonic.vala" - subsonic_client_parent_class = g_type_class_peek_parent (klass); -#line 112 "../src/subsonic.vala" - g_type_class_adjust_private_offset (klass, &SubsonicClient_private_offset); -#line 112 "../src/subsonic.vala" - G_OBJECT_CLASS (klass)->finalize = subsonic_client_finalize; -#line 2546 "subsonic.c" -} - -static void -subsonic_client_instance_init (SubsonicClient * self, - gpointer klass) -{ -#line 112 "../src/subsonic.vala" - self->priv = subsonic_client_get_instance_private (self); -#line 2555 "subsonic.c" -} - -static void -subsonic_client_finalize (GObject * obj) -{ - SubsonicClient * self; -#line 112 "../src/subsonic.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, SUBSONIC_TYPE_CLIENT, SubsonicClient); -#line 234 "../src/subsonic.vala" - g_debug ("subsonic.vala:234: destroying subsonic client"); -#line 113 "../src/subsonic.vala" - _g_object_unref0 (self->priv->session); -#line 114 "../src/subsonic.vala" - _g_free0 (self->priv->url); -#line 115 "../src/subsonic.vala" - _g_free0 (self->priv->parameters); -#line 112 "../src/subsonic.vala" - G_OBJECT_CLASS (subsonic_client_parent_class)->finalize (obj); -#line 2574 "subsonic.c" -} - -static GType -subsonic_client_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (SubsonicClientClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) subsonic_client_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SubsonicClient), 0, (GInstanceInitFunc) subsonic_client_instance_init, NULL }; - GType subsonic_client_type_id; - subsonic_client_type_id = g_type_register_static (G_TYPE_OBJECT, "SubsonicClient", &g_define_type_info, 0); - SubsonicClient_private_offset = g_type_add_instance_private (subsonic_client_type_id, sizeof (SubsonicClientPrivate)); - return subsonic_client_type_id; -} - -GType -subsonic_client_get_type (void) -{ - static volatile gsize subsonic_client_type_id__once = 0; - if (g_once_init_enter (&subsonic_client_type_id__once)) { - GType subsonic_client_type_id; - subsonic_client_type_id = subsonic_client_get_type_once (); - g_once_init_leave (&subsonic_client_type_id__once, subsonic_client_type_id); - } - return subsonic_client_type_id__once; -} - diff --git a/src/subsonic.vala b/src/subsonic.vala new file mode 100644 index 0000000..b9d553c --- /dev/null +++ b/src/subsonic.vala @@ -0,0 +1,236 @@ +public errordomain Subsonic.Error { + BAD_AUTHN, + ERROR, +} + +public delegate void Subsonic.SongCallback (Song song); + +public class Subsonic.Artist : Object { + public string index; + public string id; + public string name { get; private set; } + public string? cover_art; + public string? artist_image_url; + public int64 album_count; + + public Artist (string index, Json.Reader reader) { + this.index = index; + + reader.read_member ("id"); + this.id = reader.get_string_value (); + reader.end_member (); + + reader.read_member ("name"); + this.name = reader.get_string_value (); + reader.end_member (); + + reader.read_member ("coverArt"); + this.cover_art = reader.get_string_value (); + reader.end_member (); + + reader.read_member ("artistImageUrl"); + this.artist_image_url = reader.get_string_value (); + reader.end_member (); + + reader.read_member ("albumCount"); + this.album_count = reader.get_int_value (); + reader.end_member (); + } +} + +public class Subsonic.Album : Object { + public string id; + public string name; + + public Album (Json.Reader reader) { + reader.read_member ("id"); + this.id = reader.get_string_value (); + reader.end_member (); + + reader.read_member ("name"); + this.name = reader.get_string_value (); + reader.end_member (); + } +} + +public struct Subsonic.Song { + public string id; + public string title; + public string album; + public string artist; + public int64 track; + public int64 year; + public DateTime? starred; // TODO + public int64 duration; + public int64 play_count; + public string? genre; + public string cover_art; + + public Song (Json.Reader reader) { + reader.read_member ("id"); + this.id = reader.get_string_value (); + reader.end_member (); + + reader.read_member ("title"); + this.title = reader.get_string_value (); + reader.end_member (); + + reader.read_member ("album"); + this.album = reader.get_string_value (); + reader.end_member (); + + reader.read_member ("artist"); + this.artist = reader.get_string_value (); + reader.end_member (); + + reader.read_member ("track"); + this.track = reader.get_int_value (); + reader.end_member (); + + reader.read_member ("year"); + this.year = reader.get_int_value (); + reader.end_member (); + + reader.read_member ("duration"); + this.duration = reader.get_int_value (); + reader.end_member (); + + reader.read_member ("playCount"); + this.play_count = reader.get_int_value (); + reader.end_member (); + + reader.read_member ("genre"); + this.genre = reader.get_string_value (); + reader.end_member (); + + reader.read_member ("coverArt"); + this.cover_art = reader.get_string_value (); + reader.end_member (); + } +} + +public class Subsonic.Client : Object { + private Soup.Session session; + private string url; + private string parameters; + + public Client.with_token (string url, string username, string token, string salt) { + this.url = url; + this.parameters = @"u=$(Uri.escape_string(username))&t=$(Uri.escape_string(token))&s=$(Uri.escape_string(salt))&v=1.16.1&c=eu.callcc.audrey"; + + this.session = new Soup.Session (); + this.session.user_agent = Audrey.Const.user_agent; + } + + private void unwrap_response (Json.Reader reader) throws GLib.Error { + reader.read_member ("subsonic-response"); + + reader.read_member ("status"); + if (reader.get_string_value () != "ok") { + reader.end_member (); + reader.read_member ("error"); + reader.read_member ("message"); + throw new Subsonic.Error.ERROR (reader.get_string_value () ?? "???"); + } + reader.end_member(); + } + + public async void ping () throws GLib.Error { + var msg = new Soup.Message ("GET", @"$(this.url)/rest/ping?f=json&$(this.parameters)"); + if (msg == null) { + throw new Subsonic.Error.BAD_AUTHN ("Bad message"); + } + + var bytes = yield this.session.send_and_read_async (msg, Priority.DEFAULT, null); + assert (msg.get_status () == Soup.Status.OK); + + var parser = new Json.Parser (); + parser.load_from_data ((string) bytes.get_data ()); + + var reader = new Json.Reader (parser.get_root ()); + this.unwrap_response (reader); + } + + public async void scrobble (string id) throws GLib.Error { + var msg = new Soup.Message ("GET", @"$(this.url)/rest/scrobble?id=$(Uri.escape_string (id))&f=json&$(this.parameters)"); + assert (msg != null); + + var bytes = yield this.session.send_and_read_async (msg, Priority.DEFAULT, null); + assert (msg.get_status () == Soup.Status.OK); + + var parser = new Json.Parser (); + parser.load_from_data ((string) bytes.get_data ()); + + var reader = new Json.Reader (parser.get_root ()); + this.unwrap_response (reader); + } + + public async void get_random_songs (string? parameters, SongCallback callback) throws GLib.Error { + string str_parameters; + if (parameters == null) { + str_parameters = ""; + } else { + str_parameters = @"$parameters&"; + } + + var msg = new Soup.Message("GET", @"$(this.url)/rest/getRandomSongs?$(str_parameters)size=500&f=json&$(this.parameters)"); + assert (msg != null); + + var bytes = yield this.session.send_and_read_async (msg, Priority.DEFAULT, null); + assert (msg.get_status () == Soup.Status.OK); + + var parser = new Json.Parser (); + parser.load_from_data ((string) bytes.get_data ()); + + var reader = new Json.Reader (parser.get_root ()); + this.unwrap_response (reader); + + reader.read_member ("randomSongs"); + reader.read_member ("song"); + + for (int i = 0; i < reader.count_elements (); i += 1) { + reader.read_element (i); + callback (Song (reader)); + reader.end_element (); + + Idle.add (this.get_random_songs.callback); + yield; + } + + assert (reader.get_error () == null); + } + + public string stream_uri (string id) { + return @"$(this.url)/rest/stream?id=$(Uri.escape_string(id))&$(this.parameters)"; + } + + public string cover_art_uri (string id, int size = -1) { + if (size >= 0) { + return @"$(this.url)/rest/getCoverArt?id=$(Uri.escape_string(id))&$(this.parameters)"; + } else { + return @"$(this.url)/rest/getCoverArt?size=$size&id=$(Uri.escape_string(id))&$(this.parameters)"; + } + } + + public async Gdk.Pixbuf cover_art ( + string id, + int size = -1, + int priority = Priority.DEFAULT, + Cancellable? cancellable = null + ) + throws GLib.Error + { + var msg = new Soup.Message("GET", this.cover_art_uri (id, size)); + assert (msg != null); + + var stream = yield this.session.send_async (msg, priority, cancellable); + if (msg.get_status () != Soup.Status.OK) { + warning ("could not load cover art for %s: %s", id, Soup.Status.get_phrase (msg.get_status ())); + } + return yield new Gdk.Pixbuf.from_stream_async (stream, cancellable); + } + + ~Client () { + debug ("destroying subsonic client"); + } +} diff --git a/src/ui/play_queue.c b/src/ui/play_queue.c deleted file mode 100644 index 118895c..0000000 --- a/src/ui/play_queue.c +++ /dev/null @@ -1,1759 +0,0 @@ -/* play_queue.c generated by valac 0.56.16, the Vala compiler - * generated from play_queue.vala, do not modify */ - -/* song widget+drag behavior taken from gnome music*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(VALA_STRICT_C) -#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14) -#pragma GCC diagnostic warning "-Wincompatible-pointer-types" -#elif defined(__clang__) && (__clang_major__ >= 16) -#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types" -#pragma clang diagnostic ignored "-Wincompatible-pointer-types" -#endif -#endif -#if !defined(VALA_EXTERN) -#if defined(_MSC_VER) -#define VALA_EXTERN __declspec(dllexport) extern -#elif __GNUC__ >= 4 -#define VALA_EXTERN __attribute__((visibility("default"))) extern -#else -#define VALA_EXTERN extern -#endif -#endif - -#define UI_TYPE_PLAY_QUEUE_SONG (ui_play_queue_song_get_type ()) -#define UI_PLAY_QUEUE_SONG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_PLAY_QUEUE_SONG, UiPlayQueueSong)) -#define UI_PLAY_QUEUE_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_PLAY_QUEUE_SONG, UiPlayQueueSongClass)) -#define UI_IS_PLAY_QUEUE_SONG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_PLAY_QUEUE_SONG)) -#define UI_IS_PLAY_QUEUE_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_PLAY_QUEUE_SONG)) -#define UI_PLAY_QUEUE_SONG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_PLAY_QUEUE_SONG, UiPlayQueueSongClass)) - -typedef struct _UiPlayQueueSong UiPlayQueueSong; -typedef struct _UiPlayQueueSongClass UiPlayQueueSongClass; -typedef struct _UiPlayQueueSongPrivate UiPlayQueueSongPrivate; - -#define TYPE_PLAYBIN_SONG (playbin_song_get_type ()) -#define PLAYBIN_SONG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYBIN_SONG, PlaybinSong)) -#define PLAYBIN_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYBIN_SONG, PlaybinSongClass)) -#define IS_PLAYBIN_SONG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYBIN_SONG)) -#define IS_PLAYBIN_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYBIN_SONG)) -#define PLAYBIN_SONG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYBIN_SONG, PlaybinSongClass)) - -typedef struct _PlaybinSong PlaybinSong; -typedef struct _PlaybinSongClass PlaybinSongClass; - -#define TYPE_PLAYBIN (playbin_get_type ()) -#define PLAYBIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYBIN, Playbin)) -#define PLAYBIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYBIN, PlaybinClass)) -#define IS_PLAYBIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYBIN)) -#define IS_PLAYBIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYBIN)) -#define PLAYBIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYBIN, PlaybinClass)) - -typedef struct _Playbin Playbin; -typedef struct _PlaybinClass PlaybinClass; -enum { - UI_PLAY_QUEUE_SONG_0_PROPERTY, - UI_PLAY_QUEUE_SONG_DRAGGABLE_PROPERTY, - UI_PLAY_QUEUE_SONG_SHOW_POSITION_PROPERTY, - UI_PLAY_QUEUE_SONG_SHOW_ARTIST_PROPERTY, - UI_PLAY_QUEUE_SONG_SHOW_COVER_PROPERTY, - UI_PLAY_QUEUE_SONG_CURRENT_PROPERTY, - UI_PLAY_QUEUE_SONG_DISPLAYED_POSITION_PROPERTY, - UI_PLAY_QUEUE_SONG_SONG_PROPERTY, - UI_PLAY_QUEUE_SONG_NUM_PROPERTIES -}; -static GParamSpec* ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_NUM_PROPERTIES]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -typedef struct _Block3Data Block3Data; - -#define UI_TYPE_PLAY_QUEUE (ui_play_queue_get_type ()) -#define UI_PLAY_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_PLAY_QUEUE, UiPlayQueue)) -#define UI_PLAY_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_PLAY_QUEUE, UiPlayQueueClass)) -#define UI_IS_PLAY_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_PLAY_QUEUE)) -#define UI_IS_PLAY_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_PLAY_QUEUE)) -#define UI_PLAY_QUEUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_PLAY_QUEUE, UiPlayQueueClass)) - -typedef struct _UiPlayQueue UiPlayQueue; -typedef struct _UiPlayQueueClass UiPlayQueueClass; -typedef struct _UiPlayQueuePrivate UiPlayQueuePrivate; -enum { - UI_PLAY_QUEUE_0_PROPERTY, - UI_PLAY_QUEUE_PLAYBIN_PROPERTY, - UI_PLAY_QUEUE_CAN_CLEAR_ALL_PROPERTY, - UI_PLAY_QUEUE_NUM_PROPERTIES -}; -static GParamSpec* ui_play_queue_properties[UI_PLAY_QUEUE_NUM_PROPERTIES]; -#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); -#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } -#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } -#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); - -struct _UiPlayQueueSong { - GtkBox parent_instance; - UiPlayQueueSongPrivate * priv; -}; - -struct _UiPlayQueueSongClass { - GtkBoxClass parent_class; -}; - -struct _UiPlayQueueSongPrivate { - gboolean _draggable; - gboolean _show_position; - gboolean _show_artist; - gboolean _show_cover; - gboolean _current; - guint _displayed_position; - PlaybinSong* _song; - Playbin* playbin; - gulong connection; - gdouble drag_x; - gdouble drag_y; - GtkListBox* drag_widget; -}; - -struct _Block3Data { - int _ref_count_; - UiPlayQueueSong* self; - guint position; -}; - -struct _UiPlayQueue { - AdwBin parent_instance; - UiPlayQueuePrivate * priv; -}; - -struct _UiPlayQueueClass { - AdwBinClass parent_class; -}; - -struct _UiPlayQueuePrivate { - Playbin* _playbin; - gboolean _can_clear_all; -}; - -static gint UiPlayQueueSong_private_offset; -static gpointer ui_play_queue_song_parent_class = NULL; -static gint UiPlayQueue_private_offset; -static gpointer ui_play_queue_parent_class = NULL; - -VALA_EXTERN GType ui_play_queue_song_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (UiPlayQueueSong, g_object_unref) -VALA_EXTERN GType playbin_song_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (PlaybinSong, g_object_unref) -VALA_EXTERN GType playbin_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (Playbin, g_object_unref) -VALA_EXTERN UiPlayQueueSong* ui_play_queue_song_new (Playbin* playbin); -VALA_EXTERN UiPlayQueueSong* ui_play_queue_song_construct (GType object_type, - Playbin* playbin); -static void __lambda6_ (UiPlayQueueSong* self); -VALA_EXTERN void playbin_remove_track (Playbin* self, - guint position); -VALA_EXTERN guint ui_play_queue_song_get_displayed_position (UiPlayQueueSong* self); -static void ___lambda6__g_simple_action_activate (GSimpleAction* _sender, - GVariant* parameter, - gpointer self); -VALA_EXTERN void ui_play_queue_song_bind (UiPlayQueueSong* self, - guint position, - PlaybinSong* song); -static Block3Data* block3_data_ref (Block3Data* _data3_); -static void block3_data_unref (void * _userdata_); -VALA_EXTERN void ui_play_queue_song_set_displayed_position (UiPlayQueueSong* self, - guint value); -VALA_EXTERN void ui_play_queue_song_set_song (UiPlayQueueSong* self, - PlaybinSong* value); -VALA_EXTERN gint playbin_get_play_queue_position (Playbin* self); -VALA_EXTERN void ui_play_queue_song_set_current (UiPlayQueueSong* self, - gboolean value); -static void __lambda7_ (Block3Data* _data3_); -static void ___lambda7__g_object_notify (GObject* _sender, - GParamSpec* pspec, - gpointer self); -VALA_EXTERN void playbin_song_need_cover_art (PlaybinSong* self); -VALA_EXTERN void ui_play_queue_song_unbind (UiPlayQueueSong* self); -static gchar* ui_play_queue_song_format_duration (UiPlayQueueSong* self, - gint duration); -static gchar* ui_play_queue_song_star_button_icon_name (UiPlayQueueSong* self, - GDateTime* starred); -static GdkContentProvider* ui_play_queue_song_on_drag_prepare (UiPlayQueueSong* self, - gdouble x, - gdouble y); -VALA_EXTERN gboolean ui_play_queue_song_get_draggable (UiPlayQueueSong* self); -static GdkContentProvider* _ui_play_queue_song_on_drag_prepare_gtk_drag_source_prepare (GtkDragSource* _sender, - gdouble x, - gdouble y, - gpointer self); -static void ui_play_queue_song_on_drag_begin (UiPlayQueueSong* self, - GtkDragSource* source, - GdkDrag* drag); -VALA_EXTERN void ui_play_queue_song_set_draggable (UiPlayQueueSong* self, - gboolean value); -VALA_EXTERN gboolean ui_play_queue_song_get_show_position (UiPlayQueueSong* self); -VALA_EXTERN void ui_play_queue_song_set_show_position (UiPlayQueueSong* self, - gboolean value); -VALA_EXTERN gboolean ui_play_queue_song_get_show_artist (UiPlayQueueSong* self); -VALA_EXTERN void ui_play_queue_song_set_show_artist (UiPlayQueueSong* self, - gboolean value); -VALA_EXTERN gboolean ui_play_queue_song_get_show_cover (UiPlayQueueSong* self); -VALA_EXTERN void ui_play_queue_song_set_show_cover (UiPlayQueueSong* self, - gboolean value); -VALA_EXTERN PlaybinSong* ui_play_queue_song_get_song (UiPlayQueueSong* self); -static void _ui_play_queue_song_on_drag_begin_gtk_drag_source_drag_begin (GtkDragSource* _sender, - GdkDrag* drag, - gpointer self); -static gboolean ui_play_queue_song_on_drop (UiPlayQueueSong* self, - GValue* value, - gdouble x, - gdouble y); -VALA_EXTERN void playbin_move_track (Playbin* self, - guint from, - guint to); -static gboolean _ui_play_queue_song_on_drop_gtk_drop_target_drop (GtkDropTarget* _sender, - GValue* value, - gdouble x, - gdouble y, - gpointer self); -VALA_EXTERN gboolean ui_play_queue_song_get_current (UiPlayQueueSong* self); -static void ui_play_queue_song_finalize (GObject * obj); -static GType ui_play_queue_song_get_type_once (void); -static void _vala_ui_play_queue_song_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec); -static void _vala_ui_play_queue_song_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec); -VALA_EXTERN GType ui_play_queue_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (UiPlayQueue, g_object_unref) -static void ui_play_queue_on_store_items_changed (UiPlayQueue* self, - GListModel* store, - guint position, - guint removed, - guint added); -static void ui_play_queue_set_can_clear_all (UiPlayQueue* self, - gboolean value); -static void ui_play_queue_on_song_list_setup (UiPlayQueue* self, - GtkSignalListItemFactory* factory, - GObject* object); -VALA_EXTERN Playbin* ui_play_queue_get_playbin (UiPlayQueue* self); -static void _ui_play_queue_on_song_list_setup_gtk_signal_list_item_factory_setup (GtkSignalListItemFactory* _sender, - GObject* object, - gpointer self); -static void ui_play_queue_on_song_list_bind (UiPlayQueue* self, - GtkSignalListItemFactory* factory, - GObject* object); -static void _ui_play_queue_on_song_list_bind_gtk_signal_list_item_factory_bind (GtkSignalListItemFactory* _sender, - GObject* object, - gpointer self); -static void ui_play_queue_on_song_list_unbind (UiPlayQueue* self, - GtkSignalListItemFactory* factory, - GObject* object); -static void _ui_play_queue_on_song_list_unbind_gtk_signal_list_item_factory_unbind (GtkSignalListItemFactory* _sender, - GObject* object, - gpointer self); -static void ui_play_queue_on_row_activated (UiPlayQueue* self, - guint position); -VALA_EXTERN void playbin_select_track (Playbin* self, - guint position); -static void _ui_play_queue_on_row_activated_gtk_list_view_activate (GtkListView* _sender, - guint position, - gpointer self); -static gchar* ui_play_queue_visible_child_name (UiPlayQueue* self, - guint n_items); -VALA_EXTERN UiPlayQueue* ui_play_queue_new (void); -VALA_EXTERN UiPlayQueue* ui_play_queue_construct (GType object_type); -VALA_EXTERN void ui_play_queue_set_playbin (UiPlayQueue* self, - Playbin* value); -VALA_EXTERN GListModel* playbin_get_play_queue (Playbin* self); -static void _ui_play_queue_on_store_items_changed_g_list_model_items_changed (GListModel* _sender, - guint position, - guint removed, - guint added, - gpointer self); -VALA_EXTERN gboolean ui_play_queue_get_can_clear_all (UiPlayQueue* self); -static void ui_play_queue_finalize (GObject * obj); -static GType ui_play_queue_get_type_once (void); -static void _vala_ui_play_queue_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec); -static void _vala_ui_play_queue_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec); - -static inline gpointer -ui_play_queue_song_get_instance_private (UiPlayQueueSong* self) -{ - return G_STRUCT_MEMBER_P (self, UiPlayQueueSong_private_offset); -} - -static void -__lambda6_ (UiPlayQueueSong* self) -{ - Playbin* _tmp0_; - guint _tmp1_; -#line 33 "../src/ui/play_queue.vala" - _tmp0_ = self->priv->playbin; -#line 33 "../src/ui/play_queue.vala" - _tmp1_ = self->priv->_displayed_position; -#line 33 "../src/ui/play_queue.vala" - playbin_remove_track (_tmp0_, _tmp1_ - 1); -#line 315 "play_queue.c" -} - -static void -___lambda6__g_simple_action_activate (GSimpleAction* _sender, - GVariant* parameter, - gpointer self) -{ -#line 32 "../src/ui/play_queue.vala" - __lambda6_ ((UiPlayQueueSong*) self); -#line 325 "play_queue.c" -} - -UiPlayQueueSong* -ui_play_queue_song_construct (GType object_type, - Playbin* playbin) -{ - UiPlayQueueSong * self = NULL; - GSimpleActionGroup* action_group = NULL; - GSimpleActionGroup* _tmp0_; - GSimpleAction* remove = NULL; - GSimpleAction* _tmp1_; -#line 26 "../src/ui/play_queue.vala" - g_return_val_if_fail (playbin != NULL, NULL); -#line 26 "../src/ui/play_queue.vala" - self = (UiPlayQueueSong*) g_object_new (object_type, NULL); -#line 27 "../src/ui/play_queue.vala" - self->priv->playbin = playbin; -#line 29 "../src/ui/play_queue.vala" - _tmp0_ = g_simple_action_group_new (); -#line 29 "../src/ui/play_queue.vala" - action_group = _tmp0_; -#line 31 "../src/ui/play_queue.vala" - _tmp1_ = g_simple_action_new ("remove", NULL); -#line 31 "../src/ui/play_queue.vala" - remove = _tmp1_; -#line 32 "../src/ui/play_queue.vala" - g_signal_connect_object (remove, "activate", (GCallback) ___lambda6__g_simple_action_activate, self, 0); -#line 35 "../src/ui/play_queue.vala" - g_action_map_add_action ((GActionMap*) action_group, (GAction*) remove); -#line 37 "../src/ui/play_queue.vala" - gtk_widget_insert_action_group ((GtkWidget*) self, "song", (GActionGroup*) action_group); -#line 26 "../src/ui/play_queue.vala" - _g_object_unref0 (remove); -#line 26 "../src/ui/play_queue.vala" - _g_object_unref0 (action_group); -#line 26 "../src/ui/play_queue.vala" - return self; -#line 363 "play_queue.c" -} - -UiPlayQueueSong* -ui_play_queue_song_new (Playbin* playbin) -{ -#line 26 "../src/ui/play_queue.vala" - return ui_play_queue_song_construct (UI_TYPE_PLAY_QUEUE_SONG, playbin); -#line 371 "play_queue.c" -} - -static Block3Data* -block3_data_ref (Block3Data* _data3_) -{ -#line 41 "../src/ui/play_queue.vala" - g_atomic_int_inc (&_data3_->_ref_count_); -#line 41 "../src/ui/play_queue.vala" - return _data3_; -#line 381 "play_queue.c" -} - -static void -block3_data_unref (void * _userdata_) -{ - Block3Data* _data3_; - _data3_ = (Block3Data*) _userdata_; -#line 41 "../src/ui/play_queue.vala" - if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) { -#line 391 "play_queue.c" - UiPlayQueueSong* self; -#line 41 "../src/ui/play_queue.vala" - self = _data3_->self; -#line 41 "../src/ui/play_queue.vala" - _g_object_unref0 (self); -#line 41 "../src/ui/play_queue.vala" - g_slice_free (Block3Data, _data3_); -#line 399 "play_queue.c" - } -} - -static void -__lambda7_ (Block3Data* _data3_) -{ - UiPlayQueueSong* self; - Playbin* _tmp0_; - gint _tmp1_; - gint _tmp2_; -#line 45 "../src/ui/play_queue.vala" - self = _data3_->self; -#line 46 "../src/ui/play_queue.vala" - _tmp0_ = self->priv->playbin; -#line 46 "../src/ui/play_queue.vala" - _tmp1_ = playbin_get_play_queue_position (_tmp0_); -#line 46 "../src/ui/play_queue.vala" - _tmp2_ = _tmp1_; -#line 46 "../src/ui/play_queue.vala" - ui_play_queue_song_set_current (self, ((guint) _tmp2_) == _data3_->position); -#line 420 "play_queue.c" -} - -static void -___lambda7__g_object_notify (GObject* _sender, - GParamSpec* pspec, - gpointer self) -{ -#line 45 "../src/ui/play_queue.vala" - __lambda7_ (self); -#line 430 "play_queue.c" -} - -void -ui_play_queue_song_bind (UiPlayQueueSong* self, - guint position, - PlaybinSong* song) -{ - Block3Data* _data3_; - Playbin* _tmp0_; - gint _tmp1_; - gint _tmp2_; - Playbin* _tmp3_; - gulong _tmp4_; -#line 41 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 41 "../src/ui/play_queue.vala" - g_return_if_fail (song != NULL); -#line 41 "../src/ui/play_queue.vala" - _data3_ = g_slice_new0 (Block3Data); -#line 41 "../src/ui/play_queue.vala" - _data3_->_ref_count_ = 1; -#line 41 "../src/ui/play_queue.vala" - _data3_->self = g_object_ref (self); -#line 41 "../src/ui/play_queue.vala" - _data3_->position = position; -#line 42 "../src/ui/play_queue.vala" - ui_play_queue_song_set_displayed_position (self, _data3_->position + 1); -#line 43 "../src/ui/play_queue.vala" - ui_play_queue_song_set_song (self, song); -#line 44 "../src/ui/play_queue.vala" - _tmp0_ = self->priv->playbin; -#line 44 "../src/ui/play_queue.vala" - _tmp1_ = playbin_get_play_queue_position (_tmp0_); -#line 44 "../src/ui/play_queue.vala" - _tmp2_ = _tmp1_; -#line 44 "../src/ui/play_queue.vala" - ui_play_queue_song_set_current (self, ((guint) _tmp2_) == _data3_->position); -#line 45 "../src/ui/play_queue.vala" - _tmp3_ = self->priv->playbin; -#line 45 "../src/ui/play_queue.vala" - _tmp4_ = g_signal_connect_data ((GObject*) _tmp3_, "notify::play-queue-position", (GCallback) ___lambda7__g_object_notify, block3_data_ref (_data3_), (GClosureNotify) block3_data_unref, 0); -#line 45 "../src/ui/play_queue.vala" - self->priv->connection = _tmp4_; -#line 49 "../src/ui/play_queue.vala" - playbin_song_need_cover_art (song); -#line 41 "../src/ui/play_queue.vala" - block3_data_unref (_data3_); -#line 41 "../src/ui/play_queue.vala" - _data3_ = NULL; -#line 480 "play_queue.c" -} - -void -ui_play_queue_song_unbind (UiPlayQueueSong* self) -{ - Playbin* _tmp0_; -#line 52 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 53 "../src/ui/play_queue.vala" - _tmp0_ = self->priv->playbin; -#line 53 "../src/ui/play_queue.vala" - g_signal_handler_disconnect ((GObject*) _tmp0_, self->priv->connection); -#line 493 "play_queue.c" -} - -static gchar* -ui_play_queue_song_format_duration (UiPlayQueueSong* self, - gint duration) -{ - gchar* _tmp0_; - gchar* result; -#line 56 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 57 "../src/ui/play_queue.vala" - _tmp0_ = g_strdup_printf ("%02d:%02d", duration / 60, duration % 60); -#line 57 "../src/ui/play_queue.vala" - result = _tmp0_; -#line 57 "../src/ui/play_queue.vala" - return result; -#line 510 "play_queue.c" -} - -static gchar* -ui_play_queue_song_star_button_icon_name (UiPlayQueueSong* self, - GDateTime* starred) -{ - const gchar* _tmp0_ = NULL; - gchar* _tmp1_; - gchar* result; -#line 60 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 61 "../src/ui/play_queue.vala" - if (starred == NULL) { -#line 61 "../src/ui/play_queue.vala" - _tmp0_ = "non-starred"; -#line 526 "play_queue.c" - } else { -#line 61 "../src/ui/play_queue.vala" - _tmp0_ = "starred"; -#line 530 "play_queue.c" - } -#line 61 "../src/ui/play_queue.vala" - _tmp1_ = g_strdup (_tmp0_); -#line 61 "../src/ui/play_queue.vala" - result = _tmp1_; -#line 61 "../src/ui/play_queue.vala" - return result; -#line 538 "play_queue.c" -} - -static GdkContentProvider* -ui_play_queue_song_on_drag_prepare (UiPlayQueueSong* self, - gdouble x, - gdouble y) -{ - gboolean _tmp0_; - GdkContentProvider* result; -#line 67 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 68 "../src/ui/play_queue.vala" - _tmp0_ = self->priv->_draggable; -#line 68 "../src/ui/play_queue.vala" - if (_tmp0_) { -#line 554 "play_queue.c" - GValue _tmp1_ = {0}; - GdkContentProvider* _tmp2_; - GdkContentProvider* _tmp3_; -#line 69 "../src/ui/play_queue.vala" - self->priv->drag_x = x; -#line 70 "../src/ui/play_queue.vala" - self->priv->drag_y = y; -#line 71 "../src/ui/play_queue.vala" - g_value_init (&_tmp1_, UI_TYPE_PLAY_QUEUE_SONG); -#line 71 "../src/ui/play_queue.vala" - g_value_set_object (&_tmp1_, self); -#line 71 "../src/ui/play_queue.vala" - _tmp2_ = gdk_content_provider_new_for_value (&_tmp1_); -#line 71 "../src/ui/play_queue.vala" - _tmp3_ = _tmp2_; -#line 71 "../src/ui/play_queue.vala" - G_IS_VALUE (&_tmp1_) ? (g_value_unset (&_tmp1_), NULL) : NULL; -#line 71 "../src/ui/play_queue.vala" - result = _tmp3_; -#line 71 "../src/ui/play_queue.vala" - return result; -#line 576 "play_queue.c" - } else { -#line 73 "../src/ui/play_queue.vala" - result = NULL; -#line 73 "../src/ui/play_queue.vala" - return result; -#line 582 "play_queue.c" - } -} - -static GdkContentProvider* -_ui_play_queue_song_on_drag_prepare_gtk_drag_source_prepare (GtkDragSource* _sender, - gdouble x, - gdouble y, - gpointer self) -{ - GdkContentProvider* result; - result = ui_play_queue_song_on_drag_prepare ((UiPlayQueueSong*) self, x, y); -#line 4 "../src/ui/play_queue.vala" - return result; -#line 596 "play_queue.c" -} - -static gpointer -_g_object_ref0 (gpointer self) -{ -#line 97 "../src/ui/play_queue.vala" - return self ? g_object_ref (self) : NULL; -#line 604 "play_queue.c" -} - -static void -ui_play_queue_song_on_drag_begin (UiPlayQueueSong* self, - GtkDragSource* source, - GdkDrag* drag) -{ - GtkListBox* _tmp0_; - UiPlayQueueSong* drag_row = NULL; - Playbin* _tmp1_; - UiPlayQueueSong* _tmp2_; - gboolean _tmp3_; - gboolean _tmp4_; - gboolean _tmp5_; - guint _tmp6_; - PlaybinSong* _tmp7_; - GtkListBoxRow* drag_row_real = NULL; - GtkListBoxRow* _tmp8_; - GtkListBox* _tmp9_; - GtkListBox* _tmp10_; - GtkWidget* drag_icon = NULL; - GtkWidget* _tmp11_; - GtkWidget* _tmp12_; - GtkListBox* _tmp13_; -#line 78 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 78 "../src/ui/play_queue.vala" - g_return_if_fail (source != NULL); -#line 78 "../src/ui/play_queue.vala" - g_return_if_fail (drag != NULL); -#line 79 "../src/ui/play_queue.vala" - _tmp0_ = (GtkListBox*) gtk_list_box_new (); -#line 79 "../src/ui/play_queue.vala" - g_object_ref_sink (_tmp0_); -#line 79 "../src/ui/play_queue.vala" - _g_object_unref0 (self->priv->drag_widget); -#line 79 "../src/ui/play_queue.vala" - self->priv->drag_widget = _tmp0_; -#line 81 "../src/ui/play_queue.vala" - _tmp1_ = self->priv->playbin; -#line 81 "../src/ui/play_queue.vala" - _tmp2_ = ui_play_queue_song_new (_tmp1_); -#line 81 "../src/ui/play_queue.vala" - g_object_ref_sink (_tmp2_); -#line 81 "../src/ui/play_queue.vala" - drag_row = _tmp2_; -#line 82 "../src/ui/play_queue.vala" - ui_play_queue_song_set_draggable (drag_row, FALSE); -#line 83 "../src/ui/play_queue.vala" - _tmp3_ = self->priv->_show_position; -#line 83 "../src/ui/play_queue.vala" - ui_play_queue_song_set_show_position (drag_row, _tmp3_); -#line 84 "../src/ui/play_queue.vala" - _tmp4_ = self->priv->_show_artist; -#line 84 "../src/ui/play_queue.vala" - ui_play_queue_song_set_show_artist (drag_row, _tmp4_); -#line 85 "../src/ui/play_queue.vala" - _tmp5_ = self->priv->_show_cover; -#line 85 "../src/ui/play_queue.vala" - ui_play_queue_song_set_show_cover (drag_row, _tmp5_); -#line 86 "../src/ui/play_queue.vala" - ui_play_queue_song_set_current (drag_row, FALSE); -#line 87 "../src/ui/play_queue.vala" - _tmp6_ = self->priv->_displayed_position; -#line 87 "../src/ui/play_queue.vala" - ui_play_queue_song_set_displayed_position (drag_row, _tmp6_); -#line 88 "../src/ui/play_queue.vala" - _tmp7_ = self->priv->_song; -#line 88 "../src/ui/play_queue.vala" - ui_play_queue_song_set_song (drag_row, _tmp7_); -#line 89 "../src/ui/play_queue.vala" - gtk_widget_set_size_request ((GtkWidget*) drag_row, gtk_widget_get_width ((GtkWidget*) self), gtk_widget_get_height ((GtkWidget*) self)); -#line 91 "../src/ui/play_queue.vala" - _tmp8_ = (GtkListBoxRow*) gtk_list_box_row_new (); -#line 91 "../src/ui/play_queue.vala" - g_object_ref_sink (_tmp8_); -#line 91 "../src/ui/play_queue.vala" - drag_row_real = _tmp8_; -#line 92 "../src/ui/play_queue.vala" - gtk_list_box_row_set_child (drag_row_real, (GtkWidget*) drag_row); -#line 94 "../src/ui/play_queue.vala" - _tmp9_ = self->priv->drag_widget; -#line 94 "../src/ui/play_queue.vala" - gtk_list_box_append (_tmp9_, (GtkWidget*) drag_row_real); -#line 95 "../src/ui/play_queue.vala" - _tmp10_ = self->priv->drag_widget; -#line 95 "../src/ui/play_queue.vala" - gtk_list_box_drag_highlight_row (_tmp10_, drag_row_real); -#line 97 "../src/ui/play_queue.vala" - _tmp11_ = gtk_drag_icon_get_for_drag (drag); -#line 97 "../src/ui/play_queue.vala" - _tmp12_ = _g_object_ref0 (_tmp11_); -#line 97 "../src/ui/play_queue.vala" - drag_icon = _tmp12_; -#line 98 "../src/ui/play_queue.vala" - _tmp13_ = self->priv->drag_widget; -#line 98 "../src/ui/play_queue.vala" - g_object_set ((GObject*) drag_icon, "child", _tmp13_, NULL); -#line 99 "../src/ui/play_queue.vala" - gdk_drag_set_hotspot (drag, (gint) self->priv->drag_x, (gint) self->priv->drag_y); -#line 78 "../src/ui/play_queue.vala" - _g_object_unref0 (drag_icon); -#line 78 "../src/ui/play_queue.vala" - _g_object_unref0 (drag_row_real); -#line 78 "../src/ui/play_queue.vala" - _g_object_unref0 (drag_row); -#line 711 "play_queue.c" -} - -static void -_ui_play_queue_song_on_drag_begin_gtk_drag_source_drag_begin (GtkDragSource* _sender, - GdkDrag* drag, - gpointer self) -{ -#line 4 "../src/ui/play_queue.vala" - ui_play_queue_song_on_drag_begin ((UiPlayQueueSong*) self, _sender, drag); -#line 721 "play_queue.c" -} - -static gboolean -ui_play_queue_song_on_drop (UiPlayQueueSong* self, - GValue* value, - gdouble x, - gdouble y) -{ - UiPlayQueueSong* source = NULL; - GValue _tmp0_; - UiPlayQueueSong* _tmp1_; - guint _tmp2_; - guint _tmp3_; - Playbin* _tmp4_; - guint _tmp5_; - guint _tmp6_; - gboolean result; -#line 102 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 102 "../src/ui/play_queue.vala" - g_return_val_if_fail (value != NULL, FALSE); -#line 103 "../src/ui/play_queue.vala" - _g_object_unref0 (self->priv->drag_widget); -#line 103 "../src/ui/play_queue.vala" - self->priv->drag_widget = NULL; -#line 104 "../src/ui/play_queue.vala" - self->priv->drag_x = 0.0; -#line 105 "../src/ui/play_queue.vala" - self->priv->drag_y = 0.0; -#line 107 "../src/ui/play_queue.vala" - _tmp0_ = *value; -#line 107 "../src/ui/play_queue.vala" - _tmp1_ = _g_object_ref0 (g_value_get_object (&_tmp0_)); -#line 107 "../src/ui/play_queue.vala" - source = _tmp1_; -#line 108 "../src/ui/play_queue.vala" - _tmp2_ = source->priv->_displayed_position; -#line 108 "../src/ui/play_queue.vala" - _tmp3_ = self->priv->_displayed_position; -#line 108 "../src/ui/play_queue.vala" - g_debug ("play_queue.vala:108: dropped %u on %u", _tmp2_, _tmp3_); -#line 109 "../src/ui/play_queue.vala" - _tmp4_ = self->priv->playbin; -#line 109 "../src/ui/play_queue.vala" - _tmp5_ = source->priv->_displayed_position; -#line 109 "../src/ui/play_queue.vala" - _tmp6_ = self->priv->_displayed_position; -#line 109 "../src/ui/play_queue.vala" - playbin_move_track (_tmp4_, _tmp5_ - 1, _tmp6_ - 1); -#line 110 "../src/ui/play_queue.vala" - result = FALSE; -#line 110 "../src/ui/play_queue.vala" - _g_object_unref0 (source); -#line 110 "../src/ui/play_queue.vala" - return result; -#line 777 "play_queue.c" -} - -static gboolean -_ui_play_queue_song_on_drop_gtk_drop_target_drop (GtkDropTarget* _sender, - GValue* value, - gdouble x, - gdouble y, - gpointer self) -{ - gboolean result; - result = ui_play_queue_song_on_drop ((UiPlayQueueSong*) self, value, x, y); -#line 4 "../src/ui/play_queue.vala" - return result; -#line 791 "play_queue.c" -} - -gboolean -ui_play_queue_song_get_draggable (UiPlayQueueSong* self) -{ - gboolean result; -#line 5 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 5 "../src/ui/play_queue.vala" - result = self->priv->_draggable; -#line 5 "../src/ui/play_queue.vala" - return result; -#line 804 "play_queue.c" -} - -void -ui_play_queue_song_set_draggable (UiPlayQueueSong* self, - gboolean value) -{ - gboolean old_value; -#line 5 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 5 "../src/ui/play_queue.vala" - old_value = ui_play_queue_song_get_draggable (self); -#line 5 "../src/ui/play_queue.vala" - if (old_value != value) { -#line 5 "../src/ui/play_queue.vala" - self->priv->_draggable = value; -#line 5 "../src/ui/play_queue.vala" - g_object_notify_by_pspec ((GObject *) self, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_DRAGGABLE_PROPERTY]); -#line 822 "play_queue.c" - } -} - -gboolean -ui_play_queue_song_get_show_position (UiPlayQueueSong* self) -{ - gboolean result; -#line 6 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 6 "../src/ui/play_queue.vala" - result = self->priv->_show_position; -#line 6 "../src/ui/play_queue.vala" - return result; -#line 836 "play_queue.c" -} - -void -ui_play_queue_song_set_show_position (UiPlayQueueSong* self, - gboolean value) -{ - gboolean old_value; -#line 6 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 6 "../src/ui/play_queue.vala" - old_value = ui_play_queue_song_get_show_position (self); -#line 6 "../src/ui/play_queue.vala" - if (old_value != value) { -#line 6 "../src/ui/play_queue.vala" - self->priv->_show_position = value; -#line 6 "../src/ui/play_queue.vala" - g_object_notify_by_pspec ((GObject *) self, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_SHOW_POSITION_PROPERTY]); -#line 854 "play_queue.c" - } -} - -gboolean -ui_play_queue_song_get_show_artist (UiPlayQueueSong* self) -{ - gboolean result; -#line 7 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 7 "../src/ui/play_queue.vala" - result = self->priv->_show_artist; -#line 7 "../src/ui/play_queue.vala" - return result; -#line 868 "play_queue.c" -} - -void -ui_play_queue_song_set_show_artist (UiPlayQueueSong* self, - gboolean value) -{ - gboolean old_value; -#line 7 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 7 "../src/ui/play_queue.vala" - old_value = ui_play_queue_song_get_show_artist (self); -#line 7 "../src/ui/play_queue.vala" - if (old_value != value) { -#line 7 "../src/ui/play_queue.vala" - self->priv->_show_artist = value; -#line 7 "../src/ui/play_queue.vala" - g_object_notify_by_pspec ((GObject *) self, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_SHOW_ARTIST_PROPERTY]); -#line 886 "play_queue.c" - } -} - -gboolean -ui_play_queue_song_get_show_cover (UiPlayQueueSong* self) -{ - gboolean result; -#line 8 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 8 "../src/ui/play_queue.vala" - result = self->priv->_show_cover; -#line 8 "../src/ui/play_queue.vala" - return result; -#line 900 "play_queue.c" -} - -void -ui_play_queue_song_set_show_cover (UiPlayQueueSong* self, - gboolean value) -{ - gboolean old_value; -#line 8 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 8 "../src/ui/play_queue.vala" - old_value = ui_play_queue_song_get_show_cover (self); -#line 8 "../src/ui/play_queue.vala" - if (old_value != value) { -#line 8 "../src/ui/play_queue.vala" - self->priv->_show_cover = value; -#line 8 "../src/ui/play_queue.vala" - g_object_notify_by_pspec ((GObject *) self, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_SHOW_COVER_PROPERTY]); -#line 918 "play_queue.c" - } -} - -gboolean -ui_play_queue_song_get_current (UiPlayQueueSong* self) -{ - gboolean result; -#line 12 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 12 "../src/ui/play_queue.vala" - result = self->priv->_current; -#line 12 "../src/ui/play_queue.vala" - return result; -#line 932 "play_queue.c" -} - -void -ui_play_queue_song_set_current (UiPlayQueueSong* self, - gboolean value) -{ -#line 13 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 14 "../src/ui/play_queue.vala" - self->priv->_current = value; -#line 15 "../src/ui/play_queue.vala" - if (value) { -#line 16 "../src/ui/play_queue.vala" - gtk_widget_add_css_class ((GtkWidget*) self, "playing"); -#line 947 "play_queue.c" - } else { -#line 18 "../src/ui/play_queue.vala" - gtk_widget_remove_css_class ((GtkWidget*) self, "playing"); -#line 951 "play_queue.c" - } -#line 13 "../src/ui/play_queue.vala" - g_object_notify_by_pspec ((GObject *) self, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_CURRENT_PROPERTY]); -#line 955 "play_queue.c" -} - -guint -ui_play_queue_song_get_displayed_position (UiPlayQueueSong* self) -{ - guint result; -#line 22 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, 0U); -#line 22 "../src/ui/play_queue.vala" - result = self->priv->_displayed_position; -#line 22 "../src/ui/play_queue.vala" - return result; -#line 968 "play_queue.c" -} - -void -ui_play_queue_song_set_displayed_position (UiPlayQueueSong* self, - guint value) -{ - guint old_value; -#line 22 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 22 "../src/ui/play_queue.vala" - old_value = ui_play_queue_song_get_displayed_position (self); -#line 22 "../src/ui/play_queue.vala" - if (old_value != value) { -#line 22 "../src/ui/play_queue.vala" - self->priv->_displayed_position = value; -#line 22 "../src/ui/play_queue.vala" - g_object_notify_by_pspec ((GObject *) self, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_DISPLAYED_POSITION_PROPERTY]); -#line 986 "play_queue.c" - } -} - -PlaybinSong* -ui_play_queue_song_get_song (UiPlayQueueSong* self) -{ - PlaybinSong* result; - PlaybinSong* _tmp0_; -#line 23 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 23 "../src/ui/play_queue.vala" - _tmp0_ = self->priv->_song; -#line 23 "../src/ui/play_queue.vala" - result = _tmp0_; -#line 23 "../src/ui/play_queue.vala" - return result; -#line 1003 "play_queue.c" -} - -void -ui_play_queue_song_set_song (UiPlayQueueSong* self, - PlaybinSong* value) -{ - PlaybinSong* old_value; -#line 23 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 23 "../src/ui/play_queue.vala" - old_value = ui_play_queue_song_get_song (self); -#line 23 "../src/ui/play_queue.vala" - if (old_value != value) { -#line 1017 "play_queue.c" - PlaybinSong* _tmp0_; -#line 23 "../src/ui/play_queue.vala" - _tmp0_ = _g_object_ref0 (value); -#line 23 "../src/ui/play_queue.vala" - _g_object_unref0 (self->priv->_song); -#line 23 "../src/ui/play_queue.vala" - self->priv->_song = _tmp0_; -#line 23 "../src/ui/play_queue.vala" - g_object_notify_by_pspec ((GObject *) self, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_SONG_PROPERTY]); -#line 1027 "play_queue.c" - } -} - -static void -ui_play_queue_song_class_init (UiPlayQueueSongClass * klass, - gpointer klass_data) -{ -#line 4 "../src/ui/play_queue.vala" - ui_play_queue_song_parent_class = g_type_class_peek_parent (klass); -#line 4 "../src/ui/play_queue.vala" - g_type_class_adjust_private_offset (klass, &UiPlayQueueSong_private_offset); -#line 4 "../src/ui/play_queue.vala" - G_OBJECT_CLASS (klass)->get_property = _vala_ui_play_queue_song_get_property; -#line 4 "../src/ui/play_queue.vala" - G_OBJECT_CLASS (klass)->set_property = _vala_ui_play_queue_song_set_property; -#line 4 "../src/ui/play_queue.vala" - G_OBJECT_CLASS (klass)->finalize = ui_play_queue_song_finalize; -#line 4 "../src/ui/play_queue.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAY_QUEUE_SONG_DRAGGABLE_PROPERTY, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_DRAGGABLE_PROPERTY] = g_param_spec_boolean ("draggable", "draggable", "draggable", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 4 "../src/ui/play_queue.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAY_QUEUE_SONG_SHOW_POSITION_PROPERTY, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_SHOW_POSITION_PROPERTY] = g_param_spec_boolean ("show-position", "show-position", "show-position", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 4 "../src/ui/play_queue.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAY_QUEUE_SONG_SHOW_ARTIST_PROPERTY, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_SHOW_ARTIST_PROPERTY] = g_param_spec_boolean ("show-artist", "show-artist", "show-artist", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 4 "../src/ui/play_queue.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAY_QUEUE_SONG_SHOW_COVER_PROPERTY, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_SHOW_COVER_PROPERTY] = g_param_spec_boolean ("show-cover", "show-cover", "show-cover", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 4 "../src/ui/play_queue.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAY_QUEUE_SONG_CURRENT_PROPERTY, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_CURRENT_PROPERTY] = g_param_spec_boolean ("current", "current", "current", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 4 "../src/ui/play_queue.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAY_QUEUE_SONG_DISPLAYED_POSITION_PROPERTY, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_DISPLAYED_POSITION_PROPERTY] = g_param_spec_uint ("displayed-position", "displayed-position", "displayed-position", 0, G_MAXUINT, 0U, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 4 "../src/ui/play_queue.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAY_QUEUE_SONG_SONG_PROPERTY, ui_play_queue_song_properties[UI_PLAY_QUEUE_SONG_SONG_PROPERTY] = g_param_spec_object ("song", "song", "song", TYPE_PLAYBIN_SONG, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 4 "../src/ui/play_queue.vala" - gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/eu/callcc/audrey/play_queue_song.ui"); -#line 4 "../src/ui/play_queue.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "format_duration", G_CALLBACK(ui_play_queue_song_format_duration)); -#line 4 "../src/ui/play_queue.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "star_button_icon_name", G_CALLBACK(ui_play_queue_song_star_button_icon_name)); -#line 4 "../src/ui/play_queue.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_drag_prepare", G_CALLBACK(_ui_play_queue_song_on_drag_prepare_gtk_drag_source_prepare)); -#line 4 "../src/ui/play_queue.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_drag_begin", G_CALLBACK(_ui_play_queue_song_on_drag_begin_gtk_drag_source_drag_begin)); -#line 4 "../src/ui/play_queue.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_drop", G_CALLBACK(_ui_play_queue_song_on_drop_gtk_drop_target_drop)); -#line 1071 "play_queue.c" -} - -static void -ui_play_queue_song_instance_init (UiPlayQueueSong * self, - gpointer klass) -{ -#line 4 "../src/ui/play_queue.vala" - self->priv = ui_play_queue_song_get_instance_private (self); -#line 5 "../src/ui/play_queue.vala" - self->priv->_draggable = FALSE; -#line 6 "../src/ui/play_queue.vala" - self->priv->_show_position = FALSE; -#line 7 "../src/ui/play_queue.vala" - self->priv->_show_artist = FALSE; -#line 8 "../src/ui/play_queue.vala" - self->priv->_show_cover = FALSE; -#line 10 "../src/ui/play_queue.vala" - self->priv->_current = FALSE; -#line 4 "../src/ui/play_queue.vala" - gtk_widget_init_template (GTK_WIDGET (self)); -#line 1092 "play_queue.c" -} - -static void -ui_play_queue_song_finalize (GObject * obj) -{ - UiPlayQueueSong * self; -#line 4 "../src/ui/play_queue.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, UI_TYPE_PLAY_QUEUE_SONG, UiPlayQueueSong); -#line 23 "../src/ui/play_queue.vala" - _g_object_unref0 (self->priv->_song); -#line 76 "../src/ui/play_queue.vala" - _g_object_unref0 (self->priv->drag_widget); -#line 4 "../src/ui/play_queue.vala" - G_OBJECT_CLASS (ui_play_queue_song_parent_class)->finalize (obj); -#line 1107 "play_queue.c" -} - -static GType -ui_play_queue_song_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (UiPlayQueueSongClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ui_play_queue_song_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UiPlayQueueSong), 0, (GInstanceInitFunc) ui_play_queue_song_instance_init, NULL }; - GType ui_play_queue_song_type_id; - ui_play_queue_song_type_id = g_type_register_static (gtk_box_get_type (), "UiPlayQueueSong", &g_define_type_info, 0); - UiPlayQueueSong_private_offset = g_type_add_instance_private (ui_play_queue_song_type_id, sizeof (UiPlayQueueSongPrivate)); - return ui_play_queue_song_type_id; -} - -GType -ui_play_queue_song_get_type (void) -{ - static volatile gsize ui_play_queue_song_type_id__once = 0; - if (g_once_init_enter (&ui_play_queue_song_type_id__once)) { - GType ui_play_queue_song_type_id; - ui_play_queue_song_type_id = ui_play_queue_song_get_type_once (); - g_once_init_leave (&ui_play_queue_song_type_id__once, ui_play_queue_song_type_id); - } - return ui_play_queue_song_type_id__once; -} - -static void -_vala_ui_play_queue_song_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec) -{ - UiPlayQueueSong * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, UI_TYPE_PLAY_QUEUE_SONG, UiPlayQueueSong); -#line 4 "../src/ui/play_queue.vala" - switch (property_id) { -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_DRAGGABLE_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - g_value_set_boolean (value, ui_play_queue_song_get_draggable (self)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_SHOW_POSITION_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - g_value_set_boolean (value, ui_play_queue_song_get_show_position (self)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_SHOW_ARTIST_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - g_value_set_boolean (value, ui_play_queue_song_get_show_artist (self)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_SHOW_COVER_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - g_value_set_boolean (value, ui_play_queue_song_get_show_cover (self)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_CURRENT_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - g_value_set_boolean (value, ui_play_queue_song_get_current (self)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_DISPLAYED_POSITION_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - g_value_set_uint (value, ui_play_queue_song_get_displayed_position (self)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_SONG_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - g_value_set_object (value, ui_play_queue_song_get_song (self)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 1184 "play_queue.c" - default: -#line 4 "../src/ui/play_queue.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 4 "../src/ui/play_queue.vala" - break; -#line 1190 "play_queue.c" - } -} - -static void -_vala_ui_play_queue_song_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - UiPlayQueueSong * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, UI_TYPE_PLAY_QUEUE_SONG, UiPlayQueueSong); -#line 4 "../src/ui/play_queue.vala" - switch (property_id) { -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_DRAGGABLE_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - ui_play_queue_song_set_draggable (self, g_value_get_boolean (value)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_SHOW_POSITION_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - ui_play_queue_song_set_show_position (self, g_value_get_boolean (value)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_SHOW_ARTIST_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - ui_play_queue_song_set_show_artist (self, g_value_get_boolean (value)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_SHOW_COVER_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - ui_play_queue_song_set_show_cover (self, g_value_get_boolean (value)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_CURRENT_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - ui_play_queue_song_set_current (self, g_value_get_boolean (value)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_DISPLAYED_POSITION_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - ui_play_queue_song_set_displayed_position (self, g_value_get_uint (value)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 4 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_SONG_SONG_PROPERTY: -#line 4 "../src/ui/play_queue.vala" - ui_play_queue_song_set_song (self, g_value_get_object (value)); -#line 4 "../src/ui/play_queue.vala" - break; -#line 1246 "play_queue.c" - default: -#line 4 "../src/ui/play_queue.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 4 "../src/ui/play_queue.vala" - break; -#line 1252 "play_queue.c" - } -} - -static inline gpointer -ui_play_queue_get_instance_private (UiPlayQueue* self) -{ - return G_STRUCT_MEMBER_P (self, UiPlayQueue_private_offset); -} - -static void -ui_play_queue_on_store_items_changed (UiPlayQueue* self, - GListModel* store, - guint position, - guint removed, - guint added) -{ -#line 134 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 134 "../src/ui/play_queue.vala" - g_return_if_fail (store != NULL); -#line 135 "../src/ui/play_queue.vala" - ui_play_queue_set_can_clear_all (self, g_list_model_get_n_items (store) > ((guint) 0)); -#line 1275 "play_queue.c" -} - -static void -ui_play_queue_on_song_list_setup (UiPlayQueue* self, - GtkSignalListItemFactory* factory, - GObject* object) -{ - GtkListItem* item = NULL; - GtkListItem* _tmp0_; - UiPlayQueueSong* child = NULL; - Playbin* _tmp1_; - Playbin* _tmp2_; - UiPlayQueueSong* _tmp3_; -#line 138 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 138 "../src/ui/play_queue.vala" - g_return_if_fail (factory != NULL); -#line 138 "../src/ui/play_queue.vala" - g_return_if_fail (object != NULL); -#line 139 "../src/ui/play_queue.vala" - _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (object, gtk_list_item_get_type ()) ? ((GtkListItem*) object) : NULL); -#line 139 "../src/ui/play_queue.vala" - item = _tmp0_; -#line 140 "../src/ui/play_queue.vala" - _tmp1_ = ui_play_queue_get_playbin (self); -#line 140 "../src/ui/play_queue.vala" - _tmp2_ = _tmp1_; -#line 140 "../src/ui/play_queue.vala" - _tmp3_ = ui_play_queue_song_new (_tmp2_); -#line 140 "../src/ui/play_queue.vala" - g_object_ref_sink (_tmp3_); -#line 140 "../src/ui/play_queue.vala" - child = _tmp3_; -#line 142 "../src/ui/play_queue.vala" - ui_play_queue_song_set_draggable (child, TRUE); -#line 143 "../src/ui/play_queue.vala" - ui_play_queue_song_set_show_position (child, TRUE); -#line 144 "../src/ui/play_queue.vala" - ui_play_queue_song_set_show_artist (child, TRUE); -#line 145 "../src/ui/play_queue.vala" - ui_play_queue_song_set_show_cover (child, TRUE); -#line 147 "../src/ui/play_queue.vala" - gtk_list_item_set_child (item, (GtkWidget*) child); -#line 138 "../src/ui/play_queue.vala" - _g_object_unref0 (child); -#line 138 "../src/ui/play_queue.vala" - _g_object_unref0 (item); -#line 1323 "play_queue.c" -} - -static void -_ui_play_queue_on_song_list_setup_gtk_signal_list_item_factory_setup (GtkSignalListItemFactory* _sender, - GObject* object, - gpointer self) -{ -#line 115 "../src/ui/play_queue.vala" - ui_play_queue_on_song_list_setup ((UiPlayQueue*) self, _sender, object); -#line 1333 "play_queue.c" -} - -static void -ui_play_queue_on_song_list_bind (UiPlayQueue* self, - GtkSignalListItemFactory* factory, - GObject* object) -{ - GtkListItem* item = NULL; - GtkListItem* _tmp0_; - UiPlayQueueSong* child = NULL; - GtkWidget* _tmp1_; - GtkWidget* _tmp2_; - UiPlayQueueSong* _tmp3_; - guint _tmp4_; - guint _tmp5_; - GObject* _tmp6_; - GObject* _tmp7_; -#line 150 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 150 "../src/ui/play_queue.vala" - g_return_if_fail (factory != NULL); -#line 150 "../src/ui/play_queue.vala" - g_return_if_fail (object != NULL); -#line 151 "../src/ui/play_queue.vala" - _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (object, gtk_list_item_get_type ()) ? ((GtkListItem*) object) : NULL); -#line 151 "../src/ui/play_queue.vala" - item = _tmp0_; -#line 152 "../src/ui/play_queue.vala" - _tmp1_ = gtk_list_item_get_child (item); -#line 152 "../src/ui/play_queue.vala" - _tmp2_ = _tmp1_; -#line 152 "../src/ui/play_queue.vala" - _tmp3_ = _g_object_ref0 (UI_IS_PLAY_QUEUE_SONG (_tmp2_) ? ((UiPlayQueueSong*) _tmp2_) : NULL); -#line 152 "../src/ui/play_queue.vala" - child = _tmp3_; -#line 154 "../src/ui/play_queue.vala" - _tmp4_ = gtk_list_item_get_position (item); -#line 154 "../src/ui/play_queue.vala" - _tmp5_ = _tmp4_; -#line 154 "../src/ui/play_queue.vala" - _tmp6_ = gtk_list_item_get_item (item); -#line 154 "../src/ui/play_queue.vala" - _tmp7_ = _tmp6_; -#line 154 "../src/ui/play_queue.vala" - ui_play_queue_song_bind (child, _tmp5_, IS_PLAYBIN_SONG (_tmp7_) ? ((PlaybinSong*) _tmp7_) : NULL); -#line 150 "../src/ui/play_queue.vala" - _g_object_unref0 (child); -#line 150 "../src/ui/play_queue.vala" - _g_object_unref0 (item); -#line 1383 "play_queue.c" -} - -static void -_ui_play_queue_on_song_list_bind_gtk_signal_list_item_factory_bind (GtkSignalListItemFactory* _sender, - GObject* object, - gpointer self) -{ -#line 115 "../src/ui/play_queue.vala" - ui_play_queue_on_song_list_bind ((UiPlayQueue*) self, _sender, object); -#line 1393 "play_queue.c" -} - -static void -ui_play_queue_on_song_list_unbind (UiPlayQueue* self, - GtkSignalListItemFactory* factory, - GObject* object) -{ - GtkListItem* item = NULL; - GtkListItem* _tmp0_; - UiPlayQueueSong* child = NULL; - GtkWidget* _tmp1_; - GtkWidget* _tmp2_; - UiPlayQueueSong* _tmp3_; -#line 157 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 157 "../src/ui/play_queue.vala" - g_return_if_fail (factory != NULL); -#line 157 "../src/ui/play_queue.vala" - g_return_if_fail (object != NULL); -#line 158 "../src/ui/play_queue.vala" - _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (object, gtk_list_item_get_type ()) ? ((GtkListItem*) object) : NULL); -#line 158 "../src/ui/play_queue.vala" - item = _tmp0_; -#line 159 "../src/ui/play_queue.vala" - _tmp1_ = gtk_list_item_get_child (item); -#line 159 "../src/ui/play_queue.vala" - _tmp2_ = _tmp1_; -#line 159 "../src/ui/play_queue.vala" - _tmp3_ = _g_object_ref0 (UI_IS_PLAY_QUEUE_SONG (_tmp2_) ? ((UiPlayQueueSong*) _tmp2_) : NULL); -#line 159 "../src/ui/play_queue.vala" - child = _tmp3_; -#line 161 "../src/ui/play_queue.vala" - ui_play_queue_song_unbind (child); -#line 157 "../src/ui/play_queue.vala" - _g_object_unref0 (child); -#line 157 "../src/ui/play_queue.vala" - _g_object_unref0 (item); -#line 1431 "play_queue.c" -} - -static void -_ui_play_queue_on_song_list_unbind_gtk_signal_list_item_factory_unbind (GtkSignalListItemFactory* _sender, - GObject* object, - gpointer self) -{ -#line 115 "../src/ui/play_queue.vala" - ui_play_queue_on_song_list_unbind ((UiPlayQueue*) self, _sender, object); -#line 1441 "play_queue.c" -} - -static void -ui_play_queue_on_row_activated (UiPlayQueue* self, - guint position) -{ - Playbin* _tmp0_; - Playbin* _tmp1_; -#line 164 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 165 "../src/ui/play_queue.vala" - _tmp0_ = ui_play_queue_get_playbin (self); -#line 165 "../src/ui/play_queue.vala" - _tmp1_ = _tmp0_; -#line 165 "../src/ui/play_queue.vala" - playbin_select_track (_tmp1_, position); -#line 1458 "play_queue.c" -} - -static void -_ui_play_queue_on_row_activated_gtk_list_view_activate (GtkListView* _sender, - guint position, - gpointer self) -{ -#line 115 "../src/ui/play_queue.vala" - ui_play_queue_on_row_activated ((UiPlayQueue*) self, position); -#line 1468 "play_queue.c" -} - -static gchar* -ui_play_queue_visible_child_name (UiPlayQueue* self, - guint n_items) -{ - const gchar* _tmp0_ = NULL; - gchar* _tmp1_; - gchar* result; -#line 168 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 169 "../src/ui/play_queue.vala" - if (n_items > ((guint) 0)) { -#line 169 "../src/ui/play_queue.vala" - _tmp0_ = "not-empty"; -#line 1484 "play_queue.c" - } else { -#line 169 "../src/ui/play_queue.vala" - _tmp0_ = "empty"; -#line 1488 "play_queue.c" - } -#line 169 "../src/ui/play_queue.vala" - _tmp1_ = g_strdup (_tmp0_); -#line 169 "../src/ui/play_queue.vala" - result = _tmp1_; -#line 169 "../src/ui/play_queue.vala" - return result; -#line 1496 "play_queue.c" -} - -UiPlayQueue* -ui_play_queue_construct (GType object_type) -{ - UiPlayQueue * self = NULL; -#line 115 "../src/ui/play_queue.vala" - self = (UiPlayQueue*) g_object_new (object_type, NULL); -#line 115 "../src/ui/play_queue.vala" - return self; -#line 1507 "play_queue.c" -} - -UiPlayQueue* -ui_play_queue_new (void) -{ -#line 115 "../src/ui/play_queue.vala" - return ui_play_queue_construct (UI_TYPE_PLAY_QUEUE); -#line 1515 "play_queue.c" -} - -Playbin* -ui_play_queue_get_playbin (UiPlayQueue* self) -{ - Playbin* result; - Playbin* _tmp0_; -#line 118 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 118 "../src/ui/play_queue.vala" - _tmp0_ = self->priv->_playbin; -#line 118 "../src/ui/play_queue.vala" - result = _tmp0_; -#line 118 "../src/ui/play_queue.vala" - return result; -#line 1531 "play_queue.c" -} - -static void -_ui_play_queue_on_store_items_changed_g_list_model_items_changed (GListModel* _sender, - guint position, - guint removed, - guint added, - gpointer self) -{ -#line 123 "../src/ui/play_queue.vala" - ui_play_queue_on_store_items_changed ((UiPlayQueue*) self, _sender, position, removed, added); -#line 1543 "play_queue.c" -} - -void -ui_play_queue_set_playbin (UiPlayQueue* self, - Playbin* value) -{ - Playbin* _tmp0_; - Playbin* _tmp1_; - GListModel* _tmp2_; - GListModel* _tmp3_; - Playbin* _tmp4_; - GListModel* _tmp5_; - GListModel* _tmp6_; -#line 119 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 120 "../src/ui/play_queue.vala" - _tmp0_ = self->priv->_playbin; -#line 120 "../src/ui/play_queue.vala" - _vala_assert (_tmp0_ == NULL, "_playbin == null"); -#line 121 "../src/ui/play_queue.vala" - self->priv->_playbin = value; -#line 123 "../src/ui/play_queue.vala" - _tmp1_ = self->priv->_playbin; -#line 123 "../src/ui/play_queue.vala" - _tmp2_ = playbin_get_play_queue (_tmp1_); -#line 123 "../src/ui/play_queue.vala" - _tmp3_ = _tmp2_; -#line 123 "../src/ui/play_queue.vala" - g_signal_connect_object (_tmp3_, "items-changed", (GCallback) _ui_play_queue_on_store_items_changed_g_list_model_items_changed, self, 0); -#line 124 "../src/ui/play_queue.vala" - _tmp4_ = self->priv->_playbin; -#line 124 "../src/ui/play_queue.vala" - _tmp5_ = playbin_get_play_queue (_tmp4_); -#line 124 "../src/ui/play_queue.vala" - _tmp6_ = _tmp5_; -#line 124 "../src/ui/play_queue.vala" - ui_play_queue_set_can_clear_all (self, g_list_model_get_n_items (_tmp6_) > ((guint) 0)); -#line 119 "../src/ui/play_queue.vala" - g_object_notify_by_pspec ((GObject *) self, ui_play_queue_properties[UI_PLAY_QUEUE_PLAYBIN_PROPERTY]); -#line 1583 "play_queue.c" -} - -gboolean -ui_play_queue_get_can_clear_all (UiPlayQueue* self) -{ - gboolean result; -#line 128 "../src/ui/play_queue.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 128 "../src/ui/play_queue.vala" - result = self->priv->_can_clear_all; -#line 128 "../src/ui/play_queue.vala" - return result; -#line 1596 "play_queue.c" -} - -static void -ui_play_queue_set_can_clear_all (UiPlayQueue* self, - gboolean value) -{ - gboolean old_value; -#line 128 "../src/ui/play_queue.vala" - g_return_if_fail (self != NULL); -#line 128 "../src/ui/play_queue.vala" - old_value = ui_play_queue_get_can_clear_all (self); -#line 128 "../src/ui/play_queue.vala" - if (old_value != value) { -#line 128 "../src/ui/play_queue.vala" - self->priv->_can_clear_all = value; -#line 128 "../src/ui/play_queue.vala" - g_object_notify_by_pspec ((GObject *) self, ui_play_queue_properties[UI_PLAY_QUEUE_CAN_CLEAR_ALL_PROPERTY]); -#line 1614 "play_queue.c" - } -} - -static void -ui_play_queue_class_init (UiPlayQueueClass * klass, - gpointer klass_data) -{ -#line 115 "../src/ui/play_queue.vala" - ui_play_queue_parent_class = g_type_class_peek_parent (klass); -#line 115 "../src/ui/play_queue.vala" - g_type_class_adjust_private_offset (klass, &UiPlayQueue_private_offset); -#line 115 "../src/ui/play_queue.vala" - G_OBJECT_CLASS (klass)->get_property = _vala_ui_play_queue_get_property; -#line 115 "../src/ui/play_queue.vala" - G_OBJECT_CLASS (klass)->set_property = _vala_ui_play_queue_set_property; -#line 115 "../src/ui/play_queue.vala" - G_OBJECT_CLASS (klass)->finalize = ui_play_queue_finalize; -#line 115 "../src/ui/play_queue.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAY_QUEUE_PLAYBIN_PROPERTY, ui_play_queue_properties[UI_PLAY_QUEUE_PLAYBIN_PROPERTY] = g_param_spec_object ("playbin", "playbin", "playbin", TYPE_PLAYBIN, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 115 "../src/ui/play_queue.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAY_QUEUE_CAN_CLEAR_ALL_PROPERTY, ui_play_queue_properties[UI_PLAY_QUEUE_CAN_CLEAR_ALL_PROPERTY] = g_param_spec_boolean ("can-clear-all", "can-clear-all", "can-clear-all", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 115 "../src/ui/play_queue.vala" - gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/eu/callcc/audrey/play_queue.ui"); -#line 115 "../src/ui/play_queue.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_song_list_setup", G_CALLBACK(_ui_play_queue_on_song_list_setup_gtk_signal_list_item_factory_setup)); -#line 115 "../src/ui/play_queue.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_song_list_bind", G_CALLBACK(_ui_play_queue_on_song_list_bind_gtk_signal_list_item_factory_bind)); -#line 115 "../src/ui/play_queue.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_song_list_unbind", G_CALLBACK(_ui_play_queue_on_song_list_unbind_gtk_signal_list_item_factory_unbind)); -#line 115 "../src/ui/play_queue.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_row_activated", G_CALLBACK(_ui_play_queue_on_row_activated_gtk_list_view_activate)); -#line 115 "../src/ui/play_queue.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "visible_child_name", G_CALLBACK(ui_play_queue_visible_child_name)); -#line 1648 "play_queue.c" -} - -static void -ui_play_queue_instance_init (UiPlayQueue * self, - gpointer klass) -{ -#line 115 "../src/ui/play_queue.vala" - self->priv = ui_play_queue_get_instance_private (self); -#line 115 "../src/ui/play_queue.vala" - gtk_widget_init_template (GTK_WIDGET (self)); -#line 1659 "play_queue.c" -} - -static void -ui_play_queue_finalize (GObject * obj) -{ - UiPlayQueue * self; -#line 115 "../src/ui/play_queue.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, UI_TYPE_PLAY_QUEUE, UiPlayQueue); -#line 173 "../src/ui/play_queue.vala" - g_debug ("play_queue.vala:173: destroying play queue widget"); -#line 115 "../src/ui/play_queue.vala" - G_OBJECT_CLASS (ui_play_queue_parent_class)->finalize (obj); -#line 1672 "play_queue.c" -} - -static GType -ui_play_queue_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (UiPlayQueueClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ui_play_queue_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UiPlayQueue), 0, (GInstanceInitFunc) ui_play_queue_instance_init, NULL }; - GType ui_play_queue_type_id; - ui_play_queue_type_id = g_type_register_static (adw_bin_get_type (), "UiPlayQueue", &g_define_type_info, 0); - UiPlayQueue_private_offset = g_type_add_instance_private (ui_play_queue_type_id, sizeof (UiPlayQueuePrivate)); - return ui_play_queue_type_id; -} - -GType -ui_play_queue_get_type (void) -{ - static volatile gsize ui_play_queue_type_id__once = 0; - if (g_once_init_enter (&ui_play_queue_type_id__once)) { - GType ui_play_queue_type_id; - ui_play_queue_type_id = ui_play_queue_get_type_once (); - g_once_init_leave (&ui_play_queue_type_id__once, ui_play_queue_type_id); - } - return ui_play_queue_type_id__once; -} - -static void -_vala_ui_play_queue_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec) -{ - UiPlayQueue * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, UI_TYPE_PLAY_QUEUE, UiPlayQueue); -#line 115 "../src/ui/play_queue.vala" - switch (property_id) { -#line 115 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_PLAYBIN_PROPERTY: -#line 115 "../src/ui/play_queue.vala" - g_value_set_object (value, ui_play_queue_get_playbin (self)); -#line 115 "../src/ui/play_queue.vala" - break; -#line 115 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_CAN_CLEAR_ALL_PROPERTY: -#line 115 "../src/ui/play_queue.vala" - g_value_set_boolean (value, ui_play_queue_get_can_clear_all (self)); -#line 115 "../src/ui/play_queue.vala" - break; -#line 1719 "play_queue.c" - default: -#line 115 "../src/ui/play_queue.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 115 "../src/ui/play_queue.vala" - break; -#line 1725 "play_queue.c" - } -} - -static void -_vala_ui_play_queue_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - UiPlayQueue * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, UI_TYPE_PLAY_QUEUE, UiPlayQueue); -#line 115 "../src/ui/play_queue.vala" - switch (property_id) { -#line 115 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_PLAYBIN_PROPERTY: -#line 115 "../src/ui/play_queue.vala" - ui_play_queue_set_playbin (self, g_value_get_object (value)); -#line 115 "../src/ui/play_queue.vala" - break; -#line 115 "../src/ui/play_queue.vala" - case UI_PLAY_QUEUE_CAN_CLEAR_ALL_PROPERTY: -#line 115 "../src/ui/play_queue.vala" - ui_play_queue_set_can_clear_all (self, g_value_get_boolean (value)); -#line 115 "../src/ui/play_queue.vala" - break; -#line 1751 "play_queue.c" - default: -#line 115 "../src/ui/play_queue.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 115 "../src/ui/play_queue.vala" - break; -#line 1757 "play_queue.c" - } -} - diff --git a/src/ui/play_queue.vala b/src/ui/play_queue.vala new file mode 100644 index 0000000..98d02df --- /dev/null +++ b/src/ui/play_queue.vala @@ -0,0 +1,175 @@ +// song widget+drag behavior taken from gnome music + +[GtkTemplate (ui = "/eu/callcc/audrey/play_queue_song.ui")] +class Ui.PlayQueueSong : Gtk.Box { + public bool draggable { get; set; default = false; } + public bool show_position { get; set; default = false; } + public bool show_artist { get; set; default = false; } + public bool show_cover { get; set; default = false; } + + private bool _current = false; + public bool current { + get { return _current; } + set { + this._current = value; + if (value) { + this.add_css_class ("playing"); + } else { + this.remove_css_class ("playing"); + } + } + } + public uint displayed_position { get; set; } + public PlaybinSong song { get; set; } + + private weak Playbin playbin; + public PlayQueueSong (Playbin playbin) { + this.playbin = playbin; + + var action_group = new SimpleActionGroup (); + + var remove = new SimpleAction ("remove", null); + remove.activate.connect (() => { + this.playbin.remove_track (this.displayed_position-1); + }); + action_group.add_action (remove); + + this.insert_action_group ("song", action_group); + } + + private ulong connection; + public void bind (uint position, PlaybinSong song) { + this.displayed_position = position+1; + this.song = song; + this.current = this.playbin.play_queue_position == position; + this.connection = this.playbin.notify["play-queue-position"].connect (() => { + this.current = this.playbin.play_queue_position == position; + }); + + song.need_cover_art (); + } + + public void unbind () { + this.playbin.disconnect (this.connection); + } + + [GtkCallback] private string format_duration (int duration) { + return "%02d:%02d".printf(duration/60, duration%60); + } + + [GtkCallback] private string star_button_icon_name (DateTime? starred) { + return starred == null ? "non-starred" : "starred"; + } + + private double drag_x; + private double drag_y; + + [GtkCallback] private Gdk.ContentProvider? on_drag_prepare (double x, double y) { + if (this.draggable) { + this.drag_x = x; + this.drag_y = y; + return new Gdk.ContentProvider.for_value (this); + } + else return null; + } + + private Gtk.ListBox? drag_widget; + + [GtkCallback] private void on_drag_begin (Gtk.DragSource source, Gdk.Drag drag) { + this.drag_widget = new Gtk.ListBox (); + + var drag_row = new PlayQueueSong (this.playbin); + drag_row.draggable = false; + drag_row.show_position = this.show_position; + drag_row.show_artist = this.show_artist; + drag_row.show_cover = this.show_cover; + drag_row.current = false; + drag_row.displayed_position = this.displayed_position; + drag_row.song = this.song; + drag_row.set_size_request (this.get_width (), this.get_height ()); + + var drag_row_real = new Gtk.ListBoxRow (); + drag_row_real.child = drag_row; + + this.drag_widget.append (drag_row_real); + this.drag_widget.drag_highlight_row (drag_row_real); + + var drag_icon = Gtk.DragIcon.get_for_drag (drag); + drag_icon.set("child", this.drag_widget); + drag.set_hotspot ((int) this.drag_x, (int) this.drag_y); + } + + [GtkCallback] private bool on_drop (Value value, double x, double y) { + this.drag_widget = null; + this.drag_x = 0.0; + this.drag_y = 0.0; + + var source = value as PlayQueueSong; + debug ("dropped %u on %u", source.displayed_position, this.displayed_position); + this.playbin.move_track (source.displayed_position-1, this.displayed_position-1); + return false; + } +} + +[GtkTemplate (ui = "/eu/callcc/audrey/play_queue.ui")] +public class Ui.PlayQueue : Adw.Bin { + private weak Playbin _playbin; + public Playbin playbin { + get { return _playbin; } + set { + assert (_playbin == null); // only set once + _playbin = value; + + _playbin.play_queue.items_changed.connect (this.on_store_items_changed); + this.can_clear_all = _playbin.play_queue.get_n_items () > 0; + } + } + + public bool can_clear_all { get; private set; } + + /*[GtkCallback] private void on_clear () { + this.playbin.clear (); + }*/ + + private void on_store_items_changed (GLib.ListModel store, uint position, uint removed, uint added) { + this.can_clear_all = store.get_n_items () > 0; + } + + [GtkCallback] private void on_song_list_setup (Gtk.SignalListItemFactory factory, Object object) { + var item = object as Gtk.ListItem; + var child = new PlayQueueSong (this.playbin); + + child.draggable = true; + child.show_position = true; + child.show_artist = true; + child.show_cover = true; + + item.child = child; + } + + [GtkCallback] private void on_song_list_bind (Gtk.SignalListItemFactory factory, Object object) { + var item = object as Gtk.ListItem; + var child = item.child as PlayQueueSong; + + child.bind (item.position, item.item as PlaybinSong); + } + + [GtkCallback] private void on_song_list_unbind (Gtk.SignalListItemFactory factory, Object object) { + var item = object as Gtk.ListItem; + var child = item.child as PlayQueueSong; + + child.unbind (); + } + + [GtkCallback] private void on_row_activated (uint position) { + playbin.select_track (position); + } + + [GtkCallback] private string visible_child_name (uint n_items) { + return n_items > 0 ? "not-empty" : "empty"; + } + + ~PlayQueue () { + debug ("destroying play queue widget"); + } +} diff --git a/src/ui/playbar.c b/src/ui/playbar.c deleted file mode 100644 index 0bf224b..0000000 --- a/src/ui/playbar.c +++ /dev/null @@ -1,1138 +0,0 @@ -/* playbar.c generated by valac 0.56.16, the Vala compiler - * generated from playbar.vala, do not modify */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(VALA_STRICT_C) -#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14) -#pragma GCC diagnostic warning "-Wincompatible-pointer-types" -#elif defined(__clang__) && (__clang_major__ >= 16) -#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types" -#pragma clang diagnostic ignored "-Wincompatible-pointer-types" -#endif -#endif -#if !defined(VALA_EXTERN) -#if defined(_MSC_VER) -#define VALA_EXTERN __declspec(dllexport) extern -#elif __GNUC__ >= 4 -#define VALA_EXTERN __attribute__((visibility("default"))) extern -#else -#define VALA_EXTERN extern -#endif -#endif - -#define UI_TYPE_PLAYBAR (ui_playbar_get_type ()) -#define UI_PLAYBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_PLAYBAR, UiPlaybar)) -#define UI_PLAYBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_PLAYBAR, UiPlaybarClass)) -#define UI_IS_PLAYBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_PLAYBAR)) -#define UI_IS_PLAYBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_PLAYBAR)) -#define UI_PLAYBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_PLAYBAR, UiPlaybarClass)) - -typedef struct _UiPlaybar UiPlaybar; -typedef struct _UiPlaybarClass UiPlaybarClass; -typedef struct _UiPlaybarPrivate UiPlaybarPrivate; - -#define TYPE_PLAYBIN_SONG (playbin_song_get_type ()) -#define PLAYBIN_SONG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYBIN_SONG, PlaybinSong)) -#define PLAYBIN_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYBIN_SONG, PlaybinSongClass)) -#define IS_PLAYBIN_SONG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYBIN_SONG)) -#define IS_PLAYBIN_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYBIN_SONG)) -#define PLAYBIN_SONG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYBIN_SONG, PlaybinSongClass)) - -typedef struct _PlaybinSong PlaybinSong; -typedef struct _PlaybinSongClass PlaybinSongClass; - -#define TYPE_PLAYBIN (playbin_get_type ()) -#define PLAYBIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYBIN, Playbin)) -#define PLAYBIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYBIN, PlaybinClass)) -#define IS_PLAYBIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYBIN)) -#define IS_PLAYBIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYBIN)) -#define PLAYBIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYBIN, PlaybinClass)) - -typedef struct _Playbin Playbin; -typedef struct _PlaybinClass PlaybinClass; -enum { - UI_PLAYBAR_0_PROPERTY, - UI_PLAYBAR_SONG_PROPERTY, - UI_PLAYBAR_PLAYING_COVER_ART_PROPERTY, - UI_PLAYBAR_PLAYBIN_PROPERTY, - UI_PLAYBAR_SHOW_COVER_ART_PROPERTY, - UI_PLAYBAR_VOLUME_PROPERTY, - UI_PLAYBAR_NUM_PROPERTIES -}; -static GParamSpec* ui_playbar_properties[UI_PLAYBAR_NUM_PROPERTIES]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -typedef enum { - PLAYBIN_STATE_STOPPED, - PLAYBIN_STATE_PAUSED, - PLAYBIN_STATE_PLAYING -} PlaybinState; - -#define TYPE_PLAYBIN_STATE (playbin_state_get_type ()) - -struct _UiPlaybar { - AdwBin parent_instance; - UiPlaybarPrivate * priv; -}; - -struct _UiPlaybarClass { - AdwBinClass parent_class; -}; - -struct _UiPlaybarPrivate { - PlaybinSong* _song; - GdkPaintable* _playing_cover_art; - Playbin* _playbin; - gboolean _show_cover_art; -}; - -static gint UiPlaybar_private_offset; -static gpointer ui_playbar_parent_class = NULL; - -VALA_EXTERN GType ui_playbar_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (UiPlaybar, g_object_unref) -VALA_EXTERN GType playbin_song_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (PlaybinSong, g_object_unref) -VALA_EXTERN GType playbin_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (Playbin, g_object_unref) -static gchar* ui_playbar_format_timestamp (UiPlaybar* self, - gdouble s); -static gboolean ui_playbar_on_play_position_seek (UiPlaybar* self, - GtkRange* range, - GtkScrollType scroll_type, - gdouble value); -VALA_EXTERN Playbin* ui_playbar_get_playbin (UiPlaybar* self); -VALA_EXTERN void playbin_seek (Playbin* self, - gdouble position); -static gboolean _ui_playbar_on_play_position_seek_gtk_range_change_value (GtkRange* _sender, - GtkScrollType scroll, - gdouble new_value, - gpointer self); -static void ui_playbar_on_play_pause_clicked (UiPlaybar* self); -VALA_EXTERN GType playbin_state_get_type (void) G_GNUC_CONST ; -VALA_EXTERN PlaybinState playbin_get_state (Playbin* self); -VALA_EXTERN void playbin_pause (Playbin* self); -VALA_EXTERN void playbin_play (Playbin* self); -static void _ui_playbar_on_play_pause_clicked_gtk_button_clicked (GtkButton* _sender, - gpointer self); -static gchar* ui_playbar_play_pause_icon_name (UiPlaybar* self, - PlaybinState state); -static gboolean ui_playbar_playbin_active (UiPlaybar* self, - PlaybinState state); -static gboolean ui_playbar_can_press_play (UiPlaybar* self, - PlaybinState state, - guint n_items); -static gchar* ui_playbar_mute_button_icon_name (UiPlaybar* self, - gboolean mute); -static void ui_playbar_on_mute_toggle (UiPlaybar* self); -VALA_EXTERN gboolean playbin_get_mute (Playbin* self); -VALA_EXTERN void playbin_set_mute (Playbin* self, - gboolean value); -static void _ui_playbar_on_mute_toggle_gtk_button_clicked (GtkButton* _sender, - gpointer self); -static void ui_playbar_on_skip_forward_clicked (UiPlaybar* self); -VALA_EXTERN void playbin_go_to_next_track (Playbin* self); -static void _ui_playbar_on_skip_forward_clicked_gtk_button_clicked (GtkButton* _sender, - gpointer self); -static void ui_playbar_on_skip_backward_clicked (UiPlaybar* self); -VALA_EXTERN void playbin_go_to_prev_track (Playbin* self); -static void _ui_playbar_on_skip_backward_clicked_gtk_button_clicked (GtkButton* _sender, - gpointer self); -static void ui_playbar_seek_backward (UiPlaybar* self); -VALA_EXTERN gdouble playbin_get_position (Playbin* self); -static void _ui_playbar_seek_backward_gtk_button_clicked (GtkButton* _sender, - gpointer self); -static void ui_playbar_seek_forward (UiPlaybar* self); -VALA_EXTERN gdouble playbin_get_duration (Playbin* self); -static void _ui_playbar_seek_forward_gtk_button_clicked (GtkButton* _sender, - gpointer self); -static gchar* ui_playbar_song_title (UiPlaybar* self, - PlaybinSong* song); -VALA_EXTERN const gchar* playbin_song_get_title (PlaybinSong* self); -static gchar* ui_playbar_song_artist (UiPlaybar* self, - PlaybinSong* song); -VALA_EXTERN const gchar* playbin_song_get_artist (PlaybinSong* self); -static gchar* ui_playbar_song_album (UiPlaybar* self, - PlaybinSong* song); -VALA_EXTERN const gchar* playbin_song_get_album (PlaybinSong* self); -VALA_EXTERN UiPlaybar* ui_playbar_new (void); -VALA_EXTERN UiPlaybar* ui_playbar_construct (GType object_type); -VALA_EXTERN PlaybinSong* ui_playbar_get_song (UiPlaybar* self); -VALA_EXTERN void ui_playbar_set_song (UiPlaybar* self, - PlaybinSong* value); -VALA_EXTERN GdkPaintable* ui_playbar_get_playing_cover_art (UiPlaybar* self); -VALA_EXTERN void ui_playbar_set_playing_cover_art (UiPlaybar* self, - GdkPaintable* value); -VALA_EXTERN void ui_playbar_set_playbin (UiPlaybar* self, - Playbin* value); -VALA_EXTERN gboolean ui_playbar_get_show_cover_art (UiPlaybar* self); -VALA_EXTERN void ui_playbar_set_show_cover_art (UiPlaybar* self, - gboolean value); -VALA_EXTERN gint ui_playbar_get_volume (UiPlaybar* self); -VALA_EXTERN gint playbin_get_volume (Playbin* self); -VALA_EXTERN void ui_playbar_set_volume (UiPlaybar* self, - gint value); -VALA_EXTERN void playbin_set_volume (Playbin* self, - gint value); -static void ui_playbar_finalize (GObject * obj); -static GType ui_playbar_get_type_once (void); -static void _vala_ui_playbar_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec); -static void _vala_ui_playbar_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec); - -static inline gpointer -ui_playbar_get_instance_private (UiPlaybar* self) -{ - return G_STRUCT_MEMBER_P (self, UiPlaybar_private_offset); -} - -static gchar* -ui_playbar_format_timestamp (UiPlaybar* self, - gdouble s) -{ - gchar* _tmp0_; - gchar* result; -#line 13 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 14 "../src/ui/playbar.vala" - _tmp0_ = g_strdup_printf ("%02d:%02d", ((gint) s) / 60, ((gint) s) % 60); -#line 14 "../src/ui/playbar.vala" - result = _tmp0_; -#line 14 "../src/ui/playbar.vala" - return result; -#line 217 "playbar.c" -} - -static gboolean -ui_playbar_on_play_position_seek (UiPlaybar* self, - GtkRange* range, - GtkScrollType scroll_type, - gdouble value) -{ - GtkAdjustment* _tmp0_; - GtkAdjustment* _tmp1_; - gdouble _tmp2_; - gdouble _tmp3_; - GtkAdjustment* _tmp4_; - GtkAdjustment* _tmp5_; - gdouble _tmp6_; - gdouble _tmp7_; - gboolean result; -#line 17 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 17 "../src/ui/playbar.vala" - g_return_val_if_fail (range != NULL, FALSE); -#line 18 "../src/ui/playbar.vala" - _tmp0_ = gtk_range_get_adjustment (range); -#line 18 "../src/ui/playbar.vala" - _tmp1_ = _tmp0_; -#line 18 "../src/ui/playbar.vala" - _tmp2_ = gtk_adjustment_get_lower (_tmp1_); -#line 18 "../src/ui/playbar.vala" - _tmp3_ = _tmp2_; -#line 18 "../src/ui/playbar.vala" - _tmp4_ = gtk_range_get_adjustment (range); -#line 18 "../src/ui/playbar.vala" - _tmp5_ = _tmp4_; -#line 18 "../src/ui/playbar.vala" - _tmp6_ = gtk_adjustment_get_upper (_tmp5_); -#line 18 "../src/ui/playbar.vala" - _tmp7_ = _tmp6_; -#line 18 "../src/ui/playbar.vala" - if (_tmp3_ < _tmp7_) { -#line 257 "playbar.c" - Playbin* _tmp8_; -#line 19 "../src/ui/playbar.vala" - _tmp8_ = self->priv->_playbin; -#line 19 "../src/ui/playbar.vala" - playbin_seek (_tmp8_, (gdouble) ((gint64) value)); -#line 263 "playbar.c" - } -#line 21 "../src/ui/playbar.vala" - result = FALSE; -#line 21 "../src/ui/playbar.vala" - return result; -#line 269 "playbar.c" -} - -static gboolean -_ui_playbar_on_play_position_seek_gtk_range_change_value (GtkRange* _sender, - GtkScrollType scroll, - gdouble new_value, - gpointer self) -{ - gboolean result; - result = ui_playbar_on_play_position_seek ((UiPlaybar*) self, _sender, scroll, new_value); -#line 2 "../src/ui/playbar.vala" - return result; -#line 282 "playbar.c" -} - -static void -ui_playbar_on_play_pause_clicked (UiPlaybar* self) -{ - Playbin* _tmp0_; - PlaybinState _tmp1_; - PlaybinState _tmp2_; -#line 24 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 25 "../src/ui/playbar.vala" - _tmp0_ = self->priv->_playbin; -#line 25 "../src/ui/playbar.vala" - _tmp1_ = playbin_get_state (_tmp0_); -#line 25 "../src/ui/playbar.vala" - _tmp2_ = _tmp1_; -#line 25 "../src/ui/playbar.vala" - if (_tmp2_ == PLAYBIN_STATE_PLAYING) { -#line 301 "playbar.c" - Playbin* _tmp3_; -#line 26 "../src/ui/playbar.vala" - _tmp3_ = self->priv->_playbin; -#line 26 "../src/ui/playbar.vala" - playbin_pause (_tmp3_); -#line 307 "playbar.c" - } else { - Playbin* _tmp4_; -#line 28 "../src/ui/playbar.vala" - _tmp4_ = self->priv->_playbin; -#line 28 "../src/ui/playbar.vala" - playbin_play (_tmp4_); -#line 314 "playbar.c" - } -} - -static void -_ui_playbar_on_play_pause_clicked_gtk_button_clicked (GtkButton* _sender, - gpointer self) -{ -#line 2 "../src/ui/playbar.vala" - ui_playbar_on_play_pause_clicked ((UiPlaybar*) self); -#line 324 "playbar.c" -} - -static gchar* -ui_playbar_play_pause_icon_name (UiPlaybar* self, - PlaybinState state) -{ - gchar* result; -#line 32 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 33 "../src/ui/playbar.vala" - if (state == PLAYBIN_STATE_PLAYING) { -#line 336 "playbar.c" - gchar* _tmp0_; -#line 34 "../src/ui/playbar.vala" - _tmp0_ = g_strdup ("media-playback-pause"); -#line 34 "../src/ui/playbar.vala" - result = _tmp0_; -#line 34 "../src/ui/playbar.vala" - return result; -#line 344 "playbar.c" - } else { - gchar* _tmp1_; -#line 36 "../src/ui/playbar.vala" - _tmp1_ = g_strdup ("media-playback-start"); -#line 36 "../src/ui/playbar.vala" - result = _tmp1_; -#line 36 "../src/ui/playbar.vala" - return result; -#line 353 "playbar.c" - } -} - -static gboolean -ui_playbar_playbin_active (UiPlaybar* self, - PlaybinState state) -{ - gboolean result; -#line 40 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 41 "../src/ui/playbar.vala" - result = state != PLAYBIN_STATE_STOPPED; -#line 41 "../src/ui/playbar.vala" - return result; -#line 368 "playbar.c" -} - -static gboolean -ui_playbar_can_press_play (UiPlaybar* self, - PlaybinState state, - guint n_items) -{ - gboolean _tmp0_ = FALSE; - gboolean result; -#line 44 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 45 "../src/ui/playbar.vala" - if (state == PLAYBIN_STATE_STOPPED) { -#line 45 "../src/ui/playbar.vala" - _tmp0_ = n_items == ((guint) 0); -#line 384 "playbar.c" - } else { -#line 45 "../src/ui/playbar.vala" - _tmp0_ = FALSE; -#line 388 "playbar.c" - } -#line 45 "../src/ui/playbar.vala" - result = !_tmp0_; -#line 45 "../src/ui/playbar.vala" - return result; -#line 394 "playbar.c" -} - -static gchar* -ui_playbar_mute_button_icon_name (UiPlaybar* self, - gboolean mute) -{ - const gchar* _tmp0_ = NULL; - gchar* _tmp1_; - gchar* result; -#line 48 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 49 "../src/ui/playbar.vala" - if (mute) { -#line 49 "../src/ui/playbar.vala" - _tmp0_ = "audio-volume-muted"; -#line 410 "playbar.c" - } else { -#line 49 "../src/ui/playbar.vala" - _tmp0_ = "audio-volume-high"; -#line 414 "playbar.c" - } -#line 49 "../src/ui/playbar.vala" - _tmp1_ = g_strdup (_tmp0_); -#line 49 "../src/ui/playbar.vala" - result = _tmp1_; -#line 49 "../src/ui/playbar.vala" - return result; -#line 422 "playbar.c" -} - -static void -ui_playbar_on_mute_toggle (UiPlaybar* self) -{ - Playbin* _tmp0_; - Playbin* _tmp1_; - gboolean _tmp2_; - gboolean _tmp3_; -#line 52 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 53 "../src/ui/playbar.vala" - _tmp0_ = self->priv->_playbin; -#line 53 "../src/ui/playbar.vala" - _tmp1_ = self->priv->_playbin; -#line 53 "../src/ui/playbar.vala" - _tmp2_ = playbin_get_mute (_tmp1_); -#line 53 "../src/ui/playbar.vala" - _tmp3_ = _tmp2_; -#line 53 "../src/ui/playbar.vala" - playbin_set_mute (_tmp0_, !_tmp3_); -#line 444 "playbar.c" -} - -static void -_ui_playbar_on_mute_toggle_gtk_button_clicked (GtkButton* _sender, - gpointer self) -{ -#line 2 "../src/ui/playbar.vala" - ui_playbar_on_mute_toggle ((UiPlaybar*) self); -#line 453 "playbar.c" -} - -static void -ui_playbar_on_skip_forward_clicked (UiPlaybar* self) -{ - Playbin* _tmp0_; -#line 56 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 57 "../src/ui/playbar.vala" - _tmp0_ = self->priv->_playbin; -#line 57 "../src/ui/playbar.vala" - playbin_go_to_next_track (_tmp0_); -#line 466 "playbar.c" -} - -static void -_ui_playbar_on_skip_forward_clicked_gtk_button_clicked (GtkButton* _sender, - gpointer self) -{ -#line 2 "../src/ui/playbar.vala" - ui_playbar_on_skip_forward_clicked ((UiPlaybar*) self); -#line 475 "playbar.c" -} - -static void -ui_playbar_on_skip_backward_clicked (UiPlaybar* self) -{ - Playbin* _tmp0_; -#line 60 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 61 "../src/ui/playbar.vala" - _tmp0_ = self->priv->_playbin; -#line 61 "../src/ui/playbar.vala" - playbin_go_to_prev_track (_tmp0_); -#line 488 "playbar.c" -} - -static void -_ui_playbar_on_skip_backward_clicked_gtk_button_clicked (GtkButton* _sender, - gpointer self) -{ -#line 2 "../src/ui/playbar.vala" - ui_playbar_on_skip_backward_clicked ((UiPlaybar*) self); -#line 497 "playbar.c" -} - -static void -ui_playbar_seek_backward (UiPlaybar* self) -{ - gdouble new_position = 0.0; - Playbin* _tmp0_; - gdouble _tmp1_; - gdouble _tmp2_; - Playbin* _tmp3_; -#line 64 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 66 "../src/ui/playbar.vala" - _tmp0_ = self->priv->_playbin; -#line 66 "../src/ui/playbar.vala" - _tmp1_ = playbin_get_position (_tmp0_); -#line 66 "../src/ui/playbar.vala" - _tmp2_ = _tmp1_; -#line 66 "../src/ui/playbar.vala" - new_position = _tmp2_ - 10.0; -#line 67 "../src/ui/playbar.vala" - if (new_position < 0.0) { -#line 67 "../src/ui/playbar.vala" - new_position = 0.0; -#line 522 "playbar.c" - } -#line 68 "../src/ui/playbar.vala" - _tmp3_ = self->priv->_playbin; -#line 68 "../src/ui/playbar.vala" - playbin_seek (_tmp3_, new_position); -#line 528 "playbar.c" -} - -static void -_ui_playbar_seek_backward_gtk_button_clicked (GtkButton* _sender, - gpointer self) -{ -#line 2 "../src/ui/playbar.vala" - ui_playbar_seek_backward ((UiPlaybar*) self); -#line 537 "playbar.c" -} - -static void -ui_playbar_seek_forward (UiPlaybar* self) -{ - gdouble new_position = 0.0; - Playbin* _tmp0_; - gdouble _tmp1_; - gdouble _tmp2_; - Playbin* _tmp3_; - gdouble _tmp4_; - gdouble _tmp5_; - Playbin* _tmp9_; -#line 71 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 73 "../src/ui/playbar.vala" - _tmp0_ = self->priv->_playbin; -#line 73 "../src/ui/playbar.vala" - _tmp1_ = playbin_get_position (_tmp0_); -#line 73 "../src/ui/playbar.vala" - _tmp2_ = _tmp1_; -#line 73 "../src/ui/playbar.vala" - new_position = _tmp2_ + 10.0; -#line 74 "../src/ui/playbar.vala" - _tmp3_ = self->priv->_playbin; -#line 74 "../src/ui/playbar.vala" - _tmp4_ = playbin_get_duration (_tmp3_); -#line 74 "../src/ui/playbar.vala" - _tmp5_ = _tmp4_; -#line 74 "../src/ui/playbar.vala" - if (new_position > _tmp5_) { -#line 569 "playbar.c" - Playbin* _tmp6_; - gdouble _tmp7_; - gdouble _tmp8_; -#line 74 "../src/ui/playbar.vala" - _tmp6_ = self->priv->_playbin; -#line 74 "../src/ui/playbar.vala" - _tmp7_ = playbin_get_duration (_tmp6_); -#line 74 "../src/ui/playbar.vala" - _tmp8_ = _tmp7_; -#line 74 "../src/ui/playbar.vala" - new_position = _tmp8_; -#line 581 "playbar.c" - } -#line 75 "../src/ui/playbar.vala" - _tmp9_ = self->priv->_playbin; -#line 75 "../src/ui/playbar.vala" - playbin_seek (_tmp9_, new_position); -#line 587 "playbar.c" -} - -static void -_ui_playbar_seek_forward_gtk_button_clicked (GtkButton* _sender, - gpointer self) -{ -#line 2 "../src/ui/playbar.vala" - ui_playbar_seek_forward ((UiPlaybar*) self); -#line 596 "playbar.c" -} - -static gchar* -ui_playbar_song_title (UiPlaybar* self, - PlaybinSong* song) -{ - const gchar* _tmp0_ = NULL; - gchar* _tmp3_; - gchar* result; -#line 78 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 79 "../src/ui/playbar.vala" - if (song == NULL) { -#line 79 "../src/ui/playbar.vala" - _tmp0_ = ""; -#line 612 "playbar.c" - } else { - const gchar* _tmp1_; - const gchar* _tmp2_; -#line 79 "../src/ui/playbar.vala" - _tmp1_ = playbin_song_get_title (song); -#line 79 "../src/ui/playbar.vala" - _tmp2_ = _tmp1_; -#line 79 "../src/ui/playbar.vala" - _tmp0_ = _tmp2_; -#line 622 "playbar.c" - } -#line 79 "../src/ui/playbar.vala" - _tmp3_ = g_strdup (_tmp0_); -#line 79 "../src/ui/playbar.vala" - result = _tmp3_; -#line 79 "../src/ui/playbar.vala" - return result; -#line 630 "playbar.c" -} - -static gchar* -ui_playbar_song_artist (UiPlaybar* self, - PlaybinSong* song) -{ - const gchar* _tmp0_ = NULL; - gchar* _tmp3_; - gchar* result; -#line 82 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 83 "../src/ui/playbar.vala" - if (song == NULL) { -#line 83 "../src/ui/playbar.vala" - _tmp0_ = ""; -#line 646 "playbar.c" - } else { - const gchar* _tmp1_; - const gchar* _tmp2_; -#line 83 "../src/ui/playbar.vala" - _tmp1_ = playbin_song_get_artist (song); -#line 83 "../src/ui/playbar.vala" - _tmp2_ = _tmp1_; -#line 83 "../src/ui/playbar.vala" - _tmp0_ = _tmp2_; -#line 656 "playbar.c" - } -#line 83 "../src/ui/playbar.vala" - _tmp3_ = g_strdup (_tmp0_); -#line 83 "../src/ui/playbar.vala" - result = _tmp3_; -#line 83 "../src/ui/playbar.vala" - return result; -#line 664 "playbar.c" -} - -static gchar* -ui_playbar_song_album (UiPlaybar* self, - PlaybinSong* song) -{ - const gchar* _tmp0_ = NULL; - gchar* _tmp3_; - gchar* result; -#line 86 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 87 "../src/ui/playbar.vala" - if (song == NULL) { -#line 87 "../src/ui/playbar.vala" - _tmp0_ = ""; -#line 680 "playbar.c" - } else { - const gchar* _tmp1_; - const gchar* _tmp2_; -#line 87 "../src/ui/playbar.vala" - _tmp1_ = playbin_song_get_album (song); -#line 87 "../src/ui/playbar.vala" - _tmp2_ = _tmp1_; -#line 87 "../src/ui/playbar.vala" - _tmp0_ = _tmp2_; -#line 690 "playbar.c" - } -#line 87 "../src/ui/playbar.vala" - _tmp3_ = g_strdup (_tmp0_); -#line 87 "../src/ui/playbar.vala" - result = _tmp3_; -#line 87 "../src/ui/playbar.vala" - return result; -#line 698 "playbar.c" -} - -UiPlaybar* -ui_playbar_construct (GType object_type) -{ - UiPlaybar * self = NULL; -#line 2 "../src/ui/playbar.vala" - self = (UiPlaybar*) g_object_new (object_type, NULL); -#line 2 "../src/ui/playbar.vala" - return self; -#line 709 "playbar.c" -} - -UiPlaybar* -ui_playbar_new (void) -{ -#line 2 "../src/ui/playbar.vala" - return ui_playbar_construct (UI_TYPE_PLAYBAR); -#line 717 "playbar.c" -} - -PlaybinSong* -ui_playbar_get_song (UiPlaybar* self) -{ - PlaybinSong* result; - PlaybinSong* _tmp0_; -#line 3 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 3 "../src/ui/playbar.vala" - _tmp0_ = self->priv->_song; -#line 3 "../src/ui/playbar.vala" - result = _tmp0_; -#line 3 "../src/ui/playbar.vala" - return result; -#line 733 "playbar.c" -} - -static gpointer -_g_object_ref0 (gpointer self) -{ -#line 3 "../src/ui/playbar.vala" - return self ? g_object_ref (self) : NULL; -#line 741 "playbar.c" -} - -void -ui_playbar_set_song (UiPlaybar* self, - PlaybinSong* value) -{ - PlaybinSong* old_value; -#line 3 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 3 "../src/ui/playbar.vala" - old_value = ui_playbar_get_song (self); -#line 3 "../src/ui/playbar.vala" - if (old_value != value) { -#line 755 "playbar.c" - PlaybinSong* _tmp0_; -#line 3 "../src/ui/playbar.vala" - _tmp0_ = _g_object_ref0 (value); -#line 3 "../src/ui/playbar.vala" - _g_object_unref0 (self->priv->_song); -#line 3 "../src/ui/playbar.vala" - self->priv->_song = _tmp0_; -#line 3 "../src/ui/playbar.vala" - g_object_notify_by_pspec ((GObject *) self, ui_playbar_properties[UI_PLAYBAR_SONG_PROPERTY]); -#line 765 "playbar.c" - } -} - -GdkPaintable* -ui_playbar_get_playing_cover_art (UiPlaybar* self) -{ - GdkPaintable* result; - GdkPaintable* _tmp0_; -#line 4 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 4 "../src/ui/playbar.vala" - _tmp0_ = self->priv->_playing_cover_art; -#line 4 "../src/ui/playbar.vala" - result = _tmp0_; -#line 4 "../src/ui/playbar.vala" - return result; -#line 782 "playbar.c" -} - -void -ui_playbar_set_playing_cover_art (UiPlaybar* self, - GdkPaintable* value) -{ - GdkPaintable* old_value; -#line 4 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 4 "../src/ui/playbar.vala" - old_value = ui_playbar_get_playing_cover_art (self); -#line 4 "../src/ui/playbar.vala" - if (old_value != value) { -#line 796 "playbar.c" - GdkPaintable* _tmp0_; -#line 4 "../src/ui/playbar.vala" - _tmp0_ = _g_object_ref0 (value); -#line 4 "../src/ui/playbar.vala" - _g_object_unref0 (self->priv->_playing_cover_art); -#line 4 "../src/ui/playbar.vala" - self->priv->_playing_cover_art = _tmp0_; -#line 4 "../src/ui/playbar.vala" - g_object_notify_by_pspec ((GObject *) self, ui_playbar_properties[UI_PLAYBAR_PLAYING_COVER_ART_PROPERTY]); -#line 806 "playbar.c" - } -} - -Playbin* -ui_playbar_get_playbin (UiPlaybar* self) -{ - Playbin* result; - Playbin* _tmp0_; -#line 5 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 5 "../src/ui/playbar.vala" - _tmp0_ = self->priv->_playbin; -#line 5 "../src/ui/playbar.vala" - result = _tmp0_; -#line 5 "../src/ui/playbar.vala" - return result; -#line 823 "playbar.c" -} - -void -ui_playbar_set_playbin (UiPlaybar* self, - Playbin* value) -{ - Playbin* old_value; -#line 5 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 5 "../src/ui/playbar.vala" - old_value = ui_playbar_get_playbin (self); -#line 5 "../src/ui/playbar.vala" - if (old_value != value) { -#line 5 "../src/ui/playbar.vala" - self->priv->_playbin = value; -#line 5 "../src/ui/playbar.vala" - g_object_notify_by_pspec ((GObject *) self, ui_playbar_properties[UI_PLAYBAR_PLAYBIN_PROPERTY]); -#line 841 "playbar.c" - } -} - -gboolean -ui_playbar_get_show_cover_art (UiPlaybar* self) -{ - gboolean result; -#line 6 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 6 "../src/ui/playbar.vala" - result = self->priv->_show_cover_art; -#line 6 "../src/ui/playbar.vala" - return result; -#line 855 "playbar.c" -} - -void -ui_playbar_set_show_cover_art (UiPlaybar* self, - gboolean value) -{ - gboolean old_value; -#line 6 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 6 "../src/ui/playbar.vala" - old_value = ui_playbar_get_show_cover_art (self); -#line 6 "../src/ui/playbar.vala" - if (old_value != value) { -#line 6 "../src/ui/playbar.vala" - self->priv->_show_cover_art = value; -#line 6 "../src/ui/playbar.vala" - g_object_notify_by_pspec ((GObject *) self, ui_playbar_properties[UI_PLAYBAR_SHOW_COVER_ART_PROPERTY]); -#line 873 "playbar.c" - } -} - -gint -ui_playbar_get_volume (UiPlaybar* self) -{ - gint result; - gint _tmp0_ = 0; - Playbin* _tmp1_; -#line 9 "../src/ui/playbar.vala" - g_return_val_if_fail (self != NULL, 0); -#line 9 "../src/ui/playbar.vala" - _tmp1_ = self->priv->_playbin; -#line 9 "../src/ui/playbar.vala" - if (_tmp1_ == NULL) { -#line 9 "../src/ui/playbar.vala" - _tmp0_ = 100; -#line 891 "playbar.c" - } else { - Playbin* _tmp2_; - gint _tmp3_; - gint _tmp4_; -#line 9 "../src/ui/playbar.vala" - _tmp2_ = self->priv->_playbin; -#line 9 "../src/ui/playbar.vala" - _tmp3_ = playbin_get_volume (_tmp2_); -#line 9 "../src/ui/playbar.vala" - _tmp4_ = _tmp3_; -#line 9 "../src/ui/playbar.vala" - _tmp0_ = _tmp4_; -#line 904 "playbar.c" - } -#line 9 "../src/ui/playbar.vala" - result = _tmp0_; -#line 9 "../src/ui/playbar.vala" - return result; -#line 910 "playbar.c" -} - -void -ui_playbar_set_volume (UiPlaybar* self, - gint value) -{ - Playbin* _tmp0_; -#line 10 "../src/ui/playbar.vala" - g_return_if_fail (self != NULL); -#line 10 "../src/ui/playbar.vala" - _tmp0_ = self->priv->_playbin; -#line 10 "../src/ui/playbar.vala" - playbin_set_volume (_tmp0_, value); -#line 10 "../src/ui/playbar.vala" - g_object_notify_by_pspec ((GObject *) self, ui_playbar_properties[UI_PLAYBAR_VOLUME_PROPERTY]); -#line 926 "playbar.c" -} - -static void -ui_playbar_class_init (UiPlaybarClass * klass, - gpointer klass_data) -{ -#line 2 "../src/ui/playbar.vala" - ui_playbar_parent_class = g_type_class_peek_parent (klass); -#line 2 "../src/ui/playbar.vala" - g_type_class_adjust_private_offset (klass, &UiPlaybar_private_offset); -#line 2 "../src/ui/playbar.vala" - G_OBJECT_CLASS (klass)->get_property = _vala_ui_playbar_get_property; -#line 2 "../src/ui/playbar.vala" - G_OBJECT_CLASS (klass)->set_property = _vala_ui_playbar_set_property; -#line 2 "../src/ui/playbar.vala" - G_OBJECT_CLASS (klass)->finalize = ui_playbar_finalize; -#line 2 "../src/ui/playbar.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAYBAR_SONG_PROPERTY, ui_playbar_properties[UI_PLAYBAR_SONG_PROPERTY] = g_param_spec_object ("song", "song", "song", TYPE_PLAYBIN_SONG, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 2 "../src/ui/playbar.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAYBAR_PLAYING_COVER_ART_PROPERTY, ui_playbar_properties[UI_PLAYBAR_PLAYING_COVER_ART_PROPERTY] = g_param_spec_object ("playing-cover-art", "playing-cover-art", "playing-cover-art", gdk_paintable_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 2 "../src/ui/playbar.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAYBAR_PLAYBIN_PROPERTY, ui_playbar_properties[UI_PLAYBAR_PLAYBIN_PROPERTY] = g_param_spec_object ("playbin", "playbin", "playbin", TYPE_PLAYBIN, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 2 "../src/ui/playbar.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAYBAR_SHOW_COVER_ART_PROPERTY, ui_playbar_properties[UI_PLAYBAR_SHOW_COVER_ART_PROPERTY] = g_param_spec_boolean ("show-cover-art", "show-cover-art", "show-cover-art", TRUE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 2 "../src/ui/playbar.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_PLAYBAR_VOLUME_PROPERTY, ui_playbar_properties[UI_PLAYBAR_VOLUME_PROPERTY] = g_param_spec_int ("volume", "volume", "volume", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/eu/callcc/audrey/playbar.ui"); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "format_timestamp", G_CALLBACK(ui_playbar_format_timestamp)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_play_position_seek", G_CALLBACK(_ui_playbar_on_play_position_seek_gtk_range_change_value)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_play_pause_clicked", G_CALLBACK(_ui_playbar_on_play_pause_clicked_gtk_button_clicked)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "play_pause_icon_name", G_CALLBACK(ui_playbar_play_pause_icon_name)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "playbin_active", G_CALLBACK(ui_playbar_playbin_active)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "can_press_play", G_CALLBACK(ui_playbar_can_press_play)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "mute_button_icon_name", G_CALLBACK(ui_playbar_mute_button_icon_name)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_mute_toggle", G_CALLBACK(_ui_playbar_on_mute_toggle_gtk_button_clicked)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_skip_forward_clicked", G_CALLBACK(_ui_playbar_on_skip_forward_clicked_gtk_button_clicked)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_skip_backward_clicked", G_CALLBACK(_ui_playbar_on_skip_backward_clicked_gtk_button_clicked)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "seek_backward", G_CALLBACK(_ui_playbar_seek_backward_gtk_button_clicked)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "seek_forward", G_CALLBACK(_ui_playbar_seek_forward_gtk_button_clicked)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "song_title", G_CALLBACK(ui_playbar_song_title)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "song_artist", G_CALLBACK(ui_playbar_song_artist)); -#line 2 "../src/ui/playbar.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "song_album", G_CALLBACK(ui_playbar_song_album)); -#line 985 "playbar.c" -} - -static void -ui_playbar_instance_init (UiPlaybar * self, - gpointer klass) -{ -#line 2 "../src/ui/playbar.vala" - self->priv = ui_playbar_get_instance_private (self); -#line 6 "../src/ui/playbar.vala" - self->priv->_show_cover_art = TRUE; -#line 2 "../src/ui/playbar.vala" - gtk_widget_init_template (GTK_WIDGET (self)); -#line 998 "playbar.c" -} - -static void -ui_playbar_finalize (GObject * obj) -{ - UiPlaybar * self; -#line 2 "../src/ui/playbar.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, UI_TYPE_PLAYBAR, UiPlaybar); -#line 91 "../src/ui/playbar.vala" - g_debug ("playbar.vala:91: destroying playbar widget"); -#line 3 "../src/ui/playbar.vala" - _g_object_unref0 (self->priv->_song); -#line 4 "../src/ui/playbar.vala" - _g_object_unref0 (self->priv->_playing_cover_art); -#line 2 "../src/ui/playbar.vala" - G_OBJECT_CLASS (ui_playbar_parent_class)->finalize (obj); -#line 1015 "playbar.c" -} - -static GType -ui_playbar_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (UiPlaybarClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ui_playbar_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UiPlaybar), 0, (GInstanceInitFunc) ui_playbar_instance_init, NULL }; - GType ui_playbar_type_id; - ui_playbar_type_id = g_type_register_static (adw_bin_get_type (), "UiPlaybar", &g_define_type_info, 0); - UiPlaybar_private_offset = g_type_add_instance_private (ui_playbar_type_id, sizeof (UiPlaybarPrivate)); - return ui_playbar_type_id; -} - -GType -ui_playbar_get_type (void) -{ - static volatile gsize ui_playbar_type_id__once = 0; - if (g_once_init_enter (&ui_playbar_type_id__once)) { - GType ui_playbar_type_id; - ui_playbar_type_id = ui_playbar_get_type_once (); - g_once_init_leave (&ui_playbar_type_id__once, ui_playbar_type_id); - } - return ui_playbar_type_id__once; -} - -static void -_vala_ui_playbar_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec) -{ - UiPlaybar * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, UI_TYPE_PLAYBAR, UiPlaybar); -#line 2 "../src/ui/playbar.vala" - switch (property_id) { -#line 2 "../src/ui/playbar.vala" - case UI_PLAYBAR_SONG_PROPERTY: -#line 2 "../src/ui/playbar.vala" - g_value_set_object (value, ui_playbar_get_song (self)); -#line 2 "../src/ui/playbar.vala" - break; -#line 2 "../src/ui/playbar.vala" - case UI_PLAYBAR_PLAYING_COVER_ART_PROPERTY: -#line 2 "../src/ui/playbar.vala" - g_value_set_object (value, ui_playbar_get_playing_cover_art (self)); -#line 2 "../src/ui/playbar.vala" - break; -#line 2 "../src/ui/playbar.vala" - case UI_PLAYBAR_PLAYBIN_PROPERTY: -#line 2 "../src/ui/playbar.vala" - g_value_set_object (value, ui_playbar_get_playbin (self)); -#line 2 "../src/ui/playbar.vala" - break; -#line 2 "../src/ui/playbar.vala" - case UI_PLAYBAR_SHOW_COVER_ART_PROPERTY: -#line 2 "../src/ui/playbar.vala" - g_value_set_boolean (value, ui_playbar_get_show_cover_art (self)); -#line 2 "../src/ui/playbar.vala" - break; -#line 2 "../src/ui/playbar.vala" - case UI_PLAYBAR_VOLUME_PROPERTY: -#line 2 "../src/ui/playbar.vala" - g_value_set_int (value, ui_playbar_get_volume (self)); -#line 2 "../src/ui/playbar.vala" - break; -#line 1080 "playbar.c" - default: -#line 2 "../src/ui/playbar.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 2 "../src/ui/playbar.vala" - break; -#line 1086 "playbar.c" - } -} - -static void -_vala_ui_playbar_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - UiPlaybar * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, UI_TYPE_PLAYBAR, UiPlaybar); -#line 2 "../src/ui/playbar.vala" - switch (property_id) { -#line 2 "../src/ui/playbar.vala" - case UI_PLAYBAR_SONG_PROPERTY: -#line 2 "../src/ui/playbar.vala" - ui_playbar_set_song (self, g_value_get_object (value)); -#line 2 "../src/ui/playbar.vala" - break; -#line 2 "../src/ui/playbar.vala" - case UI_PLAYBAR_PLAYING_COVER_ART_PROPERTY: -#line 2 "../src/ui/playbar.vala" - ui_playbar_set_playing_cover_art (self, g_value_get_object (value)); -#line 2 "../src/ui/playbar.vala" - break; -#line 2 "../src/ui/playbar.vala" - case UI_PLAYBAR_PLAYBIN_PROPERTY: -#line 2 "../src/ui/playbar.vala" - ui_playbar_set_playbin (self, g_value_get_object (value)); -#line 2 "../src/ui/playbar.vala" - break; -#line 2 "../src/ui/playbar.vala" - case UI_PLAYBAR_SHOW_COVER_ART_PROPERTY: -#line 2 "../src/ui/playbar.vala" - ui_playbar_set_show_cover_art (self, g_value_get_boolean (value)); -#line 2 "../src/ui/playbar.vala" - break; -#line 2 "../src/ui/playbar.vala" - case UI_PLAYBAR_VOLUME_PROPERTY: -#line 2 "../src/ui/playbar.vala" - ui_playbar_set_volume (self, g_value_get_int (value)); -#line 2 "../src/ui/playbar.vala" - break; -#line 1130 "playbar.c" - default: -#line 2 "../src/ui/playbar.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 2 "../src/ui/playbar.vala" - break; -#line 1136 "playbar.c" - } -} - diff --git a/src/ui/playbar.vala b/src/ui/playbar.vala new file mode 100644 index 0000000..62ac634 --- /dev/null +++ b/src/ui/playbar.vala @@ -0,0 +1,93 @@ +[GtkTemplate (ui = "/eu/callcc/audrey/playbar.ui")] +class Ui.Playbar : Adw.Bin { + public PlaybinSong? song { get; set; } + public Gdk.Paintable? playing_cover_art { get; set; } + public weak Playbin playbin { get; set; } + public bool show_cover_art { get; set; default = true; } + + public int volume { + get { return playbin == null ? 100 : playbin.volume; } + set { playbin.volume = value; } + } + + [GtkCallback] private string format_timestamp (double s) { + return "%02d:%02d".printf (((int) s)/60, ((int) s)%60); + } + + [GtkCallback] private bool on_play_position_seek (Gtk.Range range, Gtk.ScrollType scroll_type, double value) { + if (range.adjustment.lower < range.adjustment.upper) { + this.playbin.seek ((int64) value); + } + return false; + } + + [GtkCallback] private void on_play_pause_clicked () { + if (this.playbin.state == PlaybinState.PLAYING) { + this.playbin.pause(); + } else { + this.playbin.play(); + } + } + + [GtkCallback] private string play_pause_icon_name (PlaybinState state) { + if (state == PlaybinState.PLAYING) { + return "media-playback-pause"; + } else { + return "media-playback-start"; + } + } + + [GtkCallback] private bool playbin_active (PlaybinState state) { + return state != PlaybinState.STOPPED; + } + + [GtkCallback] private bool can_press_play (PlaybinState state, uint n_items) { + return !(state == PlaybinState.STOPPED && n_items == 0); + } + + [GtkCallback] private string mute_button_icon_name (bool mute) { + return mute ? "audio-volume-muted" : "audio-volume-high"; + } + + [GtkCallback] private void on_mute_toggle () { + this.playbin.mute = !this.playbin.mute; + } + + [GtkCallback] private void on_skip_forward_clicked () { + this.playbin.go_to_next_track (); + } + + [GtkCallback] private void on_skip_backward_clicked () { + this.playbin.go_to_prev_track (); + } + + [GtkCallback] private void seek_backward () { + // 10 seconds + double new_position = playbin.position - 10.0; + if (new_position < 0.0) new_position = 0.0; + this.playbin.seek (new_position); + } + + [GtkCallback] private void seek_forward () { + // 10 seconds + double new_position = playbin.position + 10.0; + if (new_position > this.playbin.duration) new_position = this.playbin.duration; + this.playbin.seek (new_position); + } + + [GtkCallback] private string song_title (PlaybinSong? song) { + return song == null ? "" : song.title; + } + + [GtkCallback] private string song_artist (PlaybinSong? song) { + return song == null ? "" : song.artist; + } + + [GtkCallback] private string song_album (PlaybinSong? song) { + return song == null ? "" : song.album; + } + + ~Playbar () { + debug ("destroying playbar widget"); + } +} diff --git a/src/ui/setup.c b/src/ui/setup.c deleted file mode 100644 index c991a02..0000000 --- a/src/ui/setup.c +++ /dev/null @@ -1,1478 +0,0 @@ -/* setup.c generated by valac 0.56.16, the Vala compiler - * generated from setup.vala, do not modify */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(VALA_STRICT_C) -#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14) -#pragma GCC diagnostic warning "-Wincompatible-pointer-types" -#elif defined(__clang__) && (__clang_major__ >= 16) -#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types" -#pragma clang diagnostic ignored "-Wincompatible-pointer-types" -#endif -#endif -#if !defined(VALA_EXTERN) -#if defined(_MSC_VER) -#define VALA_EXTERN __declspec(dllexport) extern -#elif __GNUC__ >= 4 -#define VALA_EXTERN __attribute__((visibility("default"))) extern -#else -#define VALA_EXTERN extern -#endif -#endif - -#define _g_free0(var) (var = (g_free (var), NULL)) -#define _g_checksum_free0(var) ((var == NULL) ? NULL : (var = (g_checksum_free (var), NULL))) - -#define UI_TYPE_SETUP (ui_setup_get_type ()) -#define UI_SETUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_SETUP, UiSetup)) -#define UI_SETUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_SETUP, UiSetupClass)) -#define UI_IS_SETUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_SETUP)) -#define UI_IS_SETUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_SETUP)) -#define UI_SETUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_SETUP, UiSetupClass)) - -typedef struct _UiSetup UiSetup; -typedef struct _UiSetupClass UiSetupClass; -typedef struct _UiSetupPrivate UiSetupPrivate; -enum { - UI_SETUP_0_PROPERTY, - UI_SETUP_STATUS_PROPERTY, - UI_SETUP_AUTHN_CAN_EDIT_PROPERTY, - UI_SETUP_AUTHN_CAN_VALIDATE_PROPERTY, - UI_SETUP_SERVER_URL_PROPERTY, - UI_SETUP_USERNAME_PROPERTY, - UI_SETUP_PASSWORD_PROPERTY, - UI_SETUP_NUM_PROPERTIES -}; -static GParamSpec* ui_setup_properties[UI_SETUP_NUM_PROPERTIES]; - -#define SUBSONIC_TYPE_CLIENT (subsonic_client_get_type ()) -#define SUBSONIC_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SUBSONIC_TYPE_CLIENT, SubsonicClient)) -#define SUBSONIC_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SUBSONIC_TYPE_CLIENT, SubsonicClientClass)) -#define SUBSONIC_IS_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SUBSONIC_TYPE_CLIENT)) -#define SUBSONIC_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SUBSONIC_TYPE_CLIENT)) -#define SUBSONIC_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SUBSONIC_TYPE_CLIENT, SubsonicClientClass)) - -typedef struct _SubsonicClient SubsonicClient; -typedef struct _SubsonicClientClass SubsonicClientClass; -typedef struct _Block4Data Block4Data; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) -typedef struct _Block5Data Block5Data; -#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) -#define _secret_value_unref0(var) ((var == NULL) ? NULL : (var = (secret_value_unref (var), NULL))) -enum { - UI_SETUP_CONNECTED_SIGNAL, - UI_SETUP_NUM_SIGNALS -}; -static guint ui_setup_signals[UI_SETUP_NUM_SIGNALS] = {0}; -#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); -#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } -#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } -#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); - -struct _UiSetup { - AdwPreferencesDialog parent_instance; - UiSetupPrivate * priv; - gchar* token; - gchar* salt; -}; - -struct _UiSetupClass { - AdwPreferencesDialogClass parent_class; -}; - -struct _UiSetupPrivate { - gchar* _status; - gboolean _authn_can_edit; - gboolean _authn_can_validate; - gchar* _server_url; - gchar* _username; - gchar* _password; -}; - -struct _Block4Data { - int _ref_count_; - UiSetup* self; - gchar* new_token; - gchar* new_salt; - SubsonicClient* api; -}; - -struct _Block5Data { - int _ref_count_; - UiSetup* self; - SecretRetrievable* first; -}; - -static gint UiSetup_private_offset; -static gpointer ui_setup_parent_class = NULL; -static SecretSchema* ui_setup_secret_schema; -static SecretSchema* ui_setup_secret_schema = NULL; - -VALA_EXTERN void salt_password (const gchar* password, - gchar** token, - gchar** salt); -VALA_EXTERN GType ui_setup_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (UiSetup, g_object_unref) -static void ui_setup_on_authn_changed (UiSetup* self); -static void ui_setup_set_authn_can_validate (UiSetup* self, - gboolean value); -static void _ui_setup_on_authn_changed_gtk_editable_changed (GtkEditable* _sender, - gpointer self); -static void ui_setup_on_authn_validate_activated (UiSetup* self); -VALA_EXTERN GType subsonic_client_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SubsonicClient, g_object_unref) -static Block4Data* block4_data_ref (Block4Data* _data4_); -static void block4_data_unref (void * _userdata_); -static void ui_setup_set_authn_can_edit (UiSetup* self, - gboolean value); -static void ui_setup_set_status (UiSetup* self, - const gchar* value); -VALA_EXTERN const gchar* ui_setup_get_password (UiSetup* self); -VALA_EXTERN const gchar* ui_setup_get_server_url (UiSetup* self); -VALA_EXTERN const gchar* ui_setup_get_username (UiSetup* self); -VALA_EXTERN SubsonicClient* subsonic_client_new_with_token (const gchar* url, - const gchar* username, - const gchar* token, - const gchar* salt); -VALA_EXTERN SubsonicClient* subsonic_client_construct_with_token (GType object_type, - const gchar* url, - const gchar* username, - const gchar* token, - const gchar* salt); -VALA_EXTERN void subsonic_client_ping (SubsonicClient* self, - GAsyncReadyCallback _callback_, - gpointer _user_data_); -VALA_EXTERN void subsonic_client_ping_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error); -static void __lambda8_ (Block4Data* _data4_, - GObject* obj, - GAsyncResult* res); -VALA_EXTERN void ui_setup_save (UiSetup* self); -static void ___lambda8__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self); -static void _ui_setup_on_authn_validate_activated_adw_button_row_activated (AdwButtonRow* _sender, - gpointer self); -VALA_EXTERN void ui_setup_load (UiSetup* self); -static void _g_free0_ (gpointer var); -static void __lambda10_ (UiSetup* self, - GObject* obj, - GAsyncResult* res); -VALA_EXTERN void ui_setup_set_server_url (UiSetup* self, - const gchar* value); -VALA_EXTERN void ui_setup_set_username (UiSetup* self, - const gchar* value); -VALA_EXTERN void ui_setup_set_password (UiSetup* self, - const gchar* value); -static Block5Data* block5_data_ref (Block5Data* _data5_); -static void block5_data_unref (void * _userdata_); -static void ____lambda11_ (Block5Data* _data5_, - GObject* obj, - GAsyncResult* res); -static void _____lambda11__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self); -static void _g_object_unref0_ (gpointer var); -static inline void _g_list_free__g_object_unref0_ (GList* self); -static void ___lambda10__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self); -static void __lambda9_ (UiSetup* self, - GObject* obj, - GAsyncResult* res); -static void ___lambda9__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self); -VALA_EXTERN UiSetup* ui_setup_new (void); -VALA_EXTERN UiSetup* ui_setup_construct (GType object_type); -VALA_EXTERN const gchar* ui_setup_get_status (UiSetup* self); -VALA_EXTERN gboolean ui_setup_get_authn_can_edit (UiSetup* self); -VALA_EXTERN gboolean ui_setup_get_authn_can_validate (UiSetup* self); -static void ui_setup_finalize (GObject * obj); -static GType ui_setup_get_type_once (void); -static void _vala_ui_setup_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec); -static void _vala_ui_setup_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec); - -static gchar -string_get (const gchar* self, - glong index) -{ - gchar _tmp0_; - gchar result; -#line 1248 "glib-2.0.vapi" - g_return_val_if_fail (self != NULL, '\0'); -#line 1249 "glib-2.0.vapi" - _tmp0_ = ((gchar*) self)[index]; -#line 1249 "glib-2.0.vapi" - result = _tmp0_; -#line 1249 "glib-2.0.vapi" - return result; -#line 229 "setup.c" -} - -void -salt_password (const gchar* password, - gchar** token, - gchar** salt) -{ - gchar* _vala_token = NULL; - gchar* _vala_salt = NULL; -#line 2 "../src/ui/setup.vala" - static const gint SALT_BYTES = 8; -#line 241 "setup.c" - guchar salt_bytes[SALT_BYTES]; - guchar salt_chars[(2 * SALT_BYTES) + 1]; - GChecksum* checksum = NULL; - GChecksum* _tmp3_; - const gchar* _tmp4_; - gchar* _tmp5_; - gchar* _tmp6_; -#line 1 "../src/ui/setup.vala" - g_return_if_fail (password != NULL); -#line 3 "../src/ui/setup.vala" - memset (salt_bytes, 0, SALT_BYTES * sizeof (guchar)); -#line 4 "../src/ui/setup.vala" - gcry_randomize (salt_bytes, (gint) SALT_BYTES, GCRY_STRONG_RANDOM); -#line 5 "../src/ui/setup.vala" - memset (salt_chars, 0, ((2 * SALT_BYTES) + 1) * sizeof (guchar)); -#line 257 "setup.c" - { - gint i = 0; -#line 6 "../src/ui/setup.vala" - i = 0; -#line 262 "setup.c" - { - gboolean _tmp0_ = FALSE; -#line 6 "../src/ui/setup.vala" - _tmp0_ = TRUE; -#line 6 "../src/ui/setup.vala" - while (TRUE) { -#line 269 "setup.c" - guchar _tmp1_; - guchar _tmp2_; -#line 6 "../src/ui/setup.vala" - if (!_tmp0_) { -#line 6 "../src/ui/setup.vala" - i += 1; -#line 276 "setup.c" - } -#line 6 "../src/ui/setup.vala" - _tmp0_ = FALSE; -#line 6 "../src/ui/setup.vala" - if (!(i < SALT_BYTES)) { -#line 6 "../src/ui/setup.vala" - break; -#line 284 "setup.c" - } -#line 7 "../src/ui/setup.vala" - _tmp1_ = salt_bytes[i]; -#line 7 "../src/ui/setup.vala" - salt_chars[(2 * i) + 0] = (guchar) string_get ("0123456789abcdef", (glong) ((_tmp1_ >> 4) & 0xf)); -#line 8 "../src/ui/setup.vala" - _tmp2_ = salt_bytes[i]; -#line 8 "../src/ui/setup.vala" - salt_chars[(2 * i) + 1] = (guchar) string_get ("0123456789abcdef", (glong) ((_tmp2_ >> 0) & 0xf)); -#line 294 "setup.c" - } - } - } -#line 10 "../src/ui/setup.vala" - salt_chars[2 * SALT_BYTES] = (guchar) 0; -#line 11 "../src/ui/setup.vala" - _tmp3_ = g_checksum_new (G_CHECKSUM_MD5); -#line 11 "../src/ui/setup.vala" - checksum = _tmp3_; -#line 12 "../src/ui/setup.vala" - g_checksum_update (checksum, (guchar*) password, (gsize) -1); -#line 13 "../src/ui/setup.vala" - g_checksum_update (checksum, salt_chars, (gsize) -1); -#line 15 "../src/ui/setup.vala" - _tmp4_ = g_checksum_get_string (checksum); -#line 15 "../src/ui/setup.vala" - _tmp5_ = g_strdup (_tmp4_); -#line 15 "../src/ui/setup.vala" - _g_free0 (_vala_token); -#line 15 "../src/ui/setup.vala" - _vala_token = _tmp5_; -#line 16 "../src/ui/setup.vala" - _tmp6_ = g_strdup ((const gchar*) salt_chars); -#line 16 "../src/ui/setup.vala" - _g_free0 (_vala_salt); -#line 16 "../src/ui/setup.vala" - _vala_salt = _tmp6_; -#line 1 "../src/ui/setup.vala" - _g_checksum_free0 (checksum); -#line 1 "../src/ui/setup.vala" - if (token) { -#line 1 "../src/ui/setup.vala" - *token = _vala_token; -#line 328 "setup.c" - } else { -#line 1 "../src/ui/setup.vala" - _g_free0 (_vala_token); -#line 332 "setup.c" - } -#line 1 "../src/ui/setup.vala" - if (salt) { -#line 1 "../src/ui/setup.vala" - *salt = _vala_salt; -#line 338 "setup.c" - } else { -#line 1 "../src/ui/setup.vala" - _g_free0 (_vala_salt); -#line 342 "setup.c" - } -} - -static inline gpointer -ui_setup_get_instance_private (UiSetup* self) -{ - return G_STRUCT_MEMBER_P (self, UiSetup_private_offset); -} - -static void -ui_setup_on_authn_changed (UiSetup* self) -{ -#line 41 "../src/ui/setup.vala" - g_return_if_fail (self != NULL); -#line 42 "../src/ui/setup.vala" - ui_setup_set_authn_can_validate (self, TRUE); -#line 359 "setup.c" -} - -static void -_ui_setup_on_authn_changed_gtk_editable_changed (GtkEditable* _sender, - gpointer self) -{ -#line 20 "../src/ui/setup.vala" - ui_setup_on_authn_changed ((UiSetup*) self); -#line 368 "setup.c" -} - -static Block4Data* -block4_data_ref (Block4Data* _data4_) -{ -#line 45 "../src/ui/setup.vala" - g_atomic_int_inc (&_data4_->_ref_count_); -#line 45 "../src/ui/setup.vala" - return _data4_; -#line 378 "setup.c" -} - -static void -block4_data_unref (void * _userdata_) -{ - Block4Data* _data4_; - _data4_ = (Block4Data*) _userdata_; -#line 45 "../src/ui/setup.vala" - if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) { -#line 388 "setup.c" - UiSetup* self; -#line 45 "../src/ui/setup.vala" - self = _data4_->self; -#line 45 "../src/ui/setup.vala" - _g_object_unref0 (_data4_->api); -#line 45 "../src/ui/setup.vala" - _g_free0 (_data4_->new_salt); -#line 45 "../src/ui/setup.vala" - _g_free0 (_data4_->new_token); -#line 45 "../src/ui/setup.vala" - _g_object_unref0 (self); -#line 45 "../src/ui/setup.vala" - g_slice_free (Block4Data, _data4_); -#line 402 "setup.c" - } -} - -static const gchar* -string_to_string (const gchar* self) -{ - const gchar* result; -#line 1589 "glib-2.0.vapi" - g_return_val_if_fail (self != NULL, NULL); -#line 1590 "glib-2.0.vapi" - result = self; -#line 1590 "glib-2.0.vapi" - return result; -#line 416 "setup.c" -} - -static void -__lambda8_ (Block4Data* _data4_, - GObject* obj, - GAsyncResult* res) -{ - UiSetup* self; - GError* _inner_error0_ = NULL; -#line 58 "../src/ui/setup.vala" - self = _data4_->self; -#line 58 "../src/ui/setup.vala" - g_return_if_fail (res != NULL); -#line 430 "setup.c" - { - gchar* _tmp0_; - gchar* _tmp1_; -#line 60 "../src/ui/setup.vala" - subsonic_client_ping_finish (_data4_->api, res, &_inner_error0_); -#line 60 "../src/ui/setup.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 438 "setup.c" - goto __catch0_g_error; - } -#line 61 "../src/ui/setup.vala" - ui_setup_set_status (self, _ ("Connected")); -#line 62 "../src/ui/setup.vala" - _tmp0_ = g_strdup (_data4_->new_token); -#line 62 "../src/ui/setup.vala" - _g_free0 (self->token); -#line 62 "../src/ui/setup.vala" - self->token = _tmp0_; -#line 63 "../src/ui/setup.vala" - _tmp1_ = g_strdup (_data4_->new_salt); -#line 63 "../src/ui/setup.vala" - _g_free0 (self->salt); -#line 63 "../src/ui/setup.vala" - self->salt = _tmp1_; -#line 64 "../src/ui/setup.vala" - ui_setup_save (self); -#line 66 "../src/ui/setup.vala" - g_signal_emit (self, ui_setup_signals[UI_SETUP_CONNECTED_SIGNAL], 0, _data4_->api); -#line 459 "setup.c" - } - goto __finally0; - __catch0_g_error: - { - GError* e = NULL; - const gchar* _tmp2_; - GError* _tmp3_; - const gchar* _tmp4_; - const gchar* _tmp5_; - gchar* _tmp6_; - gchar* _tmp7_; -#line 59 "../src/ui/setup.vala" - e = _inner_error0_; -#line 59 "../src/ui/setup.vala" - _inner_error0_ = NULL; -#line 68 "../src/ui/setup.vala" - _tmp2_ = string_to_string (_ ("Ping failed")); -#line 68 "../src/ui/setup.vala" - _tmp3_ = e; -#line 68 "../src/ui/setup.vala" - _tmp4_ = _tmp3_->message; -#line 68 "../src/ui/setup.vala" - _tmp5_ = string_to_string (_tmp4_); -#line 68 "../src/ui/setup.vala" - _tmp6_ = g_strconcat (_tmp2_, ": ", _tmp5_, NULL); -#line 68 "../src/ui/setup.vala" - _tmp7_ = _tmp6_; -#line 68 "../src/ui/setup.vala" - ui_setup_set_status (self, _tmp7_); -#line 68 "../src/ui/setup.vala" - _g_free0 (_tmp7_); -#line 69 "../src/ui/setup.vala" - ui_setup_set_authn_can_validate (self, TRUE); -#line 59 "../src/ui/setup.vala" - _g_error_free0 (e); -#line 495 "setup.c" - } - __finally0: -#line 59 "../src/ui/setup.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 59 "../src/ui/setup.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); -#line 59 "../src/ui/setup.vala" - g_clear_error (&_inner_error0_); -#line 59 "../src/ui/setup.vala" - return; -#line 506 "setup.c" - } -#line 72 "../src/ui/setup.vala" - ui_setup_set_authn_can_edit (self, TRUE); -#line 510 "setup.c" -} - -static void -___lambda8__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self) -{ -#line 58 "../src/ui/setup.vala" - __lambda8_ (self, source_object, res); -#line 58 "../src/ui/setup.vala" - block4_data_unref (self); -#line 522 "setup.c" -} - -static void -ui_setup_on_authn_validate_activated (UiSetup* self) -{ - Block4Data* _data4_; - const gchar* _tmp0_; - gchar* _tmp1_ = NULL; - gchar* _tmp2_ = NULL; - const gchar* _tmp3_; - const gchar* _tmp4_; - SubsonicClient* _tmp5_; -#line 45 "../src/ui/setup.vala" - g_return_if_fail (self != NULL); -#line 45 "../src/ui/setup.vala" - _data4_ = g_slice_new0 (Block4Data); -#line 45 "../src/ui/setup.vala" - _data4_->_ref_count_ = 1; -#line 45 "../src/ui/setup.vala" - _data4_->self = g_object_ref (self); -#line 46 "../src/ui/setup.vala" - ui_setup_set_authn_can_validate (self, FALSE); -#line 47 "../src/ui/setup.vala" - ui_setup_set_authn_can_edit (self, FALSE); -#line 48 "../src/ui/setup.vala" - ui_setup_set_status (self, _ ("Connecting...")); -#line 51 "../src/ui/setup.vala" - _tmp0_ = self->priv->_password; -#line 51 "../src/ui/setup.vala" - salt_password (_tmp0_, &_tmp1_, &_tmp2_); -#line 51 "../src/ui/setup.vala" - _g_free0 (_data4_->new_token); -#line 51 "../src/ui/setup.vala" - _data4_->new_token = _tmp1_; -#line 51 "../src/ui/setup.vala" - _g_free0 (_data4_->new_salt); -#line 51 "../src/ui/setup.vala" - _data4_->new_salt = _tmp2_; -#line 52 "../src/ui/setup.vala" - _tmp3_ = self->priv->_server_url; -#line 52 "../src/ui/setup.vala" - _tmp4_ = self->priv->_username; -#line 52 "../src/ui/setup.vala" - _tmp5_ = subsonic_client_new_with_token (_tmp3_, _tmp4_, _data4_->new_token, _data4_->new_salt); -#line 52 "../src/ui/setup.vala" - _data4_->api = _tmp5_; -#line 58 "../src/ui/setup.vala" - subsonic_client_ping (_data4_->api, ___lambda8__gasync_ready_callback, block4_data_ref (_data4_)); -#line 45 "../src/ui/setup.vala" - block4_data_unref (_data4_); -#line 45 "../src/ui/setup.vala" - _data4_ = NULL; -#line 575 "setup.c" -} - -static void -_ui_setup_on_authn_validate_activated_adw_button_row_activated (AdwButtonRow* _sender, - gpointer self) -{ -#line 20 "../src/ui/setup.vala" - ui_setup_on_authn_validate_activated ((UiSetup*) self); -#line 584 "setup.c" -} - -static void -_g_free0_ (gpointer var) -{ -#line 78 "../src/ui/setup.vala" - var = (g_free (var), NULL); -#line 592 "setup.c" -} - -static Block5Data* -block5_data_ref (Block5Data* _data5_) -{ -#line 86 "../src/ui/setup.vala" - g_atomic_int_inc (&_data5_->_ref_count_); -#line 86 "../src/ui/setup.vala" - return _data5_; -#line 602 "setup.c" -} - -static void -block5_data_unref (void * _userdata_) -{ - Block5Data* _data5_; - _data5_ = (Block5Data*) _userdata_; -#line 86 "../src/ui/setup.vala" - if (g_atomic_int_dec_and_test (&_data5_->_ref_count_)) { -#line 612 "setup.c" - UiSetup* self; -#line 86 "../src/ui/setup.vala" - self = _data5_->self; -#line 86 "../src/ui/setup.vala" - _g_object_unref0 (_data5_->first); -#line 86 "../src/ui/setup.vala" - _g_object_unref0 (self); -#line 86 "../src/ui/setup.vala" - g_slice_free (Block5Data, _data5_); -#line 622 "setup.c" - } -} - -static gpointer -_g_object_ref0 (gpointer self) -{ -#line 95 "../src/ui/setup.vala" - return self ? g_object_ref (self) : NULL; -#line 631 "setup.c" -} - -static void -____lambda11_ (Block5Data* _data5_, - GObject* obj, - GAsyncResult* res) -{ - UiSetup* self; - GError* _inner_error0_ = NULL; -#line 101 "../src/ui/setup.vala" - self = _data5_->self; -#line 101 "../src/ui/setup.vala" - g_return_if_fail (res != NULL); -#line 645 "setup.c" - { - SecretValue* value = NULL; - SecretRetrievable* _tmp0_; - SecretValue* _tmp1_; - const gchar* _tmp2_ = NULL; - const gchar* _tmp3_; -#line 103 "../src/ui/setup.vala" - _tmp0_ = _data5_->first; -#line 103 "../src/ui/setup.vala" - _tmp1_ = secret_retrievable_retrieve_secret_finish (_tmp0_, res, &_inner_error0_); -#line 103 "../src/ui/setup.vala" - value = _tmp1_; -#line 103 "../src/ui/setup.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 660 "setup.c" - goto __catch0_g_error; - } -#line 104 "../src/ui/setup.vala" - _tmp3_ = secret_value_get_text (value); -#line 104 "../src/ui/setup.vala" - _tmp2_ = _tmp3_; -#line 104 "../src/ui/setup.vala" - if (_tmp2_ == NULL) { -#line 104 "../src/ui/setup.vala" - _tmp2_ = ""; -#line 671 "setup.c" - } -#line 104 "../src/ui/setup.vala" - ui_setup_set_password (self, _tmp2_); -#line 102 "../src/ui/setup.vala" - _secret_value_unref0 (value); -#line 677 "setup.c" - } - goto __finally0; - __catch0_g_error: - { - GError* e = NULL; - const gchar* _tmp4_; -#line 102 "../src/ui/setup.vala" - e = _inner_error0_; -#line 102 "../src/ui/setup.vala" - _inner_error0_ = NULL; -#line 106 "../src/ui/setup.vala" - _tmp4_ = e->message; -#line 106 "../src/ui/setup.vala" - g_error ("setup.vala:106: could not retrieve password from credentials: %s", _tmp4_); -#line 102 "../src/ui/setup.vala" - _g_error_free0 (e); -#line 694 "setup.c" - } - __finally0: -#line 102 "../src/ui/setup.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 102 "../src/ui/setup.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); -#line 102 "../src/ui/setup.vala" - g_clear_error (&_inner_error0_); -#line 102 "../src/ui/setup.vala" - return; -#line 705 "setup.c" - } -#line 110 "../src/ui/setup.vala" - ui_setup_set_authn_can_validate (self, TRUE); -#line 111 "../src/ui/setup.vala" - ui_setup_on_authn_validate_activated (self); -#line 711 "setup.c" -} - -static void -_____lambda11__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self) -{ -#line 101 "../src/ui/setup.vala" - ____lambda11_ (self, source_object, res); -#line 101 "../src/ui/setup.vala" - block5_data_unref (self); -#line 723 "setup.c" -} - -static void -_g_object_unref0_ (gpointer var) -{ -#line 84 "../src/ui/setup.vala" - (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); -#line 731 "setup.c" -} - -static inline void -_g_list_free__g_object_unref0_ (GList* self) -{ -#line 84 "../src/ui/setup.vala" - g_list_free_full (self, (GDestroyNotify) _g_object_unref0_); -#line 739 "setup.c" -} - -static void -__lambda10_ (UiSetup* self, - GObject* obj, - GAsyncResult* res) -{ - GError* _inner_error0_ = NULL; -#line 83 "../src/ui/setup.vala" - g_return_if_fail (res != NULL); -#line 750 "setup.c" - { - GList* list = NULL; - GList* _tmp0_; -#line 85 "../src/ui/setup.vala" - _tmp0_ = secret_password_search_finish (res, &_inner_error0_); -#line 85 "../src/ui/setup.vala" - list = _tmp0_; -#line 85 "../src/ui/setup.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 760 "setup.c" - goto __catch0_g_error; - } -#line 86 "../src/ui/setup.vala" - if (list == NULL) { -#line 88 "../src/ui/setup.vala" - ui_setup_set_server_url (self, ""); -#line 89 "../src/ui/setup.vala" - ui_setup_set_username (self, ""); -#line 90 "../src/ui/setup.vala" - ui_setup_set_password (self, ""); -#line 92 "../src/ui/setup.vala" - ui_setup_set_authn_can_edit (self, TRUE); -#line 93 "../src/ui/setup.vala" - ui_setup_set_authn_can_validate (self, TRUE); -#line 775 "setup.c" - } else { - Block5Data* _data5_; - gconstpointer _tmp1_; - SecretRetrievable* _tmp2_; - SecretRetrievable* _tmp3_; - SecretRetrievable* _tmp4_; - GHashTable* _tmp5_; - GHashTable* _tmp6_; - GHashTable* _tmp7_; - gconstpointer _tmp8_; - SecretRetrievable* _tmp9_; - GHashTable* _tmp10_; - GHashTable* _tmp11_; - GHashTable* _tmp12_; - gconstpointer _tmp13_; - SecretRetrievable* _tmp14_; -#line 86 "../src/ui/setup.vala" - _data5_ = g_slice_new0 (Block5Data); -#line 86 "../src/ui/setup.vala" - _data5_->_ref_count_ = 1; -#line 86 "../src/ui/setup.vala" - _data5_->self = g_object_ref (self); -#line 95 "../src/ui/setup.vala" - _tmp1_ = list->data; -#line 95 "../src/ui/setup.vala" - _tmp2_ = _g_object_ref0 ((SecretRetrievable*) _tmp1_); -#line 95 "../src/ui/setup.vala" - _data5_->first = _tmp2_; -#line 96 "../src/ui/setup.vala" - _tmp3_ = _data5_->first; -#line 96 "../src/ui/setup.vala" - _vala_assert (_tmp3_ != NULL, "first != null"); -#line 98 "../src/ui/setup.vala" - _tmp4_ = _data5_->first; -#line 98 "../src/ui/setup.vala" - g_object_get (_tmp4_, "attributes", &_tmp5_, NULL); -#line 98 "../src/ui/setup.vala" - _tmp6_ = _tmp5_; -#line 98 "../src/ui/setup.vala" - _tmp7_ = _tmp6_; -#line 98 "../src/ui/setup.vala" - _tmp8_ = g_hash_table_lookup (_tmp7_, "server-url"); -#line 98 "../src/ui/setup.vala" - ui_setup_set_server_url (self, (const gchar*) _tmp8_); -#line 98 "../src/ui/setup.vala" - _g_hash_table_unref0 (_tmp7_); -#line 99 "../src/ui/setup.vala" - _tmp9_ = _data5_->first; -#line 99 "../src/ui/setup.vala" - g_object_get (_tmp9_, "attributes", &_tmp10_, NULL); -#line 99 "../src/ui/setup.vala" - _tmp11_ = _tmp10_; -#line 99 "../src/ui/setup.vala" - _tmp12_ = _tmp11_; -#line 99 "../src/ui/setup.vala" - _tmp13_ = g_hash_table_lookup (_tmp12_, "username"); -#line 99 "../src/ui/setup.vala" - ui_setup_set_username (self, (const gchar*) _tmp13_); -#line 99 "../src/ui/setup.vala" - _g_hash_table_unref0 (_tmp12_); -#line 101 "../src/ui/setup.vala" - _tmp14_ = _data5_->first; -#line 101 "../src/ui/setup.vala" - secret_retrievable_retrieve_secret (_tmp14_, NULL, _____lambda11__gasync_ready_callback, block5_data_ref (_data5_)); -#line 86 "../src/ui/setup.vala" - block5_data_unref (_data5_); -#line 86 "../src/ui/setup.vala" - _data5_ = NULL; -#line 844 "setup.c" - } -#line 84 "../src/ui/setup.vala" - (list == NULL) ? NULL : (list = (_g_list_free__g_object_unref0_ (list), NULL)); -#line 848 "setup.c" - } - goto __finally0; - __catch0_g_error: - { - GError* e = NULL; - const gchar* _tmp15_; -#line 84 "../src/ui/setup.vala" - e = _inner_error0_; -#line 84 "../src/ui/setup.vala" - _inner_error0_ = NULL; -#line 115 "../src/ui/setup.vala" - _tmp15_ = e->message; -#line 115 "../src/ui/setup.vala" - g_error ("setup.vala:115: could not search for password in keyring: %s", _tmp15_); -#line 84 "../src/ui/setup.vala" - _g_error_free0 (e); -#line 865 "setup.c" - } - __finally0: -#line 84 "../src/ui/setup.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 84 "../src/ui/setup.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); -#line 84 "../src/ui/setup.vala" - g_clear_error (&_inner_error0_); -#line 84 "../src/ui/setup.vala" - return; -#line 876 "setup.c" - } -} - -static void -___lambda10__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self) -{ -#line 78 "../src/ui/setup.vala" - __lambda10_ ((UiSetup*) self, source_object, res); -#line 78 "../src/ui/setup.vala" - g_object_unref (self); -#line 889 "setup.c" -} - -void -ui_setup_load (UiSetup* self) -{ - SecretSchema* _tmp0_; - GHashTable* _tmp1_; -#line 76 "../src/ui/setup.vala" - g_return_if_fail (self != NULL); -#line 77 "../src/ui/setup.vala" - ui_setup_set_authn_can_edit (self, FALSE); -#line 78 "../src/ui/setup.vala" - _tmp0_ = ui_setup_secret_schema; -#line 78 "../src/ui/setup.vala" - _tmp1_ = g_hash_table_new_full (NULL, NULL, _g_free0_, _g_free0_); -#line 78 "../src/ui/setup.vala" - secret_password_searchv (_tmp0_, _tmp1_, SECRET_SEARCH_UNLOCK, NULL, ___lambda10__gasync_ready_callback, g_object_ref (self)); -#line 907 "setup.c" -} - -static void -__lambda9_ (UiSetup* self, - GObject* obj, - GAsyncResult* res) -{ - GError* _inner_error0_ = NULL; -#line 122 "../src/ui/setup.vala" - g_return_if_fail (res != NULL); -#line 918 "setup.c" - { -#line 124 "../src/ui/setup.vala" - secret_password_store_finish (res, &_inner_error0_); -#line 124 "../src/ui/setup.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 924 "setup.c" - goto __catch0_g_error; - } - } - goto __finally0; - __catch0_g_error: - { - GError* e = NULL; - const gchar* _tmp0_; -#line 123 "../src/ui/setup.vala" - e = _inner_error0_; -#line 123 "../src/ui/setup.vala" - _inner_error0_ = NULL; -#line 126 "../src/ui/setup.vala" - _tmp0_ = e->message; -#line 126 "../src/ui/setup.vala" - g_error ("setup.vala:126: could not store password in keyring: %s", _tmp0_); -#line 123 "../src/ui/setup.vala" - _g_error_free0 (e); -#line 943 "setup.c" - } - __finally0: -#line 123 "../src/ui/setup.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 123 "../src/ui/setup.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); -#line 123 "../src/ui/setup.vala" - g_clear_error (&_inner_error0_); -#line 123 "../src/ui/setup.vala" - return; -#line 954 "setup.c" - } -#line 128 "../src/ui/setup.vala" - ui_setup_set_authn_can_edit (self, TRUE); -#line 958 "setup.c" -} - -static void -___lambda9__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self) -{ -#line 122 "../src/ui/setup.vala" - __lambda9_ ((UiSetup*) self, source_object, res); -#line 122 "../src/ui/setup.vala" - g_object_unref (self); -#line 970 "setup.c" -} - -void -ui_setup_save (UiSetup* self) -{ - SecretSchema* _tmp0_; - const gchar* _tmp1_; - const gchar* _tmp2_; - const gchar* _tmp3_; -#line 120 "../src/ui/setup.vala" - g_return_if_fail (self != NULL); -#line 121 "../src/ui/setup.vala" - ui_setup_set_authn_can_edit (self, FALSE); -#line 122 "../src/ui/setup.vala" - _tmp0_ = ui_setup_secret_schema; -#line 122 "../src/ui/setup.vala" - _tmp1_ = self->priv->_password; -#line 122 "../src/ui/setup.vala" - _tmp2_ = self->priv->_server_url; -#line 122 "../src/ui/setup.vala" - _tmp3_ = self->priv->_username; -#line 122 "../src/ui/setup.vala" - secret_password_store (_tmp0_, NULL, "Audrey Subsonic password", _tmp1_, NULL, ___lambda9__gasync_ready_callback, g_object_ref (self), "server-url", _tmp2_, "username", _tmp3_, NULL); -#line 994 "setup.c" -} - -UiSetup* -ui_setup_construct (GType object_type) -{ - UiSetup * self = NULL; -#line 20 "../src/ui/setup.vala" - self = (UiSetup*) g_object_new (object_type, NULL); -#line 20 "../src/ui/setup.vala" - return self; -#line 1005 "setup.c" -} - -UiSetup* -ui_setup_new (void) -{ -#line 20 "../src/ui/setup.vala" - return ui_setup_construct (UI_TYPE_SETUP); -#line 1013 "setup.c" -} - -const gchar* -ui_setup_get_status (UiSetup* self) -{ - const gchar* result; - const gchar* _tmp0_; -#line 21 "../src/ui/setup.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 21 "../src/ui/setup.vala" - _tmp0_ = self->priv->_status; -#line 21 "../src/ui/setup.vala" - result = _tmp0_; -#line 21 "../src/ui/setup.vala" - return result; -#line 1029 "setup.c" -} - -static void -ui_setup_set_status (UiSetup* self, - const gchar* value) -{ - gchar* old_value; -#line 21 "../src/ui/setup.vala" - g_return_if_fail (self != NULL); -#line 21 "../src/ui/setup.vala" - old_value = ui_setup_get_status (self); -#line 21 "../src/ui/setup.vala" - if (g_strcmp0 (value, old_value) != 0) { -#line 1043 "setup.c" - gchar* _tmp0_; -#line 21 "../src/ui/setup.vala" - _tmp0_ = g_strdup (value); -#line 21 "../src/ui/setup.vala" - _g_free0 (self->priv->_status); -#line 21 "../src/ui/setup.vala" - self->priv->_status = _tmp0_; -#line 21 "../src/ui/setup.vala" - g_object_notify_by_pspec ((GObject *) self, ui_setup_properties[UI_SETUP_STATUS_PROPERTY]); -#line 1053 "setup.c" - } -} - -gboolean -ui_setup_get_authn_can_edit (UiSetup* self) -{ - gboolean result; -#line 23 "../src/ui/setup.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 23 "../src/ui/setup.vala" - result = self->priv->_authn_can_edit; -#line 23 "../src/ui/setup.vala" - return result; -#line 1067 "setup.c" -} - -static void -ui_setup_set_authn_can_edit (UiSetup* self, - gboolean value) -{ - gboolean old_value; -#line 23 "../src/ui/setup.vala" - g_return_if_fail (self != NULL); -#line 23 "../src/ui/setup.vala" - old_value = ui_setup_get_authn_can_edit (self); -#line 23 "../src/ui/setup.vala" - if (old_value != value) { -#line 23 "../src/ui/setup.vala" - self->priv->_authn_can_edit = value; -#line 23 "../src/ui/setup.vala" - g_object_notify_by_pspec ((GObject *) self, ui_setup_properties[UI_SETUP_AUTHN_CAN_EDIT_PROPERTY]); -#line 1085 "setup.c" - } -} - -gboolean -ui_setup_get_authn_can_validate (UiSetup* self) -{ - gboolean result; -#line 24 "../src/ui/setup.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 24 "../src/ui/setup.vala" - result = self->priv->_authn_can_validate; -#line 24 "../src/ui/setup.vala" - return result; -#line 1099 "setup.c" -} - -static void -ui_setup_set_authn_can_validate (UiSetup* self, - gboolean value) -{ - gboolean old_value; -#line 24 "../src/ui/setup.vala" - g_return_if_fail (self != NULL); -#line 24 "../src/ui/setup.vala" - old_value = ui_setup_get_authn_can_validate (self); -#line 24 "../src/ui/setup.vala" - if (old_value != value) { -#line 24 "../src/ui/setup.vala" - self->priv->_authn_can_validate = value; -#line 24 "../src/ui/setup.vala" - g_object_notify_by_pspec ((GObject *) self, ui_setup_properties[UI_SETUP_AUTHN_CAN_VALIDATE_PROPERTY]); -#line 1117 "setup.c" - } -} - -const gchar* -ui_setup_get_server_url (UiSetup* self) -{ - const gchar* result; - const gchar* _tmp0_; -#line 26 "../src/ui/setup.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 26 "../src/ui/setup.vala" - _tmp0_ = self->priv->_server_url; -#line 26 "../src/ui/setup.vala" - result = _tmp0_; -#line 26 "../src/ui/setup.vala" - return result; -#line 1134 "setup.c" -} - -void -ui_setup_set_server_url (UiSetup* self, - const gchar* value) -{ - gchar* old_value; -#line 26 "../src/ui/setup.vala" - g_return_if_fail (self != NULL); -#line 26 "../src/ui/setup.vala" - old_value = ui_setup_get_server_url (self); -#line 26 "../src/ui/setup.vala" - if (g_strcmp0 (value, old_value) != 0) { -#line 1148 "setup.c" - gchar* _tmp0_; -#line 26 "../src/ui/setup.vala" - _tmp0_ = g_strdup (value); -#line 26 "../src/ui/setup.vala" - _g_free0 (self->priv->_server_url); -#line 26 "../src/ui/setup.vala" - self->priv->_server_url = _tmp0_; -#line 26 "../src/ui/setup.vala" - g_object_notify_by_pspec ((GObject *) self, ui_setup_properties[UI_SETUP_SERVER_URL_PROPERTY]); -#line 1158 "setup.c" - } -} - -const gchar* -ui_setup_get_username (UiSetup* self) -{ - const gchar* result; - const gchar* _tmp0_; -#line 27 "../src/ui/setup.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 27 "../src/ui/setup.vala" - _tmp0_ = self->priv->_username; -#line 27 "../src/ui/setup.vala" - result = _tmp0_; -#line 27 "../src/ui/setup.vala" - return result; -#line 1175 "setup.c" -} - -void -ui_setup_set_username (UiSetup* self, - const gchar* value) -{ - gchar* old_value; -#line 27 "../src/ui/setup.vala" - g_return_if_fail (self != NULL); -#line 27 "../src/ui/setup.vala" - old_value = ui_setup_get_username (self); -#line 27 "../src/ui/setup.vala" - if (g_strcmp0 (value, old_value) != 0) { -#line 1189 "setup.c" - gchar* _tmp0_; -#line 27 "../src/ui/setup.vala" - _tmp0_ = g_strdup (value); -#line 27 "../src/ui/setup.vala" - _g_free0 (self->priv->_username); -#line 27 "../src/ui/setup.vala" - self->priv->_username = _tmp0_; -#line 27 "../src/ui/setup.vala" - g_object_notify_by_pspec ((GObject *) self, ui_setup_properties[UI_SETUP_USERNAME_PROPERTY]); -#line 1199 "setup.c" - } -} - -const gchar* -ui_setup_get_password (UiSetup* self) -{ - const gchar* result; - const gchar* _tmp0_; -#line 28 "../src/ui/setup.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 28 "../src/ui/setup.vala" - _tmp0_ = self->priv->_password; -#line 28 "../src/ui/setup.vala" - result = _tmp0_; -#line 28 "../src/ui/setup.vala" - return result; -#line 1216 "setup.c" -} - -void -ui_setup_set_password (UiSetup* self, - const gchar* value) -{ - gchar* old_value; -#line 28 "../src/ui/setup.vala" - g_return_if_fail (self != NULL); -#line 28 "../src/ui/setup.vala" - old_value = ui_setup_get_password (self); -#line 28 "../src/ui/setup.vala" - if (g_strcmp0 (value, old_value) != 0) { -#line 1230 "setup.c" - gchar* _tmp0_; -#line 28 "../src/ui/setup.vala" - _tmp0_ = g_strdup (value); -#line 28 "../src/ui/setup.vala" - _g_free0 (self->priv->_password); -#line 28 "../src/ui/setup.vala" - self->priv->_password = _tmp0_; -#line 28 "../src/ui/setup.vala" - g_object_notify_by_pspec ((GObject *) self, ui_setup_properties[UI_SETUP_PASSWORD_PROPERTY]); -#line 1240 "setup.c" - } -} - -static void -ui_setup_class_init (UiSetupClass * klass, - gpointer klass_data) -{ - SecretSchema* _tmp0_; -#line 20 "../src/ui/setup.vala" - ui_setup_parent_class = g_type_class_peek_parent (klass); -#line 20 "../src/ui/setup.vala" - g_type_class_adjust_private_offset (klass, &UiSetup_private_offset); -#line 20 "../src/ui/setup.vala" - G_OBJECT_CLASS (klass)->get_property = _vala_ui_setup_get_property; -#line 20 "../src/ui/setup.vala" - G_OBJECT_CLASS (klass)->set_property = _vala_ui_setup_set_property; -#line 20 "../src/ui/setup.vala" - G_OBJECT_CLASS (klass)->finalize = ui_setup_finalize; -#line 20 "../src/ui/setup.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_SETUP_STATUS_PROPERTY, ui_setup_properties[UI_SETUP_STATUS_PROPERTY] = g_param_spec_string ("status", "status", "status", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 20 "../src/ui/setup.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_SETUP_AUTHN_CAN_EDIT_PROPERTY, ui_setup_properties[UI_SETUP_AUTHN_CAN_EDIT_PROPERTY] = g_param_spec_boolean ("authn-can-edit", "authn-can-edit", "authn-can-edit", TRUE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 20 "../src/ui/setup.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_SETUP_AUTHN_CAN_VALIDATE_PROPERTY, ui_setup_properties[UI_SETUP_AUTHN_CAN_VALIDATE_PROPERTY] = g_param_spec_boolean ("authn-can-validate", "authn-can-validate", "authn-can-validate", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 20 "../src/ui/setup.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_SETUP_SERVER_URL_PROPERTY, ui_setup_properties[UI_SETUP_SERVER_URL_PROPERTY] = g_param_spec_string ("server-url", "server-url", "server-url", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 20 "../src/ui/setup.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_SETUP_USERNAME_PROPERTY, ui_setup_properties[UI_SETUP_USERNAME_PROPERTY] = g_param_spec_string ("username", "username", "username", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 20 "../src/ui/setup.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_SETUP_PASSWORD_PROPERTY, ui_setup_properties[UI_SETUP_PASSWORD_PROPERTY] = g_param_spec_string ("password", "password", "password", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 20 "../src/ui/setup.vala" - gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/eu/callcc/audrey/setup.ui"); -#line 20 "../src/ui/setup.vala" - ui_setup_signals[UI_SETUP_CONNECTED_SIGNAL] = g_signal_new ("connected", UI_TYPE_SETUP, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, SUBSONIC_TYPE_CLIENT); -#line 34 "../src/ui/setup.vala" - _tmp0_ = secret_schema_new ("eu.callcc.audrey", SECRET_SCHEMA_NONE, "server-url", SECRET_SCHEMA_ATTRIBUTE_STRING, "username", SECRET_SCHEMA_ATTRIBUTE_STRING, NULL); -#line 34 "../src/ui/setup.vala" - ui_setup_secret_schema = _tmp0_; -#line 20 "../src/ui/setup.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_authn_changed", G_CALLBACK(_ui_setup_on_authn_changed_gtk_editable_changed)); -#line 20 "../src/ui/setup.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_authn_validate_activated", G_CALLBACK(_ui_setup_on_authn_validate_activated_adw_button_row_activated)); -#line 1283 "setup.c" -} - -static void -ui_setup_instance_init (UiSetup * self, - gpointer klass) -{ - gchar* _tmp0_; - gchar* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; -#line 20 "../src/ui/setup.vala" - self->priv = ui_setup_get_instance_private (self); -#line 21 "../src/ui/setup.vala" - _tmp0_ = g_strdup (_ ("Not connected")); -#line 21 "../src/ui/setup.vala" - self->priv->_status = _tmp0_; -#line 23 "../src/ui/setup.vala" - self->priv->_authn_can_edit = TRUE; -#line 24 "../src/ui/setup.vala" - self->priv->_authn_can_validate = FALSE; -#line 26 "../src/ui/setup.vala" - _tmp1_ = g_strdup (""); -#line 26 "../src/ui/setup.vala" - self->priv->_server_url = _tmp1_; -#line 27 "../src/ui/setup.vala" - _tmp2_ = g_strdup (""); -#line 27 "../src/ui/setup.vala" - self->priv->_username = _tmp2_; -#line 28 "../src/ui/setup.vala" - _tmp3_ = g_strdup (""); -#line 28 "../src/ui/setup.vala" - self->priv->_password = _tmp3_; -#line 20 "../src/ui/setup.vala" - gtk_widget_init_template (GTK_WIDGET (self)); -#line 1318 "setup.c" -} - -static void -ui_setup_finalize (GObject * obj) -{ - UiSetup * self; -#line 20 "../src/ui/setup.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, UI_TYPE_SETUP, UiSetup); -#line 133 "../src/ui/setup.vala" - g_debug ("setup.vala:133: destroying setup dialog"); -#line 21 "../src/ui/setup.vala" - _g_free0 (self->priv->_status); -#line 26 "../src/ui/setup.vala" - _g_free0 (self->priv->_server_url); -#line 27 "../src/ui/setup.vala" - _g_free0 (self->priv->_username); -#line 28 "../src/ui/setup.vala" - _g_free0 (self->priv->_password); -#line 29 "../src/ui/setup.vala" - _g_free0 (self->token); -#line 30 "../src/ui/setup.vala" - _g_free0 (self->salt); -#line 20 "../src/ui/setup.vala" - G_OBJECT_CLASS (ui_setup_parent_class)->finalize (obj); -#line 1343 "setup.c" -} - -static GType -ui_setup_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (UiSetupClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ui_setup_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UiSetup), 0, (GInstanceInitFunc) ui_setup_instance_init, NULL }; - GType ui_setup_type_id; - ui_setup_type_id = g_type_register_static (adw_preferences_dialog_get_type (), "UiSetup", &g_define_type_info, 0); - UiSetup_private_offset = g_type_add_instance_private (ui_setup_type_id, sizeof (UiSetupPrivate)); - return ui_setup_type_id; -} - -GType -ui_setup_get_type (void) -{ - static volatile gsize ui_setup_type_id__once = 0; - if (g_once_init_enter (&ui_setup_type_id__once)) { - GType ui_setup_type_id; - ui_setup_type_id = ui_setup_get_type_once (); - g_once_init_leave (&ui_setup_type_id__once, ui_setup_type_id); - } - return ui_setup_type_id__once; -} - -static void -_vala_ui_setup_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec) -{ - UiSetup * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, UI_TYPE_SETUP, UiSetup); -#line 20 "../src/ui/setup.vala" - switch (property_id) { -#line 20 "../src/ui/setup.vala" - case UI_SETUP_STATUS_PROPERTY: -#line 20 "../src/ui/setup.vala" - g_value_set_string (value, ui_setup_get_status (self)); -#line 20 "../src/ui/setup.vala" - break; -#line 20 "../src/ui/setup.vala" - case UI_SETUP_AUTHN_CAN_EDIT_PROPERTY: -#line 20 "../src/ui/setup.vala" - g_value_set_boolean (value, ui_setup_get_authn_can_edit (self)); -#line 20 "../src/ui/setup.vala" - break; -#line 20 "../src/ui/setup.vala" - case UI_SETUP_AUTHN_CAN_VALIDATE_PROPERTY: -#line 20 "../src/ui/setup.vala" - g_value_set_boolean (value, ui_setup_get_authn_can_validate (self)); -#line 20 "../src/ui/setup.vala" - break; -#line 20 "../src/ui/setup.vala" - case UI_SETUP_SERVER_URL_PROPERTY: -#line 20 "../src/ui/setup.vala" - g_value_set_string (value, ui_setup_get_server_url (self)); -#line 20 "../src/ui/setup.vala" - break; -#line 20 "../src/ui/setup.vala" - case UI_SETUP_USERNAME_PROPERTY: -#line 20 "../src/ui/setup.vala" - g_value_set_string (value, ui_setup_get_username (self)); -#line 20 "../src/ui/setup.vala" - break; -#line 20 "../src/ui/setup.vala" - case UI_SETUP_PASSWORD_PROPERTY: -#line 20 "../src/ui/setup.vala" - g_value_set_string (value, ui_setup_get_password (self)); -#line 20 "../src/ui/setup.vala" - break; -#line 1414 "setup.c" - default: -#line 20 "../src/ui/setup.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 20 "../src/ui/setup.vala" - break; -#line 1420 "setup.c" - } -} - -static void -_vala_ui_setup_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - UiSetup * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, UI_TYPE_SETUP, UiSetup); -#line 20 "../src/ui/setup.vala" - switch (property_id) { -#line 20 "../src/ui/setup.vala" - case UI_SETUP_STATUS_PROPERTY: -#line 20 "../src/ui/setup.vala" - ui_setup_set_status (self, g_value_get_string (value)); -#line 20 "../src/ui/setup.vala" - break; -#line 20 "../src/ui/setup.vala" - case UI_SETUP_AUTHN_CAN_EDIT_PROPERTY: -#line 20 "../src/ui/setup.vala" - ui_setup_set_authn_can_edit (self, g_value_get_boolean (value)); -#line 20 "../src/ui/setup.vala" - break; -#line 20 "../src/ui/setup.vala" - case UI_SETUP_AUTHN_CAN_VALIDATE_PROPERTY: -#line 20 "../src/ui/setup.vala" - ui_setup_set_authn_can_validate (self, g_value_get_boolean (value)); -#line 20 "../src/ui/setup.vala" - break; -#line 20 "../src/ui/setup.vala" - case UI_SETUP_SERVER_URL_PROPERTY: -#line 20 "../src/ui/setup.vala" - ui_setup_set_server_url (self, g_value_get_string (value)); -#line 20 "../src/ui/setup.vala" - break; -#line 20 "../src/ui/setup.vala" - case UI_SETUP_USERNAME_PROPERTY: -#line 20 "../src/ui/setup.vala" - ui_setup_set_username (self, g_value_get_string (value)); -#line 20 "../src/ui/setup.vala" - break; -#line 20 "../src/ui/setup.vala" - case UI_SETUP_PASSWORD_PROPERTY: -#line 20 "../src/ui/setup.vala" - ui_setup_set_password (self, g_value_get_string (value)); -#line 20 "../src/ui/setup.vala" - break; -#line 1470 "setup.c" - default: -#line 20 "../src/ui/setup.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 20 "../src/ui/setup.vala" - break; -#line 1476 "setup.c" - } -} - diff --git a/src/ui/setup.vala b/src/ui/setup.vala new file mode 100644 index 0000000..e38b1d7 --- /dev/null +++ b/src/ui/setup.vala @@ -0,0 +1,135 @@ +static void salt_password (string password, out string token, out string salt) { + const int SALT_BYTES = 8; + uchar salt_bytes[SALT_BYTES]; + GCrypt.Random.randomize (salt_bytes, GCrypt.Random.Level.STRONG); + uchar salt_chars[2*SALT_BYTES+1]; + for (int i = 0; i < SALT_BYTES; i += 1) { + salt_chars[2*i+0] = "0123456789abcdef"[(salt_bytes[i]>>4)&0xf]; + salt_chars[2*i+1] = "0123456789abcdef"[(salt_bytes[i]>>0)&0xf]; + } + salt_chars[2*SALT_BYTES] = 0; + var checksum = new GLib.Checksum (ChecksumType.MD5); + checksum.update ((uchar[]) password, -1); + checksum.update (salt_chars, -1); + + token = checksum.get_string (); + salt = (string) salt_chars; +} + +[GtkTemplate (ui = "/eu/callcc/audrey/setup.ui")] +public class Ui.Setup : Adw.PreferencesDialog { + public string status { get; private set; default = _("Not connected"); } + + public bool authn_can_edit { get; private set; default = true; } + public bool authn_can_validate { get; private set; default = false; } + + public string server_url { get; set; default = ""; } + public string username { get; set; default = ""; } + public string password { get; set; default = ""; } + public string token; + public string salt; + + public signal void connected (Subsonic.Client api); + + private static Secret.Schema secret_schema = new Secret.Schema ( + "eu.callcc.audrey", + Secret.SchemaFlags.NONE, + "server-url", Secret.SchemaAttributeType.STRING, + "username", Secret.SchemaAttributeType.STRING + ); + + [GtkCallback] private void on_authn_changed () { + this.authn_can_validate = true; + } + + [GtkCallback] private void on_authn_validate_activated () { + this.authn_can_validate = false; + this.authn_can_edit = false; + this.status = _("Connecting..."); + + string new_token, new_salt; + salt_password (this.password, out new_token, out new_salt); + var api = new Subsonic.Client.with_token ( + this.server_url, + this.username, + new_token, + new_salt); + + api.ping.begin ((obj, res) => { + try { + api.ping.end (res); + this.status = _("Connected"); + this.token = new_token; + this.salt = new_salt; + this.save (); + + this.connected (api); + } catch (Error e) { + this.status = @"$(_("Ping failed")): $(e.message)"; + this.authn_can_validate = true; + } + + this.authn_can_edit = true; + }); + } + + public void load () { + this.authn_can_edit = false; + Secret.password_searchv.begin ( + secret_schema, + new HashTable (null, null), + Secret.SearchFlags.UNLOCK, + null, + (obj, res) => { + try { + var list = Secret.password_searchv.end (res); + if (list == null) { + // didn't find shit, leave all empty + this.server_url = ""; + this.username = ""; + this.password = ""; + // TODO: onboarding + this.authn_can_edit = true; + this.authn_can_validate = true; + } else { + var first = list.data; + assert (first != null); + + this.server_url = first.attributes["server-url"]; + this.username = first.attributes["username"]; + + first.retrieve_secret.begin (null, (obj, res) => { + try { + var value = first.retrieve_secret.end (res); + this.password = value.get_text () ?? ""; + } catch (Error e) { + error ("could not retrieve password from credentials: %s", e.message); + } + + // first connection + this.authn_can_validate = true; + this.on_authn_validate_activated (); + }); + } + } catch (Error e) { + error ("could not search for password in keyring: %s", e.message); + } + }); + } + + public void save () { + this.authn_can_edit = false; + Secret.password_store.begin (secret_schema, null, "Audrey Subsonic password", this.password, null, (obj, res) => { + try { + Secret.password_store.end (res); + } catch (Error e) { + error ("could not store password in keyring: %s", e.message); + } + this.authn_can_edit = true; + }, "server-url", this.server_url, "username", this.username); + } + + ~Setup () { + debug ("destroying setup dialog"); + } +} diff --git a/src/ui/window.c b/src/ui/window.c deleted file mode 100644 index 829765a..0000000 --- a/src/ui/window.c +++ /dev/null @@ -1,1593 +0,0 @@ -/* window.c generated by valac 0.56.16, the Vala compiler - * generated from window.vala, do not modify */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(VALA_STRICT_C) -#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14) -#pragma GCC diagnostic warning "-Wincompatible-pointer-types" -#elif defined(__clang__) && (__clang_major__ >= 16) -#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types" -#pragma clang diagnostic ignored "-Wincompatible-pointer-types" -#endif -#endif -#if !defined(VALA_EXTERN) -#if defined(_MSC_VER) -#define VALA_EXTERN __declspec(dllexport) extern -#elif __GNUC__ >= 4 -#define VALA_EXTERN __attribute__((visibility("default"))) extern -#else -#define VALA_EXTERN extern -#endif -#endif - -#define UI_TYPE_WINDOW (ui_window_get_type ()) -#define UI_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_WINDOW, UiWindow)) -#define UI_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_WINDOW, UiWindowClass)) -#define UI_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_WINDOW)) -#define UI_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_WINDOW)) -#define UI_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_WINDOW, UiWindowClass)) - -typedef struct _UiWindow UiWindow; -typedef struct _UiWindowClass UiWindowClass; -typedef struct _UiWindowPrivate UiWindowPrivate; - -#define UI_TYPE_PLAY_QUEUE (ui_play_queue_get_type ()) -#define UI_PLAY_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_PLAY_QUEUE, UiPlayQueue)) -#define UI_PLAY_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_PLAY_QUEUE, UiPlayQueueClass)) -#define UI_IS_PLAY_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_PLAY_QUEUE)) -#define UI_IS_PLAY_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_PLAY_QUEUE)) -#define UI_PLAY_QUEUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_PLAY_QUEUE, UiPlayQueueClass)) - -typedef struct _UiPlayQueue UiPlayQueue; -typedef struct _UiPlayQueueClass UiPlayQueueClass; - -#define UI_TYPE_PLAYBAR (ui_playbar_get_type ()) -#define UI_PLAYBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_PLAYBAR, UiPlaybar)) -#define UI_PLAYBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_PLAYBAR, UiPlaybarClass)) -#define UI_IS_PLAYBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_PLAYBAR)) -#define UI_IS_PLAYBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_PLAYBAR)) -#define UI_PLAYBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_PLAYBAR, UiPlaybarClass)) - -typedef struct _UiPlaybar UiPlaybar; -typedef struct _UiPlaybarClass UiPlaybarClass; - -#define UI_TYPE_SETUP (ui_setup_get_type ()) -#define UI_SETUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UI_TYPE_SETUP, UiSetup)) -#define UI_SETUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UI_TYPE_SETUP, UiSetupClass)) -#define UI_IS_SETUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UI_TYPE_SETUP)) -#define UI_IS_SETUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UI_TYPE_SETUP)) -#define UI_SETUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UI_TYPE_SETUP, UiSetupClass)) - -typedef struct _UiSetup UiSetup; -typedef struct _UiSetupClass UiSetupClass; - -#define SUBSONIC_TYPE_CLIENT (subsonic_client_get_type ()) -#define SUBSONIC_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SUBSONIC_TYPE_CLIENT, SubsonicClient)) -#define SUBSONIC_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SUBSONIC_TYPE_CLIENT, SubsonicClientClass)) -#define SUBSONIC_IS_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SUBSONIC_TYPE_CLIENT)) -#define SUBSONIC_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SUBSONIC_TYPE_CLIENT)) -#define SUBSONIC_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SUBSONIC_TYPE_CLIENT, SubsonicClientClass)) - -typedef struct _SubsonicClient SubsonicClient; -typedef struct _SubsonicClientClass SubsonicClientClass; - -#define TYPE_PLAYBIN_SONG (playbin_song_get_type ()) -#define PLAYBIN_SONG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYBIN_SONG, PlaybinSong)) -#define PLAYBIN_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYBIN_SONG, PlaybinSongClass)) -#define IS_PLAYBIN_SONG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYBIN_SONG)) -#define IS_PLAYBIN_SONG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYBIN_SONG)) -#define PLAYBIN_SONG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYBIN_SONG, PlaybinSongClass)) - -typedef struct _PlaybinSong PlaybinSong; -typedef struct _PlaybinSongClass PlaybinSongClass; - -#define TYPE_PLAYBIN (playbin_get_type ()) -#define PLAYBIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYBIN, Playbin)) -#define PLAYBIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYBIN, PlaybinClass)) -#define IS_PLAYBIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYBIN)) -#define IS_PLAYBIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYBIN)) -#define PLAYBIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYBIN, PlaybinClass)) - -typedef struct _Playbin Playbin; -typedef struct _PlaybinClass PlaybinClass; - -#define TYPE_MPRIS (mpris_get_type ()) -#define MPRIS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MPRIS, Mpris)) -#define MPRIS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MPRIS, MprisClass)) -#define IS_MPRIS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MPRIS)) -#define IS_MPRIS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MPRIS)) -#define MPRIS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MPRIS, MprisClass)) - -typedef struct _Mpris Mpris; -typedef struct _MprisClass MprisClass; - -#define TYPE_MPRIS_PLAYER (mpris_player_get_type ()) -#define MPRIS_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MPRIS_PLAYER, MprisPlayer)) -#define MPRIS_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MPRIS_PLAYER, MprisPlayerClass)) -#define IS_MPRIS_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MPRIS_PLAYER)) -#define IS_MPRIS_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MPRIS_PLAYER)) -#define MPRIS_PLAYER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MPRIS_PLAYER, MprisPlayerClass)) - -typedef struct _MprisPlayer MprisPlayer; -typedef struct _MprisPlayerClass MprisPlayerClass; -enum { - UI_WINDOW_0_PROPERTY, - UI_WINDOW_VOLUME_PROPERTY, - UI_WINDOW_MUTE_PROPERTY, - UI_WINDOW_SONG_PROPERTY, - UI_WINDOW_PLAYING_COVER_ART_PROPERTY, - UI_WINDOW_COVER_ART_LOADING_PROPERTY, - UI_WINDOW_PLAYBIN_PROPERTY, - UI_WINDOW_CAN_CLICK_SHUFFLE_ALL_PROPERTY, - UI_WINDOW_NUM_PROPERTIES -}; -static GParamSpec* ui_window_properties[UI_WINDOW_NUM_PROPERTIES]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -typedef struct _Block6Data Block6Data; -#define _g_free0(var) (var = (g_free (var), NULL)) -#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) - -#define SUBSONIC_TYPE_SONG (subsonic_song_get_type ()) -typedef struct _SubsonicSong SubsonicSong; -typedef void (*SubsonicSongCallback) (SubsonicSong* song, gpointer user_data); - -struct _UiWindow { - AdwApplicationWindow parent_instance; - UiWindowPrivate * priv; - UiPlayQueue* play_queue; - UiPlaybar* playbar; -}; - -struct _UiWindowClass { - AdwApplicationWindowClass parent_class; -}; - -struct _UiWindowPrivate { - UiSetup* setup; - SubsonicClient* api; - PlaybinSong* _song; - GdkPaintable* _playing_cover_art; - GCancellable* cancel_loading_art; - gboolean _cover_art_loading; - Playbin* _playbin; - Mpris* mpris; - MprisPlayer* mpris_player; - gboolean _can_click_shuffle_all; -}; - -struct _Block6Data { - int _ref_count_; - UiWindow* self; - gchar* song_id; -}; - -struct _SubsonicSong { - gchar* id; - gchar* title; - gchar* album; - gchar* artist; - gint64 track; - gint64 year; - GDateTime* starred; - gint64 duration; - gint64 play_count; - gchar* genre; - gchar* cover_art; -}; - -static gint UiWindow_private_offset; -static gpointer ui_window_parent_class = NULL; - -VALA_EXTERN GType ui_window_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (UiWindow, g_object_unref) -VALA_EXTERN GType ui_play_queue_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (UiPlayQueue, g_object_unref) -VALA_EXTERN GType ui_playbar_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (UiPlaybar, g_object_unref) -VALA_EXTERN GType ui_setup_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (UiSetup, g_object_unref) -VALA_EXTERN GType subsonic_client_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SubsonicClient, g_object_unref) -VALA_EXTERN GType playbin_song_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (PlaybinSong, g_object_unref) -VALA_EXTERN GType playbin_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (Playbin, g_object_unref) -VALA_EXTERN GType mpris_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (Mpris, g_object_unref) -VALA_EXTERN guint mpris_register_object (void* object, - GDBusConnection* connection, - const gchar* path, - GError** error); -VALA_EXTERN GType mpris_player_get_type (void) G_GNUC_CONST ; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (MprisPlayer, g_object_unref) -VALA_EXTERN guint mpris_player_register_object (void* object, - GDBusConnection* connection, - const gchar* path, - GError** error); -VALA_EXTERN Playbin* playbin_new (void); -VALA_EXTERN Playbin* playbin_construct (GType object_type); -VALA_EXTERN UiWindow* ui_window_new (GtkApplication* app); -VALA_EXTERN UiWindow* ui_window_construct (GType object_type, - GtkApplication* app); -static void ui_window_now_playing (UiWindow* self, - PlaybinSong* song); -static Block6Data* block6_data_ref (Block6Data* _data6_); -static void block6_data_unref (void * _userdata_); -static void ui_window_set_song (UiWindow* self, - PlaybinSong* value); -VALA_EXTERN void ui_window_set_playing_cover_art (UiWindow* self, - GdkPaintable* value); -VALA_EXTERN void ui_window_set_cover_art_loading (UiWindow* self, - gboolean value); -VALA_EXTERN PlaybinSong* ui_window_get_song (UiWindow* self); -VALA_EXTERN const gchar* playbin_song_get_id (PlaybinSong* self); -VALA_EXTERN void subsonic_client_cover_art (SubsonicClient* self, - const gchar* id, - gint size, - gint priority, - GCancellable* cancellable, - GAsyncReadyCallback _callback_, - gpointer _user_data_); -VALA_EXTERN GdkPixbuf* subsonic_client_cover_art_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error); -static void __lambda26_ (Block6Data* _data6_, - GObject* obj, - GAsyncResult* res); -static void ___lambda26__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self); -static void ui_window_show_setup_dialog (UiWindow* self); -static void _ui_window_show_setup_dialog_gtk_button_clicked (GtkButton* _sender, - gpointer self); -static void ui_window_shuffle_all (UiWindow* self); -static void ui_window_set_can_click_shuffle_all (UiWindow* self, - gboolean value); -VALA_EXTERN Playbin* ui_window_get_playbin (UiWindow* self); -VALA_EXTERN void playbin_clear (Playbin* self); -VALA_EXTERN GType subsonic_song_get_type (void) G_GNUC_CONST ; -VALA_EXTERN SubsonicSong* subsonic_song_dup (const SubsonicSong* self); -VALA_EXTERN void subsonic_song_free (SubsonicSong* self); -VALA_EXTERN void subsonic_song_copy (const SubsonicSong* self, - SubsonicSong* dest); -VALA_EXTERN void subsonic_song_destroy (SubsonicSong* self); -G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (SubsonicSong, subsonic_song_destroy) -VALA_EXTERN void subsonic_client_get_random_songs (SubsonicClient* self, - const gchar* parameters, - SubsonicSongCallback callback, - gpointer callback_target, - GAsyncReadyCallback _callback_, - gpointer _user_data_); -VALA_EXTERN void subsonic_client_get_random_songs_finish (SubsonicClient* self, - GAsyncResult* _res_, - GError** error); -static void __lambda27_ (UiWindow* self, - SubsonicSong* song); -VALA_EXTERN void playbin_append_track (Playbin* self, - SubsonicSong* song); -static void ___lambda27__subsonic_song_callback (SubsonicSong* song, - gpointer self); -static void __lambda28_ (UiWindow* self, - GObject* obj, - GAsyncResult* res); -VALA_EXTERN void playbin_select_track (Playbin* self, - guint position); -static void ___lambda28__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self); -static void _ui_window_shuffle_all_gtk_button_clicked (GtkButton* _sender, - gpointer self); -static gboolean ui_window_show_playbar_cover_art (UiWindow* self, - const gchar* stack_child); -static gboolean ui_window_real_close_request (GtkWindow* base); -VALA_EXTERN void playbin_stop (Playbin* self); -VALA_EXTERN gint ui_window_get_volume (UiWindow* self); -VALA_EXTERN gint playbin_get_volume (Playbin* self); -VALA_EXTERN void ui_window_set_volume (UiWindow* self, - gint value); -VALA_EXTERN void playbin_set_volume (Playbin* self, - gint value); -VALA_EXTERN gboolean ui_window_get_mute (UiWindow* self); -VALA_EXTERN gboolean playbin_get_mute (Playbin* self); -VALA_EXTERN void ui_window_set_mute (UiWindow* self, - gboolean value); -VALA_EXTERN void playbin_set_mute (Playbin* self, - gboolean value); -VALA_EXTERN GdkPaintable* ui_window_get_playing_cover_art (UiWindow* self); -VALA_EXTERN gboolean ui_window_get_cover_art_loading (UiWindow* self); -static void ui_window_set_playbin (UiWindow* self, - Playbin* value); -VALA_EXTERN gboolean ui_window_get_can_click_shuffle_all (UiWindow* self); -static GObject * ui_window_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam * construct_properties); -static void _ui_window___lambda29_ (UiWindow* self, - GDBusConnection* conn); -VALA_EXTERN Mpris* mpris_new (UiWindow* window); -VALA_EXTERN Mpris* mpris_construct (GType object_type, - UiWindow* window); -VALA_EXTERN MprisPlayer* mpris_player_new (GDBusConnection* conn, - Playbin* playbin); -VALA_EXTERN MprisPlayer* mpris_player_construct (GType object_type, - GDBusConnection* conn, - Playbin* playbin); -static void __ui_window___lambda29__gbus_acquired_callback (GDBusConnection* connection, - const gchar* name, - gpointer self); -static void _ui_window___lambda30_ (UiWindow* self); -static void __ui_window___lambda30__gbus_name_acquired_callback (GDBusConnection* connection, - const gchar* name, - gpointer self); -static void _ui_window___lambda31_ (UiWindow* self); -static void __ui_window___lambda31__gbus_name_lost_callback (GDBusConnection* connection, - const gchar* name, - gpointer self); -VALA_EXTERN UiSetup* ui_setup_new (void); -VALA_EXTERN UiSetup* ui_setup_construct (GType object_type); -static void _ui_window___lambda32_ (UiWindow* self, - SubsonicClient* api); -VALA_EXTERN void playbin_set_api (Playbin* self, - SubsonicClient* value); -VALA_EXTERN void mpris_player_set_api (MprisPlayer* self, - SubsonicClient* value); -static void __ui_window___lambda32__ui_setup_connected (UiSetup* _sender, - SubsonicClient* api, - gpointer self); -VALA_EXTERN void ui_setup_load (UiSetup* self); -static void _ui_window___lambda33_ (UiWindow* self); -VALA_EXTERN GListModel* playbin_get_play_queue (Playbin* self); -VALA_EXTERN gint playbin_get_play_queue_position (Playbin* self); -static void __ui_window___lambda33__playbin_new_track (Playbin* _sender, - gpointer self); -static void _ui_window___lambda34_ (UiWindow* self); -static void __ui_window___lambda34__playbin_stopped (Playbin* _sender, - gpointer self); -static void ui_window_finalize (GObject * obj); -static GType ui_window_get_type_once (void); -static void _vala_ui_window_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec); -static void _vala_ui_window_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec); - -static inline gpointer -ui_window_get_instance_private (UiWindow* self) -{ - return G_STRUCT_MEMBER_P (self, UiWindow_private_offset); -} - -UiWindow* -ui_window_construct (GType object_type, - GtkApplication* app) -{ - UiWindow * self = NULL; -#line 28 "../src/ui/window.vala" - g_return_val_if_fail (app != NULL, NULL); -#line 29 "../src/ui/window.vala" - self = (UiWindow*) g_object_new (object_type, "application", app, NULL); -#line 28 "../src/ui/window.vala" - return self; -#line 383 "window.c" -} - -UiWindow* -ui_window_new (GtkApplication* app) -{ -#line 28 "../src/ui/window.vala" - return ui_window_construct (UI_TYPE_WINDOW, app); -#line 391 "window.c" -} - -static Block6Data* -block6_data_ref (Block6Data* _data6_) -{ -#line 35 "../src/ui/window.vala" - g_atomic_int_inc (&_data6_->_ref_count_); -#line 35 "../src/ui/window.vala" - return _data6_; -#line 401 "window.c" -} - -static void -block6_data_unref (void * _userdata_) -{ - Block6Data* _data6_; - _data6_ = (Block6Data*) _userdata_; -#line 35 "../src/ui/window.vala" - if (g_atomic_int_dec_and_test (&_data6_->_ref_count_)) { -#line 411 "window.c" - UiWindow* self; -#line 35 "../src/ui/window.vala" - self = _data6_->self; -#line 35 "../src/ui/window.vala" - _g_free0 (_data6_->song_id); -#line 35 "../src/ui/window.vala" - _g_object_unref0 (self); -#line 35 "../src/ui/window.vala" - g_slice_free (Block6Data, _data6_); -#line 421 "window.c" - } -} - -static void -__lambda26_ (Block6Data* _data6_, - GObject* obj, - GAsyncResult* res) -{ - UiWindow* self; - GError* _inner_error0_ = NULL; -#line 48 "../src/ui/window.vala" - self = _data6_->self; -#line 48 "../src/ui/window.vala" - g_return_if_fail (res != NULL); -#line 436 "window.c" - { - GdkPixbuf* _tmp0_ = NULL; - SubsonicClient* _tmp1_; - GdkPixbuf* _tmp2_; - GdkTexture* _tmp3_; - GdkTexture* _tmp4_; -#line 50 "../src/ui/window.vala" - _tmp1_ = self->priv->api; -#line 50 "../src/ui/window.vala" - _tmp2_ = subsonic_client_cover_art_finish (_tmp1_, res, &_inner_error0_); -#line 50 "../src/ui/window.vala" - _tmp0_ = _tmp2_; -#line 50 "../src/ui/window.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 451 "window.c" - goto __catch0_g_error; - } -#line 50 "../src/ui/window.vala" - _tmp3_ = gdk_texture_new_for_pixbuf (_tmp0_); -#line 50 "../src/ui/window.vala" - _tmp4_ = _tmp3_; -#line 50 "../src/ui/window.vala" - ui_window_set_playing_cover_art (self, (GdkPaintable*) _tmp4_); -#line 50 "../src/ui/window.vala" - _g_object_unref0 (_tmp4_); -#line 51 "../src/ui/window.vala" - ui_window_set_cover_art_loading (self, FALSE); -#line 49 "../src/ui/window.vala" - _g_object_unref0 (_tmp0_); -#line 466 "window.c" - } - goto __finally0; - __catch0_g_error: - { - GError* e = NULL; - GError* _tmp5_; -#line 49 "../src/ui/window.vala" - e = _inner_error0_; -#line 49 "../src/ui/window.vala" - _inner_error0_ = NULL; -#line 53 "../src/ui/window.vala" - _tmp5_ = e; -#line 53 "../src/ui/window.vala" - if (!g_error_matches (_tmp5_, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { -#line 481 "window.c" - GError* _tmp6_; - const gchar* _tmp7_; -#line 54 "../src/ui/window.vala" - _tmp6_ = e; -#line 54 "../src/ui/window.vala" - _tmp7_ = _tmp6_->message; -#line 54 "../src/ui/window.vala" - g_warning ("window.vala:54: could not load cover for %s: %s", _data6_->song_id, _tmp7_); -#line 55 "../src/ui/window.vala" - ui_window_set_cover_art_loading (self, FALSE); -#line 492 "window.c" - } -#line 49 "../src/ui/window.vala" - _g_error_free0 (e); -#line 496 "window.c" - } - __finally0: -#line 49 "../src/ui/window.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 49 "../src/ui/window.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); -#line 49 "../src/ui/window.vala" - g_clear_error (&_inner_error0_); -#line 49 "../src/ui/window.vala" - return; -#line 507 "window.c" - } -} - -static void -___lambda26__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self) -{ -#line 48 "../src/ui/window.vala" - __lambda26_ (self, source_object, res); -#line 48 "../src/ui/window.vala" - block6_data_unref (self); -#line 520 "window.c" -} - -static void -ui_window_now_playing (UiWindow* self, - PlaybinSong* song) -{ - Block6Data* _data6_; - GCancellable* _tmp0_; - GCancellable* _tmp2_; - PlaybinSong* _tmp3_; - const gchar* _tmp4_; - const gchar* _tmp5_; - gchar* _tmp6_; - SubsonicClient* _tmp7_; - GCancellable* _tmp8_; -#line 35 "../src/ui/window.vala" - g_return_if_fail (self != NULL); -#line 35 "../src/ui/window.vala" - g_return_if_fail (song != NULL); -#line 35 "../src/ui/window.vala" - _data6_ = g_slice_new0 (Block6Data); -#line 35 "../src/ui/window.vala" - _data6_->_ref_count_ = 1; -#line 35 "../src/ui/window.vala" - _data6_->self = g_object_ref (self); -#line 36 "../src/ui/window.vala" - ui_window_set_song (self, song); -#line 39 "../src/ui/window.vala" - _tmp0_ = self->priv->cancel_loading_art; -#line 39 "../src/ui/window.vala" - if (_tmp0_ != NULL) { -#line 552 "window.c" - GCancellable* _tmp1_; -#line 40 "../src/ui/window.vala" - _tmp1_ = self->priv->cancel_loading_art; -#line 40 "../src/ui/window.vala" - g_cancellable_cancel (_tmp1_); -#line 558 "window.c" - } -#line 42 "../src/ui/window.vala" - _tmp2_ = g_cancellable_new (); -#line 42 "../src/ui/window.vala" - _g_object_unref0 (self->priv->cancel_loading_art); -#line 42 "../src/ui/window.vala" - self->priv->cancel_loading_art = _tmp2_; -#line 44 "../src/ui/window.vala" - ui_window_set_playing_cover_art (self, NULL); -#line 45 "../src/ui/window.vala" - ui_window_set_cover_art_loading (self, TRUE); -#line 47 "../src/ui/window.vala" - _tmp3_ = self->priv->_song; -#line 47 "../src/ui/window.vala" - _tmp4_ = playbin_song_get_id (_tmp3_); -#line 47 "../src/ui/window.vala" - _tmp5_ = _tmp4_; -#line 47 "../src/ui/window.vala" - _tmp6_ = g_strdup (_tmp5_); -#line 47 "../src/ui/window.vala" - _data6_->song_id = _tmp6_; -#line 48 "../src/ui/window.vala" - _tmp7_ = self->priv->api; -#line 48 "../src/ui/window.vala" - _tmp8_ = self->priv->cancel_loading_art; -#line 48 "../src/ui/window.vala" - subsonic_client_cover_art (_tmp7_, _data6_->song_id, -1, G_PRIORITY_DEFAULT, _tmp8_, ___lambda26__gasync_ready_callback, block6_data_ref (_data6_)); -#line 35 "../src/ui/window.vala" - block6_data_unref (_data6_); -#line 35 "../src/ui/window.vala" - _data6_ = NULL; -#line 590 "window.c" -} - -static void -ui_window_show_setup_dialog (UiWindow* self) -{ - UiSetup* _tmp0_; -#line 100 "../src/ui/window.vala" - g_return_if_fail (self != NULL); -#line 101 "../src/ui/window.vala" - _tmp0_ = self->priv->setup; -#line 101 "../src/ui/window.vala" - adw_dialog_present ((AdwDialog*) _tmp0_, (GtkWidget*) self); -#line 603 "window.c" -} - -static void -_ui_window_show_setup_dialog_gtk_button_clicked (GtkButton* _sender, - gpointer self) -{ -#line 2 "../src/ui/window.vala" - ui_window_show_setup_dialog ((UiWindow*) self); -#line 612 "window.c" -} - -static void -__lambda27_ (UiWindow* self, - SubsonicSong* song) -{ - Playbin* _tmp0_; - SubsonicSong _tmp1_; -#line 109 "../src/ui/window.vala" - g_return_if_fail (song != NULL); -#line 110 "../src/ui/window.vala" - _tmp0_ = self->priv->_playbin; -#line 110 "../src/ui/window.vala" - _tmp1_ = *song; -#line 110 "../src/ui/window.vala" - playbin_append_track (_tmp0_, &_tmp1_); -#line 629 "window.c" -} - -static void -___lambda27__subsonic_song_callback (SubsonicSong* song, - gpointer self) -{ -#line 109 "../src/ui/window.vala" - __lambda27_ ((UiWindow*) self, song); -#line 638 "window.c" -} - -static void -__lambda28_ (UiWindow* self, - GObject* obj, - GAsyncResult* res) -{ - Playbin* _tmp2_; - GError* _inner_error0_ = NULL; -#line 111 "../src/ui/window.vala" - g_return_if_fail (res != NULL); -#line 650 "window.c" - { - SubsonicClient* _tmp0_; -#line 113 "../src/ui/window.vala" - _tmp0_ = self->priv->api; -#line 113 "../src/ui/window.vala" - subsonic_client_get_random_songs_finish (_tmp0_, res, &_inner_error0_); -#line 113 "../src/ui/window.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 659 "window.c" - goto __catch0_g_error; - } - } - goto __finally0; - __catch0_g_error: - { - GError* e = NULL; - const gchar* _tmp1_; -#line 112 "../src/ui/window.vala" - e = _inner_error0_; -#line 112 "../src/ui/window.vala" - _inner_error0_ = NULL; -#line 115 "../src/ui/window.vala" - _tmp1_ = e->message; -#line 115 "../src/ui/window.vala" - g_error ("window.vala:115: could not get random songs: %s", _tmp1_); -#line 112 "../src/ui/window.vala" - _g_error_free0 (e); -#line 678 "window.c" - } - __finally0: -#line 112 "../src/ui/window.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 112 "../src/ui/window.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); -#line 112 "../src/ui/window.vala" - g_clear_error (&_inner_error0_); -#line 112 "../src/ui/window.vala" - return; -#line 689 "window.c" - } -#line 117 "../src/ui/window.vala" - ui_window_set_can_click_shuffle_all (self, TRUE); -#line 119 "../src/ui/window.vala" - _tmp2_ = self->priv->_playbin; -#line 119 "../src/ui/window.vala" - playbin_select_track (_tmp2_, (guint) 0); -#line 697 "window.c" -} - -static void -___lambda28__gasync_ready_callback (GObject* source_object, - GAsyncResult* res, - gpointer self) -{ -#line 109 "../src/ui/window.vala" - __lambda28_ ((UiWindow*) self, source_object, res); -#line 109 "../src/ui/window.vala" - g_object_unref (self); -#line 709 "window.c" -} - -static void -ui_window_shuffle_all (UiWindow* self) -{ - Playbin* _tmp0_; - SubsonicClient* _tmp1_; -#line 106 "../src/ui/window.vala" - g_return_if_fail (self != NULL); -#line 107 "../src/ui/window.vala" - ui_window_set_can_click_shuffle_all (self, FALSE); -#line 108 "../src/ui/window.vala" - _tmp0_ = self->priv->_playbin; -#line 108 "../src/ui/window.vala" - playbin_clear (_tmp0_); -#line 109 "../src/ui/window.vala" - _tmp1_ = self->priv->api; -#line 109 "../src/ui/window.vala" - subsonic_client_get_random_songs (_tmp1_, NULL, ___lambda27__subsonic_song_callback, self, ___lambda28__gasync_ready_callback, g_object_ref (self)); -#line 729 "window.c" -} - -static void -_ui_window_shuffle_all_gtk_button_clicked (GtkButton* _sender, - gpointer self) -{ -#line 2 "../src/ui/window.vala" - ui_window_shuffle_all ((UiWindow*) self); -#line 738 "window.c" -} - -static gboolean -ui_window_show_playbar_cover_art (UiWindow* self, - const gchar* stack_child) -{ - gboolean result; -#line 123 "../src/ui/window.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 124 "../src/ui/window.vala" - result = g_strcmp0 (stack_child, "play-queue") != 0; -#line 124 "../src/ui/window.vala" - return result; -#line 752 "window.c" -} - -static gboolean -ui_window_real_close_request (GtkWindow* base) -{ - UiWindow * self; - Playbin* _tmp0_; - gboolean result; -#line 127 "../src/ui/window.vala" - self = (UiWindow*) base; -#line 129 "../src/ui/window.vala" - _tmp0_ = self->priv->_playbin; -#line 129 "../src/ui/window.vala" - playbin_stop (_tmp0_); -#line 130 "../src/ui/window.vala" - result = FALSE; -#line 130 "../src/ui/window.vala" - return result; -#line 771 "window.c" -} - -gint -ui_window_get_volume (UiWindow* self) -{ - gint result; - Playbin* _tmp0_; - gint _tmp1_; - gint _tmp2_; -#line 12 "../src/ui/window.vala" - g_return_val_if_fail (self != NULL, 0); -#line 12 "../src/ui/window.vala" - _tmp0_ = self->priv->_playbin; -#line 12 "../src/ui/window.vala" - _tmp1_ = playbin_get_volume (_tmp0_); -#line 12 "../src/ui/window.vala" - _tmp2_ = _tmp1_; -#line 12 "../src/ui/window.vala" - result = _tmp2_; -#line 12 "../src/ui/window.vala" - return result; -#line 793 "window.c" -} - -void -ui_window_set_volume (UiWindow* self, - gint value) -{ - Playbin* _tmp0_; -#line 13 "../src/ui/window.vala" - g_return_if_fail (self != NULL); -#line 13 "../src/ui/window.vala" - _tmp0_ = self->priv->_playbin; -#line 13 "../src/ui/window.vala" - playbin_set_volume (_tmp0_, value); -#line 13 "../src/ui/window.vala" - g_object_notify_by_pspec ((GObject *) self, ui_window_properties[UI_WINDOW_VOLUME_PROPERTY]); -#line 809 "window.c" -} - -gboolean -ui_window_get_mute (UiWindow* self) -{ - gboolean result; - Playbin* _tmp0_; - gboolean _tmp1_; - gboolean _tmp2_; -#line 16 "../src/ui/window.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 16 "../src/ui/window.vala" - _tmp0_ = self->priv->_playbin; -#line 16 "../src/ui/window.vala" - _tmp1_ = playbin_get_mute (_tmp0_); -#line 16 "../src/ui/window.vala" - _tmp2_ = _tmp1_; -#line 16 "../src/ui/window.vala" - result = _tmp2_; -#line 16 "../src/ui/window.vala" - return result; -#line 831 "window.c" -} - -void -ui_window_set_mute (UiWindow* self, - gboolean value) -{ - Playbin* _tmp0_; -#line 17 "../src/ui/window.vala" - g_return_if_fail (self != NULL); -#line 17 "../src/ui/window.vala" - _tmp0_ = self->priv->_playbin; -#line 17 "../src/ui/window.vala" - playbin_set_mute (_tmp0_, value); -#line 17 "../src/ui/window.vala" - g_object_notify_by_pspec ((GObject *) self, ui_window_properties[UI_WINDOW_MUTE_PROPERTY]); -#line 847 "window.c" -} - -PlaybinSong* -ui_window_get_song (UiWindow* self) -{ - PlaybinSong* result; - PlaybinSong* _tmp0_; -#line 20 "../src/ui/window.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 20 "../src/ui/window.vala" - _tmp0_ = self->priv->_song; -#line 20 "../src/ui/window.vala" - result = _tmp0_; -#line 20 "../src/ui/window.vala" - return result; -#line 863 "window.c" -} - -static gpointer -_g_object_ref0 (gpointer self) -{ -#line 20 "../src/ui/window.vala" - return self ? g_object_ref (self) : NULL; -#line 871 "window.c" -} - -static void -ui_window_set_song (UiWindow* self, - PlaybinSong* value) -{ - PlaybinSong* old_value; -#line 20 "../src/ui/window.vala" - g_return_if_fail (self != NULL); -#line 20 "../src/ui/window.vala" - old_value = ui_window_get_song (self); -#line 20 "../src/ui/window.vala" - if (old_value != value) { -#line 885 "window.c" - PlaybinSong* _tmp0_; -#line 20 "../src/ui/window.vala" - _tmp0_ = _g_object_ref0 (value); -#line 20 "../src/ui/window.vala" - _g_object_unref0 (self->priv->_song); -#line 20 "../src/ui/window.vala" - self->priv->_song = _tmp0_; -#line 20 "../src/ui/window.vala" - g_object_notify_by_pspec ((GObject *) self, ui_window_properties[UI_WINDOW_SONG_PROPERTY]); -#line 895 "window.c" - } -} - -GdkPaintable* -ui_window_get_playing_cover_art (UiWindow* self) -{ - GdkPaintable* result; - GdkPaintable* _tmp0_; -#line 21 "../src/ui/window.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 21 "../src/ui/window.vala" - _tmp0_ = self->priv->_playing_cover_art; -#line 21 "../src/ui/window.vala" - result = _tmp0_; -#line 21 "../src/ui/window.vala" - return result; -#line 912 "window.c" -} - -void -ui_window_set_playing_cover_art (UiWindow* self, - GdkPaintable* value) -{ - GdkPaintable* old_value; -#line 21 "../src/ui/window.vala" - g_return_if_fail (self != NULL); -#line 21 "../src/ui/window.vala" - old_value = ui_window_get_playing_cover_art (self); -#line 21 "../src/ui/window.vala" - if (old_value != value) { -#line 926 "window.c" - GdkPaintable* _tmp0_; -#line 21 "../src/ui/window.vala" - _tmp0_ = _g_object_ref0 (value); -#line 21 "../src/ui/window.vala" - _g_object_unref0 (self->priv->_playing_cover_art); -#line 21 "../src/ui/window.vala" - self->priv->_playing_cover_art = _tmp0_; -#line 21 "../src/ui/window.vala" - g_object_notify_by_pspec ((GObject *) self, ui_window_properties[UI_WINDOW_PLAYING_COVER_ART_PROPERTY]); -#line 936 "window.c" - } -} - -gboolean -ui_window_get_cover_art_loading (UiWindow* self) -{ - gboolean result; -#line 24 "../src/ui/window.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 24 "../src/ui/window.vala" - result = self->priv->_cover_art_loading; -#line 24 "../src/ui/window.vala" - return result; -#line 950 "window.c" -} - -void -ui_window_set_cover_art_loading (UiWindow* self, - gboolean value) -{ - gboolean old_value; -#line 24 "../src/ui/window.vala" - g_return_if_fail (self != NULL); -#line 24 "../src/ui/window.vala" - old_value = ui_window_get_cover_art_loading (self); -#line 24 "../src/ui/window.vala" - if (old_value != value) { -#line 24 "../src/ui/window.vala" - self->priv->_cover_art_loading = value; -#line 24 "../src/ui/window.vala" - g_object_notify_by_pspec ((GObject *) self, ui_window_properties[UI_WINDOW_COVER_ART_LOADING_PROPERTY]); -#line 968 "window.c" - } -} - -Playbin* -ui_window_get_playbin (UiWindow* self) -{ - Playbin* result; - Playbin* _tmp0_; -#line 26 "../src/ui/window.vala" - g_return_val_if_fail (self != NULL, NULL); -#line 26 "../src/ui/window.vala" - _tmp0_ = self->priv->_playbin; -#line 26 "../src/ui/window.vala" - result = _tmp0_; -#line 26 "../src/ui/window.vala" - return result; -#line 985 "window.c" -} - -static void -ui_window_set_playbin (UiWindow* self, - Playbin* value) -{ - Playbin* old_value; -#line 26 "../src/ui/window.vala" - g_return_if_fail (self != NULL); -#line 26 "../src/ui/window.vala" - old_value = ui_window_get_playbin (self); -#line 26 "../src/ui/window.vala" - if (old_value != value) { -#line 999 "window.c" - Playbin* _tmp0_; -#line 26 "../src/ui/window.vala" - _tmp0_ = _g_object_ref0 (value); -#line 26 "../src/ui/window.vala" - _g_object_unref0 (self->priv->_playbin); -#line 26 "../src/ui/window.vala" - self->priv->_playbin = _tmp0_; -#line 26 "../src/ui/window.vala" - g_object_notify_by_pspec ((GObject *) self, ui_window_properties[UI_WINDOW_PLAYBIN_PROPERTY]); -#line 1009 "window.c" - } -} - -gboolean -ui_window_get_can_click_shuffle_all (UiWindow* self) -{ - gboolean result; -#line 104 "../src/ui/window.vala" - g_return_val_if_fail (self != NULL, FALSE); -#line 104 "../src/ui/window.vala" - result = self->priv->_can_click_shuffle_all; -#line 104 "../src/ui/window.vala" - return result; -#line 1023 "window.c" -} - -static void -ui_window_set_can_click_shuffle_all (UiWindow* self, - gboolean value) -{ - gboolean old_value; -#line 104 "../src/ui/window.vala" - g_return_if_fail (self != NULL); -#line 104 "../src/ui/window.vala" - old_value = ui_window_get_can_click_shuffle_all (self); -#line 104 "../src/ui/window.vala" - if (old_value != value) { -#line 104 "../src/ui/window.vala" - self->priv->_can_click_shuffle_all = value; -#line 104 "../src/ui/window.vala" - g_object_notify_by_pspec ((GObject *) self, ui_window_properties[UI_WINDOW_CAN_CLICK_SHUFFLE_ALL_PROPERTY]); -#line 1041 "window.c" - } -} - -static void -_ui_window___lambda29_ (UiWindow* self, - GDBusConnection* conn) -{ - GError* _inner_error0_ = NULL; -#line 66 "../src/ui/window.vala" - g_return_if_fail (conn != NULL); -#line 1052 "window.c" - { - Mpris* _tmp0_; - Playbin* _tmp1_; - MprisPlayer* _tmp2_; - Mpris* _tmp3_; - MprisPlayer* _tmp4_; -#line 68 "../src/ui/window.vala" - _tmp0_ = mpris_new (self); -#line 68 "../src/ui/window.vala" - _g_object_unref0 (self->priv->mpris); -#line 68 "../src/ui/window.vala" - self->priv->mpris = _tmp0_; -#line 69 "../src/ui/window.vala" - _tmp1_ = self->priv->_playbin; -#line 69 "../src/ui/window.vala" - _tmp2_ = mpris_player_new (conn, _tmp1_); -#line 69 "../src/ui/window.vala" - _g_object_unref0 (self->priv->mpris_player); -#line 69 "../src/ui/window.vala" - self->priv->mpris_player = _tmp2_; -#line 71 "../src/ui/window.vala" - _tmp3_ = self->priv->mpris; -#line 71 "../src/ui/window.vala" - mpris_register_object (_tmp3_, conn, "/org/mpris/MediaPlayer2", &_inner_error0_); -#line 71 "../src/ui/window.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 71 "../src/ui/window.vala" - if (_inner_error0_->domain == G_IO_ERROR) { -#line 1081 "window.c" - goto __catch0_g_io_error; - } -#line 71 "../src/ui/window.vala" - g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); -#line 71 "../src/ui/window.vala" - g_clear_error (&_inner_error0_); -#line 71 "../src/ui/window.vala" - return; -#line 1090 "window.c" - } -#line 72 "../src/ui/window.vala" - _tmp4_ = self->priv->mpris_player; -#line 72 "../src/ui/window.vala" - mpris_player_register_object (_tmp4_, conn, "/org/mpris/MediaPlayer2", &_inner_error0_); -#line 72 "../src/ui/window.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 72 "../src/ui/window.vala" - if (_inner_error0_->domain == G_IO_ERROR) { -#line 1100 "window.c" - goto __catch0_g_io_error; - } -#line 72 "../src/ui/window.vala" - g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); -#line 72 "../src/ui/window.vala" - g_clear_error (&_inner_error0_); -#line 72 "../src/ui/window.vala" - return; -#line 1109 "window.c" - } - } - goto __finally0; - __catch0_g_io_error: - { - GError* e = NULL; - GError* _tmp5_; - const gchar* _tmp6_; -#line 67 "../src/ui/window.vala" - e = _inner_error0_; -#line 67 "../src/ui/window.vala" - _inner_error0_ = NULL; -#line 74 "../src/ui/window.vala" - _tmp5_ = e; -#line 74 "../src/ui/window.vala" - _tmp6_ = _tmp5_->message; -#line 74 "../src/ui/window.vala" - g_error ("window.vala:74: could not register dbus service: %s", _tmp6_); -#line 67 "../src/ui/window.vala" - _g_error_free0 (e); -#line 1130 "window.c" - } - __finally0: -#line 67 "../src/ui/window.vala" - if (G_UNLIKELY (_inner_error0_ != NULL)) { -#line 67 "../src/ui/window.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); -#line 67 "../src/ui/window.vala" - g_clear_error (&_inner_error0_); -#line 67 "../src/ui/window.vala" - return; -#line 1141 "window.c" - } -} - -static void -__ui_window___lambda29__gbus_acquired_callback (GDBusConnection* connection, - const gchar* name, - gpointer self) -{ -#line 62 "../src/ui/window.vala" - _ui_window___lambda29_ ((UiWindow*) self, connection); -#line 1152 "window.c" -} - -static void -_ui_window___lambda30_ (UiWindow* self) -{ -} - -static void -__ui_window___lambda30__gbus_name_acquired_callback (GDBusConnection* connection, - const gchar* name, - gpointer self) -{ -#line 62 "../src/ui/window.vala" - _ui_window___lambda30_ ((UiWindow*) self); -#line 1167 "window.c" -} - -static void -_ui_window___lambda31_ (UiWindow* self) -{ -#line 78 "../src/ui/window.vala" - g_error ("window.vala:78: could not acquire dbus name"); -#line 1175 "window.c" -} - -static void -__ui_window___lambda31__gbus_name_lost_callback (GDBusConnection* connection, - const gchar* name, - gpointer self) -{ -#line 62 "../src/ui/window.vala" - _ui_window___lambda31_ ((UiWindow*) self); -#line 1185 "window.c" -} - -static void -_ui_window___lambda32_ (UiWindow* self, - SubsonicClient* api) -{ - SubsonicClient* _tmp0_; - Playbin* _tmp1_; - MprisPlayer* _tmp2_; -#line 82 "../src/ui/window.vala" - g_return_if_fail (api != NULL); -#line 83 "../src/ui/window.vala" - _tmp0_ = _g_object_ref0 (api); -#line 83 "../src/ui/window.vala" - _g_object_unref0 (self->priv->api); -#line 83 "../src/ui/window.vala" - self->priv->api = _tmp0_; -#line 84 "../src/ui/window.vala" - _tmp1_ = self->priv->_playbin; -#line 84 "../src/ui/window.vala" - playbin_set_api (_tmp1_, api); -#line 85 "../src/ui/window.vala" - _tmp2_ = self->priv->mpris_player; -#line 85 "../src/ui/window.vala" - mpris_player_set_api (_tmp2_, api); -#line 86 "../src/ui/window.vala" - ui_window_set_can_click_shuffle_all (self, TRUE); -#line 1213 "window.c" -} - -static void -__ui_window___lambda32__ui_setup_connected (UiSetup* _sender, - SubsonicClient* api, - gpointer self) -{ -#line 82 "../src/ui/window.vala" - _ui_window___lambda32_ ((UiWindow*) self, api); -#line 1223 "window.c" -} - -static void -_ui_window___lambda33_ (UiWindow* self) -{ - Playbin* _tmp0_; - GListModel* _tmp1_; - GListModel* _tmp2_; - Playbin* _tmp3_; - gint _tmp4_; - gint _tmp5_; - GObject* _tmp6_; - PlaybinSong* _tmp7_; - PlaybinSong* _tmp8_; -#line 91 "../src/ui/window.vala" - _tmp0_ = self->priv->_playbin; -#line 91 "../src/ui/window.vala" - _tmp1_ = playbin_get_play_queue (_tmp0_); -#line 91 "../src/ui/window.vala" - _tmp2_ = _tmp1_; -#line 91 "../src/ui/window.vala" - _tmp3_ = self->priv->_playbin; -#line 91 "../src/ui/window.vala" - _tmp4_ = playbin_get_play_queue_position (_tmp3_); -#line 91 "../src/ui/window.vala" - _tmp5_ = _tmp4_; -#line 91 "../src/ui/window.vala" - _tmp6_ = g_list_model_get_item (_tmp2_, (guint) _tmp5_); -#line 91 "../src/ui/window.vala" - _tmp7_ = IS_PLAYBIN_SONG (_tmp6_) ? ((PlaybinSong*) _tmp6_) : NULL; -#line 91 "../src/ui/window.vala" - if (_tmp7_ == NULL) { -#line 91 "../src/ui/window.vala" - _g_object_unref0 (_tmp6_); -#line 1258 "window.c" - } -#line 91 "../src/ui/window.vala" - _tmp8_ = _tmp7_; -#line 91 "../src/ui/window.vala" - ui_window_now_playing (self, _tmp8_); -#line 91 "../src/ui/window.vala" - _g_object_unref0 (_tmp8_); -#line 1266 "window.c" -} - -static void -__ui_window___lambda33__playbin_new_track (Playbin* _sender, - gpointer self) -{ -#line 90 "../src/ui/window.vala" - _ui_window___lambda33_ ((UiWindow*) self); -#line 1275 "window.c" -} - -static void -_ui_window___lambda34_ (UiWindow* self) -{ -#line 95 "../src/ui/window.vala" - ui_window_set_playing_cover_art (self, NULL); -#line 96 "../src/ui/window.vala" - ui_window_set_song (self, NULL); -#line 1285 "window.c" -} - -static void -__ui_window___lambda34__playbin_stopped (Playbin* _sender, - gpointer self) -{ -#line 94 "../src/ui/window.vala" - _ui_window___lambda34_ ((UiWindow*) self); -#line 1294 "window.c" -} - -static GObject * -ui_window_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam * construct_properties) -{ - GObject * obj; - GObjectClass * parent_class; - UiWindow * self; - UiSetup* _tmp0_; - UiSetup* _tmp1_; - UiSetup* _tmp2_; - Playbin* _tmp3_; - Playbin* _tmp4_; -#line 61 "../src/ui/window.vala" - parent_class = G_OBJECT_CLASS (ui_window_parent_class); -#line 61 "../src/ui/window.vala" - obj = parent_class->constructor (type, n_construct_properties, construct_properties); -#line 61 "../src/ui/window.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, UI_TYPE_WINDOW, UiWindow); -#line 62 "../src/ui/window.vala" - g_bus_own_name_with_closures (G_BUS_TYPE_SESSION, "org.mpris.MediaPlayer2.audrey", G_BUS_NAME_OWNER_FLAGS_NONE, (GClosure*) ((__ui_window___lambda29__gbus_acquired_callback == NULL) ? NULL : g_cclosure_new ((GCallback) __ui_window___lambda29__gbus_acquired_callback, g_object_ref (self), (GClosureNotify) g_object_unref)), (GClosure*) ((__ui_window___lambda30__gbus_name_acquired_callback == NULL) ? NULL : g_cclosure_new ((GCallback) __ui_window___lambda30__gbus_name_acquired_callback, g_object_ref (self), (GClosureNotify) g_object_unref)), (GClosure*) ((__ui_window___lambda31__gbus_name_lost_callback == NULL) ? NULL : g_cclosure_new ((GCallback) __ui_window___lambda31__gbus_name_lost_callback, g_object_ref (self), (GClosureNotify) g_object_unref))); -#line 80 "../src/ui/window.vala" - _tmp0_ = ui_setup_new (); -#line 80 "../src/ui/window.vala" - g_object_ref_sink (_tmp0_); -#line 80 "../src/ui/window.vala" - _g_object_unref0 (self->priv->setup); -#line 80 "../src/ui/window.vala" - self->priv->setup = _tmp0_; -#line 82 "../src/ui/window.vala" - _tmp1_ = self->priv->setup; -#line 82 "../src/ui/window.vala" - g_signal_connect_object (_tmp1_, "connected", (GCallback) __ui_window___lambda32__ui_setup_connected, self, 0); -#line 88 "../src/ui/window.vala" - _tmp2_ = self->priv->setup; -#line 88 "../src/ui/window.vala" - ui_setup_load (_tmp2_); -#line 90 "../src/ui/window.vala" - _tmp3_ = self->priv->_playbin; -#line 90 "../src/ui/window.vala" - g_signal_connect_object (_tmp3_, "new-track", (GCallback) __ui_window___lambda33__playbin_new_track, self, 0); -#line 94 "../src/ui/window.vala" - _tmp4_ = self->priv->_playbin; -#line 94 "../src/ui/window.vala" - g_signal_connect_object (_tmp4_, "stopped", (GCallback) __ui_window___lambda34__playbin_stopped, self, 0); -#line 61 "../src/ui/window.vala" - return obj; -#line 1344 "window.c" -} - -static void -ui_window_class_init (UiWindowClass * klass, - gpointer klass_data) -{ -#line 2 "../src/ui/window.vala" - ui_window_parent_class = g_type_class_peek_parent (klass); -#line 2 "../src/ui/window.vala" - g_type_class_adjust_private_offset (klass, &UiWindow_private_offset); -#line 2 "../src/ui/window.vala" - ((GtkWindowClass *) klass)->close_request = (gboolean (*) (GtkWindow*)) ui_window_real_close_request; -#line 2 "../src/ui/window.vala" - G_OBJECT_CLASS (klass)->get_property = _vala_ui_window_get_property; -#line 2 "../src/ui/window.vala" - G_OBJECT_CLASS (klass)->set_property = _vala_ui_window_set_property; -#line 2 "../src/ui/window.vala" - G_OBJECT_CLASS (klass)->constructor = ui_window_constructor; -#line 2 "../src/ui/window.vala" - G_OBJECT_CLASS (klass)->finalize = ui_window_finalize; -#line 2 "../src/ui/window.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_WINDOW_VOLUME_PROPERTY, ui_window_properties[UI_WINDOW_VOLUME_PROPERTY] = g_param_spec_int ("volume", "volume", "volume", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 2 "../src/ui/window.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_WINDOW_MUTE_PROPERTY, ui_window_properties[UI_WINDOW_MUTE_PROPERTY] = g_param_spec_boolean ("mute", "mute", "mute", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 2 "../src/ui/window.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_WINDOW_SONG_PROPERTY, ui_window_properties[UI_WINDOW_SONG_PROPERTY] = g_param_spec_object ("song", "song", "song", TYPE_PLAYBIN_SONG, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/ui/window.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_WINDOW_PLAYING_COVER_ART_PROPERTY, ui_window_properties[UI_WINDOW_PLAYING_COVER_ART_PROPERTY] = g_param_spec_object ("playing-cover-art", "playing-cover-art", "playing-cover-art", gdk_paintable_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 2 "../src/ui/window.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_WINDOW_COVER_ART_LOADING_PROPERTY, ui_window_properties[UI_WINDOW_COVER_ART_LOADING_PROPERTY] = g_param_spec_boolean ("cover-art-loading", "cover-art-loading", "cover-art-loading", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 2 "../src/ui/window.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_WINDOW_PLAYBIN_PROPERTY, ui_window_properties[UI_WINDOW_PLAYBIN_PROPERTY] = g_param_spec_object ("playbin", "playbin", "playbin", TYPE_PLAYBIN, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/ui/window.vala" - g_object_class_install_property (G_OBJECT_CLASS (klass), UI_WINDOW_CAN_CLICK_SHUFFLE_ALL_PROPERTY, ui_window_properties[UI_WINDOW_CAN_CLICK_SHUFFLE_ALL_PROPERTY] = g_param_spec_boolean ("can-click-shuffle-all", "can-click-shuffle-all", "can-click-shuffle-all", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); -#line 2 "../src/ui/window.vala" - gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/eu/callcc/audrey/window.ui"); -#line 2 "../src/ui/window.vala" - gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "play_queue", FALSE, G_STRUCT_OFFSET (UiWindow, play_queue)); -#line 2 "../src/ui/window.vala" - gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "playbar", FALSE, G_STRUCT_OFFSET (UiWindow, playbar)); -#line 2 "../src/ui/window.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "show_setup_dialog", G_CALLBACK(_ui_window_show_setup_dialog_gtk_button_clicked)); -#line 2 "../src/ui/window.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "shuffle_all", G_CALLBACK(_ui_window_shuffle_all_gtk_button_clicked)); -#line 2 "../src/ui/window.vala" - gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "show_playbar_cover_art", G_CALLBACK(ui_window_show_playbar_cover_art)); -#line 1391 "window.c" -} - -static void -ui_window_instance_init (UiWindow * self, - gpointer klass) -{ - Playbin* _tmp0_; -#line 2 "../src/ui/window.vala" - self->priv = ui_window_get_instance_private (self); -#line 21 "../src/ui/window.vala" - self->priv->_playing_cover_art = NULL; -#line 24 "../src/ui/window.vala" - self->priv->_cover_art_loading = FALSE; -#line 26 "../src/ui/window.vala" - _tmp0_ = playbin_new (); -#line 26 "../src/ui/window.vala" - self->priv->_playbin = _tmp0_; -#line 104 "../src/ui/window.vala" - self->priv->_can_click_shuffle_all = FALSE; -#line 2 "../src/ui/window.vala" - g_type_ensure (UI_TYPE_PLAY_QUEUE); -#line 2 "../src/ui/window.vala" - g_type_ensure (UI_TYPE_PLAYBAR); -#line 2 "../src/ui/window.vala" - gtk_widget_init_template (GTK_WIDGET (self)); -#line 1417 "window.c" -} - -static void -ui_window_finalize (GObject * obj) -{ - UiWindow * self; -#line 2 "../src/ui/window.vala" - self = G_TYPE_CHECK_INSTANCE_CAST (obj, UI_TYPE_WINDOW, UiWindow); -#line 134 "../src/ui/window.vala" - g_debug ("window.vala:134: destroying main window"); -#line 7 "../src/ui/window.vala" - _g_object_unref0 (self->priv->setup); -#line 9 "../src/ui/window.vala" - _g_object_unref0 (self->priv->api); -#line 20 "../src/ui/window.vala" - _g_object_unref0 (self->priv->_song); -#line 21 "../src/ui/window.vala" - _g_object_unref0 (self->priv->_playing_cover_art); -#line 23 "../src/ui/window.vala" - _g_object_unref0 (self->priv->cancel_loading_art); -#line 26 "../src/ui/window.vala" - _g_object_unref0 (self->priv->_playbin); -#line 32 "../src/ui/window.vala" - _g_object_unref0 (self->priv->mpris); -#line 33 "../src/ui/window.vala" - _g_object_unref0 (self->priv->mpris_player); -#line 2 "../src/ui/window.vala" - G_OBJECT_CLASS (ui_window_parent_class)->finalize (obj); -#line 1446 "window.c" -} - -static GType -ui_window_get_type_once (void) -{ - static const GTypeInfo g_define_type_info = { sizeof (UiWindowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ui_window_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UiWindow), 0, (GInstanceInitFunc) ui_window_instance_init, NULL }; - GType ui_window_type_id; - ui_window_type_id = g_type_register_static (adw_application_window_get_type (), "UiWindow", &g_define_type_info, 0); - UiWindow_private_offset = g_type_add_instance_private (ui_window_type_id, sizeof (UiWindowPrivate)); - return ui_window_type_id; -} - -GType -ui_window_get_type (void) -{ - static volatile gsize ui_window_type_id__once = 0; - if (g_once_init_enter (&ui_window_type_id__once)) { - GType ui_window_type_id; - ui_window_type_id = ui_window_get_type_once (); - g_once_init_leave (&ui_window_type_id__once, ui_window_type_id); - } - return ui_window_type_id__once; -} - -static void -_vala_ui_window_get_property (GObject * object, - guint property_id, - GValue * value, - GParamSpec * pspec) -{ - UiWindow * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, UI_TYPE_WINDOW, UiWindow); -#line 2 "../src/ui/window.vala" - switch (property_id) { -#line 2 "../src/ui/window.vala" - case UI_WINDOW_VOLUME_PROPERTY: -#line 2 "../src/ui/window.vala" - g_value_set_int (value, ui_window_get_volume (self)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_MUTE_PROPERTY: -#line 2 "../src/ui/window.vala" - g_value_set_boolean (value, ui_window_get_mute (self)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_SONG_PROPERTY: -#line 2 "../src/ui/window.vala" - g_value_set_object (value, ui_window_get_song (self)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_PLAYING_COVER_ART_PROPERTY: -#line 2 "../src/ui/window.vala" - g_value_set_object (value, ui_window_get_playing_cover_art (self)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_COVER_ART_LOADING_PROPERTY: -#line 2 "../src/ui/window.vala" - g_value_set_boolean (value, ui_window_get_cover_art_loading (self)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_PLAYBIN_PROPERTY: -#line 2 "../src/ui/window.vala" - g_value_set_object (value, ui_window_get_playbin (self)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_CAN_CLICK_SHUFFLE_ALL_PROPERTY: -#line 2 "../src/ui/window.vala" - g_value_set_boolean (value, ui_window_get_can_click_shuffle_all (self)); -#line 2 "../src/ui/window.vala" - break; -#line 1523 "window.c" - default: -#line 2 "../src/ui/window.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 2 "../src/ui/window.vala" - break; -#line 1529 "window.c" - } -} - -static void -_vala_ui_window_set_property (GObject * object, - guint property_id, - const GValue * value, - GParamSpec * pspec) -{ - UiWindow * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, UI_TYPE_WINDOW, UiWindow); -#line 2 "../src/ui/window.vala" - switch (property_id) { -#line 2 "../src/ui/window.vala" - case UI_WINDOW_VOLUME_PROPERTY: -#line 2 "../src/ui/window.vala" - ui_window_set_volume (self, g_value_get_int (value)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_MUTE_PROPERTY: -#line 2 "../src/ui/window.vala" - ui_window_set_mute (self, g_value_get_boolean (value)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_SONG_PROPERTY: -#line 2 "../src/ui/window.vala" - ui_window_set_song (self, g_value_get_object (value)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_PLAYING_COVER_ART_PROPERTY: -#line 2 "../src/ui/window.vala" - ui_window_set_playing_cover_art (self, g_value_get_object (value)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_COVER_ART_LOADING_PROPERTY: -#line 2 "../src/ui/window.vala" - ui_window_set_cover_art_loading (self, g_value_get_boolean (value)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_PLAYBIN_PROPERTY: -#line 2 "../src/ui/window.vala" - ui_window_set_playbin (self, g_value_get_object (value)); -#line 2 "../src/ui/window.vala" - break; -#line 2 "../src/ui/window.vala" - case UI_WINDOW_CAN_CLICK_SHUFFLE_ALL_PROPERTY: -#line 2 "../src/ui/window.vala" - ui_window_set_can_click_shuffle_all (self, g_value_get_boolean (value)); -#line 2 "../src/ui/window.vala" - break; -#line 1585 "window.c" - default: -#line 2 "../src/ui/window.vala" - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -#line 2 "../src/ui/window.vala" - break; -#line 1591 "window.c" - } -} - diff --git a/src/ui/window.vala b/src/ui/window.vala new file mode 100644 index 0000000..df40afc --- /dev/null +++ b/src/ui/window.vala @@ -0,0 +1,136 @@ +[GtkTemplate (ui = "/eu/callcc/audrey/window.ui")] +class Ui.Window : Adw.ApplicationWindow { + [GtkChild] public unowned Ui.PlayQueue play_queue; + [GtkChild] public unowned Ui.Playbar playbar; + //[GtkChild] public unowned Adw.ButtonRow shuffle_all_tracks; + + private Setup setup; + + private Subsonic.Client api; + + public int volume { + get { return this.playbin.volume; } + set { this.playbin.volume = value; } + } + public bool mute { + get { return this.playbin.mute; } + set { this.playbin.mute = value; } + } + + public PlaybinSong? song { get; private set; } + public Gdk.Paintable? playing_cover_art { get; set; default = null; } + + private Cancellable cancel_loading_art; + public bool cover_art_loading { get; set; default = false; } + + public Playbin playbin { get; private set; default = new Playbin (); } + + public Window (Gtk.Application app) { + Object (application: app); + } + + private Mpris mpris; + private MprisPlayer mpris_player; + + private void now_playing (PlaybinSong song) { + this.song = song; + // api.scrobble.begin (this.song.id); TODO + + if (this.cancel_loading_art != null) { + this.cancel_loading_art.cancel (); + } + this.cancel_loading_art = new GLib.Cancellable (); + + this.playing_cover_art = null; // TODO: preload next art somehow + this.cover_art_loading = true; + + string song_id = this.song.id; + this.api.cover_art.begin (song_id, -1, Priority.DEFAULT, this.cancel_loading_art, (obj, res) => { + try { + this.playing_cover_art = Gdk.Texture.for_pixbuf (this.api.cover_art.end (res)); + this.cover_art_loading = false; + } catch (Error e) { + if (!(e is IOError.CANCELLED)) { + warning ("could not load cover for %s: %s", song_id, e.message); + this.cover_art_loading = false; + } + } + }); + } + + construct { + Bus.own_name ( + BusType.SESSION, + "org.mpris.MediaPlayer2.audrey", + BusNameOwnerFlags.NONE, + (conn) => { + try { + this.mpris = new Mpris (this); + this.mpris_player = new MprisPlayer (conn, this.playbin); + + conn.register_object ("/org/mpris/MediaPlayer2", this.mpris); + conn.register_object ("/org/mpris/MediaPlayer2", this.mpris_player); + } catch (IOError e) { + error ("could not register dbus service: %s", e.message); + } + }, + () => {}, + () => { error ("could not acquire dbus name"); }); + + this.setup = new Setup (); + + this.setup.connected.connect ((api) => { + this.api = api; + this.playbin.api = api; + this.mpris_player.api = api; + this.can_click_shuffle_all = true; + }); + this.setup.load (); + + this.playbin.new_track.connect (() => { + this.now_playing (this.playbin.play_queue.get_item (this.playbin.play_queue_position) as PlaybinSong); + }); + + this.playbin.stopped.connect (() => { + this.playing_cover_art = null; + this.song = null; + }); + } + + [GtkCallback] private void show_setup_dialog () { + this.setup.present (this); + } + + public bool can_click_shuffle_all { get; private set; default = false; } + + [GtkCallback] private void shuffle_all () { + this.can_click_shuffle_all = false; + this.playbin.clear (); + api.get_random_songs.begin (null, (song) => { + this.playbin.append_track (song); + }, (obj, res) => { + try { + api.get_random_songs.end (res); + } catch (Error e) { + error ("could not get random songs: %s", e.message); + } + this.can_click_shuffle_all = true; + + this.playbin.select_track (0); + }); + } + + [GtkCallback] private bool show_playbar_cover_art (string? stack_child) { + return stack_child != "play-queue"; + } + + public override bool close_request () { + // stop playback on close + this.playbin.stop (); + return false; + } + + ~Window () { + debug ("destroying main window"); + } +} diff --git a/src/vapi/libgcrypt.vapi b/src/vapi/libgcrypt.vapi new file mode 100644 index 0000000..a5fe7e7 --- /dev/null +++ b/src/vapi/libgcrypt.vapi @@ -0,0 +1,829 @@ +/* gcrypt.vapi + * + * Copyright: + * 2008 Jiqing Qiang + * 2008, 2010, 2012-2013 Evan Nemerson + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: + * Jiqing Qiang + * Evan Nemerson + */ + + +[CCode (cheader_filename = "gcrypt.h", lower_case_cprefix = "gcry_")] +namespace GCrypt { + [CCode (cname = "gpg_err_source_t", cprefix = "GPG_ERR_SOURCE_")] + public enum ErrorSource { + UNKNOWN, + GCRYPT, + GPG, + GPGSM, + GPGAGENT, + PINENTRY, + SCD, + GPGME, + KEYBOX, + KSBA, + DIRMNGR, + GSTI, + ANY, + USER_1, + USER_2, + USER_3, + USER_4, + + /* This is one more than the largest allowed entry. */ + DIM + } + + [CCode (cname = "gpg_err_code_t", cprefix = "GPG_ERR_")] + public enum ErrorCode { + NO_ERROR, + GENERAL, + UNKNOWN_PACKET, + UNKNOWN_VERSION, + PUBKEY_ALGO, + DIGEST_ALGO, + BAD_PUBKEY, + BAD_SECKEY, + BAD_SIGNATURE, + NO_PUBKEY, + CHECKSUM, + BAD_PASSPHRASE, + CIPHER_ALGO, + KEYRING_OPEN, + INV_PACKET, + INV_ARMOR, + NO_USER_ID, + NO_SECKEY, + WRONG_SECKEY, + BAD_KEY, + COMPR_ALGO, + NO_PRIME, + NO_ENCODING_METHOD, + NO_ENCRYPTION_SCHEME, + NO_SIGNATURE_SCHEME, + INV_ATTR, + NO_VALUE, + NOT_FOUND, + VALUE_NOT_FOUND, + SYNTAX, + BAD_MPI, + INV_PASSPHRASE, + SIG_CLASS, + RESOURCE_LIMIT, + INV_KEYRING, + TRUSTDB, + BAD_CERT, + INV_USER_ID, + UNEXPECTED, + TIME_CONFLICT, + KEYSERVER, + WRONG_PUBKEY_ALGO, + TRIBUTE_TO_D_A, + WEAK_KEY, + INV_KEYLEN, + INV_ARG, + BAD_URI, + INV_URI, + NETWORK, + UNKNOWN_HOST, + SELFTEST_FAILED, + NOT_ENCRYPTED, + NOT_PROCESSED, + UNUSABLE_PUBKEY, + UNUSABLE_SECKEY, + INV_VALUE, + BAD_CERT_CHAIN, + MISSING_CERT, + NO_DATA, + BUG, + NOT_SUPPORTED, + INV_OP, + TIMEOUT, + INTERNAL, + EOF_GCRYPT, + INV_OBJ, + TOO_SHORT, + TOO_LARGE, + NO_OBJ, + NOT_IMPLEMENTED, + CONFLICT, + INV_CIPHER_MODE, + INV_FLAG, + INV_HANDLE, + TRUNCATED, + INCOMPLETE_LINE, + INV_RESPONSE, + NO_AGENT, + AGENT, + INV_DATA, + ASSUAN_SERVER_FAULT, + ASSUAN, + INV_SESSION_KEY, + INV_SEXP, + UNSUPPORTED_ALGORITHM, + NO_PIN_ENTRY, + PIN_ENTRY, + BAD_PIN, + INV_NAME, + BAD_DATA, + INV_PARAMETER, + WRONG_CARD, + NO_DIRMNGR, + DIRMNGR, + CERT_REVOKED, + NO_CRL_KNOWN, + CRL_TOO_OLD, + LINE_TOO_LONG, + NOT_TRUSTED, + CANCELED, + BAD_CA_CERT, + CERT_EXPIRED, + CERT_TOO_YOUNG, + UNSUPPORTED_CERT, + UNKNOWN_SEXP, + UNSUPPORTED_PROTECTION, + CORRUPTED_PROTECTION, + AMBIGUOUS_NAME, + CARD, + CARD_RESET, + CARD_REMOVED, + INV_CARD, + CARD_NOT_PRESENT, + NO_PKCS15_APP, + NOT_CONFIRMED, + CONFIGURATION, + NO_POLICY_MATCH, + INV_INDEX, + INV_ID, + NO_SCDAEMON, + SCDAEMON, + UNSUPPORTED_PROTOCOL, + BAD_PIN_METHOD, + CARD_NOT_INITIALIZED, + UNSUPPORTED_OPERATION, + WRONG_KEY_USAGE, + NOTHING_FOUND, + WRONG_BLOB_TYPE, + MISSING_VALUE, + HARDWARE, + PIN_BLOCKED, + USE_CONDITIONS, + PIN_NOT_SYNCED, + INV_CRL, + BAD_BER, + INV_BER, + ELEMENT_NOT_FOUND, + IDENTIFIER_NOT_FOUND, + INV_TAG, + INV_LENGTH, + INV_KEYINFO, + UNEXPECTED_TAG, + NOT_DER_ENCODED, + NO_CMS_OBJ, + INV_CMS_OBJ, + UNKNOWN_CMS_OBJ, + UNSUPPORTED_CMS_OBJ, + UNSUPPORTED_ENCODING, + UNSUPPORTED_CMS_VERSION, + UNKNOWN_ALGORITHM, + INV_ENGINE, + PUBKEY_NOT_TRUSTED, + DECRYPT_FAILED, + KEY_EXPIRED, + SIG_EXPIRED, + ENCODING_PROBLEM, + INV_STATE, + DUP_VALUE, + MISSING_ACTION, + MODULE_NOT_FOUND, + INV_OID_STRING, + INV_TIME, + INV_CRL_OBJ, + UNSUPPORTED_CRL_VERSION, + INV_CERT_OBJ, + UNKNOWN_NAME, + LOCALE_PROBLEM, + NOT_LOCKED, + PROTOCOL_VIOLATION, + INV_MAC, + INV_REQUEST, + UNKNOWN_EXTN, + UNKNOWN_CRIT_EXTN, + LOCKED, + UNKNOWN_OPTION, + UNKNOWN_COMMAND, + BUFFER_TOO_SHORT, + SEXP_INV_LEN_SPEC, + SEXP_STRING_TOO_LONG, + SEXP_UNMATCHED_PAREN, + SEXP_NOT_CANONICAL, + SEXP_BAD_CHARACTER, + SEXP_BAD_QUOTATION, + SEXP_ZERO_PREFIX, + SEXP_NESTED_DH, + SEXP_UNMATCHED_DH, + SEXP_UNEXPECTED_PUNC, + SEXP_BAD_HEX_CHAR, + SEXP_ODD_HEX_NUMBERS, + SEXP_BAD_OCT_CHAR, + ASS_GENERAL, + ASS_ACCEPT_FAILED, + ASS_CONNECT_FAILED, + ASS_INV_RESPONSE, + ASS_INV_VALUE, + ASS_INCOMPLETE_LINE, + ASS_LINE_TOO_LONG, + ASS_NESTED_COMMANDS, + ASS_NO_DATA_CB, + ASS_NO_INQUIRE_CB, + ASS_NOT_A_SERVER, + ASS_NOT_A_CLIENT, + ASS_SERVER_START, + ASS_READ_ERROR, + ASS_WRITE_ERROR, + ASS_TOO_MUCH_DATA, + ASS_UNEXPECTED_CMD, + ASS_UNKNOWN_CMD, + ASS_SYNTAX, + ASS_CANCELED, + ASS_NO_INPUT, + ASS_NO_OUTPUT, + ASS_PARAMETER, + ASS_UNKNOWN_INQUIRE, + USER_1, + USER_2, + USER_3, + USER_4, + USER_5, + USER_6, + USER_7, + USER_8, + USER_9, + USER_10, + USER_11, + USER_12, + USER_13, + USER_14, + USER_15, + USER_16, + MISSING_ERRNO, + UNKNOWN_ERRNO, + EOF, + + E2BIG, + EACCES, + EADDRINUSE, + EADDRNOTAVAIL, + EADV, + EAFNOSUPPORT, + EAGAIN, + EALREADY, + EAUTH, + EBACKGROUND, + EBADE, + EBADF, + EBADFD, + EBADMSG, + EBADR, + EBADRPC, + EBADRQC, + EBADSLT, + EBFONT, + EBUSY, + ECANCELED, + ECHILD, + ECHRNG, + ECOMM, + ECONNABORTED, + ECONNREFUSED, + ECONNRESET, + ED, + EDEADLK, + EDEADLOCK, + EDESTADDRREQ, + EDIED, + EDOM, + EDOTDOT, + EDQUOT, + EEXIST, + EFAULT, + EFBIG, + EFTYPE, + EGRATUITOUS, + EGREGIOUS, + EHOSTDOWN, + EHOSTUNREACH, + EIDRM, + EIEIO, + EILSEQ, + EINPROGRESS, + EINTR, + EINVAL, + EIO, + EISCONN, + EISDIR, + EISNAM, + EL2HLT, + EL2NSYNC, + EL3HLT, + EL3RST, + ELIBACC, + ELIBBAD, + ELIBEXEC, + ELIBMAX, + ELIBSCN, + ELNRNG, + ELOOP, + EMEDIUMTYPE, + EMFILE, + EMLINK, + EMSGSIZE, + EMULTIHOP, + ENAMETOOLONG, + ENAVAIL, + ENEEDAUTH, + ENETDOWN, + ENETRESET, + ENETUNREACH, + ENFILE, + ENOANO, + ENOBUFS, + ENOCSI, + ENODATA, + ENODEV, + ENOENT, + ENOEXEC, + ENOLCK, + ENOLINK, + ENOMEDIUM, + ENOMEM, + ENOMSG, + ENONET, + ENOPKG, + ENOPROTOOPT, + ENOSPC, + ENOSR, + ENOSTR, + ENOSYS, + ENOTBLK, + ENOTCONN, + ENOTDIR, + ENOTEMPTY, + ENOTNAM, + ENOTSOCK, + ENOTSUP, + ENOTTY, + ENOTUNIQ, + ENXIO, + EOPNOTSUPP, + EOVERFLOW, + EPERM, + EPFNOSUPPORT, + EPIPE, + EPROCLIM, + EPROCUNAVAIL, + EPROGMISMATCH, + EPROGUNAVAIL, + EPROTO, + EPROTONOSUPPORT, + EPROTOTYPE, + ERANGE, + EREMCHG, + EREMOTE, + EREMOTEIO, + ERESTART, + EROFS, + ERPCMISMATCH, + ESHUTDOWN, + ESOCKTNOSUPPORT, + ESPIPE, + ESRCH, + ESRMNT, + ESTALE, + ESTRPIPE, + ETIME, + ETIMEDOUT, + ETOOMANYREFS, + ETXTBSY, + EUCLEAN, + EUNATCH, + EUSERS, + EWOULDBLOCK, + EXDEV, + EXFULL, + + /* This is one more than the largest allowed entry. */ + CODE_DIM + } + + [CCode (cname = "gcry_error_t", cprefix = "gpg_err_")] + public struct Error : uint { + [CCode (cname = "gcry_err_make")] + public Error (ErrorSource source, ErrorCode code); + [CCode (cname = "gcry_err_make_from_errno")] + public Error.from_errno (ErrorSource source, int err); + public ErrorCode code (); + public ErrorSource source (); + + [CCode (cname = "gcry_strerror")] + public unowned string to_string (); + + [CCode (cname = "gcry_strsource")] + public unowned string source_to_string (); + } + + [CCode (cname = "enum gcry_ctl_cmds", cprefix = "GCRYCTL_")] + public enum ControlCommand { + SET_KEY, + SET_IV, + CFB_SYNC, + RESET, + FINALIZE, + GET_KEYLEN, + GET_BLKLEN, + TEST_ALGO, + IS_SECURE, + GET_ASNOID, + ENABLE_ALGO, + DISABLE_ALGO, + DUMP_RANDOM_STATS, + DUMP_SECMEM_STATS, + GET_ALGO_NPKEY, + GET_ALGO_NSKEY, + GET_ALGO_NSIGN, + GET_ALGO_NENCR, + SET_VERBOSITY, + SET_DEBUG_FLAGS, + CLEAR_DEBUG_FLAGS, + USE_SECURE_RNDPOOL, + DUMP_MEMORY_STATS, + INIT_SECMEM, + TERM_SECMEM, + DISABLE_SECMEM_WARN, + SUSPEND_SECMEM_WARN, + RESUME_SECMEM_WARN, + DROP_PRIVS, + ENABLE_M_GUARD, + START_DUMP, + STOP_DUMP, + GET_ALGO_USAGE, + IS_ALGO_ENABLED, + DISABLE_INTERNAL_LOCKING, + DISABLE_SECMEM, + INITIALIZATION_FINISHED, + INITIALIZATION_FINISHED_P, + ANY_INITIALIZATION_P, + SET_CBC_CTS, + SET_CBC_MAC, + SET_CTR, + ENABLE_QUICK_RANDOM, + SET_RANDOM_SEED_FILE, + UPDATE_RANDOM_SEED_FILE, + SET_THREAD_CBS, + FAST_POLL + } + public Error control (ControlCommand cmd, ...); + + namespace Cipher { + [CCode (cname = "enum gcry_cipher_algos", cprefix = "GCRY_CIPHER_")] + public enum Algorithm { + NONE, + IDEA, + 3DES, + CAST5, + BLOWFISH, + SAFER_SK128, + DES_SK, + AES, + AES128, + RIJNDAEL, + RIJNDAEL128, + AES192, + RIJNDAEL192, + AES256, + RIJNDAEL256, + TWOFISH, + TWOFISH128, + ARCFOUR, + DES, + SERPENT128, + SERPENT192, + SERPENT256, + RFC2268_40, + RFC2268_128, + SEED, + CAMELLIA128, + CAMELLIA192, + CAMELLIA256, + SALSA20, + SALSA20R12, + GOST28147, + CHACHA20; + + [CCode (cname = "gcry_cipher_algo_info")] + public Error info (ControlCommand what, [CCode (array_length_type = "size_t")] ref uchar[] buffer); + [CCode (cname = "gcry_cipher_algo_name")] + public unowned string to_string (); + [CCode (cname = "gcry_cipher_map_name")] + public static Algorithm from_string (string name); + [CCode (cname = "gcry_cipher_map_oid")] + public static Algorithm from_oid (string oid); + } + + [CCode (cname = "enum gcry_cipher_modes", cprefix = "GCRY_CIPHER_MODE_")] + public enum Mode { + NONE, /* No mode specified */ + ECB, /* Electronic Codebook */ + CFB, /* Cipher Feedback */ + CFB8, /* Cipher Feedback */ + CBC, /* Cipher Block Chaining */ + STREAM, /* Used with stream ciphers */ + OFB, /* Output Feedback */ + CTR, /* Counter */ + AESWRAP, + CCM, /* Counter with CBC-MAC */ + GCM, /* Galois/Counter Mode */ + POLY1305, + OCB + } + + [CCode (cname = "enum gcry_cipher_flags", cprefix = "GCRY_CIPHER_")] + public enum Flag { + SECURE, /* Allocate in secure memory. */ + ENABLE_SYNC, /* Enable CFB sync mode. */ + CBC_CTS, /* Enable CBC cipher text stealing (CTS). */ + CBC_MAC /* Enable CBC message auth. code (MAC). */ + } + [Compact] + [CCode (cname = "struct gcry_cipher_handle", lower_case_cprefix = "gcry_cipher_", free_function = "gcry_cipher_close")] + public class Cipher { + public static Error open (out Cipher cipher, Algorithm algo, Mode mode, Flag flags); + public void close (); + [CCode (cname = "gcry_cipher_ctl")] + public Error control (ControlCommand cmd, [CCode (array_length_type = "size_t")] uchar[] buffer); + public Error info (ControlCommand what, [CCode (array_length_type = "size_t")] ref uchar[] buffer); + + public Error encrypt (uchar[] out_buffer, uchar[] in_buffer); + public Error decrypt (uchar[] out_buffer, uchar[] in_buffer); + + [CCode (cname = "gcry_cipher_setkey")] + public Error set_key (uchar[] key_data); + [CCode (cname = "gcry_cipher_setiv")] + public Error set_iv (uchar[] iv_data); + [CCode (cname = "gcry_cipher_setctr")] + public Error set_counter_vector (uchar[] counter_vector); + public Error reset (); + public Error sync (); + } + } + + [Compact, CCode (cname = "struct gcry_md_handle", cprefix = "gcry_md_", free_function = "gcry_md_close")] + public class Hash { + [CCode (cname = "enum gcry_md_algos", cprefix = "GCRY_MD_")] + public enum Algorithm { + NONE, + SHA1, + RMD160, + MD5, + MD4, + MD2, + TIGER, + TIGER1, + TIGER2, + HAVAL, + SHA224, + SHA256, + SHA384, + SHA512, + SHA3_224, + SHA3_256, + SHA3_384, + SHA3_512, + SHAKE128, + SHAKE256, + CRC32, + CRC32_RFC1510, + CRC24_RFC2440, + WHIRLPOOL, + GOSTR3411_94, + STRIBOG256, + STRIBOG512; + + [CCode (cname = "gcry_md_get_algo_dlen")] + public size_t get_digest_length (); + [CCode (cname = "gcry_md_algo_info")] + public Error info (ControlCommand what, [CCode (array_length_type = "size_t")] ref uchar[] buffer); + [CCode (cname = "gcry_md_algo_name")] + public unowned string to_string (); + [CCode (cname = "gcry_md_map_name")] + public static Algorithm from_string (string name); + [CCode (cname = "gcry_md_test_algo")] + public Error is_available (); + [CCode (cname = "gcry_md_get_asnoid")] + public Error get_oid ([CCode (array_length_type = "size_t")] ref uchar[] buffer); + } + + [CCode (cname = "enum gcry_md_flags", cprefix = "GCRY_MD_FLAG_")] + public enum Flag { + SECURE, + HMAC, + BUGEMU1 + } + + public static Error open (out Hash hash, Algorithm algo, Flag flag); + public void close (); + public Error enable (Algorithm algo); + [CCode (instance_pos = -1)] + public Error copy (out Hash dst); + public void reset (); + [CCode (cname = "gcry_md_ctl")] + public Error control (ControlCommand cmd, [CCode (array_length_type = "size_t")] uchar[] buffer); + public void write (uchar[] buffer); + [CCode (array_length = false)] + public unowned uchar[] read (Algorithm algo); + public static void hash_buffer (Algorithm algo, [CCode (array_length = false)] uchar[] digest, uchar[] buffer); + public Algorithm get_algo (); + public bool is_enabled (Algorithm algo); + public bool is_secure (); + public Error info (ControlCommand what, [CCode (array_length_type = "size_t")] ref uchar[] buffer); + [CCode (cname = "gcry_md_setkey")] + public Error set_key (uchar[] key_data); + public void putc (char c); + public void final (); + public static Error list (ref Algorithm[] algos); + } + + namespace Random { + [CCode (cname = "gcry_random_level_t")] + public enum Level { + [CCode (cname = "GCRY_WEAK_RANDOM")] + WEAK, + [CCode (cname = "GCRY_STRONG_RANDOM")] + STRONG, + [CCode (cname = "GCRY_VERY_STRONG_RANDOM")] + VERY_STRONG + } + + [CCode (cname = "gcry_randomize")] + public static void randomize (uchar[] buffer, Level level = Level.VERY_STRONG); + [CCode (cname = "gcry_fast_random_poll")] + public static Error poll (); + [CCode (cname = "gcry_random_bytes", array_length = false)] + public static uchar[] random_bytes (size_t nbytes, Level level = Level.VERY_STRONG); + [CCode (cname = "gcry_random_bytes_secure", array_length = false)] + public static uchar[] random_bytes_secure (size_t nbytes, Level level = Level.VERY_STRONG); + [CCode (cname = "gcry_create_nonce")] + public static void nonce (uchar[] buffer); + } + + [Compact, CCode (cname = "struct gcry_mpi", cprefix = "gcry_mpi_", free_function = "gcry_mpi_release")] + public class MPI { + [CCode (cname = "enum gcry_mpi_format", cprefix = "GCRYMPI_FMT_")] + public enum Format { + NONE, + STD, + PGP, + SSH, + HEX, + USG + } + + [CCode (cname = "enum gcry_mpi_flag", cprefix = "GCRYMPI_FLAG_")] + public enum Flag { + SECURE, + OPAQUE + } + + public MPI (uint nbits); + [CCode (cname = "gcry_mpi_snew")] + public MPI.secure (uint nbits); + public MPI copy (); + public void set (MPI u); + public void set_ui (ulong u); + public void swap (MPI b); + public int cmp (MPI v); + public int cmp_ui (ulong v); + + public static Error scan (out MPI ret, MPI.Format format, [CCode (array_length = false)] uchar[] buffer, size_t buflen, out size_t nscanned); + [CCode (instance_pos = -1)] + public Error print (MPI.Format format, [CCode (array_length = false)] uchar[] buffer, size_t buflen, out size_t nwritter); + [CCode (instance_pos = -1)] + public Error aprint (MPI.Format format, [CCode (array_length_type = "size_t")] out uchar[] buffer); + + public void add (MPI u, MPI v); + public void add_ui (MPI u, ulong v); + public void addm (MPI u, MPI v, MPI m); + public void sub (MPI u, MPI v); + public void sub_ui (MPI u, ulong v); + public void subm (MPI u, MPI v, MPI m); + public void mul (MPI u, MPI v); + public void mul_ui (MPI u, ulong v); + public void mulm (MPI u, MPI v, MPI m); + public void mul_2exp (MPI u, ulong cnt); + public void div (MPI r, MPI dividend, MPI divisor, int round); + public void mod (MPI dividend, MPI divisor); + public void powm (MPI b, MPI e, MPI m); + public int gcd (MPI a, MPI b); + public int invm (MPI a, MPI m); + + public uint get_nbits (); + public int test_bit (uint n); + public void set_bit (uint n); + public void clear_bit (uint n); + public void set_highbit (uint n); + public void clear_highbit (uint n); + public void rshift (MPI a, uint n); + public void lshift (MPI a, uint n); + + public void set_flag (MPI.Flag flag); + public void clear_flag (MPI.Flag flag); + public int get_flag (MPI.Flag flag); + } + + [Compact, CCode (cname = "struct gcry_sexp", free_function = "gcry_sexp_release")] + public class SExp { + [CCode (cname = "int", cprefix = "GCRYSEXP_FMT_")] + public enum Format { + DEFAULT, + CANON, + BASE64, + ADVANCED + } + + public static Error @new (out SExp retsexp, void * buffer, size_t length, int autodetect); + public static Error create (out SExp retsexp, void * buffer, size_t length, int autodetect, GLib.DestroyNotify free_function); + public static Error sscan (out SExp retsexp, out size_t erroff, char[] buffer); + public static Error build (out SExp retsexp, out size_t erroff, string format, ...); + public size_t sprint (Format mode, char[] buffer); + public static size_t canon_len (uchar[] buffer, out size_t erroff, out int errcode); + public SExp find_token (string token, size_t token_length = 0); + public int length (); + public SExp? nth (int number); + public SExp? car (); + public SExp? cdr (); + [CCode (array_length_type = "size_t")] + public unowned char[] nth_data (int number); + public gcry_string nth_string (int number); + public MPI nth_mpi (int number, MPI.Format mpifmt); + } + + [CCode (cname = "char", free_function = "gcry_free")] + public class gcry_string : string { } + + [CCode (lower_case_cprefix = "gcry_pk_")] + namespace PublicKey { + [CCode (cname = "enum gcry_pk_algos")] + public enum Algorithm { + RSA, + ELG_E, + DSA, + ELG, + ECDSA; + + [CCode (cname = "gcry_pk_algo_name")] + public unowned string to_string (); + [CCode (cname = "gcry_pk_map_name")] + public static Algorithm map_name (string name); + } + + public static Error encrypt (out SExp ciphertext, SExp data, SExp pkey); + public static Error decrypt (out SExp plaintext, SExp data, SExp skey); + public static Error sign (out SExp signature, SExp data, SExp skey); + public static Error verify (SExp signature, SExp data, SExp pkey); + public static Error testkey (SExp key); + public static Error genkey (out SExp r_key, SExp s_params); + public static uint get_nbits (SExp key); + } + + [CCode (lower_case_cprefix = "gcry_kdf_")] + namespace KeyDerivation { + [CCode (cname = "enum gcry_kdf_algos", cprefix = "GCRY_KDF_", has_type_id = false)] + public enum Algorithm { + NONE, + SIMPLE_S2K, + SALTED_S2K, + ITERSALTED_S2K, + PBKDF1, + PBKDF2, + SCRYPT + } + + public GCrypt.Error derive ([CCode (type = "const void*", array_length_type = "size_t")] uint8[] passphrasse, GCrypt.KeyDerivation.Algorithm algo, GCrypt.Hash.Algorithm subalgo, [CCode (type = "const void*", array_length_type = "size_t")] uint8[] salt, ulong iterations, [CCode (type = "void*", array_length_type = "size_t", array_length_pos = 5.5)] uint8[] keybuffer); + } +} diff --git a/src/vapi/mpv.vapi b/src/vapi/mpv.vapi new file mode 100644 index 0000000..c7ae141 --- /dev/null +++ b/src/vapi/mpv.vapi @@ -0,0 +1,177 @@ +[CCode (cheader_filename = "mpv/client.h")] +namespace Mpv { + + [CCode (cname = "mpv_error", cprefix = "MPV_ERROR_", has_type_id = false)] + public enum Error { + SUCCESS, + EVENT_QUEUE_FULL, + NOMEM, + UNINITIALIZED, + INVALID_PARAMETER, + OPTION_NOT_FOUND, + OPTION_FORMAT, + OPTION_ERROR, + PROPERTY_NOT_FOUND, + PROPERTY_FORMAT, + PROPERTY_UNAVAILABLE, + PROPERTY_ERROR, + COMMAND, + LOADING_FAILED, + AO_INIT_FAILED, + VO_INIT_FAILED, + NOTHING_TO_PLAY, + UNKNOWN_FORMAT, + UNSUPPORTED, + NOT_IMPLEMENTED, + GENERIC; + + [CCode (cname = "mpv_error_string")] + public unowned string to_string (); + } + + public delegate void WakeupCallback (); + + [CCode (cname = "mpv_handle", free_function = "mpv_terminate_destroy")] + [Compact] + public class Handle { + [CCode (cname = "mpv_create")] + public Handle (); + + [CCode (cname = "mpv_initialize")] + public Error initialize (); + + [CCode (cname = "mpv_wait_event")] + public unowned Event? wait_event (double timeout); + + public WakeupCallback wakeup_callback { + [CCode (cname = "mpv_set_wakeup_callback")] set; + } + + [CCode (cname = "mpv_set_property")] + private Error set_property (string name, Format format, void *data); + + [CCode (cname = "mpv_set_property_string")] + public Error set_property_string (string name, string value); + + public Error set_property_int64 (string name, int64 value) { + return this.set_property (name, Format.INT64, &value); + } + + public Error set_property_flag (string name, bool value) { + int flag = value ? 1 : 0; + return this.set_property (name, Format.FLAG, &flag); + } + + [CCode (cname = "mpv_command")] + public Error command ([CCode (array_length = false)] string[] args); + + [CCode (cname = "mpv_command_async")] + public Error command_async (uint64 reply_userdata, [CCode (array_length = false)] string[] args); + + [CCode (cname = "mpv_observe_property")] + public Error observe_property (uint64 reply_userdata, string name, Format format); + } + + [CCode (cname = "mpv_format", cprefix = "MPV_FORMAT_", has_type_id = false)] + public enum Format { + NONE, + STRING, + OSD_STRING, + FLAG, + INT64, + DOUBLE, + NODE, + NODE_ARRAY, + NODE_MAP, + BYTE_ARRAY, + } + + [CCode (cname = "mpv_event_id", cprefix = "MPV_EVENT_", has_type_id = false)] + public enum EventId { + NONE, + SHUTDOWN, + LOG_MESSAGE, + GET_PROPERTY_REPLY, + SET_PROPERTY_REPLY, + COMMAND_REPLY, + START_FILE, + END_FILE, + FILE_LOADED, + CLIENT_MESSAGE, + VIDEO_RECONFIG, + AUDIO_RECONFIG, + SEEK, + PLAYBACK_RESTART, + PROPERTY_CHANGE, + QUEUE_OVERFLOW, + HOOK; + + [CCode (cname = "mpv_event_name")] + public unowned string to_string (); + } + + [CCode (cname = "mpv_event", destroy_function = "", has_type_id = false, has_copy_function = false)] + public struct Event { + EventId event_id; + Error error; + uint64 reply_userdata; + void *data; + + public unowned EventProperty? parse_property () + requires (event_id == EventId.PROPERTY_CHANGE) + requires (error >= 0) + { + return (EventProperty?) data; + } + + public unowned EventEndFile? parse_end_file () + requires (event_id == EventId.END_FILE) + requires (error >= 0) + { + return (EventEndFile?) data; + } + } + + [CCode (cname = "mpv_event_property", destroy_function = "", has_type_id = false, has_copy_function = false)] + public struct EventProperty { + unowned string name; + Format format; + void *data; + + public int64 parse_int64 () + requires (format == Format.INT64) + { + return * (int64 *) data; + } + + public double parse_double () + requires (format == Format.DOUBLE) + { + return * (double *) data; + } + + public bool parse_flag () + requires (format == Format.FLAG) + { + return (* (int *) data) == 1; + } + } + + [CCode (cname = "mpv_event_end_file", destroy_function = "", has_type_id = false, has_copy_function = false)] + public struct EventEndFile { + EndFileReason reason; + Error error; + int64 playlist_entry_id; + int playlist_insert_num_entries; + } + + [CCode (cname = "mpv_end_file_reason", cprefix = "MPV_END_FILE_REASON_", has_type_id = false)] + public enum EndFileReason { + EOF, + STOP, + QUIT, + ERROR, + REDIRECT, + } + +}