rhythmbox r5649 - in trunk: . plugins/daap plugins/generic-player shell sources
- From: jmatthew svn gnome org
- To: svn-commits-list gnome org
- Subject: rhythmbox r5649 - in trunk: . plugins/daap plugins/generic-player shell sources
- Date: Wed, 26 Mar 2008 12:09:49 +0000 (GMT)
Author: jmatthew
Date: Wed Mar 26 12:09:49 2008
New Revision: 5649
URL: http://svn.gnome.org/viewvc/rhythmbox?rev=5649&view=rev
Log:
2008-03-26 Jonathan Matthew <jonathan d14n org>
* sources/rb-auto-playlist-source.c:
(rb_auto_playlist_source_class_init),
(rb_auto_playlist_source_set_property),
(rb_auto_playlist_source_get_property):
* sources/rb-browser-source.c: (rb_browser_source_class_init),
(rb_browser_source_get_property):
* sources/rb-source.c: (rb_source_class_init),
(rb_source_get_property):
* sources/rb-static-playlist-source.c:
(rb_static_playlist_source_class_init),
(rb_static_playlist_source_set_property),
(rb_static_playlist_source_get_property):
* sources/rb-static-playlist-source.h:
Add new base-query-model property to RBSource to provide access to the
unfiltered query model containing all entries for the source.
Override this in a few places where that's actually different to the
query-model property.
* plugins/daap/rb-daap-share.c: (databases_cb):
* plugins/generic-player/rb-generic-player-playlist-source.c:
(save_playlist):
* shell/rb-playlist-manager.c:
(rb_playlist_manager_cmd_shuffle_playlist):
Use base-query-model in a few places: sharing playlist contents,
saving playlists to generic audio players, and shuffling playlists.
Fixes #382980.
Modified:
trunk/ChangeLog
trunk/plugins/daap/rb-daap-share.c
trunk/plugins/generic-player/rb-generic-player-playlist-source.c
trunk/shell/rb-playlist-manager.c
trunk/sources/rb-auto-playlist-source.c
trunk/sources/rb-browser-source.c
trunk/sources/rb-source.c
trunk/sources/rb-static-playlist-source.c
trunk/sources/rb-static-playlist-source.h
Modified: trunk/plugins/daap/rb-daap-share.c
==============================================================================
--- trunk/plugins/daap/rb-daap-share.c (original)
+++ trunk/plugins/daap/rb-daap-share.c Wed Mar 26 12:09:49 2008
@@ -1646,7 +1646,7 @@
mb.mlcl = rb_daap_structure_add (apso, RB_DAAP_CC_MLCL);
- g_object_get (id->source, "query-model", &model, NULL);
+ g_object_get (id->source, "base-query-model", &model, NULL);
num_songs = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (model), NULL);
rb_daap_structure_add (apso, RB_DAAP_CC_MTCO, (gint32) num_songs);
Modified: trunk/plugins/generic-player/rb-generic-player-playlist-source.c
==============================================================================
--- trunk/plugins/generic-player/rb-generic-player-playlist-source.c (original)
+++ trunk/plugins/generic-player/rb-generic-player-playlist-source.c Wed Mar 26 12:09:49 2008
@@ -121,7 +121,7 @@
g_object_get (source,
"name", &name,
- "query-model", &query_model,
+ "base-query-model", &query_model,
NULL);
/* if we don't already have a name for this playlist, make one now */
Modified: trunk/shell/rb-playlist-manager.c
==============================================================================
--- trunk/shell/rb-playlist-manager.c (original)
+++ trunk/shell/rb-playlist-manager.c Wed Mar 26 12:09:49 2008
@@ -1263,12 +1263,11 @@
rb_playlist_manager_cmd_shuffle_playlist (GtkAction *action,
RBPlaylistManager *mgr)
{
- RBStaticPlaylistSource *psource;
+ RhythmDBQueryModel *base_model;
- if (RB_IS_STATIC_PLAYLIST_SOURCE (mgr->priv->selected_source)) {
- psource = RB_STATIC_PLAYLIST_SOURCE (mgr->priv->selected_source);
- rb_static_playlist_source_shuffle_playlist (psource);
- }
+ g_object_get (mgr->priv->selected_source, "base-query-model", &base_model, NULL);
+ rhythmdb_query_model_shuffle_entries (base_model);
+ g_object_unref (base_model);
}
static void
Modified: trunk/sources/rb-auto-playlist-source.c
==============================================================================
--- trunk/sources/rb-auto-playlist-source.c (original)
+++ trunk/sources/rb-auto-playlist-source.c Wed Mar 26 12:09:49 2008
@@ -58,6 +58,14 @@
GObjectConstructParam *construct_properties);
static void rb_auto_playlist_source_dispose (GObject *object);
static void rb_auto_playlist_source_finalize (GObject *object);
+static void rb_auto_playlist_source_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void rb_auto_playlist_source_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
/* source methods */
static gboolean impl_show_popup (RBSource *source);
@@ -95,6 +103,12 @@
{ "AutoPlaylistSearchTitles", NULL, N_("Titles"), NULL, N_("Search titles"), 3 }
};
+enum
+{
+ PROP_0,
+ PROP_BASE_QUERY_MODEL
+};
+
#define AUTO_PLAYLIST_SOURCE_POPUP_PATH "/AutoPlaylistSourcePopup"
typedef struct _RBAutoPlaylistSourcePrivate RBAutoPlaylistSourcePrivate;
@@ -135,6 +149,8 @@
object_class->constructor = rb_auto_playlist_source_constructor;
object_class->dispose = rb_auto_playlist_source_dispose;
object_class->finalize = rb_auto_playlist_source_finalize;
+ object_class->set_property = rb_auto_playlist_source_set_property;
+ object_class->get_property = rb_auto_playlist_source_get_property;
source_class->impl_can_cut = (RBSourceFeatureFunc) rb_false_function;
source_class->impl_can_delete = (RBSourceFeatureFunc) rb_false_function;
@@ -300,6 +316,39 @@
NULL));
}
+static void
+rb_auto_playlist_source_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ /*RBAutoPlaylistSourcePrivate *priv = RB_AUTO_PLAYLIST_SOURCE_GET_PRIVATE (source);*/
+
+ switch (prop_id) {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+rb_auto_playlist_source_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ RBAutoPlaylistSourcePrivate *priv = RB_AUTO_PLAYLIST_SOURCE_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_BASE_QUERY_MODEL:
+ g_value_set_object (value, priv->cached_all_query);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
/**
* rb_auto_playlist_source_new_from_xml:
* @shell: the #RBShell instance
Modified: trunk/sources/rb-browser-source.c
==============================================================================
--- trunk/sources/rb-browser-source.c (original)
+++ trunk/sources/rb-browser-source.c Wed Mar 26 12:09:49 2008
@@ -164,7 +164,8 @@
enum
{
PROP_0,
- PROP_SORTING_KEY
+ PROP_SORTING_KEY,
+ PROP_BASE_QUERY_MODEL
};
G_DEFINE_ABSTRACT_TYPE (RBBrowserSource, rb_browser_source, RB_TYPE_SOURCE)
@@ -212,6 +213,10 @@
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_override_property (object_class,
+ PROP_BASE_QUERY_MODEL,
+ "base-query-model");
+
g_type_class_add_private (klass, sizeof (RBBrowserSourcePrivate));
}
@@ -526,6 +531,9 @@
case PROP_SORTING_KEY:
g_value_set_string (value, source->priv->sorting_key);
break;
+ case PROP_BASE_QUERY_MODEL:
+ g_value_set_object (value, source->priv->cached_all_query);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
Modified: trunk/sources/rb-source.c
==============================================================================
--- trunk/sources/rb-source.c (original)
+++ trunk/sources/rb-source.c Wed Mar 26 12:09:49 2008
@@ -129,7 +129,8 @@
PROP_HIDDEN_WHEN_EMPTY,
PROP_SOURCE_GROUP,
PROP_ENTRY_TYPE,
- PROP_PLUGIN
+ PROP_PLUGIN,
+ PROP_BASE_QUERY_MODEL
};
enum
@@ -315,6 +316,13 @@
"RBPlugin instance for the plugin that created the source",
RB_TYPE_PLUGIN,
G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_BASE_QUERY_MODEL,
+ g_param_spec_object ("base-query-model",
+ "RhythmDBQueryModel",
+ "RhythmDBQueryModel object (unfiltered)",
+ RHYTHMDB_TYPE_QUERY_MODEL,
+ G_PARAM_READABLE));
/**
* RBSource::deleted:
@@ -634,6 +642,12 @@
case PROP_PLUGIN:
g_value_set_object (value, priv->plugin);
break;
+ case PROP_BASE_QUERY_MODEL:
+ /* unless the subclass overrides it, just assume the
+ * current query model is the base model.
+ */
+ g_value_set_object (value, priv->query_model);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
Modified: trunk/sources/rb-static-playlist-source.c
==============================================================================
--- trunk/sources/rb-static-playlist-source.c (original)
+++ trunk/sources/rb-static-playlist-source.c Wed Mar 26 12:09:49 2008
@@ -40,6 +40,14 @@
GObjectConstructParam *construct_properties);
static void rb_static_playlist_source_dispose (GObject *object);
static void rb_static_playlist_source_finalize (GObject *object);
+static void rb_static_playlist_source_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void rb_static_playlist_source_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
/* source methods */
static GList * impl_cut (RBSource *source);
@@ -98,6 +106,12 @@
{ "StaticPlaylistSearchTitles", NULL, N_("Titles"), NULL, N_("Search titles"), 3 }
};
+enum
+{
+ PROP_0,
+ PROP_BASE_QUERY_MODEL
+};
+
G_DEFINE_TYPE (RBStaticPlaylistSource, rb_static_playlist_source, RB_TYPE_PLAYLIST_SOURCE)
#define RB_STATIC_PLAYLIST_SOURCE_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), \
RB_TYPE_STATIC_PLAYLIST_SOURCE, \
@@ -131,6 +145,8 @@
object_class->constructor = rb_static_playlist_source_constructor;
object_class->dispose = rb_static_playlist_source_dispose;
object_class->finalize = rb_static_playlist_source_finalize;
+ object_class->set_property = rb_static_playlist_source_set_property;
+ object_class->get_property = rb_static_playlist_source_get_property;
source_class->impl_can_cut = (RBSourceFeatureFunc) rb_true_function;
source_class->impl_can_paste = (RBSourceFeatureFunc) rb_true_function;
@@ -150,6 +166,10 @@
playlist_class->impl_save_contents_to_xml = impl_save_contents_to_xml;
+ g_object_class_override_property (object_class,
+ PROP_BASE_QUERY_MODEL,
+ "base-query-model");
+
g_type_class_add_private (klass, sizeof (RBStaticPlaylistSourcePrivate));
}
@@ -311,6 +331,39 @@
NULL));
}
+static void
+rb_static_playlist_source_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ /*RBStaticPlaylistSourcePrivate *priv = RB_STATIC_PLAYLIST_SOURCE_GET_PRIVATE (object);*/
+
+ switch (prop_id) {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+rb_static_playlist_source_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ RBStaticPlaylistSourcePrivate *priv = RB_STATIC_PLAYLIST_SOURCE_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_BASE_QUERY_MODEL:
+ g_value_set_object (value, priv->base_model);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
void
rb_static_playlist_source_load_from_xml (RBStaticPlaylistSource *source, xmlNodePtr node)
{
@@ -884,12 +937,3 @@
return 0;
}
-void
-rb_static_playlist_source_shuffle_playlist(RBStaticPlaylistSource *source)
-{
- RBStaticPlaylistSourcePrivate *priv = RB_STATIC_PLAYLIST_SOURCE_GET_PRIVATE (source);
-
- rhythmdb_query_model_shuffle_entries (priv->base_model);
-
- rb_playlist_source_mark_dirty (RB_PLAYLIST_SOURCE (source));
-}
Modified: trunk/sources/rb-static-playlist-source.h
==============================================================================
--- trunk/sources/rb-static-playlist-source.h (original)
+++ trunk/sources/rb-static-playlist-source.h Wed Mar 26 12:09:49 2008
@@ -79,7 +79,7 @@
void rb_static_playlist_source_move_entry (RBStaticPlaylistSource *source,
RhythmDBEntry *entry,
gint index);
-void rb_static_playlist_source_shuffle_playlist (RBStaticPlaylistSource *source);
+
G_END_DECLS
#endif /* __RB_STATIC_PLAYLIST_SOURCE_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]