From dc40e79ee7b13aee0f741eaf8e63af4f3f950f3a Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 14 Jun 2009 08:02:58 +0100 Subject: [PATCH] Add Song Theme Handling --- openlp/plugins/songs/forms/editsongform.py | 23 ++++++++++++++++++++++ openlp/plugins/songs/lib/mediaitem.py | 5 +---- openlp/plugins/songs/songsplugin.py | 3 +-- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 476608abb..dbda75017 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -70,6 +70,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.onVerseListViewPressed) QtCore.QObject.connect(self.SongbookCombo, QtCore.SIGNAL(u'activated(int)'), self.onSongBookComboChanged) + QtCore.QObject.connect(self.ThemeSelectionComboItem, + QtCore.SIGNAL(u'activated(int)'), self.onThemeComboChanged) # Create other objects and forms self.songmanager = songmanager self.authors_form = AuthorsForm(self.songmanager) @@ -110,6 +112,12 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): for book in books: self.SongbookCombo.addItem(book.name) + def loadThemes(self, theme_list): + self.ThemeSelectionComboItem.clear() + self.ThemeSelectionComboItem.addItem(u' ') + for theme in theme_list: + self.ThemeSelectionComboItem.addItem(theme) + def newSong(self): log.debug(u'New Song') self.song = Song() @@ -132,6 +140,13 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): # Not Found id = 0 book_name.setCurrentIndex(id) + if self.song.theme_name is not None and len(self.song.theme_name) > 0: + id = self.SongbookCombo.findText(unicode(self.song.theme_name), QtCore.Qt.MatchExactly) + if id == -1: + # Not Found + id = 0 + self.song.theme_name = None + self.SongbookCombo.setCurrentIndex(id) if len(title) > 1: self.AlternativeEdit.setText(title[1]) self.CopyrightEditItem.setText(self.song.copyright) @@ -233,6 +248,14 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): book = self.songmanager.get_book_by_name(book_name) self.song.song_book_id = book.id + def onThemeComboChanged(self, item): + if item == 0: + #None means no Theme + self.song.song_theme = None + else: + them_name = unicode(self.ThemeSelectionComboItem.itemText(item)) + self.song.theme_name = them_name + def onVerseListViewPressed(self): self.EditButton.setEnabled(True) self.DeleteButton.setEnabled(True) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index b3868e0d3..dbdab006e 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -238,10 +238,7 @@ class SongMediaItem(MediaManagerItem): for index in indexes: id = self.SongListData.getId(index) song = self.parent.songmanager.get_song(id) - if song.theme_name == None or len(song.theme_name) == 0: - service_item.theme = None - else: - service_item.theme = song.theme_name + service_item.theme = song.theme_name if song.lyrics.startswith(u'