From bc3b3f69a75383e0f3b24a512769fe6d5b40d12f Mon Sep 17 00:00:00 2001 From: Mike Solar Date: Thu, 17 Aug 2023 01:10:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=86=E5=A4=87=E6=95=B4=E7=90=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OfficeAssistant_msvc/config.h | 42 +++---- OfficeAssistant_msvc/navbar.cpp | 23 ++-- OfficeAssistant_msvc/navbar.h | 5 +- OfficeAssistant_msvc/netio.cpp | 150 ++++++++++++------------ OfficeAssistant_msvc/sqlitehelper.cpp | 140 +++++++++++----------- identifier.sqlite | Bin 28672 -> 53248 bytes images/app.png | Bin 0 -> 30957 bytes images/icon/default.svg | 1 - images/icon/logo_navbar.png | Bin 4915 -> 0 bytes images/logo.png | Bin 4915 -> 7932 bytes images/logo_titlebar.png | Bin 0 -> 30957 bytes images/software/HAO123_原始名称.svg | 72 ------------ images/svg/.svg | 0 images/svg/360_原始名称.svg | 1 - images/svg/HAO123_原始名称.svg | 1 - images/svg/default.svg | 2 +- images/svg/修改-原始名称.svg | 1 - 17 files changed, 182 insertions(+), 256 deletions(-) create mode 100644 images/app.png delete mode 100644 images/icon/default.svg delete mode 100644 images/icon/logo_navbar.png create mode 100644 images/logo_titlebar.png delete mode 100644 images/software/HAO123_原始名称.svg delete mode 100644 images/svg/.svg delete mode 100644 images/svg/360_原始名称.svg delete mode 100644 images/svg/HAO123_原始名称.svg delete mode 100644 images/svg/修改-原始名称.svg diff --git a/OfficeAssistant_msvc/config.h b/OfficeAssistant_msvc/config.h index 99c686e..578de5c 100644 --- a/OfficeAssistant_msvc/config.h +++ b/OfficeAssistant_msvc/config.h @@ -1,37 +1,37 @@ +// +// Created by 孙羽 on 2023/07/27. // -// Created by on 2023/07/27. -// -//˵:ûע͵޸ +//说明:没有注释的项请勿修改 #ifndef OFFICEASSISTANT_CONFIG_H #define OFFICEASSISTANT_CONFIG_H -#define CONFIG_URL "http://softapi.s103.y01.cn/addons/Kmdsoft/Index/config" //ȡϢĵַ -#define OP_URL "http://softapi.s103.y01.cn/addons/Kmdsoft/Index/op" //ϴǷÿǷݷʽĵַ -#define DEVICE_URL "http://softapi.s103.y01.cn/addons/Kmdsoft/Index/device" //ϴ豸Ϣĵַ +#define CONFIG_URL "http://softapi.s103.y01.cn/addons/Kmdsoft/Index/config" //获取导航栏信息的地址 +#define OP_URL "http://softapi.s103.y01.cn/addons/Kmdsoft/Index/op" //上传是否设置开机启动、是否建立桌面快捷方式的地址 +#define DEVICE_URL "http://softapi.s103.y01.cn/addons/Kmdsoft/Index/device" //上传设备信息的地址 #define WECHAT_URL " http://softapi.s103.y01.cn/addons/Kmdsoft/Wxdk/open" -#define BASE_URL "http://softapi.s103.y01.cn/" // -#define DEFAULT_FILE "/config/config.kmd" //Ĭļλ +#define BASE_URL "http://softapi.s103.y01.cn/" //域名 +#define DEFAULT_FILE "/config/config.kmd" //默认配置文件位置 #define DEFAULT_NAVBAR_FILLE "/config/default_navbar.kmd" #define KEY "3b046cfe4a2a3e62141a4840f2006210a3224e3615312bef6e19f4983921abe0" //Key -#define NAME "칫" // -#define LOGO_TITLEBAR "/images/icon/logo_navbar.png" //ͼ -#define ENG_NAME "OfficeAssistant" //Ӣ -#define LENG_NAME L"OfficeAssistant" //Ӣַ +#define NAME "办公助手" //中文名 +#define LOGO_TITLEBAR "/images/logo_titlebar.png" //标题栏图标 +#define ENG_NAME "OfficeAssistant" //英文名 +#define LENG_NAME L"OfficeAssistant" //英文名(宽字符) #define ADD_AUTOSTART 1 #define ADD_SHORTCUT 2 -#define VERSION "1.0.0" //汾 +#define VERSION "1.0.0" //软件版本 #define RELEASE "20230801" //Release #define SOFTWARE_URL "http://softapi.s103.y01.cn/addons/Kmdsoft/App/update/type/add" -#define DEFAULT_BACKGROUND_COLOR "#333332" //Ĭϱɫӷʹ +#define DEFAULT_BACKGROUND_COLOR "#333332" //默认背景色,若从服务器读不到即使用这个 #define DEFAULT_COLOR "#3399FF" // -#define DEFAULT_TEXT_COLOR "#FFFFFF" //Ĭɫ -#define DEFAULT_COVER_COLOR "#0033FF" //ָɵɫҲǡӦáȼťĬɫ -#define DEFAULT_IMAGE "/images/svg/default.svg" //Ĭͼ +#define DEFAULT_TEXT_COLOR "#FFFFFF" //默认文字颜色 +#define DEFAULT_COVER_COLOR "#0033FF" //鼠标指向后变成的颜色,也是“添加应用”等几个按钮的默认颜色 +#define DEFAULT_IMAGE "/images/svg/default.svg" //默认图标 #define DEFAULT_SVG_PATH "/images/svg/" -#define DEFAULT_LOGO "/images/logo.png" //logo· -#define TITLE " " // -#define TEXT_SIZE 7 //Сܴ +#define DEFAULT_LOGO "/images/logo.png" //logo路径 +#define TITLE " " //标题栏 +#define TEXT_SIZE 7 //字体大小。不是所有字体受此项控制 #define TEXT_SIZE_BIG 10 -// +//分类 #define ALL 1 #define ELITE 2 #define SOFT 3 diff --git a/OfficeAssistant_msvc/navbar.cpp b/OfficeAssistant_msvc/navbar.cpp index 02927d1..4d209ef 100644 --- a/OfficeAssistant_msvc/navbar.cpp +++ b/OfficeAssistant_msvc/navbar.cpp @@ -1,4 +1,4 @@ -// +// // Created by HW on 2023/07/26. // @@ -67,6 +67,7 @@ NavBar::NavBar(MainScreen *mainScreen,QWidget *parent) : layout2 = new QHBoxLayout; layout_right = new QHBoxLayout; layout_left = new QHBoxLayout; + getLogoFromInternet(&config_response); logo_label = new QLabel(this); logo_label->setAttribute(Qt::WA_TranslucentBackground); //*logo = logo->scaled(this->width() / (5 / scale), this->height()); @@ -138,9 +139,7 @@ void NavBar::resizeEvent(QResizeEvent *event) { } logo_label->setMaximumSize(event->size().width() / 5, event->size().height()); } -/*void NavBar::getLogoFromInternet(ConfigResponse *configResponse) { - qColor.setNamedColor(configResponse->basic.backgroud_color); - +void NavBar::getLogoFromInternet(ConfigResponse *configResponse) { QUrl url_logo(configResponse->basic.logo_url); QNetworkRequest *request_logo = new QNetworkRequest(url_logo); manager = new QNetworkAccessManager; @@ -156,17 +155,17 @@ void NavBar::resizeEvent(QResizeEvent *event) { reply->close(); if (downloadSuccess == true) { *buffer = reply->readAll(); - logo = new ; - logo->loadFromData(*buffer); + QFile logo(QApplication::applicationDirPath() + DEFAULT_LOGO); + if (logo.open(QIODevice::WriteOnly)) { + logo.write(*buffer); + logo.close(); + } buffer->clear(); - }else - { - getLogoFromLocal(); } delete manager; manager = nullptr; -}*/ +} void NavBar::storeToBuffer() { buffer = new QByteArray; @@ -182,7 +181,7 @@ void NavBar::cancelDownload() { QString dir = QApplication::applicationDirPath(); QFile file(dir + DEFAULT_FILE); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { - QMessageBox::warning(nullptr, QString::fromLocal8Bit(""), QString::fromLocal8Bit("޷ļ")); + QMessageBox::warning(nullptr, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("无法打开配置文件")); exit(1); } buffer->clear(); @@ -199,7 +198,7 @@ void NavBar::cancelDownload() { QJsonArray *array = new QJsonArray; } else { - QMessageBox::warning(nullptr, QString::fromLocal8Bit(""), QString::fromLocal8Bit("ļ")); + QMessageBox::warning(nullptr, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("配置文件损坏")); delete obj_root; exit(1); } diff --git a/OfficeAssistant_msvc/navbar.h b/OfficeAssistant_msvc/navbar.h index c9448b9..f69a819 100644 --- a/OfficeAssistant_msvc/navbar.h +++ b/OfficeAssistant_msvc/navbar.h @@ -1,4 +1,4 @@ -// +// // Created by HW on 2023/07/26. // @@ -37,6 +37,8 @@ protected: void resizeEvent(QResizeEvent *event) override; + void getLogoFromInternet(ConfigResponse* configResponse); + private: Ui::NavBar *ui; @@ -52,7 +54,6 @@ private: QPixmap *logo; QLabel *logo_label; bool downloadSuccess=true; - //void getLogoFromInternet(ConfigResponse *configResponse); //void getLogoFromLocal(); MainScreen *mainScreen; QHBoxLayout *layout_left; diff --git a/OfficeAssistant_msvc/netio.cpp b/OfficeAssistant_msvc/netio.cpp index 34f8283..122a882 100644 --- a/OfficeAssistant_msvc/netio.cpp +++ b/OfficeAssistant_msvc/netio.cpp @@ -1,4 +1,4 @@ -// +// // Created by HW on 2023/07/27. // @@ -31,11 +31,11 @@ #pragma comment(lib, "Qt5Network.lib") #endif #pragma comment(lib,"comsuppw.lib") -//ȡעȡMachineUUID +//读取注册表获取MachineUUID bool IsWin11AndLater() { - //Windows 10 ڲ汾 10240 ʼڲ汾 19044 Windows 11 ڲ汾 22000 ʼô + //Windows 10 从内部版本 10240 开始,以内部版本 19044 结束。Windows 11 从内部版本 22000 开始,那么: //Environment.OSVersion.Version.Build >= 22000; NTSTATUS(WINAPI * RtlGetVersion)(LPOSVERSIONINFOEXW); OSVERSIONINFOEXW osInfo; @@ -54,40 +54,40 @@ RequestBodyBase::RequestBodyBase(){ wchar_t unix_time[65]={0}; wsprintf(unix_time,L"%ld",std::time(0)); QString request_id=QString::fromWCharArray(unix_time); - //ļ + //打开配置文件 QString dir=QApplication::applicationDirPath(); QFile *infFile=new QFile(dir+"/config/information.kmd"); if(!infFile->open(QIODevice::ReadOnly|QIODevice::Text)){ - QMessageBox::critical(nullptr,QString::fromLocal8Bit(""), QString::fromLocal8Bit("޷ļ")); + QMessageBox::critical(nullptr,QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("无法打开配置文件")); delete infFile; exit_manager.exit(1); } - //ȡļ + //读取配置文件 QByteArray bytes; bytes=infFile->readAll(); infFile->close(); delete infFile; - //תΪjson + //转化为json qJsonDocument=QJsonDocument::fromJson(bytes); if(qJsonDocument.isObject()){ - //ȡݣдӦֶ + //读取数据,写入对应字段 QJsonObject obj_root=qJsonDocument.object(); if(obj_root.value("product")==QJsonValue::Undefined){ - QMessageBox::critical(nullptr, QString::fromLocal8Bit(""), QString::fromLocal8Bit("ļ")); + QMessageBox::critical(nullptr, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("配置文件损坏")); exit_manager.exit(1); } product=obj_root.value("product").toString(); if(obj_root.value("partner_id")==QJsonValue::Undefined){ - QMessageBox::critical(nullptr , QString::fromLocal8Bit(""), QString::fromLocal8Bit("ļ")); + QMessageBox::critical(nullptr , QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("配置文件损坏")); exit_manager.exit(1); } parter_id=obj_root.value("partner_id").toString(); }else{ - // - QMessageBox::critical(nullptr, QString::fromLocal8Bit(""), QString::fromLocal8Bit("ļ")); + //处理错误 + QMessageBox::critical(nullptr, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("配置文件损坏")); exit_manager.exit(1); } - //ȡϵͳ汾 + //获取操作系统版本 this->os="Windows"; OSVERSIONINFOEXW os; os.dwOSVersionInfoSize=sizeof(os); @@ -96,12 +96,12 @@ RequestBodyBase::RequestBodyBase(){ *(FARPROC*)&RtlGetVersion = GetProcAddress(GetModuleHandleA("ntdll"), "RtlGetVersion"); if (RtlGetVersion != nullptr) { RtlGetVersion(&os); - switch (os.dwMajorVersion) {//汾 - case 5: //Windows 20005.xһWindows XP + switch (os.dwMajorVersion) {//主版本号 + case 5: //不兼容Windows 2000,因此5.x一定是Windows XP os_version = "Windows XP"; break; case 6: - switch (os.dwMinorVersion) { //ΰ汾 + switch (os.dwMinorVersion) { //次版本号 case 0: os_version = "Windows Vista or Windows Server 2008"; break; @@ -117,7 +117,7 @@ RequestBodyBase::RequestBodyBase(){ default: os_version = "Unknown"; } - case 10: //⼸ϵͳ10.0 + case 10: //这几个系统都是10.0 if (IsWin11AndLater()) { os_version = "Windows 11 or Windows Server 2022"; } @@ -135,10 +135,10 @@ RequestBodyBase::RequestBodyBase(){ this->release = RELEASE; this->version = VERSION; - //ȡMachineGUIDȡMD5Ϊdevice_id + //读取MachineGUID并取MD5作为device_id QByteArray hash = QCryptographicHash::hash(getMachineGUID().toUtf8(), QCryptographicHash::Md5); device_id = hash.toHex(); - //json + //加入json序列 QJsonValue value = device_id; QJsonObject obj_root = qJsonDocument.object(); obj_root.insert("device_id", value); @@ -156,7 +156,7 @@ RequestBodyBase::RequestBodyBase(){ QJsonValue sign_json(sign); QJsonValue requestId_json=QJsonValue(request_id); obj_root=qJsonDocument.object(); - //request_id + //插入request_id obj_root.insert(QString::fromLocal8Bit("request_id"),requestId_json); obj_root.insert(QString::fromLocal8Bit("os"), os_json); obj_root.insert(QString::fromLocal8Bit("os_version"), os_version_json); @@ -197,20 +197,20 @@ void ConfigRequest::sendRequest(ConfigResponse *configResponse) { QNetworkAccessManager *httpMgr = new QNetworkAccessManager(); QNetworkRequest requestInfo; - //HTTP - //ͷ + //HTTP请求 + //请求头 QString url = CONFIG_URL; requestInfo.setUrl(QUrl(CONFIG_URL)); requestInfo.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json")); - //Ӧı + //保存响应的变量 reply = httpMgr->post(requestInfo,qJsonDocument.toJson()); qDebug() << qJsonDocument.toJson(); - //һѭֱʱ߻ȡΪֹ + //开启一个循环,直到超时或者获取到数据为止 connect(reply,&QNetworkReply::finished, &eventLoop, &QEventLoop::quit); - //öʱֹʱ + //设置定时器防止超时 connect(timer,&QTimer::timeout,this,&ConfigRequest::cancelDownload); timer->start(5000); - //ѭ + //启动循环 eventLoop.exec(); timer->stop(); //delete httpMgr; @@ -219,11 +219,11 @@ void ConfigRequest::sendRequest(ConfigResponse *configResponse) { configResponse->succeed = false; //memset(configResponse,0,sizeof(*configResponse)); auto error = reply->error(); - //ûд + //如果没有错误 if(reply->error() == QNetworkReply::NoError) { buffer = reply->readAll(); }else{ - //д + //如果有错误 configResponse->succeed=false; //delete reply; delete timer; @@ -232,13 +232,15 @@ void ConfigRequest::sendRequest(ConfigResponse *configResponse) { } //qDebug() << result.toJson(); result = QJsonDocument::fromJson(buffer); - // + //如果数据完整 if(result.isObject()){ QJsonObject obj_root=result.object(); QJsonArray array; array = obj_root.value("data").toObject().value("menu").toArray(); - QJsonObject obj_basic = obj_root.value("data").toObject().value("basic").toObject(); + QJsonObject obj_data = obj_root.value("data").toObject(); + QString basic_str= obj_data.value("basic").toString(); + QJsonObject obj_basic=QJsonDocument::fromJson(basic_str.toUtf8()).object(); configResponse->basic.logo_url = obj_basic.value("logo").toString(); configResponse->basic.device_id = obj_basic.value("device_id").toString(); configResponse->basic.dev_id = obj_basic.value("dev_id").toString(); @@ -253,7 +255,7 @@ void ConfigRequest::sendRequest(ConfigResponse *configResponse) { button.img=object.value("img").toString(); button.orig_name= object.value("orig_name").toString(); // button.img_cover=object.value("img_cover").toString(); - button.title=object.value("title").toString(); + button.title=object.value("name").toString(); button.categroy_id = object.value("category_id").toString(); button.op = object.value("op").toString(); button.func=object.value("func").toString(); @@ -269,7 +271,7 @@ void ConfigRequest::sendRequest(ConfigResponse *configResponse) { file.close(); } }else{ - //ݲ + //数据不完整 configResponse->succeed=false; //delete reply; delete timer; @@ -288,18 +290,18 @@ void RequestBodyBase::sendRequest() { timer = new QTimer(this); QNetworkAccessManager *httpMgr = new QNetworkAccessManager(); QNetworkRequest requestInfo; - //HTTP - //ͷ + //HTTP请求 + //请求头 requestInfo.setUrl(QUrl(OP_URL)); requestInfo.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json")); - //Ӧı + //保存响应的变量 reply = httpMgr->post(requestInfo,qJsonDocument.toJson()); - //һѭֱʱ߻ȡΪֹ + //开启一个循环,直到超时或者获取到数据为止 connect(reply,&QNetworkReply::finished, this, &RequestBodyBase::cancelDownload); - //öʱֹʱ + //设置定时器防止超时 connect(timer,&QTimer::timeout,&eventLoop,&QEventLoop::quit); timer->start(5000); - //ѭ + //启动循环 eventLoop.exec(); delete timer; delete httpMgr; @@ -310,15 +312,15 @@ void RequestBodyBase::sendRequest() { DeviceRequest::DeviceRequest() : RequestBodyBase() { //CPU QString cpu = QSysInfo::currentCpuArchitecture(); - //ڴС + //内存大小 MEMORYSTATUSEX status; status.dwLength = sizeof(status); GlobalMemoryStatusEx(&status); int ram = status.ullTotalPhys / 1024 / 1024; - //Ӳ̴С + //硬盘大小 QStorageInfo storage = QStorageInfo::root(); int disk = storage.bytesTotal() / static_cast(1024 * 1024 * 1024); - //Կͺ + //显卡型号 QStringList gpus; BOOL success; DWORD deviceIndex = 0; @@ -346,9 +348,9 @@ DeviceRequest::DeviceRequest() : RequestBodyBase() { deviceIndex++; displayDevice.cb = sizeof(displayDevice); } - //ͺ + //主板型号 QString motherboard = QSysInfo::prettyProductName(); - //WMIȡͺ + //WMI获取网卡型号 HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED); if (FAILED(hr)) { std::cerr << "Failed to initialize COM library." << std::endl; @@ -455,7 +457,7 @@ DeviceRequest::DeviceRequest() : RequestBodyBase() { pClassObj->Release(); } - //WMIȡͺ + //WMI获取声卡型号 hr = pSvc->ExecQuery( _bstr_t("WQL"), _bstr_t("SELECT * FROM Win32_SoundDevice"), @@ -534,8 +536,8 @@ DeviceRequest::DeviceRequest() : RequestBodyBase() { DISPLAY_DEVICE d = { sizeof(DISPLAY_DEVICE) }; ::EnumDisplayDevices(NULL, 0, &d, 0); QString monitor=QString::fromWCharArray(d.DeviceString, wcslen(d.DeviceString)); - // - //JSON + //发送 + //构造JSON QJsonDocument *device=new QJsonDocument; QJsonObject *object=new QJsonObject; object->insert("CPU",QJsonValue(cpu)); @@ -576,18 +578,18 @@ DeviceRequest::DeviceRequest() : RequestBodyBase() { timer = new QTimer(this); QNetworkAccessManager *httpMgr = new QNetworkAccessManager(); QNetworkRequest requestInfo; - //HTTP - //ͷ + //HTTP请求 + //请求头 requestInfo.setUrl(QUrl(DEVICE_URL)); requestInfo.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json")); - //Ӧı + //保存响应的变量 reply = httpMgr->post(requestInfo,qJsonDocument.toJson()); - //һѭֱʱ߻ȡΪֹ + //开启一个循环,直到超时或者获取到数据为止 connect(reply,&QNetworkReply::finished, &eventLoop, &QEventLoop::quit); - //öʱֹʱ + //设置定时器防止超时 connect(timer,&QTimer::timeout,this,&DeviceRequest::cancelDownload); timer->start(5000); - //ѭ + //启动循环 eventLoop.exec(); delete httpMgr; } @@ -596,8 +598,8 @@ bool SoftwareRequest::sendRequest(QHash&startMenu, QHash&startMenu, QHashpost(requestInfo, qJsonDocument.toJson()); qDebug() << qJsonDocument.toJson(); - //һѭֱʱ߻ȡΪֹ + //开启一个循环,直到超时或者获取到数据为止 connect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit); - //öʱֹʱ + //设置定时器防止超时 connect(timer, &QTimer::timeout, this, &SoftwareRequest::cancelDownload); timer->start(5000); - //ѭ + //启动循环 eventLoop.exec(); timer->stop(); delete timer; QJsonDocument result; // auto error = reply->error(); - //ûд + //如果没有错误 qDebug() << reply->error(); if (reply->error() == QNetworkReply::NoError) { result = QJsonDocument::fromJson(reply->readAll()); } else { - //д + //如果有错误 delete httpMgr; return false; } //qDebug() << result.toJson(); - // + //如果数据完整 if (result.isObject()) { QJsonObject obj_root2 = result.object(); QJsonArray array = obj_root2.value("data").toObject().value("menu").toArray(); @@ -701,7 +703,7 @@ bool SoftwareRequest::sendRequest(QHash&startMenu, QHashpost(requestInfo, qJsonDocument.toJson()); - //һѭֱʱ߻ȡΪֹ + //开启一个循环,直到超时或者获取到数据为止 connect(reply, &QNetworkReply::finished, this, &OpenWeChatRequest::cancelDownload); - //öʱֹʱ + //设置定时器防止超时 connect(timer, &QTimer::timeout, &eventLoop, &QEventLoop::quit); timer->start(5000); - //ѭ + //启动循环 eventLoop.exec(); timer->stop(); QByteArray buffer = reply->readAll(); @@ -755,18 +757,18 @@ void OpRequest::sendRequest() qJsonDocument.setObject(object); QNetworkAccessManager* httpMgr = new QNetworkAccessManager(); QNetworkRequest requestInfo; - //HTTP - //ͷ + //HTTP请求 + //请求头 requestInfo.setUrl(QUrl(OP_URL)); requestInfo.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json")); - //Ӧı + //保存响应的变量 reply = httpMgr->post(requestInfo, qJsonDocument.toJson()); - //һѭֱʱ߻ȡΪֹ + //开启一个循环,直到超时或者获取到数据为止 connect(reply, &QNetworkReply::finished, this, &OpRequest::cancelDownload); - //öʱֹʱ + //设置定时器防止超时 connect(timer, &QTimer::timeout, &eventLoop, &QEventLoop::quit); timer->start(5000); - //ѭ + //启动循环 eventLoop.exec(); timer->stop(); delete timer; diff --git a/OfficeAssistant_msvc/sqlitehelper.cpp b/OfficeAssistant_msvc/sqlitehelper.cpp index dbac278..4fe1709 100644 --- a/OfficeAssistant_msvc/sqlitehelper.cpp +++ b/OfficeAssistant_msvc/sqlitehelper.cpp @@ -1,4 +1,4 @@ -#include "sqlitehelper.h" +#include "sqlitehelper.h" #include #include @@ -126,7 +126,7 @@ SQLiteHelper::SQLiteHelper(QObject *parent) } if (!db.open()) { - QMessageBox::critical(nullptr, QString::fromLocal8Bit("ʾ"), QString::fromLocal8Bit("޷ݿ")); + QMessageBox::critical(nullptr, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("无法打开数据库")); exit_manager.exit(1); } } @@ -172,9 +172,9 @@ bool SQLiteHelper::update_software() path.remove(path.length() - 1, 1); records.insert(path, record); }*/ - //ʼ˵Ѱװб + //开始菜单中已安装软件列表 WCHAR path[MAX_PATH]; - HRESULT hr = SHGetFolderPathW(nullptr, CSIDL_COMMON_PROGRAMS, nullptr, 0, path);//ȡProgramDataпʼ˵· + HRESULT hr = SHGetFolderPathW(nullptr, CSIDL_COMMON_PROGRAMS, nullptr, 0, path);//获取ProgramData中开始菜单的路径 std::wstring path_str(path); getMenu(path_str, paths); @@ -182,11 +182,11 @@ bool SQLiteHelper::update_software() { path[i] = 0; } - hr = SHGetFolderPathW(nullptr, CSIDL_PROGRAMS, nullptr, 0, path);//ȡûļпʼ˵· + hr = SHGetFolderPathW(nullptr, CSIDL_PROGRAMS, nullptr, 0, path);//获取用户文件夹中开始菜单的路径 path_str.clear(); path_str = std::wstring(path); getMenu(path_str, paths); - // עеѰװб + // 打开注册表中的已安装软件列表 QHash reg_records; HKEY hKey; if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, @@ -226,7 +226,7 @@ bool SQLiteHelper::update_software() &cbSecurityDescriptor, // security descriptor &ftLastWriteTime); // last write time - // öٸбӼ + // 枚举该列表下所有子键 for (DWORD i = 0; i < cSubKeys; i++) { WCHAR szSubKey[MAX_PATH] = { 0 }; @@ -234,7 +234,7 @@ bool SQLiteHelper::update_software() if (RegEnumKeyExW(hKey, i, szSubKey, &dwSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { - // ȡֵ + // 读取软件属性值 HKEY hSubKey; if (RegOpenKeyExW(hKey, szSubKey, 0, KEY_READ | KEY_WOW64_64KEY, &hSubKey) == ERROR_SUCCESS) { @@ -243,7 +243,7 @@ bool SQLiteHelper::update_software() WCHAR buffer[MAX_PATH] = { 0 }; DWORD buffer_num; dwSize = MAX_PATH * sizeof(WCHAR); - //װļ + //安装文件夹 if (RegQueryValueExW(hSubKey, L"InstallLocation", NULL, NULL, (LPBYTE)szProductPath, &dwSize) != ERROR_SUCCESS) { @@ -251,7 +251,7 @@ bool SQLiteHelper::update_software() continue; } QString path = QString::fromWCharArray(szProductPath); - // + //软件名 if (RegQueryValueExW(hSubKey, L"DisplayName", NULL, NULL, (LPBYTE)buffer, &dwSize) != ERROR_SUCCESS) { @@ -260,22 +260,22 @@ bool SQLiteHelper::update_software() } record.name = QString::fromWCharArray(buffer); record.orig_name = QString::fromWCharArray(buffer); - //ͼ + //图标 RegQueryValueExW(hSubKey, L"DisplayIcon", NULL, NULL, (LPBYTE)buffer, &dwSize); record.logo = QString::fromWCharArray(buffer); - //汾 + //主版本号 RegQueryValueExW(hSubKey, L"VersionMajor", NULL, NULL, (LPBYTE)&buffer_num, &dwSize); QString versionMajor = QString::number(buffer_num); - //ΰ汾 + //次版本号 RegQueryValueExW(hSubKey, L"VersionMinor", NULL, NULL, (LPBYTE)&buffer_num, &dwSize); QString versionMinor = QString::number(buffer_num); - //汾źʹΰ汾ƴһ + //将主版本号和次版本号拼接在一起 QString version = versionMajor + "." + versionMinor; record.version = version; - // + //开发者 RegQueryValueExW(hSubKey, L"Publisher", NULL, NULL, (LPBYTE)buffer, &dwSize); record.dev = QString::fromWCharArray(buffer); @@ -336,7 +336,7 @@ bool SQLiteHelper::update_software() &cbSecurityDescriptor, // security descriptor &ftLastWriteTime); // last write time - // öٸбӼ + // 枚举该列表下所有子键 for (DWORD i = 0; i < cSubKeys; i++) { WCHAR szSubKey[MAX_PATH] = { 0 }; @@ -344,7 +344,7 @@ bool SQLiteHelper::update_software() if (RegEnumKeyExW(hkey2, i, szSubKey, &dwSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { - // ȡֵ + // 读取软件属性值 HKEY hSubKey; if (RegOpenKeyExW(hkey2, szSubKey, 0, KEY_READ | KEY_WOW64_64KEY, &hSubKey) == ERROR_SUCCESS) { @@ -353,7 +353,7 @@ bool SQLiteHelper::update_software() WCHAR buffer[MAX_PATH] = { 0 }; DWORD buffer_num; dwSize = MAX_PATH * sizeof(WCHAR); - //װļ + //安装文件夹 if (RegQueryValueExW(hSubKey, L"InstallLocation", NULL, NULL, (LPBYTE)szProductPath, &dwSize) != ERROR_SUCCESS) { @@ -361,7 +361,7 @@ bool SQLiteHelper::update_software() continue; } QString path = QString::fromWCharArray(szProductPath); - // + //软件名 if (RegQueryValueExW(hSubKey, L"DisplayName", NULL, NULL, (LPBYTE)buffer, &dwSize) != ERROR_SUCCESS) { @@ -370,22 +370,22 @@ bool SQLiteHelper::update_software() } record.name = QString::fromWCharArray(buffer); record.orig_name = QString::fromWCharArray(buffer); - //ͼ + //图标 RegQueryValueExW(hSubKey, L"DisplayIcon", NULL, NULL, (LPBYTE)buffer, &dwSize); record.logo = QString::fromWCharArray(buffer); - //汾 + //主版本号 RegQueryValueExW(hSubKey, L"VersionMajor", NULL, NULL, (LPBYTE)&buffer_num, &dwSize); QString versionMajor = QString::number(buffer_num); - //ΰ汾 + //次版本号 RegQueryValueExW(hSubKey, L"VersionMinor", NULL, NULL, (LPBYTE)&buffer_num, &dwSize); QString versionMinor = QString::number(buffer_num); - //汾źʹΰ汾ƴһ + //将主版本号和次版本号拼接在一起 QString version = versionMajor + "." + versionMinor; record.version = version; - // + //开发者 RegQueryValueExW(hSubKey, L"Publisher", NULL, NULL, (LPBYTE)buffer, &dwSize); record.dev = QString::fromWCharArray(buffer); @@ -445,7 +445,7 @@ bool SQLiteHelper::update_software() &cbSecurityDescriptor, // security descriptor &ftLastWriteTime); // last write time - // öٸбӼ + // 枚举该列表下所有子键 for (DWORD i = 0; i < cSubKeys; i++) { WCHAR szSubKey[MAX_PATH] = { 0 }; @@ -453,7 +453,7 @@ bool SQLiteHelper::update_software() if (RegEnumKeyExW(hkey3, i, szSubKey, &dwSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { - // ȡֵ + // 读取软件属性值 HKEY hSubKey; if (RegOpenKeyExW(hkey3, szSubKey, 0, KEY_READ | KEY_WOW64_64KEY, &hSubKey) == ERROR_SUCCESS) { @@ -462,7 +462,7 @@ bool SQLiteHelper::update_software() WCHAR buffer[MAX_PATH] = { 0 }; DWORD buffer_num; dwSize = MAX_PATH * sizeof(WCHAR); - //װļ + //安装文件夹 if (RegQueryValueExW(hSubKey, L"InstallLocation", NULL, NULL, (LPBYTE)szProductPath, &dwSize) != ERROR_SUCCESS) { @@ -470,7 +470,7 @@ bool SQLiteHelper::update_software() continue; } QString path = QString::fromWCharArray(szProductPath); - // + //软件名 if (RegQueryValueExW(hSubKey, L"DisplayName", NULL, NULL, (LPBYTE)buffer, &dwSize) != ERROR_SUCCESS) { @@ -479,22 +479,22 @@ bool SQLiteHelper::update_software() } record.name = QString::fromWCharArray(buffer); record.orig_name = QString::fromWCharArray(buffer); - //ͼ + //图标 RegQueryValueExW(hSubKey, L"DisplayIcon", NULL, NULL, (LPBYTE)buffer, &dwSize); record.logo = QString::fromWCharArray(buffer); - //汾 + //主版本号 RegQueryValueExW(hSubKey, L"VersionMajor", NULL, NULL, (LPBYTE)&buffer_num, &dwSize); QString versionMajor = QString::number(buffer_num); - //ΰ汾 + //次版本号 RegQueryValueExW(hSubKey, L"VersionMinor", NULL, NULL, (LPBYTE)&buffer_num, &dwSize); QString versionMinor = QString::number(buffer_num); - //汾źʹΰ汾ƴһ + //将主版本号和次版本号拼接在一起 QString version = versionMajor + "." + versionMinor; record.version = version; - // + //开发者 RegQueryValueExW(hSubKey, L"Publisher", NULL, NULL, (LPBYTE)buffer, &dwSize); record.dev = QString::fromWCharArray(buffer); @@ -551,7 +551,7 @@ bool SQLiteHelper::update_software() &cbSecurityDescriptor, // security descriptor &ftLastWriteTime); // last write time - // öٸбӼ + // 枚举该列表下所有子键 for (DWORD i = 0; i < cSubKeys; i++) for (DWORD i = 0; ; i++) { @@ -560,7 +560,7 @@ bool SQLiteHelper::update_software() if (RegEnumKeyExW(hkey4, i, szSubKey, &dwSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { - //ȡֵ + //读取软件属性值 HKEY hSubKey; if (RegOpenKeyExW(hkey3, szSubKey, 0, KEY_READ | KEY_WOW64_64KEY, &hSubKey) == ERROR_SUCCESS) { @@ -569,7 +569,7 @@ bool SQLiteHelper::update_software() WCHAR buffer[MAX_PATH] = { 0 }; DWORD buffer_num; dwSize = MAX_PATH * sizeof(WCHAR); - //װļ + //安装文件夹 if (RegQueryValueExW(hSubKey, L"InstallLocation", NULL, NULL, (LPBYTE)szProductPath, &dwSize) != ERROR_SUCCESS) { @@ -577,7 +577,7 @@ bool SQLiteHelper::update_software() continue; } QString path = QString::fromWCharArray(szProductPath); - // + //软件名 if (RegQueryValueExW(hSubKey, L"DisplayName", NULL, NULL, (LPBYTE)buffer, &dwSize) != ERROR_SUCCESS) { @@ -586,22 +586,22 @@ bool SQLiteHelper::update_software() } record.name = QString::fromWCharArray(buffer); record.orig_name = QString::fromWCharArray(buffer); - //ͼ + //图标 RegQueryValueExW(hSubKey, L"DisplayIcon", NULL, NULL, (LPBYTE)buffer, &dwSize); record.logo = QString::fromWCharArray(buffer); - //汾 + //主版本号 RegQueryValueExW(hSubKey, L"VersionMajor", NULL, NULL, (LPBYTE)&buffer_num, &dwSize); QString versionMajor = QString::number(buffer_num); - //ΰ汾 + //次版本号 RegQueryValueExW(hSubKey, L"VersionMinor", NULL, NULL, (LPBYTE)&buffer_num, &dwSize); QString versionMinor = QString::number(buffer_num); - //汾źʹΰ汾ƴһ + //将主版本号和次版本号拼接在一起 QString version = versionMajor + "." + versionMinor; record.version = version; - // + //开发者 RegQueryValueExW(hSubKey, L"Publisher", NULL, NULL, (LPBYTE)buffer, &dwSize); record.dev = QString::fromWCharArray(buffer); @@ -622,7 +622,7 @@ bool SQLiteHelper::update_software() } } - //Ա·ҳ֣ + //对比两个路径,找出公共部分(划掉) QHash public_programs_list; /*for(auto path:*paths) { @@ -679,7 +679,7 @@ bool SQLiteHelper::update_software() } } - //󣬲ȫֶ + //进行网络请求,补全字段 SoftwareRequest software_request; bool ok=software_request.sendRequest(*paths,&public_programs_list,array); if(!ok) @@ -882,7 +882,7 @@ void SetSVGBackColor(QDomElement& elem, QString strtagname, QString strattr, QSt bool SQLiteHelper::get_software(QList* button_structs, ConfigResponse* config_response) { QSqlQuery query(db); - QString sql = "select * from kmd_menu where type='navbar' order by sort,orig_name asc ;"; + QString sql = "select * from kmd_menu where is_navbar=1 order by sort,orig_name asc ;"; if (!query.exec(sql)) { return false; @@ -906,7 +906,7 @@ bool SQLiteHelper::get_software(QList* button_structs, ConfigRespo buffer = file.readAll(); QJsonDocument result; result = QJsonDocument::fromJson(buffer); - // + //如果数据完整 if (result.isObject()) { QJsonObject obj_root = result.object(); QJsonArray array; @@ -1003,19 +1003,19 @@ bool SQLiteHelper::get_software(QList* button_structs, ConfigRespo QSvgRenderer* render_image = new QSvgRenderer(*buffer); QPainter painter_image(image); - painter_image.setCompositionMode(QPainter::CompositionMode_Clear); // - painter_image.fillRect(image->rect(), Qt::transparent); // ͸ɫ - painter_image.setCompositionMode(QPainter::CompositionMode_SourceOver); // ָĬֵ + painter_image.setCompositionMode(QPainter::CompositionMode_Clear); // 清除画布 + painter_image.fillRect(image->rect(), Qt::transparent); // 填充透明色 + painter_image.setCompositionMode(QPainter::CompositionMode_SourceOver); // 恢复默认值 render_image->render(&painter_image); - //޸ɫ + //修改颜色 QDomDocument doc; doc.setContent(*buffer); SetSVGBackColor(doc.documentElement(), "path", "fill", title_cover_color); QSvgRenderer* render_image_cover = new QSvgRenderer(doc.toByteArray()); QPainter painter_image_cover(image_cover); - painter_image_cover.setCompositionMode(QPainter::CompositionMode_Clear); // - painter_image_cover.fillRect(image_cover->rect(), Qt::transparent); // ͸ɫ - painter_image_cover.setCompositionMode(QPainter::CompositionMode_SourceOver); // ָĬֵ + painter_image_cover.setCompositionMode(QPainter::CompositionMode_Clear); // 清除画布 + painter_image_cover.fillRect(image_cover->rect(), Qt::transparent); // 填充透明色 + painter_image_cover.setCompositionMode(QPainter::CompositionMode_SourceOver); // 恢复默认值 render_image_cover->render(&painter_image_cover); delete render_image; @@ -1048,19 +1048,19 @@ bool SQLiteHelper::get_software(QList* button_structs, ConfigRespo file.close(); QSvgRenderer* render_image = new QSvgRenderer(svg_buffer); QPainter painter_image(image); - painter_image.setCompositionMode(QPainter::CompositionMode_Clear); // - painter_image.fillRect(image->rect(), Qt::transparent); // ͸ɫ - painter_image.setCompositionMode(QPainter::CompositionMode_SourceOver); // ָĬֵ + painter_image.setCompositionMode(QPainter::CompositionMode_Clear); // 清除画布 + painter_image.fillRect(image->rect(), Qt::transparent); // 填充透明色 + painter_image.setCompositionMode(QPainter::CompositionMode_SourceOver); // 恢复默认值 render_image->render(&painter_image); - //޸ɫ + //修改颜色 QDomDocument doc; doc.setContent(svg_buffer); SetSVGBackColor(doc.documentElement(), "path", "fill", title_cover_color); QSvgRenderer* render_image_cover = new QSvgRenderer(doc.toByteArray()); QPainter painter_image_cover(image_cover); - painter_image_cover.setCompositionMode(QPainter::CompositionMode_Clear); // - painter_image_cover.fillRect(image_cover->rect(), Qt::transparent); // ͸ɫ - painter_image_cover.setCompositionMode(QPainter::CompositionMode_SourceOver); // ָĬֵ + painter_image_cover.setCompositionMode(QPainter::CompositionMode_Clear); // 清除画布 + painter_image_cover.fillRect(image_cover->rect(), Qt::transparent); // 填充透明色 + painter_image_cover.setCompositionMode(QPainter::CompositionMode_SourceOver); // 恢复默认值 render_image_cover->render(&painter_image_cover); delete render_image; @@ -1076,19 +1076,19 @@ bool SQLiteHelper::get_software(QList* button_structs, ConfigRespo file.close(); QSvgRenderer* render_image = new QSvgRenderer(svg_buffer); QPainter painter_image(image); - painter_image.setCompositionMode(QPainter::CompositionMode_Clear); // - painter_image.fillRect(image->rect(), Qt::transparent); // ͸ɫ - painter_image.setCompositionMode(QPainter::CompositionMode_SourceOver); // ָĬֵ + painter_image.setCompositionMode(QPainter::CompositionMode_Clear); // 清除画布 + painter_image.fillRect(image->rect(), Qt::transparent); // 填充透明色 + painter_image.setCompositionMode(QPainter::CompositionMode_SourceOver); // 恢复默认值 render_image->render(&painter_image); - //޸ɫ + //修改颜色 QDomDocument doc; doc.setContent(svg_buffer); SetSVGBackColor(doc.documentElement(), "path", "fill", title_cover_color); QSvgRenderer* render_image_cover = new QSvgRenderer(doc.toByteArray()); QPainter painter_image_cover(image_cover); - painter_image_cover.setCompositionMode(QPainter::CompositionMode_Clear); // - painter_image_cover.fillRect(image_cover->rect(), Qt::transparent); // ͸ɫ - painter_image_cover.setCompositionMode(QPainter::CompositionMode_SourceOver); // ָĬֵ + painter_image_cover.setCompositionMode(QPainter::CompositionMode_Clear); // 清除画布 + painter_image_cover.fillRect(image_cover->rect(), Qt::transparent); // 填充透明色 + painter_image_cover.setCompositionMode(QPainter::CompositionMode_SourceOver); // 恢复默认值 render_image_cover->render(&painter_image_cover); delete render_image; @@ -1258,7 +1258,7 @@ bool SQLiteHelper::insert_software(QString name, QString orig_name, QString path query.addBindValue(true); if(!query.exec()) { - //QMessageBox::critical(nullptr, QString::fromLocal8Bit(""), QString::fromLocal8Bit("дݿʧ")); + //QMessageBox::critical(nullptr, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("写入数据库失败")); return false; } for (int i = 0; i < 8; i++) @@ -1324,7 +1324,7 @@ bool SQLiteHelper::get_category(QList& categrories,bool is_edit,bool } while (query.next()) { - if (query.value("name") == QString::fromLocal8Bit("ȫ")) + if (query.value("name") == QString::fromLocal8Bit("全部")) { continue; } @@ -1361,7 +1361,7 @@ bool SQLiteHelper::get_category(QList& categrories,bool is_edit,bool } while (query.next()) { - if (query.value("name") == QString::fromLocal8Bit("ȫ")) + if (query.value("name") == QString::fromLocal8Bit("全部")) { continue; } diff --git a/identifier.sqlite b/identifier.sqlite index c220750f427ddbe685a7df1134b2cdc532fe05da..d0909f4c3140b4ff294b6a2666ed2a78f5438f67 100644 GIT binary patch literal 53248 zcmeI*|8Emz90%~H`@(vo#~Ci8PMnk_6PDF=9il`qI-%fX426+MjA?G|t(>&I+Pe-& zj52YEMhO~%0TUE8X3=C~P(_!EDCS-0}5Kk`Quiw)3Sv!`1^sW;UhSfi>&_=JBv+0|Ca^Bqh0&BzoOIsg9ES@VE!_ zyiT&m{(MySyufPNb;hpOje2%^c1okts65D@^VIyGi(af*QB!sA? zzn;_6vAJ(+H|~h^3`7D0J=^@N@cytt!xThET&fvu6b6M# zK%jp+rCoh}L8@YzSzD;IDYCg|SKmNjZ5J=pGMT8;=CGEH?a{KU!`Q?bUf_ zgQl6(wRFI(=Tx%~WOOQXD|N4ZqP={=Dr$2TZz85qm}d6C><;+3yp+4lX@X~4wr1z7 z3jKz8shKqr(JD2~Ooir#a_LxwY$I*hhL((GOp6Z8w0KI_<3)jtX78z#pUWoaW|zHh zAcVAd+)P^`8a~S$vO~S;xV}GR@UIR|(oC2_GvTi8#|6TWkn6|#mCp}0Pz<&t(M z9XmCRRAS+ZGzOiSbg@EQ9~LW=26$M{TC=Y_EDmD0v#YbK*q=q>!-HCu8tLsHh-``M zC|{;C84N3`^Yu}!JeJjICPZz+8Ssitc@>&q*~om_l*xW_d& zuN=2XSUqk4x3+ppGkqZP@&KQJNo`Q)!_VKB71Ft6Qkc@S%2pNL{U$$tYU=0r9L)0c zcB7cJthi*{;H!0Ru`~N^)7E(Ba|@kOC@u4w%7~A#M*h7S4+z{Qf%?wd)X`npjqi)v z{<|`81Py^ZCQ!Toj&+TWA#k4x@IUaq$~LAHlq<>wpBRC! zNK4du_gtre!=p2k4LN zf0jSr`PDi{J_H~D0SG_<0uX=z1Rwwb2tWV=_lSV(yUrS=f=|(xTv@VOe#7^-Z`a}r zi+zp9q{2ONiMR|1KmY;|fB*y_aQ_L=?|37veSYR)lB%>xZR$!Ejy>7Im_$1k)zbZ- z;rylXsbA0JzdDuw<)C;>WoAZC@6&1XAUj0wLi_f|_c~uX_5HfL3(nSAyWqT*OJ$y+ zZFHU%TN1atakk0f8{W8?)G*)9hT`0}wG?KH)S}Wzy%H{kS;NEZ>771#v2bY8eWgwo z2*Ewm?TL4)8I}7UX@7w_m&s^_v_fr?Bd@OSP*urW$Le_Jh4C{ps(A%0pe6Q`|v79bQWy7A1}xX8^eg*g&< zz8IXJ2iGP9_lOW&usgV}Fn)<{an2t(JoEj8c)&e6b*1EOmiff{?i$-*0=_V&gwW&>7-o%4k)1mq$3bNiA(sjXNXvK-*#GS~x zv858(1!5B`i?LBd6~3W}aXq-P99K(IO9_w1wWt(VVe-4FiSxx3VClAPq!Sho%spNp zGO@ZCS*iN`(cOPP4{^m1fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZafqy4J|2LHRC^b@|{|U?Z`^A(NQEH%6M+pxIKmY;|fB*y_009U<00Izz K00iz*fqwuqASq=4 literal 28672 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 V2TM4ii=qL4%JOP*FqscQ{|78INrC_X literal 0 HcmV?d00001 diff --git a/images/icon/default.svg b/images/icon/default.svg deleted file mode 100644 index 7d800b8..0000000 --- a/images/icon/default.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/images/icon/logo_navbar.png b/images/icon/logo_navbar.png deleted file mode 100644 index e8c0e4a6ffb6437fe00975c0624f1826fb40ee57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4915 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 V2TM4ii=qL4%JOP*FqscQ{|78INrC_X literal 0 HcmV?d00001 diff --git a/images/software/HAO123_原始名称.svg b/images/software/HAO123_原始名称.svg deleted file mode 100644 index 471f1d2..0000000 --- a/images/software/HAO123_原始名称.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - 发生错误 - - - - - - -
-
- -
-
- 你所浏览的页面暂时无法访问{"s":"\/assets\/addons\/kmdsoft\/images\/wxdk\/menu\/hao123.svg"}
-
-
- -

- 你可以返回上一页重试

- -
- -
- - diff --git a/images/svg/.svg b/images/svg/.svg deleted file mode 100644 index e69de29..0000000 diff --git a/images/svg/360_原始名称.svg b/images/svg/360_原始名称.svg deleted file mode 100644 index e79f4a4..0000000 --- a/images/svg/360_原始名称.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/images/svg/HAO123_原始名称.svg b/images/svg/HAO123_原始名称.svg deleted file mode 100644 index 770b047..0000000 --- a/images/svg/HAO123_原始名称.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/images/svg/default.svg b/images/svg/default.svg index 7d800b8..ed50d1a 100644 --- a/images/svg/default.svg +++ b/images/svg/default.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/svg/修改-原始名称.svg b/images/svg/修改-原始名称.svg deleted file mode 100644 index e79f4a4..0000000 --- a/images/svg/修改-原始名称.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file