summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-11-30 03:21:23 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2019-11-30 03:21:23 -0500
commita38d1723bffcd20bc7011c0fe635636b936aa78b (patch)
tree55222bd5bafb7492d713351eb08b2aadb8f43f47 /src
parentf463c5494362a0fa75c581e59192e2640ec10f7e (diff)
removed redundant categories now that there's a not filter
disabled collapsing for filter, there's already a button to hide it
Diffstat (limited to 'src')
-rw-r--r--src/categories.cpp24
-rw-r--r--src/categories.h31
-rw-r--r--src/filterlist.cpp28
-rw-r--r--src/mainwindow.cpp4
-rw-r--r--src/mainwindow.ui3
-rw-r--r--src/modlistsortproxy.cpp32
6 files changed, 54 insertions, 68 deletions
diff --git a/src/categories.cpp b/src/categories.cpp
index b75efefa..1bd56f7f 100644
--- a/src/categories.cpp
+++ b/src/categories.cpp
@@ -320,21 +320,19 @@ QString CategoryFactory::getCategoryName(unsigned int index) const
return m_Categories[index].m_Name;
}
-QString CategoryFactory::getSpecialCategoryName(int type) const
+QString CategoryFactory::getSpecialCategoryName(SpecialCategories type) const
{
switch (type)
{
- case CATEGORY_SPECIAL_CHECKED: return QObject::tr("<Checked>");
- case CATEGORY_SPECIAL_UNCHECKED: return QObject::tr("<Unchecked>");
- case CATEGORY_SPECIAL_UPDATEAVAILABLE: return QObject::tr("<Update>");
- case CATEGORY_SPECIAL_NOCATEGORY: return QObject::tr("<No category>");
- case CATEGORY_SPECIAL_CONFLICT: return QObject::tr("<Conflicted>");
- case CATEGORY_SPECIAL_NOTENDORSED: return QObject::tr("<Not Endorsed>");
- case CATEGORY_SPECIAL_BACKUP: return QObject::tr("<Mod Backup>");
- case CATEGORY_SPECIAL_MANAGED: return QObject::tr("<Managed by MO>");
- case CATEGORY_SPECIAL_UNMANAGED: return QObject::tr("<Managed outside MO>");
- case CATEGORY_SPECIAL_NOGAMEDATA: return QObject::tr("<No valid game data>");
- case CATEGORY_SPECIAL_NONEXUSID: return QObject::tr("<No Nexus ID>");
+ case Checked: return QObject::tr("<Checked>");
+ case UpdateAvailable: return QObject::tr("<Update>");
+ case HasNoCategory: return QObject::tr("<No category>");
+ case Conflict: return QObject::tr("<Conflicted>");
+ case NotEndorsed: return QObject::tr("<Not Endorsed>");
+ case Backup: return QObject::tr("<Mod Backup>");
+ case Managed: return QObject::tr("<Managed by MO>");
+ case NoGameData: return QObject::tr("<No valid game data>");
+ case NoNexusID: return QObject::tr("<No Nexus ID>");
default: return {};
}
}
@@ -344,7 +342,7 @@ QString CategoryFactory::getCategoryNameByID(int id) const
auto itor = m_IDMap.find(id);
if (itor == m_IDMap.end()) {
- return getSpecialCategoryName(id);
+ return getSpecialCategoryName(static_cast<SpecialCategories>(id));
} else {
const auto index = itor->second;
if (index >= m_Categories.size()) {
diff --git a/src/categories.h b/src/categories.h
index 2041ce1f..296e7711 100644
--- a/src/categories.h
+++ b/src/categories.h
@@ -37,25 +37,20 @@ class CategoryFactory {
friend class CategoriesDialog;
public:
-
- static const int CATEGORY_NONE = 0;
-
- static const int CATEGORY_SPECIAL_FIRST = 10000;
- static const int CATEGORY_SPECIAL_CHECKED = CATEGORY_SPECIAL_FIRST;
- static const int CATEGORY_SPECIAL_UNCHECKED = 10001;
- static const int CATEGORY_SPECIAL_UPDATEAVAILABLE = 10002;
- static const int CATEGORY_SPECIAL_NOCATEGORY = 10003;
- static const int CATEGORY_SPECIAL_CONFLICT = 10004;
- static const int CATEGORY_SPECIAL_NOTENDORSED = 10005;
- 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;
-
+ enum SpecialCategories
+ {
+ Checked = 10000,
+ UpdateAvailable,
+ HasNoCategory,
+ Conflict,
+ NotEndorsed,
+ Backup,
+ Managed,
+ NoGameData,
+ NoNexusID
+ };
public:
-
struct Category {
Category(int sortValue, int id, const QString &name, const std::vector<int> &nexusIDs, int parentID)
: m_SortValue(sortValue), m_ID(id), m_Name(name), m_HasChildren(false),
@@ -144,7 +139,7 @@ public:
* @return QString name of the category
**/
QString getCategoryName(unsigned int index) const;
- QString getSpecialCategoryName(int type) const;
+ QString getSpecialCategoryName(SpecialCategories type) const;
QString getCategoryNameByID(int id) const;
/**
diff --git a/src/filterlist.cpp b/src/filterlist.cpp
index 8f297af6..36cdacd0 100644
--- a/src/filterlist.cpp
+++ b/src/filterlist.cpp
@@ -94,6 +94,8 @@ FilterList::FilterList(Ui::MainWindow* ui, CategoryFactory& factory)
ui->filters->header()->setSectionResizeMode(0, QHeaderView::Stretch);
ui->filters->header()->resizeSection(1, 50);
+ ui->categoriesSplitter->setCollapsible(0, false);
+ ui->categoriesSplitter->setCollapsible(1, false);
}
QTreeWidgetItem* FilterList::addCriteriaItem(
@@ -142,8 +144,10 @@ void FilterList::addCategoryCriteria(QTreeWidgetItem *root, const std::set<int>
void FilterList::addSpecialCriteria(int type)
{
+ const auto sc = static_cast<CategoryFactory::SpecialCategories>(type);
+
addCriteriaItem(
- nullptr, m_factory.getSpecialCategoryName(type),
+ nullptr, m_factory.getSpecialCategoryName(sc),
type, ModListSortProxy::TYPE_SPECIAL);
}
@@ -157,17 +161,15 @@ void FilterList::refresh()
ui->filters->clear();
using F = CategoryFactory;
- addSpecialCriteria(F::CATEGORY_SPECIAL_CHECKED);
- addSpecialCriteria(F::CATEGORY_SPECIAL_UNCHECKED);
- addSpecialCriteria(F::CATEGORY_SPECIAL_UPDATEAVAILABLE);
- addSpecialCriteria(F::CATEGORY_SPECIAL_BACKUP);
- addSpecialCriteria(F::CATEGORY_SPECIAL_MANAGED);
- addSpecialCriteria(F::CATEGORY_SPECIAL_UNMANAGED);
- addSpecialCriteria(F::CATEGORY_SPECIAL_NOCATEGORY);
- addSpecialCriteria(F::CATEGORY_SPECIAL_CONFLICT);
- addSpecialCriteria(F::CATEGORY_SPECIAL_NOTENDORSED);
- addSpecialCriteria(F::CATEGORY_SPECIAL_NONEXUSID);
- addSpecialCriteria(F::CATEGORY_SPECIAL_NOGAMEDATA);
+ addSpecialCriteria(F::Checked);
+ addSpecialCriteria(F::UpdateAvailable);
+ addSpecialCriteria(F::Backup);
+ addSpecialCriteria(F::Managed);
+ addSpecialCriteria(F::HasNoCategory);
+ addSpecialCriteria(F::Conflict);
+ addSpecialCriteria(F::NotEndorsed);
+ addSpecialCriteria(F::NoNexusID);
+ addSpecialCriteria(F::NoGameData);
addContentCriteria();
@@ -211,7 +213,7 @@ void FilterList::setSelection(std::vector<int> categories)
continue;
}
- if (item->id() == CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE) {
+ if (item->id() == CategoryFactory::UpdateAvailable) {
ui->filters->setCurrentItem(ui->filters->topLevelItem(i));
break;
}
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 03d61bc6..0ad57803 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -4126,11 +4126,11 @@ void MainWindow::checkModsForUpdates()
if (updatesAvailable || checkingModsForUpdate) {
m_ModListSortProxy->setCriteria({{
ModListSortProxy::TYPE_SPECIAL,
- CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE,
+ CategoryFactory::UpdateAvailable,
false}
});
- m_Filters->setSelection({CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE});
+ m_Filters->setSelection({CategoryFactory::UpdateAvailable});
}
}
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index 7cc7dca4..6c35d239 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -39,6 +39,9 @@
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
+ <property name="childrenCollapsible">
+ <bool>false</bool>
+ </property>
<widget class="QGroupBox" name="categoriesGroup">
<property name="maximumSize">
<size>
diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp
index 3bb02c0f..36dcae59 100644
--- a/src/modlistsortproxy.cpp
+++ b/src/modlistsortproxy.cpp
@@ -61,7 +61,7 @@ void ModListSortProxy::setCriteria(const std::vector<Criteria>& criteria)
const bool changed = (criteria != m_Criteria);
const bool isForUpdates = (
!criteria.empty() &&
- criteria[0].id == CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE);
+ criteria[0].id == CategoryFactory::UpdateAvailable);
if (changed || isForUpdates) {
m_Criteria = criteria;
@@ -343,68 +343,56 @@ bool ModListSortProxy::categoryMatchesMod(
switch (category)
{
- case CategoryFactory::CATEGORY_SPECIAL_CHECKED:
+ case CategoryFactory::Checked:
{
b = (enabled || info->alwaysEnabled());
break;
}
- case CategoryFactory::CATEGORY_SPECIAL_UNCHECKED:
- {
- b = (!enabled && !info->alwaysEnabled());
- break;
- }
-
- case CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE:
+ case CategoryFactory::UpdateAvailable:
{
b = (info->updateAvailable() || info->downgradeAvailable());
break;
}
- case CategoryFactory::CATEGORY_SPECIAL_NOCATEGORY:
+ case CategoryFactory::HasNoCategory:
{
b = (info->getCategories().size() == 0);
break;
}
- case CategoryFactory::CATEGORY_SPECIAL_CONFLICT:
+ case CategoryFactory::Conflict:
{
b = (hasConflictFlag(info->getFlags()));
break;
}
- case CategoryFactory::CATEGORY_SPECIAL_NOTENDORSED:
+ case CategoryFactory::NotEndorsed:
{
ModInfo::EEndorsedState state = info->endorsedState();
b = (state != ModInfo::ENDORSED_TRUE);
break;
}
- case CategoryFactory::CATEGORY_SPECIAL_BACKUP:
+ case CategoryFactory::Backup:
{
b = (info->hasFlag(ModInfo::FLAG_BACKUP));
break;
}
- case CategoryFactory::CATEGORY_SPECIAL_MANAGED:
+ case CategoryFactory::Managed:
{
b = (!info->hasFlag(ModInfo::FLAG_FOREIGN));
break;
}
- case CategoryFactory::CATEGORY_SPECIAL_UNMANAGED:
- {
- b = (info->hasFlag(ModInfo::FLAG_FOREIGN));
- break;
- }
-
- case CategoryFactory::CATEGORY_SPECIAL_NOGAMEDATA:
+ case CategoryFactory::NoGameData:
{
b = (info->hasFlag(ModInfo::FLAG_INVALID));
break;
}
- case CategoryFactory::CATEGORY_SPECIAL_NONEXUSID:
+ case CategoryFactory::NoNexusID:
{
b = (
info->getNexusID() == -1 &&