downloadmanager.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef DOWNLOADMANAGER_H
  2. #define DOWNLOADMANAGER_H
  3. #include <QFile>
  4. #include <QObject>
  5. #include <QQueue>
  6. #include <QTime>
  7. #include <QUrl>
  8. #include <QLabel>
  9. #include <QNetworkAccessManager>
  10. //#include "textprogressbar.h"
  11. class DownloadManager: public QObject
  12. {
  13. Q_OBJECT
  14. public:
  15. DownloadManager(QObject *parent = 0);
  16. void append(const QUrl &url);
  17. void append(const QStringList &urlList);
  18. void abortDownload(QString name);
  19. int getDownloadedCount();
  20. void resetDownloadedCount();
  21. void startDownloads();
  22. signals:
  23. void changePatchStatus(QString name, QString status);
  24. void changeHint(QString title, QString hint);
  25. void finished();
  26. void cancelDownload();
  27. void allDownloadsFinished(QStringList downloads);
  28. private slots:
  29. void startNextDownload();
  30. void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
  31. void downloadFinished();
  32. void downloadReadyRead();
  33. private:
  34. QNetworkAccessManager manager;
  35. QQueue<QUrl> downloadQueue;
  36. QNetworkReply *currentDownload;
  37. QFile output;
  38. QTime downloadTime;
  39. QString download_name;
  40. QStringList downloaded_list;
  41. int bytesReceivedBeforeSecond; // Нужны для подсчёта текущей скорости скачивания, а не
  42. int timeElapsedBeforeSecond; // средней за всё время.
  43. QString current_speed;
  44. int downloadedCount;
  45. int totalCount;
  46. bool busy;
  47. };
  48. #endif // DOWNLOADMANAGER_H