summaryrefslogtreecommitdiff
path: root/src/pluginlistsortproxy.cpp
diff options
context:
space:
mode:
authorTom Tanner <thosrtanner2@users.sourceforge.net>2015-03-19 16:48:21 +0000
committerTom Tanner <thosrtanner2@users.sourceforge.net>2015-03-19 16:48:21 +0000
commit771dde7771f39776afae2c9089fe250bd1e8128d (patch)
tree686037255a338e7a7c49bc640cc06902b9ba8d50 /src/pluginlistsortproxy.cpp
parenta1c8e529f763ec664c5efc3d335781a474424a4a (diff)
parentc6758e47c875ffb0fccdd1a4e478f6a9593dc657 (diff)
Merge
Diffstat (limited to 'src/pluginlistsortproxy.cpp')
-rw-r--r--src/pluginlistsortproxy.cpp19
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());