Show
Ignore:
Timestamp:
02/06/07 20:54:30 (22 months ago)
Author:
asterix
Message:

merge diff from trunk

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/gajim_0.11/src/music_track_listener.py

    r7681 r7940  
    6161                bus.add_signal_receiver(self._player_playing_changed_cb, 
    6262                        'playingChanged', 'org.gnome.Rhythmbox.Player') 
     63                         
     64                ## Banshee 
     65                banshee_bus = dbus.SessionBus() 
     66                dubus = banshee_bus.get_object('org.freedesktop.DBus', '/org/freedesktop/dbus') 
     67                self.dubus_methods = dbus.Interface(dubus, 'org.freedesktop.DBus') 
     68                if self.dubus_methods.NameHasOwner('org.gnome.Banshee'): 
     69                        self._get_banshee_bus() 
     70                # Otherwise, it opens Banshee! 
     71                self.banshee_props ={} 
     72                self.current_banshee_title = '' 
     73                gobject.timeout_add(1000, self._banshee_check_track_status) 
     74 
     75        def _get_banshee_bus(self): 
     76                bus = dbus.SessionBus() 
     77                banshee = bus.get_object('org.gnome.Banshee', '/org/gnome/Banshee/Player') 
     78                self.banshee_methods = dbus.Interface(banshee, 'org.gnome.Banshee.Core') 
    6379 
    6480        def do_music_track_changed(self, info): 
     
    108124                info = self._rhythmbox_properties_extract(props) 
    109125                self.emit('music-track-changed', info) 
     126 
     127        def _banshee_check_track_status(self): 
     128                if self.dubus_methods.NameHasOwner('org.gnome.Banshee') and \ 
     129                not hasattr(self, 'banshee_methods'): 
     130                        self._get_banshee_bus() 
     131 
     132                if self.dubus_methods.NameHasOwner('org.gnome.Banshee'): 
     133                        self.banshee_props['title'] = self.banshee_methods.GetPlayingTitle() 
     134                        self.banshee_props['album'] = self.banshee_methods.GetPlayingAlbum() 
     135                        self.banshee_props['artist'] = self.banshee_methods.GetPlayingArtist() 
     136                        self.banshee_props['duration'] = \ 
     137                                self.banshee_methods.GetPlayingDuration() 
     138                        info = self._banshee_properties_extract(self.banshee_props) 
     139                        if self.current_banshee_title != self.banshee_props['title']: 
     140                                self.emit('music-track-changed', info) 
     141                        self.current_banshee_title = self.banshee_props['title'] 
     142                return 1 
     143 
     144        def _banshee_music_track_change_cb(self, arg): 
     145                info = self._banshee_properties_extract(arg) 
     146                self.emit('music-track-changed', info) 
     147 
     148        def _banshee_properties_extract(self, props): 
     149                info = MusicTrackInfo() 
     150                info.title = props['title'] 
     151                info.album = props['album'] 
     152                info.artist = props['artist'] 
     153                info.duration = int(props['duration']) 
     154                return info 
    110155 
    111156        def get_playing_track(self):