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

commit d299ca3aa35fd16520196082f09428400970ad1a
Author: Sean Davis <[email protected]>
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);
 
_______________________________________________
Xfce4-commits mailing list
[email protected]
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to