diff options
| -rw-r--r-- | src/categories.h | 2 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 2 | ||||
| -rw-r--r-- | src/modlistsortproxy.cpp | 18 |
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;
|
