/** * @RDE_HEADER@ * $Id$ * $HeadURL$ * $Author$ * Created by Hannes Fritsche, NLE, 2019-04-30 */ #pragma once #include #include #include #include #include #include #include "WebSocketInterface/Messages/client_message.h" #include "settings.h" #include "logger.h" namespace OcBaseDownload { class PdfDownloadSocket; class MainHandler; class PdfDownloader : public QObject { Q_OBJECT public: explicit PdfDownloader(const QVector &pdfInfoVec, MainHandler *mainHandler, const QString &hostName, int exerciseId, QObject *parent); ~PdfDownloader(); bool startDownload(); Q_SIGNALS: void newState(int progress, const QString &msg); void allDownloadsFinished(); private Q_SLOTS: void onSingleDownloadFinished(const QByteArray &data); private: // other typedef WebSocketInterface::Messages::PdfListMessage::PdfInformation PdfInfo; private: // methods bool hasCompletedFolderStructure(); bool startNextDownload(); bool openDbConnection(); QSqlDatabase openDb(bool *bOk); void closeDb(QSqlDatabase &dbConn); private: // attributes QVector m_pdfInfoVec; PdfInfo m_currentDownload; PdfDownloadSocket *m_socket; MainHandler *m_mainHandler; int m_exerciseId; QSqlDatabase m_dbConnection; DBAdministration::ExerciseTableGenerator *m_exTblGen; int m_downloadCount; int m_totalDownloads; NGL::INGLLogger &m_logger; }; }