Ticket #2940: banshee-pausing.diff
| File banshee-pausing.diff, 4.3 kB (added by tristil@…, 23 months ago) |
|---|
-
src/roster_window.py
2964 2964 2965 2965 def _music_track_changed(self, unused_listener, music_track_info): 2966 2966 accounts = gajim.connections.keys() 2967 #print music_track_info 2967 2968 if music_track_info is None: 2968 2969 status_message = '' 2969 2970 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') % \ 2971 2975 {'title': music_track_info.title, 2972 2976 'artist': music_track_info.artist } + ' ♪' 2973 2977 for account in accounts: -
src/music_track_listener.py
24 24 import dbus.glib 25 25 26 26 class MusicTrackInfo(object): 27 __slots__ = ['title', 'album', 'artist', 'duration', 'track_number' ]27 __slots__ = ['title', 'album', 'artist', 'duration', 'track_number', 'paused'] 28 28 29 29 30 30 class MusicTrackListener(gobject.GObject): … … 65 65 banshee_bus = dbus.SessionBus() 66 66 dubus = banshee_bus.get_object('org.freedesktop.DBus', '/org/freedesktop/dbus') 67 67 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) 68 72 if self.dubus_methods.NameHasOwner('org.gnome.Banshee'): 69 73 self._get_banshee_bus() 74 self.banshee_is_here = True 70 75 # Otherwise, it opens Banshee! 71 76 self.banshee_props ={} 72 self.current_banshee_title = ''73 77 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 74 86 87 75 88 def _get_banshee_bus(self): 89 #self.current_banshee_title = "new" 76 90 bus = dbus.SessionBus() 77 91 banshee = bus.get_object('org.gnome.Banshee', '/org/gnome/Banshee/Player') 78 92 self.banshee_methods = dbus.Interface(banshee, 'org.gnome.Banshee.Core') … … 129 143 not hasattr(self, 'banshee_methods'): 130 144 self._get_banshee_bus() 131 145 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'] = \ 137 152 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..." 139 164 if self.current_banshee_title != self.banshee_props['title']: 140 165 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 141 174 self.current_banshee_title = self.banshee_props['title'] 142 175 return 1 143 176 … … 151 184 info.album = props['album'] 152 185 info.artist = props['artist'] 153 186 info.duration = int(props['duration']) 187 info.paused = props['paused'] 154 188 return info 155 189 156 190 def get_playing_track(self):
