[rhythmbox] generic-player: unify all the source creation code
- From: Jonathan Matthew <jmatthew src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rhythmbox] generic-player: unify all the source creation code
- Date: Sun, 26 Jul 2015 13:00:35 +0000 (UTC)
commit cfd44c89cc270da83f700481e165b9897d032744
Author: Jonathan Matthew <jonathan d14n org>
Date: Sun Jul 26 22:59:56 2015 +1000
generic-player: unify all the source creation code
plugins/generic-player/rb-generic-player-plugin.c | 107 ++++++++++++++++++---
plugins/generic-player/rb-generic-player-source.c | 79 ---------------
plugins/generic-player/rb-generic-player-source.h | 5 -
plugins/generic-player/rb-nokia770-source.c | 43 --------
plugins/generic-player/rb-nokia770-source.h | 4 -
plugins/generic-player/rb-psp-source.c | 42 --------
plugins/generic-player/rb-psp-source.h | 4 -
7 files changed, 92 insertions(+), 192 deletions(-)
---
diff --git a/plugins/generic-player/rb-generic-player-plugin.c
b/plugins/generic-player/rb-generic-player-plugin.c
index 17ef5d5..855361e 100644
--- a/plugins/generic-player/rb-generic-player-plugin.c
+++ b/plugins/generic-player/rb-generic-player-plugin.c
@@ -50,7 +50,8 @@
#include "rb-nokia770-source.h"
#include "rb-psp-source.h"
#include "rb-display-page-tree.h"
-
+#include "rb-builder-helpers.h"
+#include "rb-application.h"
#define RB_TYPE_GENERIC_PLAYER_PLUGIN (rb_generic_player_plugin_get_type ())
#define RB_GENERIC_PLAYER_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o),
RB_TYPE_GENERIC_PLAYER_PLUGIN, RBGenericPlayerPlugin))
@@ -94,23 +95,99 @@ static RBSource *
create_source_cb (RBRemovableMediaManager *rmm, GMount *mount, MPIDDevice *device_info,
RBGenericPlayerPlugin *plugin)
{
RBSource *source = NULL;
+ GType source_type = G_TYPE_NONE;
RBShell *shell;
+ RhythmDB *db;
+ RhythmDBEntryType *entry_type;
+ RhythmDBEntryType *error_type;
+ RhythmDBEntryType *ignore_type;
+ GtkBuilder *builder;
+ GMenu *toolbar;
+ GVolume *volume;
+ GSettings *settings;
+ const char *name_prefix;
+ char *name;
+ char *path;
+
+ if (rb_psp_is_mount_player (mount, device_info)) {
+ source_type = RB_TYPE_PSP_SOURCE;
+ name_prefix = "psp";
+ } else if (rb_nokia770_is_mount_player (mount, device_info)) {
+ source_type = RB_TYPE_NOKIA770_SOURCE;
+ name_prefix = "nokia770";
+ } else if (rb_generic_player_is_mount_player (mount, device_info)) {
+ source_type = RB_TYPE_GENERIC_PLAYER_SOURCE;
+ name_prefix = "generic-player";
+ } else {
+ return NULL;
+ }
- g_object_get (plugin, "object", &shell, NULL);
+ volume = g_mount_get_volume (mount);
+ path = g_volume_get_identifier (volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
- if (rb_psp_is_mount_player (mount, device_info))
- source = rb_psp_source_new (G_OBJECT (plugin), shell, mount, device_info);
- if (source == NULL && rb_nokia770_is_mount_player (mount, device_info))
- source = rb_nokia770_source_new (G_OBJECT (plugin), shell, mount, device_info);
- if (source == NULL && rb_generic_player_is_mount_player (mount, device_info))
- source = rb_generic_player_source_new (G_OBJECT (plugin), shell, mount, device_info);
-
- if (source) {
- plugin->player_sources = g_list_prepend (plugin->player_sources, source);
- g_signal_connect_object (G_OBJECT (source),
- "deleted", G_CALLBACK (rb_generic_player_plugin_source_deleted),
- plugin, 0);
- }
+ g_object_get (plugin, "object", &shell, NULL);
+ g_object_get (shell, "db", &db, NULL);
+
+ name = g_strdup_printf ("%s: %s", name_prefix, path);
+ entry_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
+ "db", db,
+ "name", name,
+ "save-to-disk", FALSE,
+ "category", RHYTHMDB_ENTRY_NORMAL,
+ NULL);
+ rhythmdb_register_entry_type (db, entry_type);
+ g_free (name);
+
+ name = g_strdup_printf ("%s (ignore): %s", name_prefix, path);
+ ignore_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
+ "db", db,
+ "name", name,
+ "save-to-disk", FALSE,
+ "category", RHYTHMDB_ENTRY_VIRTUAL,
+ NULL);
+ rhythmdb_register_entry_type (db, ignore_type);
+ g_free (name);
+
+ name = g_strdup_printf ("%s (errors): %s", name_prefix, path);
+ error_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
+ "db", db,
+ "name", name,
+ "save-to-disk", FALSE,
+ "category", RHYTHMDB_ENTRY_VIRTUAL,
+ NULL);
+ rhythmdb_register_entry_type (db, error_type);
+ g_free (name);
+
+ g_object_unref (db);
+
+ builder = rb_builder_load_plugin_file (G_OBJECT (plugin), "generic-player-toolbar.ui", NULL);
+ toolbar = G_MENU (gtk_builder_get_object (builder, "generic-player-toolbar"));
+ rb_application_link_shared_menus (RB_APPLICATION (g_application_get_default ()), toolbar);
+
+ settings = g_settings_new ("org.gnome.rhythmbox.plugins.generic-player");
+
+ source = RB_SOURCE (g_object_new (source_type,
+ "plugin", plugin,
+ "entry-type", entry_type,
+ "ignore-entry-type", ignore_type,
+ "error-entry-type", error_type,
+ "mount", mount,
+ "shell", shell,
+ "device-info", device_info,
+ "load-status", RB_SOURCE_LOAD_STATUS_LOADING,
+ "settings", g_settings_get_child (settings, "source"),
+ "toolbar-menu", toolbar,
+ NULL));
+
+ g_object_unref (settings);
+ g_object_unref (builder);
+
+ rb_shell_register_entry_type_for_source (shell, RB_SOURCE (source), entry_type);
+
+ plugin->player_sources = g_list_prepend (plugin->player_sources, source);
+ g_signal_connect_object (G_OBJECT (source),
+ "deleted", G_CALLBACK (rb_generic_player_plugin_source_deleted),
+ plugin, 0);
g_object_unref (shell);
return source;
diff --git a/plugins/generic-player/rb-generic-player-source.c
b/plugins/generic-player/rb-generic-player-source.c
index a71d097..e6e3603 100644
--- a/plugins/generic-player/rb-generic-player-source.c
+++ b/plugins/generic-player/rb-generic-player-source.c
@@ -464,85 +464,6 @@ impl_dispose (GObject *object)
G_OBJECT_CLASS (rb_generic_player_source_parent_class)->dispose (object);
}
-RBSource *
-rb_generic_player_source_new (GObject *plugin, RBShell *shell, GMount *mount, MPIDDevice *device_info)
-{
- RBGenericPlayerSource *source;
- RhythmDBEntryType *entry_type;
- RhythmDBEntryType *error_type;
- RhythmDBEntryType *ignore_type;
- RhythmDB *db;
- GtkBuilder *builder;
- GMenu *toolbar;
- GVolume *volume;
- GSettings *settings;
- char *name;
- char *path;
-
- volume = g_mount_get_volume (mount);
-
- g_object_get (shell, "db", &db, NULL);
- path = g_volume_get_identifier (volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
-
- name = g_strdup_printf ("generic audio player: %s", path);
- entry_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
- "db", db,
- "name", name,
- "save-to-disk", FALSE,
- "category", RHYTHMDB_ENTRY_NORMAL,
- NULL);
- rhythmdb_register_entry_type (db, entry_type);
- g_free (name);
-
- name = g_strdup_printf ("generic audio player (ignore): %s", path);
- ignore_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
- "db", db,
- "name", name,
- "save-to-disk", FALSE,
- "category", RHYTHMDB_ENTRY_VIRTUAL,
- NULL);
- rhythmdb_register_entry_type (db, ignore_type);
- g_free (name);
-
- name = g_strdup_printf ("generic audio player (errors): %s", path);
- error_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
- "db", db,
- "name", name,
- "save-to-disk", FALSE,
- "category", RHYTHMDB_ENTRY_VIRTUAL,
- NULL);
- rhythmdb_register_entry_type (db, error_type);
- g_free (name);
-
- g_object_unref (db);
- g_object_unref (volume);
- g_free (path);
-
- builder = rb_builder_load_plugin_file (plugin, "generic-player-toolbar.ui", NULL);
- toolbar = G_MENU (gtk_builder_get_object (builder, "generic-player-toolbar"));
- rb_application_link_shared_menus (RB_APPLICATION (g_application_get_default ()), toolbar);
-
- settings = g_settings_new ("org.gnome.rhythmbox.plugins.generic-player");
- source = RB_GENERIC_PLAYER_SOURCE (g_object_new (RB_TYPE_GENERIC_PLAYER_SOURCE,
- "plugin", plugin,
- "entry-type", entry_type,
- "ignore-entry-type", ignore_type,
- "error-entry-type", error_type,
- "mount", mount,
- "shell", shell,
- "device-info", device_info,
- "load-status", RB_SOURCE_LOAD_STATUS_LOADING,
- "settings", g_settings_get_child (settings,
"source"),
- "toolbar-menu", toolbar,
- NULL));
- g_object_unref (settings);
- g_object_unref (builder);
-
- rb_shell_register_entry_type_for_source (shell, RB_SOURCE (source), entry_type);
-
- return RB_SOURCE (source);
-}
-
static void
impl_delete_thyself (RBDisplayPage *page)
{
diff --git a/plugins/generic-player/rb-generic-player-source.h
b/plugins/generic-player/rb-generic-player-source.h
index 014275d..5565101 100644
--- a/plugins/generic-player/rb-generic-player-source.h
+++ b/plugins/generic-player/rb-generic-player-source.h
@@ -56,7 +56,6 @@ typedef struct
char * (*get_mount_path) (RBGenericPlayerSource *source);
void (*load_playlists) (RBGenericPlayerSource *source);
- char ** (*get_audio_folders) (RBGenericPlayerSource *source);
char * (*uri_from_playlist_uri) (RBGenericPlayerSource *source, const char *uri);
char * (*uri_to_playlist_uri) (RBGenericPlayerSource *source, const char *uri,
TotemPlParserType playlist_type);
@@ -65,10 +64,6 @@ typedef struct
char * (*build_filename) (RBGenericPlayerSource *source, RhythmDBEntry *entry);
} RBGenericPlayerSourceClass;
-RBSource * rb_generic_player_source_new (GObject *plugin,
- RBShell *shell,
- GMount *mount,
- MPIDDevice *device_info);
GType rb_generic_player_source_get_type (void);
char * rb_generic_player_source_get_mount_path (RBGenericPlayerSource *source);
diff --git a/plugins/generic-player/rb-nokia770-source.c b/plugins/generic-player/rb-nokia770-source.c
index abe771a..f13227c 100644
--- a/plugins/generic-player/rb-nokia770-source.c
+++ b/plugins/generic-player/rb-nokia770-source.c
@@ -69,49 +69,6 @@ rb_nokia770_source_init (RBNokia770Source *source)
}
-RBSource *
-rb_nokia770_source_new (GObject *plugin, RBShell *shell, GMount *mount, MPIDDevice *device_info)
-{
- RBNokia770Source *source;
- RhythmDBEntryType *entry_type;
- RhythmDB *db;
- GVolume *volume;
- char *name;
- char *path;
-
- g_assert (rb_nokia770_is_mount_player (mount, device_info));
-
- volume = g_mount_get_volume (mount);
-
- g_object_get (G_OBJECT (shell), "db", &db, NULL);
- path = g_volume_get_identifier (volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
- name = g_strdup_printf ("nokia770: %s", path);
-
- entry_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
- "db", db,
- "name", name,
- "category", RHYTHMDB_ENTRY_NORMAL,
- "save-to-disk", FALSE,
- NULL);
- rhythmdb_register_entry_type (db, entry_type);
- g_object_unref (db);
- g_free (name);
- g_free (path);
- g_object_unref (volume);
-
- source = RB_NOKIA770_SOURCE (g_object_new (RB_TYPE_NOKIA770_SOURCE,
- "plugin", plugin,
- "entry-type", entry_type,
- "mount", mount,
- "shell", shell,
- "device-info", device_info,
- NULL));
-
- rb_shell_register_entry_type_for_source (shell, RB_SOURCE (source), entry_type);
-
- return RB_SOURCE (source);
-}
-
static char *
impl_uri_from_playlist_uri (RBGenericPlayerSource *source, const char *uri)
{
diff --git a/plugins/generic-player/rb-nokia770-source.h b/plugins/generic-player/rb-nokia770-source.h
index 3529104..6fc88a6 100644
--- a/plugins/generic-player/rb-nokia770-source.h
+++ b/plugins/generic-player/rb-nokia770-source.h
@@ -53,10 +53,6 @@ typedef struct
RBGenericPlayerSourceClass parent;
} RBNokia770SourceClass;
-RBSource * rb_nokia770_source_new (GObject *plugin,
- RBShell *shell,
- GMount *mount,
- MPIDDevice *device_info);
GType rb_nokia770_source_get_type (void);
gboolean rb_nokia770_is_mount_player (GMount *mount, MPIDDevice *device_info);
diff --git a/plugins/generic-player/rb-psp-source.c b/plugins/generic-player/rb-psp-source.c
index f4bd05d..4f422de 100644
--- a/plugins/generic-player/rb-psp-source.c
+++ b/plugins/generic-player/rb-psp-source.c
@@ -67,48 +67,6 @@ rb_psp_source_init (RBPspSource *source)
{
}
-RBSource *
-rb_psp_source_new (GObject *plugin, RBShell *shell, GMount *mount, MPIDDevice *device_info)
-{
- RBPspSource *source;
- RhythmDBEntryType *entry_type;
- RhythmDB *db;
- char *name;
- char *path;
- GVolume *volume;
-
- g_assert (rb_psp_is_mount_player (mount, device_info));
-
- volume = g_mount_get_volume (mount);
-
- g_object_get (G_OBJECT (shell), "db", &db, NULL);
- path = g_volume_get_identifier (volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
- name = g_strdup_printf ("psp: %s", path);
- entry_type = g_object_new (RHYTHMDB_TYPE_ENTRY_TYPE,
- "db", db,
- "name", name,
- "save-to-disk", FALSE,
- "category", RHYTHMDB_ENTRY_NORMAL,
- NULL);
- rhythmdb_register_entry_type (db, entry_type);
- g_object_unref (db);
- g_free (name);
- g_free (path);
- g_object_unref (volume);
-
- source = RB_PSP_SOURCE (g_object_new (RB_TYPE_PSP_SOURCE,
- "plugin", plugin,
- "entry-type", entry_type,
- "mount", mount,
- "shell", shell,
- "device-info", device_info,
- NULL));
-
- rb_shell_register_entry_type_for_source (shell, RB_SOURCE (source), entry_type);
-
- return RB_SOURCE (source);
-}
-
static GFile *
find_dir_no_case (GFile *root, gboolean look_for_psp)
{
diff --git a/plugins/generic-player/rb-psp-source.h b/plugins/generic-player/rb-psp-source.h
index 936c05e..313cda8 100644
--- a/plugins/generic-player/rb-psp-source.h
+++ b/plugins/generic-player/rb-psp-source.h
@@ -53,10 +53,6 @@ typedef struct
RBGenericPlayerSourceClass parent;
} RBPspSourceClass;
-RBSource * rb_psp_source_new (GObject *plugin,
- RBShell *shell,
- GMount *mount,
- MPIDDevice *device_info);
GType rb_psp_source_get_type (void);
gboolean rb_psp_is_mount_player (GMount *mount, MPIDDevice *device_info);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]