diff options
| author | Tom Tanner <thosrtanner2@users.sourceforge.net> | 2015-03-19 16:48:21 +0000 |
|---|---|---|
| committer | Tom Tanner <thosrtanner2@users.sourceforge.net> | 2015-03-19 16:48:21 +0000 |
| commit | 771dde7771f39776afae2c9089fe250bd1e8128d (patch) | |
| tree | 686037255a338e7a7c49bc640cc06902b9ba8d50 /src/pluginlistsortproxy.cpp | |
| parent | a1c8e529f763ec664c5efc3d335781a474424a4a (diff) | |
| parent | c6758e47c875ffb0fccdd1a4e478f6a9593dc657 (diff) | |
Merge
Diffstat (limited to 'src/pluginlistsortproxy.cpp')
| -rw-r--r-- | src/pluginlistsortproxy.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/pluginlistsortproxy.cpp b/src/pluginlistsortproxy.cpp index b8ac220a..342b3744 100644 --- a/src/pluginlistsortproxy.cpp +++ b/src/pluginlistsortproxy.cpp @@ -85,9 +85,24 @@ bool PluginListSortProxy::lessThan(const QModelIndex &left, case PluginList::COL_NAME: {
return QString::compare(plugins->getName(left.row()), plugins->getName(right.row()), Qt::CaseInsensitive) < 0;
} break;
- case PluginList::COL_PRIORITY:
+ case PluginList::COL_FLAGS: {
+ QVariantList lhsList = left.data(Qt::UserRole + 1).toList();
+ QVariantList rhsList = right.data(Qt::UserRole + 1).toList();
+ if (lhsList.size() != rhsList.size()) {
+ return lhsList.size() < rhsList.size();
+ } else {
+ for (int i = 0; i < lhsList.size(); ++i) {
+ if (lhsList.at(i) != rhsList.at(i)) {
+ return lhsList.at(i) < rhsList.at(i);
+ }
+ }
+ return false;
+ }
+ } break;
case PluginList::COL_MODINDEX: {
- return plugins->getPriority(left.row()) < plugins->getPriority(right.row());
+ int leftVal = plugins->isEnabled(left.row()) ? plugins->getPriority(left.row()) : -1;
+ int rightVal = plugins->isEnabled(right.row()) ? plugins->getPriority(right.row()) : -1;
+ return leftVal < rightVal;
} break;
default: {
return plugins->getPriority(left.row()) < plugins->getPriority(right.row());
|
