Use KStringHandler::naturalCompare if we're built with KDE

This commit is contained in:
craig
2012-03-21 19:08:00 +00:00
parent b4ed235271
commit 0f55c8d58e
4 changed files with 16 additions and 5 deletions

View File

@@ -93,14 +93,14 @@ bool AlbumsProxyModel::lessThan(const QModelIndex &left, const QModelIndex &righ
if (leftItem->isSingleTracks != rightItem->isSingleTracks) {
return leftItem->isSingleTracks > rightItem->isSingleTracks;
}
return leftItem->name.localeAwareCompare(rightItem->name)<0;
return compareStrings(leftItem->name, rightItem->name)<0;
} else if(!l->isAlbum() && !r->isAlbum()) {
const AlbumsModel::SongItem * const leftItem = static_cast<AlbumsModel::SongItem *>(l);
const AlbumsModel::SongItem * const rightItem = static_cast<AlbumsModel::SongItem *>(r);
bool singleTracks=leftItem->parent->isSingleTracks;
if (singleTracks) {
int compare=leftItem->artistSong().localeAwareCompare(rightItem->artistSong());
int compare=compareStrings(leftItem->artistSong(), rightItem->artistSong());
if (0!=compare) {
return compare<0;
}

View File

@@ -161,7 +161,7 @@ bool MusicLibraryProxyModel::lessThan(const QModelIndex &left, const QModelIndex
bool isSingleTracks=static_cast<MusicLibraryItemAlbum *>(leftItem->parent())->isSingleTracks();
if (isSingleTracks) {
int compare=leftItem->song().artistSong().localeAwareCompare(rightItem->song().artistSong());
int compare=compareStrings(leftItem->song().artistSong(), rightItem->song().artistSong());
if (0!=compare) {
return compare<0;
}
@@ -186,7 +186,7 @@ bool MusicLibraryProxyModel::lessThan(const QModelIndex &left, const QModelIndex
if (leftItem->isVarious() != rightItem->isVarious()) {
return leftItem->isVarious() > rightItem->isVarious();
}
return leftItem->baseArtist().localeAwareCompare(rightItem->baseArtist())<0;
return compareStrings(leftItem->baseArtist(), rightItem->baseArtist())<0;
}
return QSortFilterProxyModel::lessThan(left, right);

View File

@@ -82,7 +82,7 @@ bool PlaylistsProxyModel::lessThan(const QModelIndex &left, const QModelIndex &r
PlaylistsModel::Item *r=static_cast<PlaylistsModel::Item *>(right.internalPointer());
if (l->isPlaylist() && r->isPlaylist()) {
return static_cast<PlaylistsModel::PlaylistItem *>(l)->name.localeAwareCompare(static_cast<PlaylistsModel::PlaylistItem *>(r)->name)<0;
return compareStrings(static_cast<PlaylistsModel::PlaylistItem *>(l)->name, static_cast<PlaylistsModel::PlaylistItem *>(r)->name)<0;
} else if(!l->isPlaylist() && !r->isPlaylist()) {
return left.row()<right.row();
}

View File

@@ -25,6 +25,9 @@
#define PROXYMODEL_H
#include <QtGui/QSortFilterProxyModel>
#ifdef ENABLE_KDE_SUPPORT
#include <KDE/KStringHandler>
#endif
class ProxyModel : public QSortFilterProxyModel
{
@@ -45,6 +48,14 @@ public:
return filterGenre.isEmpty() && filterRegExp().isEmpty();
}
static int compareStrings(const QString &a, const QString &b) {
#ifdef ENABLE_KDE_SUPPORT
return KStringHandler::naturalCompare(a, b, Qt::CaseInsensitive) < 0;
#else
return a.localeAwareCompare(b);
#endif
}
protected:
bool filterEnabled;
QString filterGenre;