OfficeAssistant_Win10/OfficeAssistant_msvc/netio.h

150 lines
3.5 KiB
C
Raw Normal View History

2023-08-18 19:09:55 +08:00
//
2023-08-03 16:16:02 +08:00
// Created by HW on 2023/07/27.
//
#ifndef OFFICEASSISTANT_NETIO_H
#define OFFICEASSISTANT_NETIO_H
#include <QString>
#include <QFile>
#include <QMessageBox>
#include <cstring>
#include <QJsonDocument>
#include <QJsonObject>
#include <Windows.h>
#include <QtNetwork/QtNetwork>
#include "buttonstruct.h"
#include "sqlitehelper.h"
2023-08-03 16:16:02 +08:00
typedef struct {
QString img;
2023-08-18 19:09:55 +08:00
QString png;
QString img_name;
QString name;
QString type;
int sort;
int status;
bool is_navbar;
bool is_elite;
QString orig_name;
QString categroy_id;
QString op;
2023-08-03 16:16:02 +08:00
QString func;
QString url;
2023-08-18 19:09:55 +08:00
QString dev;
bool locked;
bool is_delete;
QString version;
} Button;
struct ConfigResponse {
2023-08-03 16:16:02 +08:00
bool succeed;
struct {
QString logo_url;
QString device_id;
QString dev_id;
QString token;
QString backgroud_color;
QString title_color;
QString title_cover_color;
}basic;
QList<Button> buttons;
};
2023-08-03 16:16:02 +08:00
class RequestBodyBase:public QObject{
Q_OBJECT;
public:
RequestBodyBase();
virtual void sendRequest();
protected:
QString product;
QString parter_id;
QString os;
QString os_version;
QString device_id;
QString request_id;
QString version;
QString release;
QString sign;
QJsonDocument qJsonDocument;
QNetworkReply *reply;
QEventLoop eventLoop;
QTimer *timer;
2023-08-13 12:16:22 +08:00
bool downloadSuccess = true;
2023-08-03 16:16:02 +08:00
protected slots:
void cancelDownload();
};
class ConfigRequest:public RequestBodyBase{
public:
ConfigRequest():RequestBodyBase(){}
void sendRequest(ConfigResponse * configResponse);
};
class OpRequest:public RequestBodyBase{
public:
OpRequest(QString Op,QString OpValue):RequestBodyBase(),op(Op),op_value(OpValue){
QJsonObject obj_root=qJsonDocument.object();
QJsonValue value=op;
obj_root.insert("op",op);
value=op_value;
obj_root.insert("op_value",op_value);
qJsonDocument.setObject(obj_root);
}
QString getOpValue(){
return op_value;
}
QString getOp(){
return op;
}
void setOpValue(QString op_value){
this->op_value=op_value;
}
void setOp(QString op){
this->op=op;
}
void sendRequest();
protected:
QString op;
QString op_value;
};
class DeviceRequest:RequestBodyBase{
2023-08-13 12:16:22 +08:00
public:
2023-08-03 16:16:02 +08:00
DeviceRequest();
};
class OpenMulitiWechat:public RequestBodyBase{
public:
OpenMulitiWechat(): RequestBodyBase(){}
};
inline QString getMachineGUID() {
HKEY hKey;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Cryptography",
0, KEY_READ | KEY_WOW64_64KEY, &hKey);
DWORD dwType1 = REG_SZ;
DWORD dwLen = MAX_PATH;
WCHAR buf[100];
RegQueryValueExA(hKey, "MachineGuid", 0, &dwType1, (LPBYTE)buf, &dwLen);
QString guid = QString::fromWCharArray(buf);
return guid;
}
class SoftwareRequest :public RequestBodyBase {
public:
SoftwareRequest():RequestBodyBase(){}
2023-08-15 11:17:09 +08:00
bool sendRequest(QHash<QString, QString>&startMenu, QHash<QString, Record>*records,QJsonArray &software_exists);
2023-08-13 12:16:22 +08:00
};
class OpenWeChatRequest:public RequestBodyBase
{
public:
OpenWeChatRequest():RequestBodyBase(){}
2023-08-18 19:09:55 +08:00
QString sendRequest(bool notuse=false/*为了构成函数重载,凑数的*/);
2023-08-03 16:16:02 +08:00
};
2023-08-29 11:45:11 +08:00
class OpenAppRequest:public RequestBodyBase
{
public:
OpenAppRequest():RequestBodyBase(){}
QString sendRequest(QString app_name);
};
2023-08-03 16:16:02 +08:00
#endif //OFFICEASSISTANT_NETIO_H