File indexing completed on 2024-05-12 07:41:24

0001 /*
0002     File                 : DatasetModel.h
0003     Project              : LabPlot
0004     Description          : Wrapper class for the collections of datasets
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2019 Kovacs Ferencz <kferike98@gmail.com>
0007     SPDX-FileCopyrightText: 2019 Alexander Semke <alexander.semke@web.de>
0008 
0009     SPDX-License-Identifier: GPL-2.0-or-later
0010 */
0011 #ifndef DATASETMODEL_H
0012 #define DATASETMODEL_H
0013 
0014 #include <QMap>
0015 #include <QObject>
0016 #include <QVariant>
0017 
0018 class DatasetModel : public QObject {
0019     Q_OBJECT
0020 
0021 public:
0022     explicit DatasetModel(const QMap<QString, QMap<QString, QMap<QString, QVector<QString>>>>&);
0023     ~DatasetModel();
0024 
0025     QStringList collections();
0026     QStringList categories(const QString&);
0027     QStringList subcategories(const QString&, const QString&);
0028     QStringList datasets(const QString&, const QString&, const QString&);
0029     int datasetCount(const QString& collection);
0030     int datasetCount(const QString& collection, const QString& category);
0031     int datasetCount(const QString& collection, const QString& category, const QString& subcategory);
0032 
0033     Q_INVOKABLE QStringList allCategories();
0034     Q_INVOKABLE QStringList allSubcategories(const QString&);
0035     Q_INVOKABLE QVariant allDatasets(const QString&, const QString&);
0036     Q_INVOKABLE QVariant allDatasetsList();
0037 
0038 private:
0039     QStringList m_collectionList;
0040     QStringList m_allCategories;
0041     QMap<QString, QStringList> m_allSubcategories;
0042     QMap<QString, QMap<QString, QStringList>> m_allDatasets;
0043     QMap<QString, QStringList> m_categories;
0044     QMap<QString, QMap<QString, QStringList>> m_subcategories;
0045     QMap<QString, QMap<QString, QMap<QString, QStringList>>> m_datasets;
0046     QStringList m_datasetList;
0047 
0048     void initCollections(const QMap<QString, QMap<QString, QMap<QString, QVector<QString>>>>&);
0049     void initCategories(const QMap<QString, QMap<QString, QMap<QString, QVector<QString>>>>& datasetMap);
0050     void initSubcategories(const QMap<QString, QMap<QString, QMap<QString, QVector<QString>>>>& datasetMap);
0051     void initDatasets(const QMap<QString, QMap<QString, QMap<QString, QVector<QString>>>>& datasetMap);
0052 };
0053 
0054 #endif // DATASETMODEL_H