summaryrefslogtreecommitdiff
path: root/src/modlistsortproxy.cpp
diff options
context:
space:
mode:
authorAl <gabriel.cortesi@outlook.com>2019-10-04 17:18:06 +0200
committerAl <gabriel.cortesi@outlook.com>2019-10-04 17:18:06 +0200
commit49e19c8185eb890b6dc6788bf95dd65455e72538 (patch)
tree9601c32906afed6d931aec2431ed3d162b511229 /src/modlistsortproxy.cpp
parent2fe50f2ff366ea850eb70a85c6ea7d6c936bf08a (diff)
Added "No valid game data" and "No Nexus ID" filters as per #295
Diffstat (limited to 'src/modlistsortproxy.cpp')
-rw-r--r--src/modlistsortproxy.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index 77ffad96..a9ff6463 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -308,6 +308,15 @@ bool ModListSortProxy::filterMatchesModAnd(ModInfo::Ptr info, bool enabled) cons
case CategoryFactory::CATEGORY_SPECIAL_UNMANAGED: {
if (!info->hasFlag(ModInfo::FLAG_FOREIGN)) return false;
} break;
+ case CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA: {
+ if (!info->hasFlag(ModInfo::FLAG_INVALID)) return false;
+ } break;
+ case CategoryFactory::CATEGORY_SPECIAL_NONEXUSID: {
+ if (!(info->getNexusID() == -1 && !info->hasFlag(ModInfo::FLAG_FOREIGN) &&
+ !info->hasFlag(ModInfo::FLAG_BACKUP) &&
+ !info->hasFlag(ModInfo::FLAG_SEPARATOR) &&
+ !info->hasFlag(ModInfo::FLAG_OVERWRITE))) return false;
+ } break;
default: {
if (!info->categorySet(*iter)) return false;
} break;
@@ -353,6 +362,15 @@ bool ModListSortProxy::filterMatchesModOr(ModInfo::Ptr info, bool enabled) const
case CategoryFactory::CATEGORY_SPECIAL_UNMANAGED: {
if (info->hasFlag(ModInfo::FLAG_FOREIGN)) return true;
} break;
+ case CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA: {
+ if (info->hasFlag(ModInfo::FLAG_INVALID)) return true;
+ } break;
+ case CategoryFactory::CATEGORY_SPECIAL_NONEXUSID: {
+ if ((info->getNexusID() == -1 && !info->hasFlag(ModInfo::FLAG_FOREIGN) &&
+ !info->hasFlag(ModInfo::FLAG_BACKUP) &&
+ !info->hasFlag(ModInfo::FLAG_SEPARATOR) &&
+ !info->hasFlag(ModInfo::FLAG_OVERWRITE))) return true;
+ } break;
default: {
if (info->categorySet(*iter)) return true;
} break;