ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
Downloader.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <QDir>
11 #include <QDialog>
12 #include <ui_Downloader.h>
13 
14 namespace Ui
15 {
16 class Downloader;
17 }
18 
19 class QNetworkReply;
20 class QNetworkAccessManager;
21 
25 class Downloader : public QWidget
26 {
27  Q_OBJECT
28 
29 signals:
30  void downloadFinished(const QString &url, const QString &filepath);
31 
32 public:
33  explicit Downloader(QWidget *parent = nullptr);
34  ~Downloader();
35 
36  bool useCustomInstallProcedures() const;
37 
38  QString downloadDir() const;
39  void setDownloadDir(const QString &downloadDir);
40 
41 public slots:
42  void setUrlId(const QString &url);
43  void startDownload(const QUrl &url);
44  void setFileName(const QString &file);
45  void setUserAgentString(const QString &agent);
46  void setUseCustomInstallProcedures(const bool custom);
47  void setMandatoryUpdate(const bool mandatory_update);
48 
49 private slots:
50  void finished();
51  void openDownload();
52  void installUpdate();
53  void cancelDownload();
54  void saveFile(qint64 received, qint64 total);
55  void calculateSizes(qint64 received, qint64 total);
56  void updateProgress(qint64 received, qint64 total);
57  void calculateTimeRemaining(qint64 received, qint64 total);
58 
59 private:
60  qreal round(const qreal &input);
61 
62 private:
63  QString m_url;
64  uint m_startTime;
65  QDir m_downloadDir;
66  QString m_fileName;
67  Ui::Downloader *m_ui;
68  QNetworkReply *m_reply;
69  QString m_userAgentString;
70 
71  bool m_useCustomProcedures;
72  bool m_mandatoryUpdate;
73 
74  QNetworkAccessManager *m_manager;
75 };
#define slots
#define signals
Implements an integrated file downloader with a nice UI.
Definition: Downloader.h:26
Downloader(QWidget *parent=nullptr)
Definition: Downloader.cpp:23
void setUserAgentString(const QString &agent)
Definition: Downloader.cpp:135
bool useCustomInstallProcedures() const
Definition: Downloader.cpp:68
void downloadFinished(const QString &url, const QString &filepath)
QString downloadDir() const
Definition: Downloader.cpp:411
void startDownload(const QUrl &url)
Definition: Downloader.cpp:88
void setDownloadDir(const QString &downloadDir)
Definition: Downloader.cpp:416
void setFileName(const QString &file)
Definition: Downloader.cpp:124
void setMandatoryUpdate(const bool mandatory_update)
Definition: Downloader.cpp:426
void setUseCustomInstallProcedures(const bool custom)
Definition: Downloader.cpp:438
void setUrlId(const QString &url)
Definition: Downloader.cpp:80
unsigned int uint
Definition: cutil_math.h:28