summaryrefslogtreecommitdiff
path: root/src/modlistsortproxy.h
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-11-30 01:53:09 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2019-11-30 01:53:09 -0500
commite99dfe153c62f914ada0605430305fca81a332a9 (patch)
treea197b9620fb681781e29e5d488621bfa6d2eeb27 /src/modlistsortproxy.h
parent93318a1474031035da5e61ad199171cad5803c2f (diff)
renamed filters to criteria
merged categories and content, they can be distinguished using the type added a not flag for criteria, not used yet
Diffstat (limited to 'src/modlistsortproxy.h')
-rw-r--r--src/modlistsortproxy.h42
1 files changed, 28 insertions, 14 deletions
diff --git a/src/modlistsortproxy.h b/src/modlistsortproxy.h
index 2ebfbcf0..5aeaccce 100644
--- a/src/modlistsortproxy.h
+++ b/src/modlistsortproxy.h
@@ -37,22 +37,38 @@ public:
FILTER_OR
};
- enum FilterType {
+ enum CriteriaType {
TYPE_SPECIAL,
TYPE_CATEGORY,
TYPE_CONTENT
};
+ struct Criteria
+ {
+ CriteriaType type;
+ int id;
+ bool inverse;
+
+ bool operator==(const Criteria& other) const
+ {
+ return
+ (type == other.type) &&
+ (id == other.id) &&
+ (inverse == other.inverse);
+ }
+
+ bool operator!=(const Criteria& other) const
+ {
+ return !(*this == other);
+ }
+ };
+
public:
explicit ModListSortProxy(Profile *profile, QObject *parent = 0);
void setProfile(Profile *profile);
- void setCategoryFilter(const std::vector<int> &categories);
- std::vector<int> categoryFilter() const { return m_CategoryFilter; }
-
- void setContentFilter(const std::vector<int> &content);
virtual Qt::ItemFlags flags(const QModelIndex &modelIndex) const;
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action,
@@ -84,9 +100,8 @@ public:
*/
bool isFilterActive() const { return m_FilterActive; }
- void setFilterMode(FilterMode mode);
- void setFilterNot(bool b);
- void setFilterSeparators(bool b);
+ void setCriteria(const std::vector<Criteria>& criteria);
+ void setOptions(FilterMode mode, bool separators);
/**
* @brief tests if the specified index has child nodes
@@ -131,19 +146,18 @@ private slots:
void postDataChanged();
private:
- Profile *m_Profile;
- std::vector<int> m_CategoryFilter;
- std::vector<int> m_ContentFilter;
+ Profile* m_Profile;
+ std::vector<Criteria> m_Criteria;
+ QString m_Filter;
std::bitset<ModList::COL_LASTCOLUMN + 1> m_EnabledColumns;
- QString m_CurrentFilter;
bool m_FilterActive;
FilterMode m_FilterMode;
- bool m_FilterNot;
bool m_FilterSeparators;
- std::vector<int> m_PreChangeFilters;
+ std::vector<Criteria> m_PreChangeCriteria;
+ bool criteriaMatchesMod(ModInfo::Ptr info, bool enabled, const Criteria& c) const;
bool categoryMatchesMod(ModInfo::Ptr info, bool enabled, int category) const;
bool contentMatchesMod(ModInfo::Ptr info, bool enabled, int content) const;
};