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