Updating branch refs/heads/bluesabre/gtk3 to b1cf05d232ced98c1395043fba69c6f6807cd096 (commit) from 0cc56610666e7773226b5b2d2bb07018a28b0d7f (commit)
commit b1cf05d232ced98c1395043fba69c6f6807cd096 Author: Sean Davis <smd.seanda...@gmail.com> Date: Sat Aug 24 22:07:14 2013 -0400 Add previous and next to tray plugin docs/plugin-api/tmpl/Parole-Plugins-unused.sgml | 16 +++++++ docs/plugin-api/tmpl/parole-provider-player.sgml | 18 -------- src/misc/parole-provider-player.c | 50 ++++++++++++++++++++++ src/misc/parole-provider-player.h | 8 ++++ src/parole-plugin-player.c | 33 ++++++++++++++ src/plugins/tray/tray-provider.c | 43 +++++++++++++++++++ 6 files changed, 150 insertions(+), 18 deletions(-) diff --git a/docs/plugin-api/tmpl/Parole-Plugins-unused.sgml b/docs/plugin-api/tmpl/Parole-Plugins-unused.sgml index fa8070d..66c12b5 100644 --- a/docs/plugin-api/tmpl/Parole-Plugins-unused.sgml +++ b/docs/plugin-api/tmpl/Parole-Plugins-unused.sgml @@ -197,6 +197,22 @@ static void sample_provider_finalize (GObject *object) @file: @Returns: +<!-- ##### FUNCTION parole_provider_player_get_main_window ##### --> +<para> + +</para> + +@player: +@Returns: + +<!-- ##### FUNCTION parole_provider_player_get_stream ##### --> +<para> + +</para> + +@player: +@Returns: + <!-- ##### FUNCTION parole_stream_init_properties ##### --> <para> diff --git a/docs/plugin-api/tmpl/parole-provider-player.sgml b/docs/plugin-api/tmpl/parole-provider-player.sgml index 88cf7eb..c9706e5 100644 --- a/docs/plugin-api/tmpl/parole-provider-player.sgml +++ b/docs/plugin-api/tmpl/parole-provider-player.sgml @@ -70,15 +70,6 @@ playback status. @PAROLE_STATE_PAUSED: @PAROLE_STATE_PLAYING: -<!-- ##### FUNCTION parole_provider_player_get_main_window ##### --> -<para> - -</para> - -@player: -@Returns: - - <!-- ##### FUNCTION parole_provider_player_pack ##### --> <para> @@ -99,15 +90,6 @@ playback status. @Returns: -<!-- ##### FUNCTION parole_provider_player_get_stream ##### --> -<para> - -</para> - -@player: -@Returns: - - <!-- ##### FUNCTION parole_provider_player_play_uri ##### --> <para> diff --git a/src/misc/parole-provider-player.c b/src/misc/parole-provider-player.c index 8bd9cac..9c3d537 100644 --- a/src/misc/parole-provider-player.c +++ b/src/misc/parole-provider-player.c @@ -326,6 +326,56 @@ gboolean parole_provider_player_stop (ParoleProviderPlayer *player) /** + * parole_provider_player_play_previous: + * @player: a #ParoleProviderPlayer + * + * Issue a play previous command to the player. + * + * Returns: TRUE if the command is processed, FALSE otherwise. + * + * Since: 0.6 + **/ +gboolean parole_provider_player_play_previous (ParoleProviderPlayer *player) +{ + gboolean ret = FALSE; + + g_return_val_if_fail (PAROLE_IS_PROVIDER_PLAYER (player), FALSE); + + if ( PAROLE_PROVIDER_PLAYER_GET_INTERFACE (player)->play_previous ) + { + ret = (*PAROLE_PROVIDER_PLAYER_GET_INTERFACE (player)->play_previous) (player); + } + + return ret; +} + + +/** + * parole_provider_player_play_next: + * @player: a #ParoleProviderPlayer + * + * Issue a play next command to the player. + * + * Returns: TRUE if the command is processed, FALSE otherwise. + * + * Since: 0.6 + **/ +gboolean parole_provider_player_play_next (ParoleProviderPlayer *player) +{ + gboolean ret = FALSE; + + g_return_val_if_fail (PAROLE_IS_PROVIDER_PLAYER (player), FALSE); + + if ( PAROLE_PROVIDER_PLAYER_GET_INTERFACE (player)->play_next ) + { + ret = (*PAROLE_PROVIDER_PLAYER_GET_INTERFACE (player)->play_next) (player); + } + + return ret; +} + + +/** * parole_provider_player_seek: * @player: a #ParoleProviderPlayer * @pos: position to seek. diff --git a/src/misc/parole-provider-player.h b/src/misc/parole-provider-player.h index 060a6a9..06af0ed 100644 --- a/src/misc/parole-provider-player.h +++ b/src/misc/parole-provider-player.h @@ -73,6 +73,10 @@ struct _ParoleProviderPlayerIface gboolean (*stop) (ParoleProviderPlayer *player); + gboolean (*play_previous) (ParoleProviderPlayer *player); + + gboolean (*play_next) (ParoleProviderPlayer *player); + gboolean (*seek) (ParoleProviderPlayer *player, gdouble pos); @@ -112,6 +116,10 @@ gboolean parole_provider_player_resume (ParoleProviderPlayer *player); gboolean parole_provider_player_stop (ParoleProviderPlayer *player); +gboolean parole_provider_player_play_previous(ParoleProviderPlayer *player); + +gboolean parole_provider_player_play_next (ParoleProviderPlayer *player); + gboolean parole_provider_player_seek (ParoleProviderPlayer *player, gdouble pos); diff --git a/src/parole-plugin-player.c b/src/parole-plugin-player.c index 6f14269..2700cd8 100644 --- a/src/parole-plugin-player.c +++ b/src/parole-plugin-player.c @@ -30,6 +30,7 @@ #include <src/misc/parole-provider-player.h> +#include "parole-dbus.h" #include "parole-plugin-player.h" #include "parole-plugins-manager.h" #include "parole-medialist.h" @@ -56,6 +57,20 @@ struct ParolePluginPlayerPrivate G_DEFINE_TYPE_WITH_CODE (ParolePluginPlayer, parole_plugin_player, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (PAROLE_TYPE_PROVIDER_PLAYER, parole_plugin_player_iface_init)) + +static void +parole_plugin_player_send_message (const gchar *message) +{ + DBusGProxy *proxy; + + proxy = parole_get_proxy (PAROLE_DBUS_PATH, PAROLE_DBUS_INTERFACE); + + dbus_g_proxy_call_no_reply (proxy, message, + G_TYPE_INVALID, + G_TYPE_INVALID); + + g_object_unref (proxy); +} static GtkWidget * parole_plugin_player_get_main_window (ParoleProviderPlayer *provider) @@ -153,6 +168,22 @@ parole_plugin_player_stop (ParoleProviderPlayer *provider) } static gboolean +parole_plugin_player_play_previous (ParoleProviderPlayer *provider) +{ + parole_plugin_player_send_message ("PrevTrack"); + + return TRUE; +} + +static gboolean +parole_plugin_player_play_next (ParoleProviderPlayer *provider) +{ + parole_plugin_player_send_message ("NextTrack"); + + return TRUE; +} + +static gboolean parole_plugin_player_seek (ParoleProviderPlayer *provider, gdouble pos) { ParolePluginPlayer *player; @@ -184,6 +215,8 @@ static void parole_plugin_player_iface_init (ParoleProviderPlayerIface *iface) iface->pause = parole_plugin_player_pause; iface->resume = parole_plugin_player_resume; iface->stop = parole_plugin_player_stop; + iface->play_previous = parole_plugin_player_play_previous; + iface->play_next = parole_plugin_player_play_next; iface->seek = parole_plugin_player_seek; iface->open_media_chooser = parole_plugin_player_open_media_chooser; } diff --git a/src/plugins/tray/tray-provider.c b/src/plugins/tray/tray-provider.c index b3f6d1f..e955505 100644 --- a/src/plugins/tray/tray-provider.c +++ b/src/plugins/tray/tray-provider.c @@ -95,6 +95,22 @@ play_pause_activated_cb (TrayProvider *tray) } static void +previous_activated_cb (TrayProvider *tray) +{ + menu_selection_done_cb (tray); + + parole_provider_player_play_previous (tray->player); +} + +static void +next_activated_cb (TrayProvider *tray) +{ + menu_selection_done_cb (tray); + + parole_provider_player_play_next (tray->player); +} + +static void open_activated_cb (TrayProvider *tray) { parole_provider_player_open_media_chooser (tray->player); @@ -119,6 +135,33 @@ popup_menu_cb (GtkStatusIcon *icon, guint button, gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); /* + * Previous Track + */ + mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_MEDIA_PREVIOUS, NULL); + gtk_menu_item_set_label(GTK_MENU_ITEM(mi), _("Previous Track")); + gtk_widget_set_sensitive (mi, TRUE); + gtk_widget_show (mi); + g_signal_connect_swapped (mi, "activate", G_CALLBACK (previous_activated_cb), tray); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + + /* + * Next Track + */ + mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_MEDIA_NEXT, NULL); + gtk_menu_item_set_label(GTK_MENU_ITEM(mi), _("Next Track")); + gtk_widget_set_sensitive (mi, TRUE); + gtk_widget_show (mi); + g_signal_connect_swapped (mi, "activate", G_CALLBACK (next_activated_cb), tray); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + + /* + * Separator. + */ + mi = gtk_separator_menu_item_new (); + gtk_widget_show (mi); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); + + /* * Open */ mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_OPEN, NULL); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits