summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nephilim/mpclient.py112
-rw-r--r--nephilim/plugins/AlbumCover.py1
-rw-r--r--nephilim/plugins/Library.py2
-rw-r--r--nephilim/plugins/Lyrics.py2
-rw-r--r--nephilim/plugins/Notify.py6
-rw-r--r--nephilim/plugins/Playlist.py1
-rw-r--r--nephilim/plugins/Systray.py4
-rw-r--r--nephilim/winConnect.py11
-rw-r--r--nephilim/winMain.py12
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():