From 24f8305b819bb116326b117c58486e8f89b90c0f Mon Sep 17 00:00:00 2001
From: Stephan Erb <steve-e@h3c.de>
Date: Mon, 27 Oct 2008 22:06:58 +0000
Subject: [PATCH] Update banshee current track when necessary. Defective by
 design but working. Fixes #2229

---
 src/music_track_listener.py | 17 +++++++++++++++++
 src/roster_window.py        |  8 ++++----
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/music_track_listener.py b/src/music_track_listener.py
index d8e27a1c63..f54b5a1697 100644
--- a/src/music_track_listener.py
+++ b/src/music_track_listener.py
@@ -220,6 +220,23 @@ def get_playing_track(self):
 			self._last_playing_music = info
 			return info
 
+		## Check Banshee playing track
+		test = False
+		if hasattr(bus, 'name_has_owner'):
+			if bus.name_has_owner('org.bansheeproject.Banshee'):
+				test = True
+		elif dbus.dbus_bindings.bus_name_has_owner(bus.get_connection(),
+		'org.bansheeproject.Banshee'):
+			test = True
+		if test:
+			banshee = bus.get_object('org.bansheeproject.Banshee',
+				'/org/bansheeproject/Banshee/PlayerEngine')
+			currentTrack = banshee.GetCurrentTrack()
+			if currentTrack:
+				song = self._banshee_properties_extract(currentTrack)
+				self._last_playing_music = song
+				return song
+
 		return None
 
 # here we test :)
diff --git a/src/roster_window.py b/src/roster_window.py
index 81fb8ff6a4..665344db39 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -1004,7 +1004,7 @@ def draw_account(self, account):
 					gajim.connections[account].activity['activity'].strip(),
 					gajim.connections[account].activity['subactivity'].strip()). \
 					get_pixbuf()
-		 	else:
+			else:
 				self.model[child_iter][C_ACTIVITY_PIXBUF] = \
 					gtkgui_helpers.load_activity_icon(
 					gajim.connections[account].activity['activity'].strip()). \
@@ -3285,12 +3285,12 @@ def on_publish_tune_toggled(self, widget, account):
 		act = widget.get_active()
 		gajim.config.set_per('accounts', account, 'publish_tune', act)
 		if act:
+			listener = MusicTrackListener.get()
 			if not self.music_track_changed_signal:
-				listener = MusicTrackListener.get()
 				self.music_track_changed_signal = listener.connect(
 					'music-track-changed', self.music_track_changed)
-				track = listener.get_playing_track()
-				self.music_track_changed(listener, track)
+			track = listener.get_playing_track()
+			self.music_track_changed(listener, track)
 		else:
 			# disable it only if no other account use it
 			for acct in gajim.connections:
-- 
GitLab