File indexing completed on 2025-09-14 03:43:25

0001 /*
0002     File                 : WelcomeScreenHelper.h
0003     Project              : LabPlot
0004     Description          : Helper class for the welcome screen
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2019 Ferencz Kovacs <kferike98@gmail.com>
0007 
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 #ifndef WELCOMESCREENHELPER_H
0011 #define WELCOMESCREENHELPER_H
0012 
0013 #include <QMap>
0014 #include <QObject>
0015 #include <QPixmap>
0016 #include <QVariant>
0017 #include <memory>
0018 
0019 class ImportDatasetWidget;
0020 class DatasetHandler;
0021 class Spreadsheet;
0022 class DatasetModel;
0023 
0024 class WelcomeScreenHelper : public QObject {
0025     Q_OBJECT
0026 
0027 public:
0028     WelcomeScreenHelper();
0029     ~WelcomeScreenHelper();
0030 
0031     Q_INVOKABLE QVariant datasetName();
0032     Q_INVOKABLE QVariant datasetDescription();
0033     Q_INVOKABLE QVariant datasetColumns();
0034     Q_INVOKABLE QVariant datasetRows();
0035     Q_INVOKABLE QVariant getProjectThumbnail(const QUrl&);
0036     Q_INVOKABLE QVariant getExampleProjectThumbnail(const QString&);
0037     Q_INVOKABLE QVariant getExampleProjects();
0038     Q_INVOKABLE QVariant searchExampleProjects(const QString& searchtext);
0039     Q_INVOKABLE QVariant getExampleProjectTags(const QString&);
0040     Q_INVOKABLE void setWidthScale(const QString& sectionID, double scale);
0041     Q_INVOKABLE void setHeightScale(const QString& sectionID, double scale);
0042     Q_INVOKABLE QVariant getWidthScale(const QString& sectionID);
0043     Q_INVOKABLE QVariant getHeightScale(const QString& sectionID);
0044     Q_INVOKABLE QVariant getMaxIcon();
0045     Q_INVOKABLE QVariant getMinIcon();
0046     Q_INVOKABLE QVariant getBackIcon();
0047     Q_INVOKABLE QVariant getForwardIcon();
0048 
0049     Spreadsheet* releaseConfiguredSpreadsheet();
0050     DatasetModel* getDatasetModel();
0051 
0052 public Q_SLOTS:
0053     void datasetClicked(const QString& category, const QString& subcategory, const QString& datasetName);
0054     void exampleProjectClicked(const QString&);
0055 
0056 private:
0057     DatasetModel* m_datasetModel{nullptr};
0058     ImportDatasetWidget* m_datasetWidget{nullptr};
0059     DatasetHandler* m_datasetHandler{nullptr};
0060     mutable std::unique_ptr<Spreadsheet> m_spreadsheet{nullptr};
0061     QStringList m_projectNameList;
0062     QMap<QString, QStringList> m_tagMap;
0063     QMap<QString, QStringList> m_datasetTag;
0064     QMap<QString, QString> m_pathMap;
0065     QMap<QString, double> m_widthScale;
0066     QMap<QString, double> m_heightScale;
0067     QPixmap m_maxIcon;
0068     QPixmap m_minIcon;
0069 
0070     void processExampleProjects();
0071     void loadConfig();
0072 
0073 Q_SIGNALS:
0074     void datasetFound();
0075     void datasetNotFound();
0076     void showFirstDataset();
0077     void openExampleProject(QString);
0078 };
0079 #endif // WELCOMESCREENHELPER_H