openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #04744
[Merge] lp:~m2j/openlp/smallfix into lp:openlp
m2j has proposed merging lp:~m2j/openlp/smallfix into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
locale aware song order and unicode capable song title search
--
https://code.launchpad.net/~m2j/openlp/smallfix/+merge/43234
Your team OpenLP Core is requested to review the proposed merge of lp:~m2j/openlp/smallfix into lp:openlp.
=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py 2010-12-08 19:21:59 +0000
+++ openlp/plugins/songs/lib/mediaitem.py 2010-12-09 15:56:54 +0000
@@ -25,6 +25,8 @@
###############################################################################
import logging
+import locale
+import re
from PyQt4 import QtCore, QtGui
@@ -61,6 +63,7 @@
# which Song is required.
self.remoteSong = -1
self.editItem = None
+ self.whitespace = re.compile(r'\W+', re.UNICODE)
def requiredIcons(self):
MediaManagerItem.requiredIcons(self)
@@ -173,8 +176,8 @@
if search_type == 0:
log.debug(u'Titles Search')
search_results = self.parent.manager.get_all_objects(Song,
- Song.search_title.like(u'%' + search_keywords.lower() + u'%'),
- Song.search_title.asc())
+ Song.search_title.like(u'%' + self.whitespace.sub(u' ',
+ search_keywords.lower()) + u'%'), Song.search_title.asc())
self.displayResultsSong(search_results)
elif search_type == 1:
log.debug(u'Lyrics Search')
@@ -213,6 +216,7 @@
def displayResultsSong(self, searchresults):
log.debug(u'display results Song')
self.listView.clear()
+ searchresults.sort(cmp=self.collateSongTitles)
for song in searchresults:
author_list = u''
for author in song.authors:
@@ -437,3 +441,9 @@
if editId != 0:
Receiver.send_message(u'service_item_update',
u'%s:%s' %(editId, uuid))
+
+ def collateSongTitles(self, song_1, song_2):
+ """
+ Locale aware collation of song titles
+ """
+ return locale.strcoll(unicode(song_1.title), unicode(song_2.title))
=== modified file 'openlp/plugins/songs/songsplugin.py'
--- openlp/plugins/songs/songsplugin.py 2010-11-18 17:46:47 +0000
+++ openlp/plugins/songs/songsplugin.py 2010-12-09 15:56:54 +0000
@@ -56,7 +56,7 @@
self.manager = Manager(u'songs', init_schema)
self.icon_path = u':/plugins/plugin_songs.png'
self.icon = build_icon(self.icon_path)
- self.whitespace = re.compile(r'\W+')
+ self.whitespace = re.compile(r'\W+', re.UNICODE)
def getSettingsTab(self):
visible_name = self.getString(StringContent.VisibleName)
Follow ups