From 1e3f1d13a6fb1bfc8f24be83032df1e92350dbcc Mon Sep 17 00:00:00 2001 From: Saturneric Date: Fri, 3 Dec 2021 05:35:16 +0800 Subject: Fixed. 1. Fixed known issue in File Operations. --- src/ui/function/VersionCheckThread.cpp | 77 ++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/ui/function/VersionCheckThread.cpp (limited to 'src/ui/function/VersionCheckThread.cpp') diff --git a/src/ui/function/VersionCheckThread.cpp b/src/ui/function/VersionCheckThread.cpp new file mode 100644 index 00000000..50a4160e --- /dev/null +++ b/src/ui/function/VersionCheckThread.cpp @@ -0,0 +1,77 @@ +/** + * This file is part of GpgFrontend. + * + * GpgFrontend is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Foobar is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar. If not, see . + * + * The initial version of the source code is inherited from gpg4usb-team. + * Their source code version also complies with GNU General Public License. + * + * The source code version of this software was modified and released + * by Saturneric starting on May 12, 2021. + * + */ + +#include "VersionCheckThread.h" + +#include "GpgFrontendBuildInfo.h" +#include "rapidjson/document.h" + +using namespace rapidjson; + +namespace GpgFrontend::UI { + +void VersionCheckThread::run() { + LOG(INFO) << "Start Version Thread to get latest version from Github"; + + auto currentVersion = "v" + QString::number(VERSION_MAJOR) + "." + + QString::number(VERSION_MINOR) + "." + + QString::number(VERSION_PATCH); + + while (mNetworkReply->isRunning()) { + QApplication::processEvents(); + } + + if (mNetworkReply->error() != QNetworkReply::NoError) { + LOG(ERROR) << "VersionCheckThread Found Network Error"; + return; + } + + QByteArray bytes = mNetworkReply->readAll(); + + Document d; + d.Parse(bytes.constData()); + + QString latestVersion = d["tag_name"].GetString(); + + LOG(INFO) << "Latest Version From Github" << latestVersion.toStdString(); + + QRegularExpression re(R"(^[vV](\d+\.)?(\d+\.)?(\*|\d+))"); + QRegularExpressionMatch match = re.match(latestVersion); + if (match.hasMatch()) { + latestVersion = match.captured(0); // matched == "23 def" + LOG(INFO) << "Latest Version Matched" << latestVersion.toStdString(); + } else { + latestVersion = currentVersion; + LOG(WARNING) << "Latest Version Unknown" << latestVersion.toStdString(); + } + + if (latestVersion != currentVersion) { + emit upgradeVersion(currentVersion, latestVersion); + } +} + +VersionCheckThread::VersionCheckThread(QNetworkReply* networkReply) + : mNetworkReply(networkReply) {} + +} // namespace GpgFrontend::UI -- cgit v1.2.3