File indexing completed on 2024-05-12 03:47:42

0001 /*
0002     File        : DatasetHandler.h
0003     Project     : LabPlot
0004     Description : Processes a dataset's metadata file
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2019 Kovacs Ferencz <kferike98@gmail.com>
0007 
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 #ifndef DATASETHANDLER_H
0011 #define DATASETHANDLER_H
0012 
0013 #include "backend/spreadsheet/Spreadsheet.h"
0014 #include <QString>
0015 
0016 class QJsonObject;
0017 class AsciiFilter;
0018 class QIODevice;
0019 class QNetworkAccessManager;
0020 class QNetworkReply;
0021 
0022 class DatasetHandler : public QObject {
0023     Q_OBJECT
0024 
0025 public:
0026     explicit DatasetHandler(Spreadsheet*);
0027     ~DatasetHandler();
0028     void processMetadata(const QJsonObject&, const QString&);
0029 
0030 private:
0031     Spreadsheet* m_spreadsheet;
0032     AsciiFilter* m_filter;
0033     QJsonObject* m_object{nullptr};
0034     QNetworkAccessManager* m_downloadManager;
0035     QNetworkReply* m_currentDownload{nullptr};
0036     QString m_fileName;
0037     bool m_invalidMetadataFile{false};
0038     QString m_containingDir;
0039 
0040     void loadJsonDocument(const QString& path);
0041     void configureFilter();
0042     void configureSpreadsheet(const QString&);
0043     void prepareForDataset();
0044     void processDataset();
0045     void doDownload(const QUrl&);
0046     QString saveFileName(const QUrl&);
0047     bool saveToDisk(const QString& filename, QIODevice*);
0048     void markMetadataAsInvalid();
0049 
0050 private Q_SLOTS:
0051     void downloadFinished(QNetworkReply*);
0052 
0053 Q_SIGNALS:
0054     void downloadCompleted();
0055     void downloadProgress(int progress);
0056 };
0057 
0058 #endif // DATASETHANDLER_H