Use KStringHandler::naturalCompare if we're built with KDE
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user