improved media item sorting

This commit is contained in:
Andreas Preikschat 2011-05-20 17:14:10 +02:00
parent 32127d51bb
commit 3359726be2
2 changed files with 8 additions and 8 deletions

View File

@ -25,6 +25,8 @@
############################################################################### ###############################################################################
import logging import logging
import locale
import operator
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from sqlalchemy.sql import or_, func from sqlalchemy.sql import or_, func
@ -135,6 +137,9 @@ class CustomMediaItem(MediaManagerItem):
def loadList(self, list): def loadList(self, list):
self.listView.clear() 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: for customSlide in list:
custom_name = QtGui.QListWidgetItem(customSlide.title) custom_name = QtGui.QListWidgetItem(customSlide.title)
custom_name.setData( custom_name.setData(

View File

@ -26,6 +26,7 @@
import logging import logging
import locale import locale
import operator
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from sqlalchemy.sql import or_ from sqlalchemy.sql import or_
@ -229,7 +230,8 @@ class SongMediaItem(MediaManagerItem):
def displayResultsSong(self, searchresults): def displayResultsSong(self, searchresults):
log.debug(u'display results Song') log.debug(u'display results Song')
self.listView.clear() 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: for song in searchresults:
author_list = [author.display_name for author in song.authors] author_list = [author.display_name for author in song.authors]
song_title = unicode(song.title) song_title = unicode(song.title)
@ -472,13 +474,6 @@ class SongMediaItem(MediaManagerItem):
Receiver.send_message(u'service_item_update', Receiver.send_message(u'service_item_update',
u'%s:%s' % (editId, item._uuid)) 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): def search(self, string):
""" """
Search for some songs Search for some songs