diff --git a/src/common/config.py b/src/common/config.py index 8e156eeb9..627da7591 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -151,7 +151,6 @@ class Config: 'before_nickname': [ opt_str, '', _('Characters that are printed before the nickname in conversations') ], 'after_nickname': [ opt_str, ':', _('Characters that are printed after the nickname in conversations') ], 'send_os_info': [ opt_bool, True ], - 'set_status_msg_from_lastfm': [ opt_bool, False, _('If checked, Gajim can regularly poll a Last.fm account and sends recently played songs through PEP.') ], 'lastfm_username': [ opt_str, '', _('The username used to identify the Last.fm account.')], 'notify_on_new_gmail_email': [ opt_bool, True ], 'notify_on_new_gmail_email_extra': [ opt_bool, False ], diff --git a/src/common/connection.py b/src/common/connection.py index 2652e2e07..fccf57476 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -195,8 +195,7 @@ class Connection(ConnectionHandlers): # We are doing disconnect at so many places, better use one function in all def disconnect(self, on_purpose=False): - #FIXME: set the Tune to None before disconnection per account - #gajim.interface.roster._music_track_changed(None, None) + gajim.interface.roster.music_track_changed(None, None) self.on_purpose = on_purpose self.connected = 0 self.time_to_reconnect = None diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index 54c16300a..d8bc1e868 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -820,7 +820,7 @@ class ConnectionDisco: listener = MusicTrackListener.get() track = listener.get_playing_track() if gajim.config.get('publish_tune'): - gajim.interface.roster._music_track_changed(listener, + gajim.interface.roster.music_track_changed(listener, track, self.name) break if features.__contains__(common.xmpp.NS_BYTESTREAM): diff --git a/src/config.py b/src/config.py index 1b66146df..2f6ccda98 100644 --- a/src/config.py +++ b/src/config.py @@ -54,6 +54,10 @@ from common import pep from common.exceptions import GajimGeneralException +if dbus_support.supported: + from music_track_listener import MusicTrackListener + import dbus + #---------- PreferencesWindow class -------------# class PreferencesWindow: '''Class for Preferences window''' @@ -555,7 +559,15 @@ class PreferencesWindow: helpers.update_optional_features() def on_publish_tune_checkbutton_toggled(self, widget): - if not widget.get_active(): + if widget.get_active(): + listener = MusicTrackListener.get() + gajim.interface.roster.music_track_changed_signal = listener.connect( + 'music-track-changed', gajim.interface.roster.music_track_changed) + track = listener.get_playing_track() + gajim.interface.roster.music_track_changed(listener, track) + else: + gajim.interface.roster.music_track_changed_signal = None + for account in gajim.connections: if gajim.connections[account].pep_supported: # As many implementations don't support retracting items, we send a "Stopped" event first @@ -563,8 +575,6 @@ class PreferencesWindow: pep.user_retract_tune(account) self.on_checkbutton_toggled(widget, 'publish_tune') helpers.update_optional_features() - gajim.interface.roster.enable_syncing_status_msg_from_current_music_track( - widget.get_active()) def on_publish_nick_checkbutton_toggled(self, widget): if not widget.get_active(): @@ -1169,13 +1179,6 @@ class PreferencesWindow: gajim.interface.instances['advanced_config'] = \ dialogs.AdvancedConfigurationWindow() - def set_status_msg_from_current_music_track_checkbutton_toggled(self, - widget): - self.on_checkbutton_toggled(widget, - 'set_status_msg_from_current_music_track') - gajim.interface.roster.enable_syncing_status_msg_from_current_music_track( - widget.get_active()) - #---------- ManageProxiesWindow class -------------# class ManageProxiesWindow: def __init__(self): diff --git a/src/roster_window.py b/src/roster_window.py index 20b5144d8..bfd193243 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1548,50 +1548,6 @@ class RosterWindow: # instance for chat_control in gajim.interface.msg_win_mgr.get_chat_controls(ji, account): chat_control.contact = contact1 - - def enable_syncing_status_msg_from_current_music_track(self, enabled): - '''enable setting status msg from currently playing music track - - if enabled is True, we listen to events from music players about - currently played music track, and we update our - status message accordinly''' - if not dbus_support.supported: - # do nothing if user doesn't have D-Bus bindings - return - if enabled: - listener = MusicTrackListener.get() - if self._music_track_changed_signal is None: - 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) - else: - if self._music_track_changed_signal is not None: - listener = MusicTrackListener.get() - listener.disconnect(self._music_track_changed_signal) - self._music_track_changed_signal = None - self._music_track_changed(None, None) - - def enable_syncing_status_msg_from_lastfm(self, enabled): - ''' enable setting status msg from a Last.fm account - - if enabled is True, we start polling the Last.fm server, - and we update our status message accordinly''' - if enabled: - if self._music_track_changed_signal is None: - listener = LastFMTrackListener.get( - gajim.config.get('lastfm_username')) - 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) - else: - if self._music_track_changed_signal is not None: - listener = LastFMTrackListener.get( - gajim.config.get('lastfm_username')) - listener.disconnect(self._music_track_changed_signal) - self._music_track_changed_signal = None - self._music_track_changed(None, None) def _change_awn_icon_status(self, status): if not dbus_support.supported: @@ -1619,7 +1575,7 @@ class RosterWindow: except Exception, e: pass - def _music_track_changed(self, unused_listener, music_track_info, + def music_track_changed(self, unused_listener, music_track_info, account=''): from common import pep if account == '': @@ -1655,7 +1611,6 @@ class RosterWindow: pep.user_send_tune(account, artist, title, source) self._music_track_info = music_track_info - def connected_rooms(self, account): if account in gajim.gc_connected[account].values(): return True @@ -5711,7 +5666,7 @@ class RosterWindow: self.xml = gtkgui_helpers.get_glade('roster_window.glade') self.window = self.xml.get_widget('roster_window') self.hpaned = self.xml.get_widget('roster_hpaned') - self._music_track_changed_signal = None + self.music_track_changed_signal = None gajim.interface.msg_win_mgr = MessageWindowMgr(self.window, self.hpaned) gajim.interface.msg_win_mgr.connect('window-delete', self.on_message_window_delete) @@ -5915,12 +5870,11 @@ class RosterWindow: publish_tune = gajim.config.get('publish_tune') if publish_tune: - if gajim.config.get('set_status_msg_from_lastfm'): - self.enable_syncing_status_msg_from_lastfm(True) - else: - self.enable_syncing_status_msg_from_current_music_track(True) - else: - self.enable_syncing_status_msg_from_current_music_track(False) + 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) if gajim.config.get('show_roster_on_startup'): self.window.show_all()