From 3359726be2164e35cf78bbd34beb4538fbe6430f Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 20 May 2011 17:14:10 +0200 Subject: [PATCH] improved media item sorting --- openlp/plugins/custom/lib/mediaitem.py | 5 +++++ openlp/plugins/songs/lib/mediaitem.py | 11 +++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 66b1c3675..72db3bfa4 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -25,6 +25,8 @@ ############################################################################### import logging +import locale +import operator from PyQt4 import QtCore, QtGui from sqlalchemy.sql import or_, func @@ -135,6 +137,9 @@ class CustomMediaItem(MediaManagerItem): def loadList(self, list): self.listView.clear() + # Sort the customs by its title considering language specific + # characters. + list.sort(cmp=locale.strcoll, key=operator.attrgetter('title')) for customSlide in list: custom_name = QtGui.QListWidgetItem(customSlide.title) custom_name.setData( diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 5f961b2f2..19a2924b3 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -26,6 +26,7 @@ import logging import locale +import operator from PyQt4 import QtCore, QtGui from sqlalchemy.sql import or_ @@ -229,7 +230,8 @@ class SongMediaItem(MediaManagerItem): def displayResultsSong(self, searchresults): log.debug(u'display results Song') self.listView.clear() - searchresults.sort(cmp=self.collateSongTitles) + # Sort the songs by its title considering language specific characters. + searchresults.sort(cmp=locale.strcoll, key=operator.attrgetter('title')) for song in searchresults: author_list = [author.display_name for author in song.authors] song_title = unicode(song.title) @@ -472,13 +474,6 @@ class SongMediaItem(MediaManagerItem): Receiver.send_message(u'service_item_update', u'%s:%s' % (editId, item._uuid)) - def collateSongTitles(self, song_1, song_2): - """ - Locale aware collation of song titles - """ - return locale.strcoll(unicode(song_1.title.lower()), - unicode(song_2.title.lower())) - def search(self, string): """ Search for some songs