[Xfce4-commits] <parole:master> Added --add/-a command line option to enqueue files. Addresses bug 6216

Sean Davis noreply at xfce.org
Tue Jul 24 21:28:01 CEST 2012


Updating branch refs/heads/master
         to d299ca3aa35fd16520196082f09428400970ad1a (commit)
       from a7aa63c0271632e4714049cd7c1e02343fd73c2e (commit)

commit d299ca3aa35fd16520196082f09428400970ad1a
Author: Sean Davis <smd.seandavis at gmail.com>
Date:   Tue Jul 24 15:26:09 2012 -0400

    Added --add/-a command line option to enqueue files.  Addresses bug 6216

 src/main.c                    |   22 +++++++++++++---------
 src/org.parole.media.list.xml |    1 +
 src/parole-medialist.c        |   15 +++++++++------
 src/parole-medialist.h        |    2 +-
 4 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/src/main.c b/src/main.c
index 7ef0af8..59e7dbd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -102,15 +102,14 @@ parole_send_play_disc (const gchar *uri, const gchar *device)
 }
 
 static void
-parole_send_files (gchar **filenames)
+parole_send_files (gchar **filenames, gboolean enqueue)
 {
     DBusGProxy *proxy;
     GFile *file;
     gchar **out_paths;
     GError *error = NULL;
     guint i;
-    
-    
+
     proxy = parole_get_proxy (PAROLE_DBUS_PLAYLIST_PATH, PAROLE_DBUS_PLAYLIST_INTERFACE);
 	
     if ( !proxy )
@@ -127,7 +126,8 @@ parole_send_files (gchar **filenames)
 
     dbus_g_proxy_call (proxy, "AddFiles", &error,
 		       G_TYPE_STRV, out_paths,
-		       G_TYPE_INVALID,
+		       G_TYPE_BOOLEAN, enqueue,
+			   G_TYPE_INVALID,
 		       G_TYPE_INVALID);
 		       
 		       
@@ -142,16 +142,16 @@ parole_send_files (gchar **filenames)
 }
 
 static void
-parole_send (gchar **filenames, gchar *device)
+parole_send (gchar **filenames, gchar *device, gboolean enqueue)
 {
     if ( g_strv_length (filenames) == 1 && parole_is_uri_disc (filenames[0]))
 	parole_send_play_disc (filenames[0], device);
     else
-	parole_send_files (filenames);
+	parole_send_files (filenames, enqueue);
 }
 
 static void
-parole_send_message (const gchar *message)
+	parole_send_message (const gchar *message)
 {
     DBusGProxy *proxy;
     GError *error = NULL;
@@ -216,6 +216,7 @@ int main (int argc, char **argv)
     gboolean mute = FALSE;
     gboolean no_plugins = FALSE;
     gboolean fullscreen = FALSE;
+	gboolean enqueue = FALSE;
     gchar    *client_id = NULL;
     
     GOptionEntry option_entries[] = 
@@ -235,6 +236,7 @@ int main (int argc, char **argv)
 	{ "version", 'V', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &version, N_("Version information"), NULL },
 	{ "fullscreen", 'F', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &fullscreen, N_("Start in fullscreen mode"), NULL },
 	{ "xv", '\0', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_CALLBACK, (GOptionArgFunc) xv_option_given, N_("Enabled/Disable XV support"), NULL},
+	{ "add", 'a', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &enqueue, N_("Add files to playlist"), NULL},
 	{ "sm-client-id", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &client_id, NULL, NULL },
 	{G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_FILENAME_ARRAY, &filenames, N_("Media to play"), NULL},
         { NULL, },
@@ -273,10 +275,11 @@ int main (int argc, char **argv)
 	
     if ( !new_instance && parole_dbus_name_has_owner (PAROLE_DBUS_NAME) )
     {
+	if (!enqueue)
 	g_print (_("Parole is already running, use -i to open a new instance\n"));
 	
 	if ( filenames && filenames[0] != NULL )
-	    parole_send (filenames, device);
+	    parole_send (filenames, device, enqueue);
 	else if (device != NULL)
 	    parole_send_play_disc (NULL, device);
 	
@@ -307,6 +310,7 @@ int main (int argc, char **argv)
 	if ( mute )
 	    parole_send_message ("Mute");
     }
+	
     else
     {
 	builder = parole_builder_get_main_interface ();
@@ -328,7 +332,7 @@ int main (int argc, char **argv)
 	    {
 		ParoleMediaList *list;
 		list = parole_player_get_media_list (player);
-		parole_media_list_add_files (list, filenames);
+		parole_media_list_add_files (list, filenames, enqueue);
 	    }
 	}
 	else if ( device != NULL )
diff --git a/src/org.parole.media.list.xml b/src/org.parole.media.list.xml
index bc7e021..b34cac1 100644
--- a/src/org.parole.media.list.xml
+++ b/src/org.parole.media.list.xml
@@ -9,6 +9,7 @@
 
     <method name="AddFiles">
       <arg type="as" name="files" direction="in"/>
+      <arg type="b" name="enqueue" direction="in"/>
     </method>
 
     </interface>
diff --git a/src/parole-medialist.c b/src/parole-medialist.c
index 01bdf90..f9997f0 100644
--- a/src/parole-medialist.c
+++ b/src/parole-medialist.c
@@ -1804,7 +1804,7 @@ void parole_media_list_open_location (ParoleMediaList *list)
     parole_media_list_open_location_internal (list);
 }
 
-gboolean parole_media_list_add_files (ParoleMediaList *list, gchar **filenames)
+gboolean parole_media_list_add_files (ParoleMediaList *list, gchar **filenames, gboolean enqueue)
 {
     guint i;
     guint added = 0;
@@ -1814,7 +1814,7 @@ gboolean parole_media_list_add_files (ParoleMediaList *list, gchar **filenames)
 	/*
 	 * File on disk?
 	 */
-	if ( g_file_test (filenames[i], G_FILE_TEST_EXISTS ) )
+	if ( !enqueue && g_file_test (filenames[i], G_FILE_TEST_EXISTS ) )
 	{
 	    added += parole_media_list_add_by_path (list, filenames[i], i == 0 ? TRUE : FALSE);
 	}
@@ -1823,7 +1823,10 @@ gboolean parole_media_list_add_files (ParoleMediaList *list, gchar **filenames)
 	    ParoleFile *file;
 	    TRACE ("File=%s", filenames[i]);
 	    file = parole_file_new (filenames[i]);
-	    parole_media_list_add (list, file, i == 0 ? TRUE : FALSE, i == 0 ? TRUE : FALSE);
+		if (enqueue) {
+			parole_media_list_add (list, file, FALSE, FALSE);}
+		else
+			parole_media_list_add (list, file, i == 0 ? TRUE : FALSE, i == 0 ? TRUE : FALSE);
 	    added++;
 	}
     }
@@ -1861,7 +1864,7 @@ void parole_media_list_save_list (ParoleMediaList *list)
 }
 
 static gboolean	 parole_media_list_dbus_add_files (ParoleMediaList *list,
-					           gchar **in_files,
+					           gchar **in_files, gboolean enqueue,
 						   GError **error);
 
 #include "org.parole.media.list.h"
@@ -1885,12 +1888,12 @@ parole_media_list_dbus_init (ParoleMediaList *list)
 }
 
 static gboolean	 parole_media_list_dbus_add_files (ParoleMediaList *list,
-						   gchar **in_files,
+						   gchar **in_files, gboolean enqueue,
 						   GError **error)
 {
     TRACE ("Adding files for DBus request");
     gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (list))));
-    parole_media_list_add_files (list, in_files);
+    parole_media_list_add_files (list, in_files, enqueue);
     
     return TRUE;
 }
diff --git a/src/parole-medialist.h b/src/parole-medialist.h
index 73ac6e6..4fe5189 100644
--- a/src/parole-medialist.h
+++ b/src/parole-medialist.h
@@ -118,7 +118,7 @@ void				 parole_media_list_open		    (ParoleMediaList *list);
 void			         parole_media_list_open_location    (ParoleMediaList *list);
 
 gboolean			 parole_media_list_add_files        (ParoleMediaList *list,
-								     gchar **filenames);
+								     gchar **filenames, gboolean enqueue);
 
 void				 parole_media_list_save_list	    (ParoleMediaList *list);
 


More information about the Xfce4-commits mailing list