diff options
-rw-r--r-- | nephilim/mpclient.py | 112 | ||||
-rw-r--r-- | nephilim/plugins/AlbumCover.py | 1 | ||||
-rw-r--r-- | nephilim/plugins/Library.py | 2 | ||||
-rw-r--r-- | nephilim/plugins/Lyrics.py | 2 | ||||
-rw-r--r-- | nephilim/plugins/Notify.py | 6 | ||||
-rw-r--r-- | nephilim/plugins/Playlist.py | 1 | ||||
-rw-r--r-- | nephilim/plugins/Systray.py | 4 | ||||
-rw-r--r-- | nephilim/winConnect.py | 11 | ||||
-rw-r--r-- | nephilim/winMain.py | 12 |
9 files changed, 57 insertions, 94 deletions
diff --git a/nephilim/mpclient.py b/nephilim/mpclient.py index 91afd40..c2a583b 100644 --- a/nephilim/mpclient.py +++ b/nephilim/mpclient.py @@ -13,16 +13,11 @@ class MPClient(QtCore.QObject): _cur_lib = None _cur_playlist = None _cur_song = None + _status = {'volume' : None, 'repeat' : None, 'random' : None, + 'playlist' : None, 'playlistlength' : None, 'state' : None, + 'time' : None, 'length' : None, 'xfade' : None, 'updatings_db' : None} - # objects used for comparison with previous value - _cur_songid = None - _cur_time = None - _cur_state = None - _cur_volume = None - _updatings_db = None - _cur_plist_id = None - - _timer_id = None + _timer_id = None _retr_mutex = QtCore.QMutex() @@ -49,15 +44,13 @@ class MPClient(QtCore.QObject): self._client = None return False - self.emit(QtCore.SIGNAL('connected')) - self._update_lib() self._update_playlist() self._update_current_song() - self._timer_id = self.startTimer(500) - self.emit(QtCore.SIGNAL('state_changed'), 'stop', self.status()['state']) - self.emit(QtCore.SIGNAL('ready')) + self.emit(QtCore.SIGNAL('connected')) + self.timerEvent(None) + self._timer_id = self.startTimer(500) return True def disconnect_mpd(self): @@ -89,6 +82,10 @@ class MPClient(QtCore.QObject): return None return self._cur_song + def status(self): + """Get current MPD status.""" + return self._status + def update_db(self, paths = None): """Starts MPD database update.""" if not paths: @@ -98,22 +95,6 @@ class MPClient(QtCore.QObject): self._client.update(path) self._client.command_list_end() - def status(self): - """Get current status""" - if self.is_connected() == False: - return None - ret = self._retrieve(self._client.status) - if not ret: - return None - if 'time' in ret: - len = int(ret['time'][ret['time'].find(':')+1:]) - cur = int(ret['time'][:ret['time'].find(':')]) - ret['length'] = len - ret['time'] = cur - else: - ret['length'] = 0 - ret['time'] = 0 - return ret def outputs(self): """Returns an array of configured MPD audio outputs.""" @@ -246,12 +227,31 @@ class MPClient(QtCore.QObject): self._cur_song = None else: self._cur_song = Song(song) + def _update_status(self): + """Get current status""" + if self.is_connected() == False: + return None + ret = self._retrieve(self._client.status) + if not ret: + return None + if 'time' in ret: + cur, len = ret['time'].split(':') + ret['length'] = int(len) + ret['time'] = int(cur) + else: + ret['length'] = 0 + ret['time'] = 0 + + if not 'updatings_db' in ret: + ret['updatings_db'] = 0 + return ret def timerEvent(self, event): """Check for changes since last check.""" - status = self.status() + old_status = self._status + self._status = self._update_status() - if not status: + if not self._status: self._client = None self.emit(QtCore.SIGNAL('disconnected')) self.killTimer(self._timer_id) @@ -269,38 +269,20 @@ class MPClient(QtCore.QObject): self.emit(QtCore.SIGNAL('song_changed'), cur_id) self._cur_songid = cur_id - # check if the time has changed - if 'time' in status: - cur_time = status['time'] - if cur_time != self._cur_time: - self.emit(QtCore.SIGNAL('time_changed'), cur_time) - self._cur_time = cur_time - - # check if the playing state has changed - if 'state' in status: - cur_state = status['state'] - if cur_state != self._cur_state: - self.emit(QtCore.SIGNAL('state_changed'), cur_state) - self._cur_state = cur_state - - #check if the volume has changed - if 'volume' in status: - cur_vol = int(status['volume']) - if cur_vol != self._cur_volume: - self.emit(QtCore.SIGNAL('volume_changed'), cur_vol) - self._cur_volume = cur_vol - - if 'playlist' in status: - cur_plist_id = int(status['playlist']) - if cur_plist_id != self._cur_plist_id: - self._update_playlist() - self.emit(QtCore.SIGNAL('playlist_changed')) - self._cur_plist_id = cur_plist_id - - " update has started" - if 'updatings_db' in status and self._updatings_db == None: - self._updatings_db = status['updatings_db'] + if self._status['time'] != old_status['time']: + self.emit(QtCore.SIGNAL('time_changed'), self._status['time']) + + if self._status['state'] != old_status['state']: + self.emit(QtCore.SIGNAL('state_changed'), self._status['state']) + + if self._status['volume'] != old_status['volume']: + self.emit(QtCore.SIGNAL('volume_changed'), int(self._status['volume'])) + + if self._status['playlist'] != old_status['playlist']: + self._update_playlist() + self.emit(QtCore.SIGNAL('playlist_changed')) + + if self._status['updatings_db'] and not old_status['updatings_db']: self.emit(QtCore.SIGNAL('update_started')) - if not('updatings_db' in status) and self._updatings_db: - self._updatings_db = None + if not self._status['updatings_db'] and old_status['updatings_db']: self.emit(QtCore.SIGNAL('update_finished')) diff --git a/nephilim/plugins/AlbumCover.py b/nephilim/plugins/AlbumCover.py index 412553a..ae410ff 100644 --- a/nephilim/plugins/AlbumCover.py +++ b/nephilim/plugins/AlbumCover.py @@ -38,7 +38,6 @@ class wgAlbumCover(QtGui.QLabel): self.connect(save_action, QtCore.SIGNAL('triggered()'), self.save_cover) self.connect(self.p.mpclient(), QtCore.SIGNAL('song_changed'), self.refresh) - self.connect(self.p.mpclient(), QtCore.SIGNAL('ready'), self.refresh) self.connect(self.p.mpclient(), QtCore.SIGNAL('disconnected'), self.refresh) self.connect(self.p.mpclient(), QtCore.SIGNAL('state_changed'),self.refresh) diff --git a/nephilim/plugins/Library.py b/nephilim/plugins/Library.py index 9790821..3f3f2d5 100644 --- a/nephilim/plugins/Library.py +++ b/nephilim/plugins/Library.py @@ -85,7 +85,7 @@ class LibraryWidget(QtGui.QWidget): self.layout().addWidget(self.search_txt) self.layout().addWidget(self.library) - self.connect(self.plugin.mpclient(), QtCore.SIGNAL('ready'), self.fill_library) + self.connect(self.plugin.mpclient(), QtCore.SIGNAL('connected'), self.fill_library) self.connect(self.plugin.mpclient(), QtCore.SIGNAL('disconnected'), self.fill_library) self.connect(self.plugin.mpclient(), QtCore.SIGNAL('update_finished'), self.fill_library) diff --git a/nephilim/plugins/Lyrics.py b/nephilim/plugins/Lyrics.py index 4cb2e16..ee8bb5b 100644 --- a/nephilim/plugins/Lyrics.py +++ b/nephilim/plugins/Lyrics.py @@ -46,11 +46,9 @@ class Lyrics(Plugin): def _load(self): self.o = wgLyrics(self) self.connect(self.mpclient(), QtCore.SIGNAL('song_changed'), self.refresh) - self.connect(self.mpclient(), QtCore.SIGNAL('ready'), self.refresh) def _unload(self): self.o = None self.disconnect(self.mpclient(), QtCore.SIGNAL('song_changed'), self.refresh) - self.disconnect(self.mpclient(), QtCore.SIGNAL('ready'), self.refresh) def getInfo(self): return "Show (and fetch) the lyrics of the currently playing song." diff --git a/nephilim/plugins/Notify.py b/nephilim/plugins/Notify.py index 7535f05..ba998cc 100644 --- a/nephilim/plugins/Notify.py +++ b/nephilim/plugins/Notify.py @@ -88,14 +88,14 @@ class Notify(Plugin): def _load(self): self.o = winNotify(self) self.connect(self.mpclient(), QtCore.SIGNAL('song_changed'), self.onSongChange) - self.connect(self.mpclient(), QtCore.SIGNAL('ready'), self.onReady) + self.connect(self.mpclient(), QtCore.SIGNAL('connected'), self.onConnected) self.connect(self.mpclient(), QtCore.SIGNAL('disconnected'), self.onDisconnect) self.connect(self.mpclient(), QtCore.SIGNAL('state_changed'), self.onStateChange) self.connect(self.mpclient(), QtCore.SIGNAL('volume_changed'),self.onVolumeChange) def _unload(self): self.o=None self.disconnect(self.mpclient(), QtCore.SIGNAL('song_changed'), self.onSongChange) - self.disconnect(self.mpclient(), QtCore.SIGNAL('ready'), self.onReady) + self.disconnect(self.mpclient(), QtCore.SIGNAL('connected'), self.onConnected) self.disconnect(self.mpclient(), QtCore.SIGNAL('disconnected'), self.onDisconnect) self.disconnect(self.mpclient(), QtCore.SIGNAL('state_changed'), self.onStateChange) self.disconnect(self.mpclient(), QtCore.SIGNAL('volume_changed'),self.onVolumeChange) @@ -111,7 +111,7 @@ class Notify(Plugin): NOTIFY_PRIORITY_SONG) self.settings().endGroup() - def onReady(self): + def onConnected(self): self.o.show('%s loaded'%APPNAME, self.settings().value(self.name() + '/timer').toInt()[0]) def onDisconnect(self): diff --git a/nephilim/plugins/Playlist.py b/nephilim/plugins/Playlist.py index e894b86..f784fab 100644 --- a/nephilim/plugins/Playlist.py +++ b/nephilim/plugins/Playlist.py @@ -40,7 +40,6 @@ class PlaylistWidget(QtGui.QWidget): self.connect(self.plugin.mpclient(), QtCore.SIGNAL('playlist_changed'), self.fill_playlist) self.connect(self.plugin.mpclient(), QtCore.SIGNAL('disconnected'), self.fill_playlist) - self.connect(self.plugin.mpclient(), QtCore.SIGNAL('ready'), self.fill_playlist) class Playlist(QtGui.QTreeWidget): song = None diff --git a/nephilim/plugins/Systray.py b/nephilim/plugins/Systray.py index ed819bc..0997f37 100644 --- a/nephilim/plugins/Systray.py +++ b/nephilim/plugins/Systray.py @@ -35,16 +35,12 @@ class Systray(Plugin): , self.onSysTrayClick) self.connect(self.mpclient(), QtCore.SIGNAL('song_changed'), self.update) - self.connect(self.mpclient(), QtCore.SIGNAL('ready'), self.update) - self.connect(self.mpclient(), QtCore.SIGNAL('connected'), self.update) self.connect(self.mpclient(), QtCore.SIGNAL('disconnected'), self.update) self.connect(self.mpclient(), QtCore.SIGNAL('time_changed'), self.update) self.o.show() def _unload(self): self.disconnect(self.mpclient(), QtCore.SIGNAL('song_changed'), self.update) - self.disconnect(self.mpclient(), QtCore.SIGNAL('ready'), self.update) - self.disconnect(self.mpclient(), QtCore.SIGNAL('connected'), self.update) self.disconnect(self.mpclient(), QtCore.SIGNAL('disconnected'), self.update) self.disconnect(self.mpclient(), QtCore.SIGNAL('time_changed'), self.update) self.o.hide() diff --git a/nephilim/winConnect.py b/nephilim/winConnect.py index f88472b..c096a1f 100644 --- a/nephilim/winConnect.py +++ b/nephilim/winConnect.py @@ -36,8 +36,7 @@ class winConnect(QtGui.QWidget): self.resize(200,80) self.center() - self.connect(self.mpclient, QtCore.SIGNAL('ready'), self.onReady) - self.connect(self.mpclient, QtCore.SIGNAL('connected'), self.onConnect) + self.connect(self.mpclient, QtCore.SIGNAL('connected'), self.onConnected) def center(self): screen = QtGui.QDesktopWidget().screenGeometry() @@ -55,19 +54,15 @@ class winConnect(QtGui.QWidget): self.raise_() - def onConnect(self): + def onConnected(self): if self._timerID: self.killTimer(self._timerID) self._timerID=None - self.lblInfo.setText('Connected!\nRestoring library and playlist ...') self.settings.setValue('MPD/host', QVariant(self.txtHost.text())) self.settings.setValue('MPD/port', QVariant(self.txtPort.text())) - self.txtHost.setEnabled(False) - self.txtPort.setEnabled(False) - - def onReady(self): self.hide() + def timerEvent(self, event): host = str(self.txtHost.text()) port = int(self.txtPort.text()) if self.txtPort.text() else None diff --git a/nephilim/winMain.py b/nephilim/winMain.py index 6fd5ac2..2ef8d79 100644 --- a/nephilim/winMain.py +++ b/nephilim/winMain.py @@ -104,8 +104,7 @@ class winMain(QtGui.QMainWindow): self.restoreLayout() " add event handlers" - self.connect(self.mpclient, QtCore.SIGNAL('ready'), self.onReady) - self.connect(self.mpclient, QtCore.SIGNAL('connected'), self.onConnect) + self.connect(self.mpclient, QtCore.SIGNAL('connected'), self.onConnected) self.connect(self.mpclient, QtCore.SIGNAL('disconnected'), self.onDisconnect) self.connect(self.mpclient, QtCore.SIGNAL('update_started'), self.onUpdateDBStart) self.connect(self.mpclient, QtCore.SIGNAL('update_finished'), self.onUpdateDBFinish) @@ -218,15 +217,10 @@ class winMain(QtGui.QMainWindow): self.wSettings.show() self.wSettings.raise_() - def onReady(self): - self.initialiseData() - - def onConnect(self): - logging.info("Connected to MPD") - self.setStatus('Restoring library and playlist ...') + def onConnected(self): self.mDisconnect.setEnabled(True) self.mConnect.setEnabled(False) - doEvents + self.initialiseData() def enableAll(self, value): for plugin in self.plugins.loaded_plugins(): |