Make play list menu order consistent with view order
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
#include <QtCore/QMimeData>
|
||||
#include <QtGui/QMenu>
|
||||
#include "playlistsmodel.h"
|
||||
#include "playlistsproxymodel.h"
|
||||
#include "itemview.h"
|
||||
#include "groupedview.h"
|
||||
#ifdef ENABLE_KDE_SUPPORT
|
||||
@@ -729,7 +730,7 @@ void PlaylistsModel::updateItemMenu()
|
||||
foreach (const PlaylistItem *p, items) {
|
||||
names << p->name;
|
||||
}
|
||||
qSort(names);
|
||||
qSort(names.begin(), names.end(), PlaylistsProxyModel::compareNames);
|
||||
foreach (const QString &n, names) {
|
||||
itemMenu->addAction(n, this, SLOT(emitAddToExisting()));
|
||||
}
|
||||
|
||||
@@ -76,13 +76,18 @@ bool PlaylistsProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sou
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PlaylistsProxyModel::compareNames(const QString &l, const QString &r)
|
||||
{
|
||||
return compareStrings(l, r)<0;
|
||||
}
|
||||
|
||||
bool PlaylistsProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const
|
||||
{
|
||||
PlaylistsModel::Item *l=static_cast<PlaylistsModel::Item *>(left.internalPointer());
|
||||
PlaylistsModel::Item *r=static_cast<PlaylistsModel::Item *>(right.internalPointer());
|
||||
|
||||
if (l->isPlaylist() && r->isPlaylist()) {
|
||||
return compareStrings(static_cast<PlaylistsModel::PlaylistItem *>(l)->name, static_cast<PlaylistsModel::PlaylistItem *>(r)->name)<0;
|
||||
return compareNames(static_cast<PlaylistsModel::PlaylistItem *>(l)->name, static_cast<PlaylistsModel::PlaylistItem *>(r)->name);
|
||||
} else if(!l->isPlaylist() && !r->isPlaylist()) {
|
||||
return left.row()<right.row();
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ class PlaylistsProxyModel : public ProxyModel
|
||||
public:
|
||||
PlaylistsProxyModel(QObject *parent = 0);
|
||||
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
|
||||
static bool compareNames(const QString &l, const QString &r);
|
||||
bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
|
||||
};
|
||||
|
||||
|
||||
@@ -49,11 +49,11 @@ public:
|
||||
}
|
||||
|
||||
static int compareStrings(const QString &a, const QString &b) {
|
||||
#ifdef ENABLE_KDE_SUPPORT
|
||||
return KStringHandler::naturalCompare(a, b, Qt::CaseInsensitive) < 0;
|
||||
#else
|
||||
// #ifdef ENABLE_KDE_SUPPORT
|
||||
// return KStringHandler::naturalCompare(a, b, Qt::CaseInsensitive) < 0;
|
||||
// #else
|
||||
return a.localeAwareCompare(b);
|
||||
#endif
|
||||
// #endif
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
Reference in New Issue
Block a user