Ticket #2940: banshee-pausing.diff

File banshee-pausing.diff, 4.3 kB (added by tristil@…, 23 months ago)

Second diff

  • src/roster_window.py

     
    29642964         
    29652965        def _music_track_changed(self, unused_listener, music_track_info): 
    29662966                accounts = gajim.connections.keys() 
     2967                #print music_track_info 
    29672968                if music_track_info is None: 
    29682969                        status_message = '' 
    29692970                else: 
    2970                         status_message = '♪ ' + _('"%(title)s" by %(artist)s') % \ 
     2971                        if hasattr(music_track_info, "paused") and music_track_info.paused == 0: 
     2972                                status_message = '' 
     2973                        else: 
     2974                                status_message = '♪ ' + _('"%(title)s" by %(artist)s') % \ 
    29712975                                {'title': music_track_info.title, 
    29722976                                        'artist': music_track_info.artist } + ' ♪' 
    29732977                for account in accounts: 
  • src/music_track_listener.py

     
    2424        import dbus.glib 
    2525 
    2626class MusicTrackInfo(object): 
    27         __slots__ = ['title', 'album', 'artist', 'duration', 'track_number'] 
     27        __slots__ = ['title', 'album', 'artist', 'duration', 'track_number', 'paused'] 
    2828 
    2929 
    3030class MusicTrackListener(gobject.GObject): 
     
    6565                banshee_bus = dbus.SessionBus() 
    6666                dubus = banshee_bus.get_object('org.freedesktop.DBus', '/org/freedesktop/dbus') 
    6767                self.dubus_methods = dbus.Interface(dubus, 'org.freedesktop.DBus') 
     68                self.current_banshee_title = "" 
     69                self.banshee_paused_before = False 
     70                self.banshee_is_here = False 
     71                gobject.timeout_add(10000, self._check_if_banshee_bus) 
    6872                if self.dubus_methods.NameHasOwner('org.gnome.Banshee'): 
    6973                        self._get_banshee_bus() 
     74                        self.banshee_is_here = True 
    7075                # Otherwise, it opens Banshee! 
    7176                self.banshee_props ={} 
    72                 self.current_banshee_title = '' 
    7377                gobject.timeout_add(1000, self._banshee_check_track_status) 
     78         
     79        def _check_if_banshee_bus(self): 
     80                if self.dubus_methods.NameHasOwner('org.gnome.Banshee'): 
     81                        self._get_banshee_bus() 
     82                        self.banshee_is_here = True 
     83                else: 
     84                        self.banshee_is_here = False 
     85                return True 
    7486 
     87                 
    7588        def _get_banshee_bus(self): 
     89                #self.current_banshee_title = "new" 
    7690                bus = dbus.SessionBus() 
    7791                banshee = bus.get_object('org.gnome.Banshee', '/org/gnome/Banshee/Player') 
    7892                self.banshee_methods = dbus.Interface(banshee, 'org.gnome.Banshee.Core') 
     
    129143                not hasattr(self, 'banshee_methods'): 
    130144                        self._get_banshee_bus() 
    131145 
    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'] = \ 
     146                if self.dubus_methods.NameHasOwner('org.gnome.Banshee') and self.banshee_is_here: 
     147                        try: 
     148                                self.banshee_props['title'] = self.banshee_methods.GetPlayingTitle() 
     149                                self.banshee_props['album'] = self.banshee_methods.GetPlayingAlbum() 
     150                                self.banshee_props['artist'] = self.banshee_methods.GetPlayingArtist() 
     151                                self.banshee_props['duration'] = \ 
    137152                                self.banshee_methods.GetPlayingDuration() 
    138                         info = self._banshee_properties_extract(self.banshee_props) 
     153                                self.banshee_props['paused'] = self.banshee_methods.GetPlayingStatus() 
     154                                info = self._banshee_properties_extract(self.banshee_props) 
     155                        except dbus.DBusException, err: 
     156                                print "I'm an exception, %s" % err 
     157                                info = None 
     158                                 
     159                                for key in self.banshee_props.keys(): 
     160                                        self.banshee_props[key] = "" 
     161                                self.banshee_is_here = False 
     162                         
     163                        #print "Just trying to get by..."        
    139164                        if self.current_banshee_title != self.banshee_props['title']: 
    140165                                self.emit('music-track-changed', info) 
     166                                self.banshee_paused_before = False 
     167                        if self.banshee_props['paused'] == 0 and self.banshee_paused_before == False: 
     168                                self.emit('music-track-changed', info) 
     169                                self.banshee_paused_before = True 
     170                        else:  
     171                                if self.banshee_paused_before and self.banshee_props['paused'] == 1: 
     172                                        self.emit('music-track-changed', info) 
     173                                        self.banshee_paused_before = False 
    141174                        self.current_banshee_title = self.banshee_props['title'] 
    142175                return 1 
    143176 
     
    151184                info.album = props['album'] 
    152185                info.artist = props['artist'] 
    153186                info.duration = int(props['duration']) 
     187                info.paused = props['paused'] 
    154188                return info 
    155189 
    156190        def get_playing_track(self):