File indexing completed on 2024-05-05 17:33:19

0001 /*
0002  *   SPDX-FileCopyrightText: 2012 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #pragma once
0008 
0009 #include "Category.h"
0010 #include <QAbstractListModel>
0011 #include <QQmlParserStatus>
0012 
0013 #include "discovercommon_export.h"
0014 
0015 class QTimer;
0016 
0017 class DISCOVERCOMMON_EXPORT CategoryModel : public QObject
0018 {
0019     Q_OBJECT
0020     Q_PROPERTY(QVariantList rootCategories READ rootCategoriesVL NOTIFY rootCategoriesChanged)
0021 public:
0022     explicit CategoryModel(QObject *parent = nullptr);
0023 
0024     static CategoryModel *global();
0025 
0026     Q_SCRIPTABLE Category *findCategoryByName(const QString &name) const;
0027     void blacklistPlugin(const QString &name);
0028     QVector<Category *> rootCategories() const
0029     {
0030         return m_rootCategories;
0031     }
0032     QVariantList rootCategoriesVL() const;
0033     void populateCategories();
0034 
0035 Q_SIGNALS:
0036     void rootCategoriesChanged();
0037 
0038 private:
0039     QTimer *m_rootCategoriesChanged;
0040     QVector<Category *> m_rootCategories;
0041 };