-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathupdateaddons.h
156 lines (131 loc) · 5.22 KB
/
updateaddons.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#ifndef UPDATEADDONS_H
#define UPDATEADDONS_H
// httpDownload
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QCryptographicHash>
#include <QMessageBox>
#include <QTime>
#include <QTimer>
#include <QFileInfo>
#include <QProcess>
#include <QFile>
#include <QDir>
#include <QObject>
#include "deleteotherfiles.h"
#define SOCKET_TIMEOUT 15000
class updateAddons : public QObject {
Q_OBJECT
public:
explicit updateAddons(QWidget *parent = 0);
~updateAddons();
// Установка репозитория
void setRepository(Repository repo);
signals:
// Сигнал ошибки
void error(int type, QString msg);
// Сигналы основного класса
void started(const Repository repository, const QList< QMap<QString, QString> > addonsList,
const QStringList modsList, bool succes, QString defaultAddonsPath);
void finished();
// Проверка аддонов
void checkAddonsFinished(int type, const QList< QMap<QString, QString> > otherFiles, const QList< QMap<QString, QString> > newFiles,
const QList< QMap<QString, QString> > correctFiles, const QList< QMap<QString, QString> > notCorrectFiles);
void checkAddonsProgressUI(int index, const QList< QMap<QString, QString> > existsFiles);
// Скачивание аддонов
void downloadAddonStarted(const QList< QMap<QString, QString> > downloadFiles, int index);
void downloadAddonFinished();
void downloadAddonsFinished(bool success);
// Сигналы скачивания файлов
void downloadFile_UI(QString fileName);
void updateDownloadProgress_UI(qint64 bytesRead, qint64 totalBytes, QString speed);
void downloadFinished(bool success);
// Сигналы удаления лишних файлов
void deleteOtherFiles(const QList< QMap<QString, QString> > otherFiles, QString addonsPath);
// Сигналы unzipa
void unzipStart(QString fileName);
void unzipFinished(QString fileName);
public slots:
// Запуск апдейтера
void start();
void startFinished(bool downloadSuccess);
void updaterUIStarted(QStringList folders);
void timeout();
// Завершение апдейтера
void finish();
// Слоты UI
void checkAddons(QString path);
void downloadUpdate(QList<int> fileID);
void delOtherFiles();
void stopUpdater();
// Слоты обновления файлов
void downloadAddonStart();
void downloadAddonFinish(bool downloadSuccess);
void downloadAddonsFinish();
// Слоты загрузки
void httpReadyRead();
void httpDownloadFinished();
void updateDownloadProgress(qint64, qint64);
private:
// Работа с httpDownload
//..таймер таймаута
QTimer *timer;
//..тригер что время истекло
bool downloadTimeout;
//..время для расчета промежутка обновления загрузки
qint64 downloadTime;
//..кол-во байт на момент прошлого обновления
qint64 bytesBefore;
//..урл загрузки файла
QUrl url;
//..менеджер послания запроса на загрузку
QNetworkAccessManager *manager;
//..сокет получения ответа
QNetworkReply *reply;
//..расположение загружаемого файла
QFile *filePath;
//..разрыв соеденения загрузки
bool httpRequestAborted;
//..загрузка началась
bool downloadStart;
int triger;
// Скачивание файла
void downloadFile(QString fileUrl, QString path);
// Запуск запроса на скачивание
void startRequest(QUrl url);
// Распаковка архива
bool unzipArchive(QString archive, QString extracting);
// Получаем проверочную сумму файла по пути
QString getChecksum(QString filePath, QCryptographicHash::Algorithm alg);
//
void getAllFilesInDir(const QString path, QList< QMap<QString, QString> > &allFiles);
//
bool parseYomaInformation(QString path, QString fileName);
bool parseSyncInformation(QString path);
// Репозиторий
Repository repository;
// Данные конфига репозитория
QList< QMap<QString, QString> > addonsList;
QStringList modsList;
QStringList addonsFolders;
QString addonsPath;
QString defaultAddonsPath;
// Информация о апдейтере
QList< QMap<QString, QString> > otherFiles;
QList< QMap<QString, QString> > newFiles;
QList< QMap<QString, QString> > correctFiles;
QList< QMap<QString, QString> > notCorrectFiles;
QList< QMap<QString, QString> > downloadFiles;
bool downloadAddonsInProgress;
bool downloadAddonsAbort;
QString pathUrl;
int downloadFilesIndex;
// Список собранной информации
QList<YomaFileInfo> yomaFileInfo;
QList<SyncFileInfo> syncFileInfo;
// файловые операции
void saveTempFileInfo();
void loadTempFileInfo();
};
#endif // UPDATEADDONS_H