Changeset View
Changeset View
Standalone View
Standalone View
libdiscover/Category/Category.h
Show All 38 Lines | 34 | enum FilterType { | |||
---|---|---|---|---|---|
39 | PkgNameFilter, | 39 | PkgNameFilter, | ||
40 | AppstreamIdWildcardFilter | 40 | AppstreamIdWildcardFilter | ||
41 | }; | 41 | }; | ||
42 | 42 | | |||
43 | class DISCOVERCOMMON_EXPORT Category : public QObject | 43 | class DISCOVERCOMMON_EXPORT Category : public QObject | ||
44 | { | 44 | { | ||
45 | Q_OBJECT | 45 | Q_OBJECT | ||
46 | public: | 46 | public: | ||
47 | Q_PROPERTY(QString name READ name CONSTANT) | 47 | Q_PROPERTY(QString name READ name NOTIFY nameChanged) | ||
48 | Q_PROPERTY(QString icon READ icon CONSTANT) | 48 | Q_PROPERTY(QString icon READ icon CONSTANT) | ||
49 | Q_PROPERTY(QObject* parent READ parent CONSTANT) | 49 | Q_PROPERTY(QObject* parent READ parent CONSTANT) | ||
50 | Q_PROPERTY(QUrl decoration READ decoration CONSTANT) | 50 | Q_PROPERTY(QUrl decoration READ decoration CONSTANT) | ||
51 | Q_PROPERTY(QVariantList subcategories READ subCategoriesVariant NOTIFY subCategoriesChanged) | 51 | Q_PROPERTY(QVariantList subcategories READ subCategoriesVariant NOTIFY subCategoriesChanged) | ||
52 | explicit Category(QSet<QString> pluginNames, QObject* parent = nullptr); | 52 | explicit Category(QSet<QString> pluginNames, QObject* parent = nullptr); | ||
53 | 53 | | |||
54 | Category(const QString& name, const QString& iconName, const QVector< QPair< FilterType, QString > >& orFilters, const QSet<QString> &pluginName, const QVector<Category *>& subCategories, const QUrl& decoration, bool isAddons); | 54 | Category(const QString& name, const QString& iconName, const QVector< QPair< FilterType, QString > >& orFilters, const QSet<QString> &pluginName, const QVector<Category *>& subCategories, const QUrl& decoration, bool isAddons); | ||
55 | ~Category() override; | 55 | ~Category() override; | ||
56 | 56 | | |||
57 | QString name() const; | 57 | QString name() const; | ||
58 | // You should never attempt to change the name of anything that is not a leaf category | ||||
59 | // as the results could be potentially detremental to the function of the category filters | ||||
60 | void setName(const QString& name); | ||||
58 | QString icon() const; | 61 | QString icon() const; | ||
59 | QVector<QPair<FilterType, QString> > andFilters() const; | 62 | QVector<QPair<FilterType, QString> > andFilters() const; | ||
60 | void setAndFilter(QVector<QPair<FilterType, QString> > filters); | 63 | void setAndFilter(QVector<QPair<FilterType, QString> > filters); | ||
61 | QVector<QPair<FilterType, QString> > orFilters() const; | 64 | QVector<QPair<FilterType, QString> > orFilters() const; | ||
62 | QVector<QPair<FilterType, QString> > notFilters() const; | 65 | QVector<QPair<FilterType, QString> > notFilters() const; | ||
63 | QVector<Category *> subCategories() const; | 66 | QVector<Category *> subCategories() const; | ||
64 | QVariantList subCategoriesVariant() const; | 67 | QVariantList subCategoriesVariant() const; | ||
65 | 68 | | |||
66 | static void sortCategories(QVector<Category*>& cats); | 69 | static void sortCategories(QVector<Category*>& cats); | ||
67 | static void addSubcategory(QVector<Category*>& cats, Category* cat); | 70 | static void addSubcategory(QVector<Category*>& cats, Category* cat); | ||
68 | void parseData(const QString& path, const QDomNode& data); | 71 | void parseData(const QString& path, const QDomNode& data); | ||
69 | bool blacklistPlugins(const QSet<QString>& pluginName); | 72 | bool blacklistPlugins(const QSet<QString>& pluginName); | ||
70 | bool isAddons() const { return m_isAddons; } | 73 | bool isAddons() const { return m_isAddons; } | ||
71 | QUrl decoration() const; | 74 | QUrl decoration() const; | ||
72 | bool matchesCategoryName(const QString &name) const; | 75 | bool matchesCategoryName(const QString &name) const; | ||
73 | 76 | | |||
74 | Q_SCRIPTABLE bool contains(Category* cat) const; | 77 | Q_SCRIPTABLE bool contains(Category* cat) const; | ||
75 | Q_SCRIPTABLE bool contains(const QVariantList &cats) const; | 78 | Q_SCRIPTABLE bool contains(const QVariantList &cats) const; | ||
76 | 79 | | |||
77 | static bool categoryLessThan(Category *c1, const Category *c2); | 80 | static bool categoryLessThan(Category *c1, const Category *c2); | ||
78 | static bool blacklistPluginsInVector(const QSet<QString>& pluginNames, QVector<Category *>& subCategories); | 81 | static bool blacklistPluginsInVector(const QSet<QString>& pluginNames, QVector<Category *>& subCategories); | ||
79 | 82 | | |||
80 | Q_SIGNALS: | 83 | Q_SIGNALS: | ||
81 | void subCategoriesChanged(); | 84 | void subCategoriesChanged(); | ||
85 | void nameChanged(); | ||||
82 | 86 | | |||
83 | private: | 87 | private: | ||
84 | QString m_name; | 88 | QString m_name; | ||
85 | QString m_iconString; | 89 | QString m_iconString; | ||
86 | QUrl m_decoration; | 90 | QUrl m_decoration; | ||
87 | QVector<QPair<FilterType, QString> > m_andFilters; | 91 | QVector<QPair<FilterType, QString> > m_andFilters; | ||
88 | QVector<QPair<FilterType, QString> > m_orFilters; | 92 | QVector<QPair<FilterType, QString> > m_orFilters; | ||
89 | QVector<QPair<FilterType, QString> > m_notFilters; | 93 | QVector<QPair<FilterType, QString> > m_notFilters; | ||
90 | QVector<Category *> m_subCategories; | 94 | QVector<Category *> m_subCategories; | ||
91 | 95 | | |||
92 | QVector<QPair<FilterType, QString> > parseIncludes(const QDomNode &data); | 96 | QVector<QPair<FilterType, QString> > parseIncludes(const QDomNode &data); | ||
93 | QSet<QString> m_plugins; | 97 | QSet<QString> m_plugins; | ||
94 | bool m_isAddons = false; | 98 | bool m_isAddons = false; | ||
95 | }; | 99 | }; | ||
96 | 100 | | |||
97 | #endif | 101 | #endif |