From 49e19c8185eb890b6dc6788bf95dd65455e72538 Mon Sep 17 00:00:00 2001 From: Al Date: Fri, 4 Oct 2019 17:18:06 +0200 Subject: Added "No valid game data" and "No Nexus ID" filters as per #295 --- src/categories.h | 2 ++ src/mainwindow.cpp | 2 ++ src/modlistsortproxy.cpp | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+) (limited to 'src') 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(""), CategoryFactory::CATEGORY_SPECIAL_NOCATEGORY, ModListSortProxy::TYPE_SPECIAL); addFilterItem(nullptr, tr(""), CategoryFactory::CATEGORY_SPECIAL_CONFLICT, ModListSortProxy::TYPE_SPECIAL); addFilterItem(nullptr, tr(""), CategoryFactory::CATEGORY_SPECIAL_NOTENDORSED, ModListSortProxy::TYPE_SPECIAL); + addFilterItem(nullptr, tr(""), CategoryFactory::CATEGORY_SPECIAL_NONEXUSID, ModListSortProxy::TYPE_SPECIAL); + addFilterItem(nullptr, tr(""), CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA, ModListSortProxy::TYPE_SPECIAL); addContentFilters(); std::set 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; -- cgit v1.3.1