-
Notifications
You must be signed in to change notification settings - Fork 2
/
launcher.h
251 lines (223 loc) · 10.7 KB
/
launcher.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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
#ifndef LAUNCHER_H
#define LAUNCHER_H
#include <QMainWindow>
#include <QMessageBox>
#include <QFile>
#include <QTime>
#include <QFileDialog>
#include <QProcess>
#include <QStandardPaths>
#include <QDesktopServices>
#include <QCryptographicHash>
#include <QCloseEvent>
#include <QListWidget>
#include <QTextCodec>
#include <QLibrary>
#include <QDebug>
#include <QThread>
#include <QSettings>
#include <QSystemTrayIcon>
#include <QTimer>
//#include <QSound>
#include <QJsonArray>
#include <windows.h>
#include <tchar.h>
#include "launchersettings.h"
#include "addonssettings.h"
#include "version.h"
#include "AsyncTask/async.h"
class launcher : public QMainWindow
{
Q_OBJECT
public:
explicit launcher(QWidget *parent = 0);
~launcher();
signals:
// Сигналы отправки данных в формы
void sendData(favServer server, QList<addon> addonsList, bool newServer, QStringList names);
void addonsSettingsStart(Settings settings, QStringList listD, QStringList listPriorityAddonsD, QStringList addons);
void launcherSettingsStart(Settings launcherS);
void repoEditStart(Repository repo, int currentRow, bool newRepo);
void newVersion(Settings settings, QString version);
// Сигналы интерфейса апдейтера
void updaterUIStarted(QStringList addonsFolders);
void stopUpdater();
void repositoryDisconnect();
void updaterCheckAddons(QString addonsPath);
void downloadUpdateStart(QList<int> fileID);
void showUpdater();
private slots:
// Слоты настроек игры..
//..для получения исполняемого файла игры
void on_pathBrowse_clicked();
//..для оптимизации настроек игры
void on_optimize_clicked();
//..для установок настроек после dxdiag'а
void optimizeSettings();
// Слоты избраных серверов
void on_serversTree_add_clicked();
void on_serversTree_del_clicked();
void on_serversTree_update_clicked();
void Send(); // Слот отправки данных в новую форму по клику на кнопку
void recieveData(favServer server, bool newServer); // Получение данных из формы
// Слоты основой части интерфейса
void on_selectServer_currentIndexChanged(int index);
void on_play_clicked();
void on_tabWidget_tabBarClicked(int index);
// Слоты выбора репозитория
//..кнопки
void on_repoAdd_clicked();
void on_repoDel_clicked();
void on_repoEdit_clicked();
void on_repoConnect_clicked();
void repoEditFinish(Repository repo, int currentRow, bool newRepo);
//..изменения состояний
void on_repoList_currentRowChanged(int currentRow);
// Слоты интерфейса апдейтера
//..слот ошибок
void errorUI(int type, QString msg);
//..слоты основных функций апдейтера
void updaterStarted(const Repository repository, const QList< QMap<QString, QString> > addonsList, const QStringList modsList, bool success, QString defaultAddonsPath);
void updaterFinished();
//..слот отключения репозитория
void on_repoDisconnect_clicked();
//..слоты скачивания файлов
void downloadFile_UI(QString fileName);
void updateDownloadProgress_UI(qint64 bytesRead, qint64 totalBytes, QString speed);
void downloadFinished(bool success);
//..слоты unzipa
void unzipStart(QString fileName);
void unzipFinished(QString fileName);
//..слоты работы с функционалом апдейтера
//..проверка файлов
void updaterCheckAddonsUI();
void checkAddonsFinishedUI(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 downloadUpdateStartUI();
void downloadAddonStartedUI(const QList< QMap<QString, QString> > downloadFiles, int index);
void stopUpdaterUI();
void downloadAddonsFinishUI(bool success);
//..слоты изменения состояния элементов апдейтера
void addonsTreeCheck(QTreeWidgetItem *item);
void on_checksum_stateChanged(int stateCheck);
//..слот завершения удаления лишних файлов
void deleteOtherFilesFinish();
//..слоты настроек аддонов
void on_AddonsSettings_clicked();
void addonsSettingsFinish(QStringList listD, QStringList listPriorityAddonsD);
//..слоты настроек лаунчера
void on_launcherSettings_clicked();
void launcherSettingsFinish(Settings launcherS);
//..слоты обновления версии
void checkUpdate();
void downloadVersionFinished(QNetworkReply *reply);
void launcherUpdateResult(int result);
// Слот активирования аддона по клику
void on_addonTree_itemClicked(QTreeWidgetItem *item);
void updateInfoParametersInMem(); // Обновление информации параметров в памяти
\
// TEST
void on_serversTree_monitoring_clicked();
void checkServerStatus();
//..слоты чат клиента "Тушино"
void on_sendButton_clicked();
void finishUpdateChat(QNetworkReply *reply);
void finishSendMsgChat(QNetworkReply *reply);
void finishChatAuth(QNetworkReply *reply);
void updateChat();
void chatAuth();
private:
Ui::launcher *ui;
QSystemTrayIcon *trayIcon;
// Указатели на классы доп. форм
serverEdit *edit;
addonsSettings *AddonsSettings;
launcherSettings *LauncherSettings;
deleteOtherFiles *delOtherFiles;
repoEdit *repositoryEdit;
launcherUpdate *LauncherUpdate;
// UPDATER
updateAddons *updater;
QThread* thread;
// Данные апдейтера
QStringList modsL;
QList< QMap<QString, QString> > otherFiles;
QList< QMap<QString, QString> > newFiles;
QList< QMap<QString, QString> > correctFiles;
QList< QMap<QString, QString> > notCorrectFiles;
bool stopUpdaterInProcess;
// Работа с dll
//..получение длл
QLibrary library;
//..объявление функции dll
typedef unsigned char* (*ExchangeDataWithServer)(const char* host, int port, const int timeout, const unsigned char* str, const int len, int &ping, int &rLen);
ExchangeDataWithServer exchangeDataWithServer;
// Временные переменные
QProcess *dx;
QNetworkAccessManager *manager;
bool updateAfterClose;
bool updateInfoInWidget; // Тригер обновления данных (дабы не задеть сигналы смены row)
bool dxDiagIsRunning; // Тригер запущенного dxdiag'а
int selectServer; // Выбранный сервер в списке
int addonTreeRow;
qlonglong totalSize;
// Пременные для контроля апдейтера
bool updaterIsRunning;
bool checkAddonsIsRunning;
bool downloadAddonsIsRunning;
// TEST
QTimer *timerCheckServerStatus;
QTreeWidgetItem *monitoringServerItem;
int oldServerState;
bool updateServerInformation(int serverIndex, int itemIndex);
//QSound * notifySound;
QString decodeData(QString str);
// Чат клиент "Тушино"
// манагеры доступов
QNetworkAccessManager *authChatMgr;
QNetworkAccessManager *senderChatMgr;
QNetworkAccessManager *updateChatMgr;
QTimer *updateChatTimer;
bool chatConnected;
// Функции обновления данных
void updateInformationInWidget(); // Обновление информации в виджете
void updateInformationInMem(); // Обновление информации в памяти
void updateInformationInCfg(); // Обновление информации в конфиге
void updateInformationInAddonList(); // Обновление информации в списке аддонов
void updateInfoParametersInWidget(); // Обновление информации параметров в виджете
void updateInfoInRunParametersWidget(); // Обновениие информации в виджете запускаемых параметров
// Получение списка параметров запуска
QStringList getLaunchParam();
// Проверка, содержит ли Лист Виджет строку str
bool ListWidgetContains(QListWidget * widget, QString str);
// Получше хэндла по titleName
HANDLE getHandle (QString titleName, bool wait);
// Получение версии файла
QString getFileVersion(QString path);
// Выделение подстрок в байтовом массиве
QByteArray GetNextPart(int &pos, BYTE* response, int rLen);
// Применение другого стиля
void changeStyleSheet(int style);
// Запуск обновления лаунчера
void UpdateLauncher();
// Вызов Popup сообщение
void popupMessage(QString title, QString message, bool necessarily = false);
// Переменные конфига
QString pathFolder; // Путь к исполняемому файлу игры
QStringList listDirs; // Список путей к аддонам
QStringList listPriorityAddonsDirs; // Список папок приоритетных аддонов
QString DocumentsLocation; // Путь к документам системы
QList<addon> addonsList; // Списон структуры с параметрами аддона
QList<favServer> favServers; // Список избранных серверов
param parameters; // Настройки параметров
QStringList checkAddons; // Список активированных аддонов
QSize widgetSize; // Size главного окна
QList<Repository> repositories;
Settings settings;
protected:
// Действия при закрытии окна
virtual void closeEvent( QCloseEvent * event );
};
#endif // LAUNCHER_H