Merge lp:~trb143/openlp/servicing2 into lp:openlp

Proposed by Tim Bentley
Status: Merged
Merged at revision: not available
Proposed branch: lp:~trb143/openlp/servicing2
Merge into: lp:openlp
Diff against target: None lines
To merge this branch: bzr merge lp:~trb143/openlp/servicing2
Reviewer Review Type Date Requested Status
Raoul Snyman Approve
Review via email: mp+7735@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Tim Bentley (trb143) wrote :

Add Author Search to Songs plugin
Add Page_up/Down to SlideController

Revision history for this message
Raoul Snyman (raoul-snyman) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'openlp/core/lib/songxmlhandler.py'
--- openlp/core/lib/songxmlhandler.py 2009-06-16 18:21:24 +0000
+++ openlp/core/lib/songxmlhandler.py 2009-06-21 16:26:33 +0000
@@ -29,6 +29,7 @@
29</song>29</song>
3030
31"""31"""
32import logging
32from xml.dom.minidom import Document33from xml.dom.minidom import Document
33from xml.etree.ElementTree import ElementTree, XML, dump34from xml.etree.ElementTree import ElementTree, XML, dump
3435
@@ -70,11 +71,20 @@
7071
71 def extract_xml(self):72 def extract_xml(self):
72 # Print our newly created XML73 # Print our newly created XML
73 return self.song_xml.toxml()74 return self.song_xml.toxml(u'utf-8')
7475
75class SongXMLParser():76class SongXMLParser():
77 global log
78 log = logging.getLogger(u'SongXMLParser')
79 log.info(u'SongXMLParser Loaded')
80
76 def __init__(self, xml):81 def __init__(self, xml):
77 self.song_xml = ElementTree(element=XML(xml))82 #print xml
83 try:
84 self.song_xml = ElementTree(element=XML(xml))
85 except:
86 #print "invalid xml ", xml
87 log.debug(u'invalid xml %s', xml)
7888
79 def get_verses(self):89 def get_verses(self):
80 #return a list of verse's and attributes90 #return a list of verse's and attributes
8191
=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py 2009-06-20 10:44:12 +0000
+++ openlp/core/ui/slidecontroller.py 2009-06-21 16:26:33 +0000
@@ -21,14 +21,11 @@
21import os21import os
2222
23from PyQt4 import QtCore, QtGui23from PyQt4 import QtCore, QtGui
24
25from openlp.core.lib import OpenLPToolbar, translate24from openlp.core.lib import OpenLPToolbar, translate
2625
27class SlideData(QtCore.QAbstractListModel):26class SlideData(QtCore.QAbstractListModel):
28 """27 """
29 Tree of items for an order of Theme.28 List of frames to be displayed on the list and the main display.
30 Includes methods for reading and writing the contents to an OOS file
31 Root contains a list of ThemeItems
32 """29 """
33 global log30 global log
34 log = logging.getLogger(u'SlideData')31 log = logging.getLogger(u'SlideData')
@@ -98,6 +95,24 @@
98 filelist = [item[3] for item in self.items];95 filelist = [item[3] for item in self.items];
99 return filelist96 return filelist
10097
98class SlideList(QtGui.QListView):
99
100 def __init__(self,parent=None,name=None):
101 QtGui.QListView.__init__(self,parent.Controller)
102 self.parent = parent
103
104 def keyPressEvent(self, event):
105 if type(event) == QtGui.QKeyEvent:
106 #here accept the event and do something
107 if event.key() == QtCore.Qt.Key_PageUp:
108 self.parent.onSlideSelectedPrevious()
109 event.accept()
110 elif event.key() == QtCore.Qt.Key_PageDown:
111 self.parent.onSlideSelectedNext()
112 event.accept()
113 event.ignore()
114 else:
115 event.ignore()
101116
102class SlideController(QtGui.QWidget):117class SlideController(QtGui.QWidget):
103 """118 """
@@ -132,7 +147,7 @@
132 self.ControllerLayout.setSpacing(0)147 self.ControllerLayout.setSpacing(0)
133 self.ControllerLayout.setMargin(0)148 self.ControllerLayout.setMargin(0)
134 # Controller list view149 # Controller list view
135 self.PreviewListView = QtGui.QListView(self.Controller)150 self.PreviewListView = SlideList(self)
136 self.PreviewListView.setUniformItemSizes(True)151 self.PreviewListView.setUniformItemSizes(True)
137 self.PreviewListView.setIconSize(QtCore.QSize(250, 190))152 self.PreviewListView.setIconSize(QtCore.QSize(250, 190))
138 self.PreviewListData = SlideData()153 self.PreviewListData = SlideData()
@@ -210,6 +225,11 @@
210 QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected)225 QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected)
211 QtCore.QObject.connect(self.PreviewListView,226 QtCore.QObject.connect(self.PreviewListView,
212 QtCore.SIGNAL(u'activated(QModelIndex)'), self.onSlideSelected)227 QtCore.SIGNAL(u'activated(QModelIndex)'), self.onSlideSelected)
228 QtCore.QObject.connect(self.PreviewListView,
229 QtCore.SIGNAL(u'entered(QModelIndex)'), self.onTest)
230
231 def onTest(self , item):
232 print "found", item
213233
214 def onSlideSelectedFirst(self):234 def onSlideSelectedFirst(self):
215 """235 """
216236
=== modified file 'openlp/plugins/songs/lib/manager.py'
--- openlp/plugins/songs/lib/manager.py 2009-06-14 13:50:56 +0000
+++ openlp/plugins/songs/lib/manager.py 2009-06-21 17:45:59 +0000
@@ -60,8 +60,8 @@
60 metadata.create_all()60 metadata.create_all()
61 log.debug(u'Song Initialised')61 log.debug(u'Song Initialised')
6262
63 def process_dialog(self, dialogobject):63# def process_dialog(self, dialogobject):
64 self.dialogobject = dialogobject64# self.dialogobject = dialogobject
6565
66 def get_songs(self):66 def get_songs(self):
67 """67 """
@@ -81,6 +81,12 @@
81 """81 """
82 return self.session.query(Song).filter(Song.search_lyrics.like(u'%' + keywords + u'%')).order_by(Song.search_lyrics.asc()).all()82 return self.session.query(Song).filter(Song.search_lyrics.like(u'%' + keywords + u'%')).order_by(Song.search_lyrics.asc()).all()
8383
84 def get_song_from_author(self, keywords):
85 """
86 Searches the song authors for keywords.
87 """
88 return self.session.query(Author).filter(Author.display_name.like(u'%' + keywords + u'%')).order_by(Author.display_name.asc()).all()
89
84 def get_song(self, id=None):90 def get_song(self, id=None):
85 """91 """
86 Returns the details of a song92 Returns the details of a song
8793
=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py 2009-06-19 18:41:38 +0000
+++ openlp/plugins/songs/lib/mediaitem.py 2009-06-21 17:45:59 +0000
@@ -160,8 +160,25 @@
160 self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Lyrics'))160 self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Lyrics'))
161 self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Authors'))161 self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Authors'))
162162
163 def displayResults(self, searchresults):163 def onSearchTextButtonClick(self):
164 log.debug(u'display results')164 search_keywords = unicode(self.SearchTextEdit.displayText())
165 search_results = []
166 search_type = self.SearchTypeComboBox.currentIndex()
167 if search_type == 0:
168 log.debug(u'Titles Search')
169 search_results = self.parent.songmanager.search_song_title(search_keywords)
170 self.displayResultsSong(search_results)
171 elif search_type == 1:
172 log.debug(u'Lyrics Search')
173 search_results = self.parent.songmanager.search_song_lyrics(search_keywords)
174 self.displayResultsSong(search_results)
175 elif search_type == 2:
176 log.debug(u'Authors Search')
177 search_results = self.parent.songmanager.get_song_from_author(search_keywords)
178 self.displayResultsAuthor(search_results)
179
180 def displayResultsSong(self, searchresults):
181 log.debug(u'display results Song')
165 self.SongListWidget.clear()182 self.SongListWidget.clear()
166 #log.debug(u'Records returned from search %s", len(searchresults))183 #log.debug(u'Records returned from search %s", len(searchresults))
167 for song in searchresults:184 for song in searchresults:
@@ -175,6 +192,16 @@
175 song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))192 song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
176 self.SongListWidget.addItem(song_name)193 self.SongListWidget.addItem(song_name)
177194
195 def displayResultsAuthor(self, searchresults):
196 log.debug(u'display results Author')
197 self.SongListWidget.clear()
198 for author in searchresults:
199 for song in author.songs:
200 song_detail = unicode(u'%s (%s)' % (unicode(author.display_name), unicode(song.title)))
201 song_name = QtGui.QListWidgetItem(song_detail)
202 song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
203 self.SongListWidget.addItem(song_name)
204
178 def onClearTextButtonClick(self):205 def onClearTextButtonClick(self):
179 """206 """
180 Clear the search text.207 Clear the search text.
@@ -188,21 +215,6 @@
188 if len(text) > search_length:215 if len(text) > search_length:
189 self.onSearchTextButtonClick()216 self.onSearchTextButtonClick()
190217
191 def onSearchTextButtonClick(self):
192 search_keywords = unicode(self.SearchTextEdit.displayText())
193 search_results = []
194 search_type = self.SearchTypeComboBox.currentIndex()
195 if search_type == 0:
196 log.debug(u'Titles Search')
197 search_results = self.parent.songmanager.search_song_title(search_keywords)
198 elif search_type == 1:
199 log.debug(u'Lyrics Search')
200 search_results = self.parent.songmanager.search_song_lyrics(search_keywords)
201 elif search_type == 2:
202 log.debug(u'Authors Search')
203 #searchresults = self.songmanager.get_song_from_author(searchtext)
204 self.displayResults(search_results)
205
206 def onSongNewClick(self):218 def onSongNewClick(self):
207 self.edit_song_form.newSong()219 self.edit_song_form.newSong()
208 self.edit_song_form.exec_()220 self.edit_song_form.exec_()
209221
=== modified file 'openlp/plugins/songs/songsplugin.py'
--- openlp/plugins/songs/songsplugin.py 2009-06-16 18:21:24 +0000
+++ openlp/plugins/songs/songsplugin.py 2009-06-21 17:45:59 +0000
@@ -103,7 +103,7 @@
103 QtCore.QObject.connect(self.ExportOpenSongItem, QtCore.SIGNAL(u'triggered()'), self.onExportOpenSongItemClicked)103 QtCore.QObject.connect(self.ExportOpenSongItem, QtCore.SIGNAL(u'triggered()'), self.onExportOpenSongItemClicked)
104104
105 def initialise(self):105 def initialise(self):
106 self.media_item.displayResults(self.songmanager.get_songs())106 self.media_item.displayResultsSong(self.songmanager.get_songs())
107107
108 def onImportOpenlp1ItemClick(self):108 def onImportOpenlp1ItemClick(self):
109 self.openlp_import_form.show()109 self.openlp_import_form.show()
@@ -136,4 +136,4 @@
136 self.media_item.onSongLiveClick()136 self.media_item.onSongLiveClick()
137 if event.event_type == EventType.LoadSongList :137 if event.event_type == EventType.LoadSongList :
138 log.debug(u'Load Load Song List Item received')138 log.debug(u'Load Load Song List Item received')
139 self.media_item.displayResults(self.songmanager.get_songs())
140\ No newline at end of file139\ No newline at end of file
140 self.media_item.displayResults(self.songmanager.get_songs())