[Xfce4-commits] <parole:master> Some TODOs fixed, some added
Hakan Erduman
noreply at xfce.org
Thu Dec 12 00:18:05 CET 2013
Updating branch refs/heads/master
to a28bdac35e71fb6dd0c776a3bc455a884cfd2cfc (commit)
from 3d28ecece50ca5127918c5d55d8138a0517a5fa1 (commit)
commit a28bdac35e71fb6dd0c776a3bc455a884cfd2cfc
Author: Hakan Erduman <smultimeter at gmail.com>
Date: Tue Nov 5 23:46:31 2013 +0100
Some TODOs fixed, some added
src/plugins/mpris2/mpris2-provider.c | 110 ++++++++++++++++++++--------------
src/plugins/mpris2/mpris2-provider.h | 1 +
2 files changed, 67 insertions(+), 44 deletions(-)
diff --git a/src/plugins/mpris2/mpris2-provider.c b/src/plugins/mpris2/mpris2-provider.c
index 9887dc4..1845c53 100644
--- a/src/plugins/mpris2/mpris2-provider.c
+++ b/src/plugins/mpris2/mpris2-provider.c
@@ -39,6 +39,7 @@ struct _Mpris2Provider
{
GObject parent;
ParoleProviderPlayer *player;
+ ParoleConf *conf;
guint owner_id;
GDBusNodeInfo *introspection_data;
@@ -127,16 +128,18 @@ static const gchar mpris2xml[] =
*/
static void mpris_Root_Raise (GDBusMethodInvocation *invocation, GVariant* parameters, Mpris2Provider *provider)
{
- ParoleProviderPlayer *player = provider->player;
-
- // TODO:
+ GtkWidget *window = parole_provider_player_get_main_window(provider->player);
+ if(window)
+ gtk_widget_show(window);
g_dbus_method_invocation_return_value (invocation, NULL);
}
static void mpris_Root_Quit (GDBusMethodInvocation *invocation, GVariant* parameters, Mpris2Provider *provider)
{
- // TODO:
+ GtkWidget *window = parole_provider_player_get_main_window(provider->player);
+ if(window)
+ gtk_widget_hide(window);
g_dbus_method_invocation_return_value (invocation, NULL);
}
@@ -158,14 +161,13 @@ static GVariant* mpris_Root_get_HasTrackList (GError **error, Mpris2Provider *pr
static GVariant* mpris_Root_get_Identity (GError **error, Mpris2Provider *provider)
{
- // TODO: Set true name.
+ // This is OK
return g_variant_new_string("Parole");
}
static GVariant* mpris_Root_get_DesktopEntry (GError **error, Mpris2Provider *provider)
{
- GVariant* ret_val = g_variant_new_string("parole");
- return ret_val;
+ return g_variant_new_string("parole");
}
static GVariant* mpris_Root_get_SupportedUriSchemes (GError **error, Mpris2Provider *provider)
@@ -192,10 +194,27 @@ static GVariant* mpris_Root_get_SupportedMimeTypes (GError **error, Mpris2Provid
*/
static void mpris_Player_Play (GDBusMethodInvocation *invocation, GVariant* parameters, Mpris2Provider *provider)
{
- // FIXME: How to play any song
- parole_provider_player_play_next (provider->player);
+ ParoleProviderPlayer *player = provider->player;
+ ParoleState state = parole_provider_player_get_state (player);
- g_dbus_method_invocation_return_value (invocation, NULL);
+ switch(state)
+ {
+ case PAROLE_STATE_PAUSED:
+ parole_provider_player_resume (provider->player);
+ break;
+
+ case PAROLE_STATE_STOPPED:
+ case PAROLE_STATE_PLAYBACK_FINISHED:
+ parole_provider_player_play_next (provider->player);
+ break;
+
+ case PAROLE_STATE_ABOUT_TO_FINISH:
+ case PAROLE_STATE_PLAYING:
+ g_debug("Unexpected: play command while playing");
+ break;
+ }
+
+ g_dbus_method_invocation_return_value (invocation, NULL);
}
static void mpris_Player_Next (GDBusMethodInvocation *invocation, GVariant* parameters, Mpris2Provider *provider)
@@ -221,16 +240,25 @@ static void mpris_Player_Pause (GDBusMethodInvocation *invocation, GVariant* par
static void mpris_Player_PlayPause (GDBusMethodInvocation *invocation, GVariant* parameters, Mpris2Provider *provider)
{
- ParoleState state = PAROLE_STATE_STOPPED;
- ParoleProviderPlayer *player = provider->player;
-
- state = parole_provider_player_get_state (player);
+ ParoleProviderPlayer *player = provider->player;
+ ParoleState state = parole_provider_player_get_state (player);
- // FIXME: Need handle the rest of the states?
- if (state == PAROLE_STATE_PAUSED)
- parole_provider_player_resume (player);
- else if (state == PAROLE_STATE_PLAYING)
- parole_provider_player_pause (player);
+ switch(state)
+ {
+ case PAROLE_STATE_PAUSED:
+ parole_provider_player_resume (player);
+ break;
+
+ case PAROLE_STATE_STOPPED:
+ case PAROLE_STATE_PLAYBACK_FINISHED:
+ parole_provider_player_play_next (player);
+ break;
+
+ case PAROLE_STATE_ABOUT_TO_FINISH:
+ case PAROLE_STATE_PLAYING:
+ parole_provider_player_play_next(player);
+ break;
+ }
g_dbus_method_invocation_return_value (invocation, NULL);
}
@@ -279,7 +307,9 @@ static GVariant* mpris_Player_get_PlaybackStatus (GError **error, Mpris2Provider
{
ParoleProviderPlayer *player = provider->player;
- switch (parole_provider_player_get_state(player)) {
+ switch (parole_provider_player_get_state(player))
+ {
+ case PAROLE_STATE_ABOUT_TO_FINISH:
case PAROLE_STATE_PLAYING:
return g_variant_new_string("Playing");
case PAROLE_STATE_PAUSED:
@@ -291,12 +321,8 @@ static GVariant* mpris_Player_get_PlaybackStatus (GError **error, Mpris2Provider
static GVariant* mpris_Player_get_LoopStatus (GError **error, Mpris2Provider *provider)
{
- gboolean repeat = FALSE;
- /* TODO: How to get conf properties?
- g_object_get (G_OBJECT (player->priv->conf),
- "shuffle", &shuffle,
- "repeat", &repeat,
- NULL);*/
+ gboolean repeat = FALSE;
+ g_object_get (G_OBJECT (provider->conf), "repeat", &repeat, NULL);
return g_variant_new_string(repeat ? "Playlist" : "None");
}
@@ -309,10 +335,7 @@ static void mpris_Player_put_LoopStatus (GVariant *value, GError **error, Mpris2
gboolean repeat = g_strcmp0("Playlist", new_loop) ? FALSE : TRUE;
- /* TODO: How to set conf properties?
- g_object_set (G_OBJECT (player->priv->conf),
- "repeat", repeat,
- NULL);*/
+ g_object_set (G_OBJECT (provider->conf), "repeat", repeat, NULL);
}
static GVariant* mpris_Player_get_Rate (GError **error, Mpris2Provider *provider)
@@ -327,14 +350,10 @@ static void mpris_Player_put_Rate (GVariant *value, GError **error, Mpris2Provid
static GVariant* mpris_Player_get_Shuffle (GError **error, Mpris2Provider *provider)
{
- ParoleProviderPlayer *player = provider->player;
gboolean shuffle = FALSE;
- /* TODO: How to get conf properties?
- g_object_get (G_OBJECT (player->priv->conf),
- "shuffle", &shuffle,
- "repeat", &repeat,
- NULL);*/
+ g_object_get (G_OBJECT (provider->conf), "shuffle", &shuffle, NULL);
+
return g_variant_new_boolean(shuffle);
}
@@ -342,15 +361,12 @@ static void mpris_Player_put_Shuffle (GVariant *value, GError **error, Mpris2Pro
{
gboolean shuffle = g_variant_get_boolean(value);
- ParoleProviderPlayer *player = provider->player;
- /* TODO: How to set conf properties?
- /*g_object_set (G_OBJECT (player->priv->conf),
- "shuffle", shuffle,
- NULL);*/
+ g_object_set (G_OBJECT (provider->conf), "shuffle", shuffle, NULL);
}
static GVariant * handle_get_trackid(const ParoleStream *stream)
{
+ // TODO: Returning a path requires TrackList interface implementation
gchar *o = alloca(260);
if(NULL == stream)
return g_variant_new_object_path("/");
@@ -407,6 +423,8 @@ static void handle_get_metadata (const ParoleStream *stream, GVariantBuilder *b)
g_variant_builder_add (b, "{sv}", "audio-samplerate",
g_variant_new_int32(0));
+ // TODO: add mpris:artUrl
+
g_free(title);
g_free(album);
g_free(artist);
@@ -492,12 +510,14 @@ static GVariant* mpris_Player_get_CanGoPrevious (GError **error, Mpris2Provider
static GVariant* mpris_Player_get_CanPlay (GError **error, Mpris2Provider *provider)
{
+ // TODO: this can cause a UI-lock
ParoleProviderPlayer *player = provider->player;
return g_variant_new_boolean(parole_provider_player_get_state (player) == PAROLE_STATE_PAUSED);
}
static GVariant* mpris_Player_get_CanPause (GError **error, Mpris2Provider *provider)
{
+ // TODO: this can cause a UI-lock
ParoleProviderPlayer *player = provider->player;
return g_variant_new_boolean(parole_provider_player_get_state (player) == PAROLE_STATE_PLAYING);
}
@@ -702,10 +722,10 @@ handle_set_property (GDBusConnection *connection,
const gchar *property_name,
GVariant *value,
GError **error,
- ParoleProviderPlugin *plugin)
+ void *user_data)
{
- Mpris2Provider *provider;
- provider = MPRIS2_PROVIDER (plugin);
+ ParoleProviderPlugin *plugin = user_data;
+ Mpris2Provider *provider = MPRIS2_PROVIDER (plugin);
/* org.mpris.MediaPlayer2 */
BEGIN_INTERFACE(0)
@@ -817,6 +837,8 @@ mpris2_provider_set_player (ParoleProviderPlugin *plugin, ParoleProviderPlayer *
g_signal_connect (player, "state_changed",
G_CALLBACK (state_changed_cb), plugin);
+
+ provider->conf = parole_conf_new();
}
static void
diff --git a/src/plugins/mpris2/mpris2-provider.h b/src/plugins/mpris2/mpris2-provider.h
index fd13f21..ace90ef 100644
--- a/src/plugins/mpris2/mpris2-provider.h
+++ b/src/plugins/mpris2/mpris2-provider.h
@@ -22,6 +22,7 @@
#define MPRIS2_PROVIDER_H_
#include <src/misc/parole.h>
+#include <src/parole-conf.h>
G_BEGIN_DECLS
More information about the Xfce4-commits
mailing list