summaryrefslogtreecommitdiff
path: root/src/filterlist.h
diff options
context:
space:
mode:
authorChris Bessent <lost.dragonist@gmail.com>2020-01-06 05:17:01 -0700
committerGitHub <noreply@github.com>2020-01-06 05:17:01 -0700
commitdfa600996c49c1b23dca884c963dc917bd9cfc0a (patch)
treec6def4277cc962822d0dcde71fa9148e050f693f /src/filterlist.h
parente69078e2399a88bda7bb9ffae7a3d57db9a4e9cf (diff)
parentd1a788dfad341b32235abc25c2ba1645f8be1ace (diff)
Merge pull request #954 from ModOrganizer2/Develop
Stage for release 2.2.2
Diffstat (limited to 'src/filterlist.h')
-rw-r--r--src/filterlist.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/filterlist.h b/src/filterlist.h
new file mode 100644
index 00000000..b0ebc9a4
--- /dev/null
+++ b/src/filterlist.h
@@ -0,0 +1,55 @@
+#ifndef MODORGANIZER_CATEGORIESLIST_INCLUDED
+#define MODORGANIZER_CATEGORIESLIST_INCLUDED
+
+#include "modlistsortproxy.h"
+#include <QTreeWidgetItem>
+
+namespace Ui { class MainWindow; };
+class CategoryFactory;
+class Settings;
+
+class FilterList : public QObject
+{
+ Q_OBJECT;
+
+public:
+ FilterList(Ui::MainWindow* ui, CategoryFactory& factory);
+
+ void restoreState(const Settings& s);
+ void saveState(Settings& s) const;
+
+ void setSelection(const std::vector<ModListSortProxy::Criteria>& criteria);
+ void clearSelection();
+ void refresh();
+
+signals:
+ void criteriaChanged(std::vector<ModListSortProxy::Criteria> criteria);
+ void optionsChanged(
+ ModListSortProxy::FilterMode mode, ModListSortProxy::SeparatorsMode sep);
+
+private:
+ class CriteriaItem;
+
+ Ui::MainWindow* ui;
+ CategoryFactory& m_factory;
+
+ bool onClick(QMouseEvent* e);
+ void onItemActivated(QTreeWidgetItem* item);
+ void onOptionsChanged();
+
+ void editCategories();
+ void checkCriteria();
+ std::vector<ModListSortProxy::Criteria> selectedCriteria() const;
+ bool cycleItem(QTreeWidgetItem* item, int direction);
+
+ QTreeWidgetItem* addCriteriaItem(
+ QTreeWidgetItem *root, const QString &name, int categoryID,
+ ModListSortProxy::CriteriaType type);
+
+ void addContentCriteria();
+ void addCategoryCriteria(
+ QTreeWidgetItem *root, const std::set<int> &categoriesUsed, int targetID);
+ void addSpecialCriteria(int type);
+};
+
+#endif // MODORGANIZER_CATEGORIESLIST_INCLUDED