[Xfce4-commits] <parole:master> Set the play button sensitive when media list isn't empty
Ali Abdallah
noreply at xfce.org
Tue Sep 29 11:38:02 CEST 2009
Updating branch refs/heads/master
to 2133d31be66a99bafc7b27cf8b4f50997ea2bc19 (commit)
from ae52c422cdda334800f03b32a72f280b9043d15d (commit)
commit 2133d31be66a99bafc7b27cf8b4f50997ea2bc19
Author: Ali Abdallah <ali at ali-xfce.org>
Date: Tue Sep 29 11:25:53 2009 +0000
Set the play button sensitive when media list isn't empty
parole/parole-medialist.c | 94 ++++++++++++++++++++++++---------------------
parole/parole-medialist.h | 2 +
parole/parole-player.c | 10 ++++-
3 files changed, 60 insertions(+), 46 deletions(-)
diff --git a/parole/parole-medialist.c b/parole/parole-medialist.c
index ab5144f..4a97d6f 100644
--- a/parole/parole-medialist.c
+++ b/parole/parole-medialist.c
@@ -179,7 +179,7 @@ parole_media_list_set_widget_sensitive (ParoleMediaList *list, gboolean sensitiv
}
static void
-parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit)
+parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit, gboolean select_row)
{
GtkListStore *list_store;
GtkTreePath *path;
@@ -203,7 +203,16 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit)
row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list_store), path);
gtk_tree_path_free (path);
g_signal_emit (G_OBJECT (list), signals [MEDIA_ACTIVATED], 0, row);
+ gtk_tree_row_reference_free (row);
}
+
+ if ( select_row )
+ {
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter);
+ parole_media_list_select_path (list, path);
+ gtk_tree_path_free (path);
+ }
+
/*
* Unref it as the list store will have
* a reference anyway.
@@ -211,6 +220,7 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit)
g_object_unref (file);
nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (list->priv->store), NULL);
+
if ( nch == 1 )
{
gtk_widget_set_sensitive (list->priv->up, FALSE);
@@ -220,6 +230,7 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit)
}
else
parole_media_list_set_widget_sensitive (list, TRUE);
+
}
static void
@@ -231,10 +242,16 @@ parole_media_list_files_opened_cb (ParoleMediaChooser *chooser, GSList *files, P
len = g_slist_length (files);
- for ( i = 0; i < len; i++)
+ if ( len != 0 )
+ {
+ file = g_slist_nth_data (files, 0);
+ parole_media_list_add (list, file, FALSE, TRUE);
+ }
+
+ for ( i = 1; i < len; i++)
{
file = g_slist_nth_data (files, i);
- parole_media_list_add (list, file, FALSE);
+ parole_media_list_add (list, file, FALSE, FALSE);
}
}
@@ -250,7 +267,7 @@ parole_media_list_location_opened_cb (ParoleOpenLocation *obj, const gchar *loca
else
{
file = parole_file_new (location);
- parole_media_list_add (list, file, TRUE);
+ parole_media_list_add (list, file, TRUE, TRUE);
}
}
@@ -285,7 +302,6 @@ parole_media_list_add_by_path (ParoleMediaList *list, const gchar *path, gboolea
{
GSList *file_list = NULL;
GtkFileFilter *filter;
- ParoleFile *file;
guint len;
gboolean ret = FALSE;
@@ -294,12 +310,9 @@ parole_media_list_add_by_path (ParoleMediaList *list, const gchar *path, gboolea
parole_get_media_files (filter, path, &file_list);
- for ( len = 0; len < g_slist_length (file_list); len++)
- {
- file = g_slist_nth_data (file_list, len);
- parole_media_list_add (list, file, len == 0 ? emit : FALSE);
- ret = TRUE;
- }
+ parole_media_list_files_opened_cb (NULL, file_list, list);
+ len = g_slist_length (file_list);
+ ret = len == 0 ? FALSE : TRUE;
g_object_unref (filter);
g_slist_free (file_list);
@@ -1019,8 +1032,6 @@ parole_media_list_init (ParoleMediaList *list)
{
GtkBuilder *builder;
GtkWidget *box;
- gboolean load_saved_list;
- GSList *fileslist = NULL;
list->priv = PAROLE_MEDIA_LIST_GET_PRIVATE (list);
@@ -1046,33 +1057,6 @@ parole_media_list_init (ParoleMediaList *list)
gtk_widget_show_all (GTK_WIDGET (list));
parole_media_list_dbus_init (list);
-
- load_saved_list = parole_rc_read_entry_bool ("SAVE_LIST_ON_EXIT", PAROLE_RC_GROUP_GENERAL, FALSE);
-
- if ( load_saved_list )
- {
- gchar *playlist_file;
- playlist_file = xfce_resource_save_location (XFCE_RESOURCE_DATA,
- PAROLE_AUTO_SAVED_PLAYLIST,
- FALSE);
- if ( playlist_file )
- {
- fileslist = parole_pl_parser_load_file (playlist_file);
- g_free (playlist_file);
- if ( fileslist )
- {
- guint i, len;
- len = g_slist_length (fileslist);
- for ( i = 0; i < len; i++)
- {
- ParoleFile *file;
- file = g_slist_nth_data (fileslist, i);
- parole_media_list_add (list, file, FALSE);
- }
- g_slist_free (fileslist);
- }
- }
- }
}
GtkWidget *
@@ -1093,10 +1077,32 @@ parole_media_list_new (void)
return GTK_WIDGET (list);
}
-/*
- * Public functions.
- *
- */
+void parole_media_list_load (ParoleMediaList *list)
+{
+ gboolean load_saved_list;
+ GSList *fileslist = NULL;
+
+ load_saved_list = parole_rc_read_entry_bool ("SAVE_LIST_ON_EXIT", PAROLE_RC_GROUP_GENERAL, FALSE);
+
+ if ( load_saved_list )
+ {
+ gchar *playlist_file;
+
+ playlist_file = xfce_resource_save_location (XFCE_RESOURCE_DATA,
+ PAROLE_AUTO_SAVED_PLAYLIST,
+ FALSE);
+ if ( playlist_file )
+ {
+ fileslist = parole_pl_parser_load_file (playlist_file);
+ g_free (playlist_file);
+
+ parole_media_list_files_opened_cb (NULL, fileslist, list);
+ g_slist_free (fileslist);
+ }
+ }
+
+}
+
GtkTreeRowReference *parole_media_list_get_next_row (ParoleMediaList *list,
GtkTreeRowReference *row,
gboolean repeat)
diff --git a/parole/parole-medialist.h b/parole/parole-medialist.h
index c5bd555..46259b6 100644
--- a/parole/parole-medialist.h
+++ b/parole/parole-medialist.h
@@ -67,6 +67,8 @@ GType parole_media_list_get_type (void) G_GNUC_CONST;
GtkWidget *parole_media_list_new (void);
+void parole_media_list_load (ParoleMediaList *list);
+
GtkTreeRowReference *parole_media_list_get_selected_row (ParoleMediaList *list);
GtkTreeRowReference *parole_media_list_get_next_row (ParoleMediaList *list,
diff --git a/parole/parole-player.c b/parole/parole-player.c
index f0eda00..70d450b 100644
--- a/parole/parole-player.c
+++ b/parole/parole-player.c
@@ -343,7 +343,8 @@ parole_player_media_activated_cb (ParoleMediaList *list, GtkTreeRowReference *ro
parole_player_reset (player);
- player->priv->row = row;
+ player->priv->row = gtk_tree_row_reference_copy (row);
+
model = gtk_tree_row_reference_get_model (row);
if ( gtk_tree_model_get_iter (model, &iter, gtk_tree_row_reference_get_path (row)) )
@@ -1608,7 +1609,12 @@ parole_player_init (ParolePlayer *player)
g_signal_connect (player->priv->list, "uri-opened",
G_CALLBACK (parole_player_uri_opened_cb), player);
-
+
+ /*
+ * Load auto saved media list.
+ */
+ parole_media_list_load (player->priv->list);
+
g_object_get (G_OBJECT (player->priv->conf),
"repeat", &repeat,
"shuffle", &shuffle,
More information about the Xfce4-commits
mailing list