From 4ffd1234e51b6109f45c8bb5576066ce30db3a99 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 29 Nov 2009 11:37:41 +0100 Subject: Songinfo: only edit settings when connected. --- nephilim/plugins/Songinfo.py | 96 ++++++++++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 44 deletions(-) diff --git a/nephilim/plugins/Songinfo.py b/nephilim/plugins/Songinfo.py index 7214c41..856b39b 100644 --- a/nephilim/plugins/Songinfo.py +++ b/nephilim/plugins/Songinfo.py @@ -31,49 +31,6 @@ class Songinfo(Plugin): DEFAULTS = {'tagtypes' : ['track', 'title', 'artist', 'album', 'albumartist', 'disc', 'genre', 'date', 'composer', 'performer', 'file']} - #### private #### - - class SettingsWidgetSonginfo(Plugin.SettingsWidget): - # private - taglist = None - - def __init__(self, plugin): - Plugin.SettingsWidget.__init__(self, plugin) - self.settings.beginGroup(self.plugin.name) - - tags_enabled = self.settings.value('tagtypes').toStringList() - tags = self.plugin.mpclient.tagtypes - self.taglist = QtGui.QListWidget(self) - self.taglist.setDragDropMode(QtGui.QAbstractItemView.InternalMove) - for tag in [tag for tag in tags_enabled if tag in tags]: - it = QtGui.QListWidgetItem(tag) - it.setCheckState(QtCore.Qt.Checked) - self.taglist.addItem(it) - for tag in [tag for tag in tags if tag not in tags_enabled]: - it = QtGui.QListWidgetItem(tag) - it.setCheckState(QtCore.Qt.Unchecked) - self.taglist.addItem(it) - - self.setLayout(QtGui.QVBoxLayout()) - self._add_widget(self.taglist, label = 'Tags', tooltip = 'A list of tags that should be displayed.\n' - 'Use drag and drop to change their order') - - self.settings.endGroup() - - def save_settings(self): - self.settings.beginGroup(self.plugin.name) - - tags = [] - for i in range(self.taglist.count()): - it = self.taglist.item(i) - if it.checkState() == QtCore.Qt.Checked: - tags.append(it.text()) - self.settings.setValue('tagtypes', QtCore.QVariant(tags)) - - self.settings.endGroup() - self.plugin.update_tagtypes() - self.plugin.refresh() - #### public #### def __init__(self, parent, mpclient, name): Plugin.__init__(self, parent, mpclient, name) @@ -98,7 +55,7 @@ class Songinfo(Plugin): return self._create_dock(self.o) def get_settings_widget(self): - return self.SettingsWidgetSonginfo(self) + return SettingsWidgetSonginfo(self) def update_tagtypes(self): self.__tags = [tag for tag in self.settings.value(self.name + '/tagtypes').toStringList() if tag in self.mpclient.tagtypes] @@ -150,3 +107,54 @@ class SonginfoWidget(QtGui.QWidget): """Set displayed metadata, which is provided in a dict of { tag : value }.""" for tag in metadata: self.__labels[tag].setText(unicode(metadata[tag])) + +class SettingsWidgetSonginfo(Plugin.SettingsWidget): + # private + taglist = None + + def __init__(self, plugin): + Plugin.SettingsWidget.__init__(self, plugin) + self.settings.beginGroup(self.plugin.name) + + self.taglist = QtGui.QListWidget(self) + self.taglist.setDragDropMode(QtGui.QAbstractItemView.InternalMove) + self.__update_tags() + self.plugin.mpclient.connect_changed.connect(self.__update_tags) + + self.setLayout(QtGui.QVBoxLayout()) + self._add_widget(self.taglist, label = 'Tags', tooltip = 'A list of tags that should be displayed.\n' + 'Use drag and drop to change their order') + + + def __update_tags(self): + self.taglist.setEnabled(self.plugin.mpclient.is_connected()) + if not self.plugin.mpclient.is_connected(): + return + + self.taglist.clear() + tags_enabled = self.settings.value('tagtypes').toStringList() + tags = self.plugin.mpclient.tagtypes + for tag in [tag for tag in tags_enabled if tag in tags]: + it = QtGui.QListWidgetItem(tag) + it.setCheckState(QtCore.Qt.Checked) + self.taglist.addItem(it) + for tag in [tag for tag in tags if tag not in tags_enabled]: + it = QtGui.QListWidgetItem(tag) + it.setCheckState(QtCore.Qt.Unchecked) + self.taglist.addItem(it) + + def save_settings(self): + if not self.taglist.isEnabled(): + return + + self.settings.beginGroup(self.plugin.name) + + tags = [] + for i in range(self.taglist.count()): + it = self.taglist.item(i) + if it.checkState() == QtCore.Qt.Checked: + tags.append(it.text()) + self.settings.setValue('tagtypes', QtCore.QVariant(tags)) + + self.plugin.update_tagtypes() + self.plugin.refresh() -- cgit v1.2.3