summaryrefslogtreecommitdiff
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
parent2fe50f2ff366ea850eb70a85c6ea7d6c936bf08a (diff)
Added "No valid game data" and "No Nexus ID" filters as per #295
-rw-r--r--src/categories.h2
-rw-r--r--src/mainwindow.cpp2
-rw-r--r--src/modlistsortproxy.cpp18
3 files changed, 22 insertions, 0 deletions
diff --git a/src/categories.h b/src/categories.h
index 48e0b44b..67fee3e7 100644
--- a/src/categories.h
+++ b/src/categories.h
@@ -50,6 +50,8 @@ public:
static const int CATEGORY_SPECIAL_BACKUP = 10006;
static const int CATEGORY_SPECIAL_MANAGED = 10007;
static const int CATEGORY_SPECIAL_UNMANAGED = 10008;
+ static const int CATEGORY_SPECIAL_NOGAMEDATA = 10009;
+ static const int CATEGORY_SPECIAL_NONEXUSID = 10010;
public:
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 8ab28d22..a53c081b 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -2691,6 +2691,8 @@ void MainWindow::refreshFilters()
addFilterItem(nullptr, tr("<No category>"), CategoryFactory::CATEGORY_SPECIAL_NOCATEGORY, ModListSortProxy::TYPE_SPECIAL);
addFilterItem(nullptr, tr("<Conflicted>"), CategoryFactory::CATEGORY_SPECIAL_CONFLICT, ModListSortProxy::TYPE_SPECIAL);
addFilterItem(nullptr, tr("<Not Endorsed>"), CategoryFactory::CATEGORY_SPECIAL_NOTENDORSED, ModListSortProxy::TYPE_SPECIAL);
+ addFilterItem(nullptr, tr("<No Nexus ID>"), CategoryFactory::CATEGORY_SPECIAL_NONEXUSID, ModListSortProxy::TYPE_SPECIAL);
+ addFilterItem(nullptr, tr("<No valid game data>"), CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA, ModListSortProxy::TYPE_SPECIAL);
addContentFilters();
std::set<int> categoriesUsed;
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;