[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