File indexing completed on 2024-04-28 15:13:59

0001 /***************************************************************************
0002     File                 : DatasetModel.h
0003     Project              : LabPlot
0004     Description          : Wrapper class for the collections of datasets
0005     --------------------------------------------------------------------
0006     Copyright            : (C) 2019 Kovacs Ferencz (kferike98@gmail.com)
0007     Copyright            : (C) 2019 by Alexander Semke (alexander.semke@web.de)
0008 
0009 ***************************************************************************/
0010 /***************************************************************************
0011  *                                                                         *
0012  *  This program is free software; you can redistribute it and/or modify   *
0013  *  it under the terms of the GNU General Public License as published by   *
0014  *  the Free Software Foundation; either version 2 of the License, or      *
0015  *  (at your option) any later version.                                    *
0016  *                                                                         *
0017  *  This program is distributed in the hope that it will be useful,        *
0018  *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
0019  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
0020  *  GNU General Public License for more details.                           *
0021  *                                                                         *
0022  *   You should have received a copy of the GNU General Public License     *
0023  *   along with this program; if not, write to the Free Software           *
0024  *   Foundation, Inc., 51 Franklin Street, Fifth Floor,                    *
0025  *   Boston, MA  02110-1301  USA                                           *
0026  *                                                                         *
0027  ***************************************************************************/
0028 #ifndef DATASETMODEL_H
0029 #define DATASETMODEL_H
0030 
0031 #include <QObject>
0032 #include <QMap>
0033 #include <QVariant>
0034 
0035 class DatasetModel : public QObject {
0036     Q_OBJECT
0037 
0038 public:
0039     explicit DatasetModel(const QMap<QString, QMap<QString, QMap<QString, QVector<QString>>>>&);
0040     ~DatasetModel();
0041 
0042     QStringList collections();
0043     QStringList categories(const QString&);
0044     QStringList subcategories(const QString&, const QString&);
0045     QStringList datasets(const QString&, const QString&, const QString&);
0046     int datasetCount(const QString& collection);
0047     int datasetCount(const QString& collection, const QString& category);
0048     int datasetCount(const QString& collection, const QString& category, const QString& subcategory);
0049 
0050     Q_INVOKABLE QStringList allCategories();
0051     Q_INVOKABLE QStringList allSubcategories(const QString&);
0052     Q_INVOKABLE QVariant allDatasets(const QString&, const QString&);
0053     Q_INVOKABLE QVariant allDatasetsList();
0054 
0055 private:
0056     QStringList m_collectionList;
0057     QStringList m_allCategories;
0058     QMap<QString, QStringList> m_allSubcategories;
0059     QMap<QString, QMap<QString, QStringList>> m_allDatasets;
0060     QMap<QString, QStringList> m_categories;
0061     QMap<QString, QMap<QString, QStringList>> m_subcategories;
0062     QMap<QString,QMap<QString, QMap<QString, QStringList>>> m_datasets;
0063     QStringList m_datasetList;
0064 
0065     void initCollections(const QMap<QString, QMap<QString, QMap<QString, QVector<QString>>>>&);
0066     void initCategories(const QMap<QString, QMap<QString, QMap<QString, QVector<QString>>>>& datasetMap);
0067     void initSubcategories(const QMap<QString, QMap<QString, QMap<QString, QVector<QString>>>>& datasetMap);
0068     void initDatasets(const QMap<QString, QMap<QString, QMap<QString, QVector<QString>>>>& datasetMap);
0069 };
0070 
0071 #endif //DATASETMODEL_H