[Xfce4-commits] <xfmpc:master> Update title to reflect what is playing in MPD (bug #6127)
Vincent Legout
noreply at xfce.org
Sun Jan 24 07:04:06 CET 2010
Updating branch refs/heads/master
to 8041e94078b70d14226c73b1843445dada008da3 (commit)
from 48493a74f9109d6fb549a95533a07b46c5e2e1b5 (commit)
commit 8041e94078b70d14226c73b1843445dada008da3
Author: Vincent Legout <vincent at legout.info>
Date: Sun Jan 24 13:38:36 2010 +0800
Update title to reflect what is playing in MPD (bug #6127)
Add xfmpc_mpdclient_is_paused
src/main-window.vala | 26 ++++++++++++++++++++++++++
src/mpdclient.c | 7 +++++++
src/mpdclient.h | 1 +
src/mpdclient.vapi | 1 +
4 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/src/main-window.vala b/src/main-window.vala
index 20e2efd..72bb1b0 100644
--- a/src/main-window.vala
+++ b/src/main-window.vala
@@ -115,6 +115,9 @@ namespace Xfmpc {
((Gtk.ToggleAction )(this.action_group.get_action ("view-statusbar"))).set_active (this.preferences.show_statusbar);
/* === Signals === */
+ this.mpdclient.pp_changed.connect (cb_update_title);
+ this.mpdclient.stopped.connect (cb_update_title);
+ this.mpdclient.song_changed.connect (cb_update_title);
this.mpdclient.playlist_changed.connect (cb_playlist_changed);
this.preferences.notify["show-statusbar"].connect (cb_show_statusbar_changed);
@@ -242,6 +245,29 @@ namespace Xfmpc {
private void cb_playlist_changed () {
update_statusbar ();
+
+ cb_update_title ();
+ }
+
+ private void cb_update_title () {
+ if (this.mpdclient.is_playing ())
+ set_title (get_updated_title ());
+ else if (this.mpdclient.is_paused ())
+ set_title ("[" + get_updated_title () + "]");
+ else
+ set_title (Config.PACKAGE_NAME);
+ }
+
+ private string get_updated_title () {
+ if (this.mpdclient.get_artist () != "n/a" && this.mpdclient.get_title () != "n/a")
+ return ("%s - %s").printf (this.mpdclient.get_artist (),
+ this.mpdclient.get_title ());
+ else if (this.mpdclient.get_artist () == "n/a")
+ return ("%s").printf (this.mpdclient.get_title ());
+ else if (this.mpdclient.get_title () == "n/a")
+ return ("%s").printf (this.mpdclient.get_artist ());
+ else
+ return Config.PACKAGE_NAME;
}
private void cb_show_statusbar_changed (ParamSpec pspec) {
diff --git a/src/mpdclient.c b/src/mpdclient.c
index eed84e8..83fced2 100644
--- a/src/mpdclient.c
+++ b/src/mpdclient.c
@@ -660,6 +660,13 @@ xfmpc_mpdclient_is_playing (XfmpcMpdclient *mpdclient)
}
gboolean
+xfmpc_mpdclient_is_paused (XfmpcMpdclient *mpdclient)
+{
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT (mpdclient)->priv;
+ return mpd_player_get_state (priv->mi) == MPD_PLAYER_PAUSE;
+}
+
+gboolean
xfmpc_mpdclient_is_stopped (XfmpcMpdclient *mpdclient)
{
XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT (mpdclient)->priv;
diff --git a/src/mpdclient.h b/src/mpdclient.h
index 48b8427..57a7f0c 100644
--- a/src/mpdclient.h
+++ b/src/mpdclient.h
@@ -84,6 +84,7 @@ guint8 xfmpc_mpdclient_get_volume (XfmpcMpdclient
gboolean xfmpc_mpdclient_get_repeat (XfmpcMpdclient *mpdclient);
gboolean xfmpc_mpdclient_get_random (XfmpcMpdclient *mpdclient);
gboolean xfmpc_mpdclient_is_playing (XfmpcMpdclient *mpdclient);
+gboolean xfmpc_mpdclient_is_paused (XfmpcMpdclient *mpdclient);
gboolean xfmpc_mpdclient_is_stopped (XfmpcMpdclient *mpdclient);
void xfmpc_mpdclient_update_status (XfmpcMpdclient *mpdclient);
diff --git a/src/mpdclient.vapi b/src/mpdclient.vapi
index c0f489d..d0c5ce0 100644
--- a/src/mpdclient.vapi
+++ b/src/mpdclient.vapi
@@ -26,6 +26,7 @@ namespace Xfmpc {
public uchar get_volume ();
public bool is_connected ();
public bool is_playing ();
+ public bool is_paused ();
public bool is_stopped ();
public bool next ();
public bool pause ();
More information about the Xfce4-commits
mailing list