From cd837f0d154e061bc26118f204d5f9a2a417be81 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Wed, 12 Jan 2022 08:36:36 +0800 Subject: (ui): Adjust src/ui/function to src/ui/thread --- src/ui/thread/VersionCheckThread.cpp | 125 +++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 src/ui/thread/VersionCheckThread.cpp (limited to 'src/ui/thread/VersionCheckThread.cpp') diff --git a/src/ui/thread/VersionCheckThread.cpp b/src/ui/thread/VersionCheckThread.cpp new file mode 100644 index 00000000..2a1cf9af --- /dev/null +++ b/src/ui/thread/VersionCheckThread.cpp @@ -0,0 +1,125 @@ +/** + * 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 + +#include "GpgFrontendBuildInfo.h" +#include "json/json.hpp" + +namespace GpgFrontend::UI { + +void VersionCheckThread::run() { + auto current_version = std::string("v") + std::to_string(VERSION_MAJOR) + + "." + std::to_string(VERSION_MINOR) + "." + + std::to_string(VERSION_PATCH); + + SoftwareVersion version; + version.current_version = current_version; + + auto manager = std::make_unique(nullptr); + + try { + using namespace nlohmann; + LOG(INFO) << "current version" << current_version; + + std::string latest_version_url = + "https://api.github.com/repos/saturneric/gpgfrontend/releases/latest"; + std::string current_version_url = + "https://api.github.com/repos/saturneric/gpgfrontend/releases/tags/" + + current_version; + + QNetworkRequest latest_request, current_request; + latest_request.setUrl(QUrl(latest_version_url.c_str())); + current_request.setUrl(QUrl(current_version_url.c_str())); + auto _reply = manager->get(latest_request); + while (_reply->isRunning()) QApplication::processEvents(); + if (_reply->error() != QNetworkReply::NoError) { + LOG(ERROR) << "current version request error"; + version.latest_version = current_version; + } else { + latest_reply_bytes_ = _reply->readAll(); + auto latest_reply_json = + nlohmann::json::parse(latest_reply_bytes_.toStdString()); + + std::string latest_version = latest_reply_json["tag_name"]; + + LOG(INFO) << "latest version from Github" << latest_version; + + QRegularExpression re(R"(^[vV](\d+\.)?(\d+\.)?(\*|\d+))"); + auto version_match = re.match(latest_version.c_str()); + if (version_match.hasMatch()) { + latest_version = version_match.captured(0).toStdString(); + LOG(INFO) << "latest version matched" << latest_version; + } else { + latest_version = current_version; + LOG(WARNING) << "latest version unknown"; + } + + bool prerelease = latest_reply_json["prerelease"], + draft = latest_reply_json["draft"]; + std::string publish_date = latest_reply_json["published_at"]; + std::string release_note = latest_reply_json["body"]; + version.latest_version = latest_version; + version.latest_prerelease = prerelease; + version.latest_draft = draft; + version.publish_date = publish_date; + version.release_note = release_note; + } + + _reply->deleteLater(); + + _reply = manager->get(current_request); + while (_reply->isRunning()) QApplication::processEvents(); + current_reply_bytes_ = _reply->readAll(); + if (_reply->error() != QNetworkReply::NoError) { + LOG(ERROR) << "current version request network error"; + version.current_version_found = false; + } else { + version.current_version_found = true; + auto current_reply_json = + nlohmann::json::parse(current_reply_bytes_.toStdString()); + bool current_prerelease = current_reply_json["prerelease"], + current_draft = current_reply_json["draft"]; + version.latest_prerelease = current_prerelease; + version.latest_draft = current_draft; + } + _reply->deleteLater(); + + // loading done + version.load_info_done = true; + + } catch (...) { + LOG(INFO) << "error occurred"; + version.load_info_done = false; + } + emit upgradeVersion(version); +} + +VersionCheckThread::VersionCheckThread() : QThread(nullptr) { + qRegisterMetaType("SoftwareVersion"); +}; + +} // namespace GpgFrontend::UI -- cgit v1.2.3 From 9064eb6ae14731b698f4304f0e25ef52ba6e931f Mon Sep 17 00:00:00 2001 From: Saturneric Date: Thu, 13 Jan 2022 01:56:12 +0800 Subject: (project, ui, core): Normalize third-party dependencies. 1. All third-party dependencies are in the form of submodules . 2. Compile third-party dependencies together at compile time. 3. Strip 3rd party dependencies from source code. 4. Normalize the reference of the header file of the third-party dependency, and only refer to it once. 5. Remove all find_libraries and use build-time static library files instead. --- src/ui/thread/VersionCheckThread.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/ui/thread/VersionCheckThread.cpp') diff --git a/src/ui/thread/VersionCheckThread.cpp b/src/ui/thread/VersionCheckThread.cpp index 2a1cf9af..8b2487d8 100644 --- a/src/ui/thread/VersionCheckThread.cpp +++ b/src/ui/thread/VersionCheckThread.cpp @@ -25,9 +25,9 @@ #include "VersionCheckThread.h" #include +#include #include "GpgFrontendBuildInfo.h" -#include "json/json.hpp" namespace GpgFrontend::UI { -- cgit v1.2.3 From 036bbfbe8ed09a4f4d09a37a3a002bb8ec0aecf6 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Sun, 23 Jan 2022 04:11:32 +0800 Subject: (src, test): Fix some issues in license statement. --- src/ui/thread/VersionCheckThread.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/ui/thread/VersionCheckThread.cpp') diff --git a/src/ui/thread/VersionCheckThread.cpp b/src/ui/thread/VersionCheckThread.cpp index 8b2487d8..c1d835d0 100644 --- a/src/ui/thread/VersionCheckThread.cpp +++ b/src/ui/thread/VersionCheckThread.cpp @@ -1,4 +1,6 @@ /** + * Copyright (C) 2021 Saturneric + * * This file is part of GpgFrontend. * * GpgFrontend is free software: you can redistribute it and/or modify @@ -6,19 +8,21 @@ * 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, + * GpgFrontend 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 . + * along with GpgFrontend. If not, see . + * + * The initial version of the source code is inherited from + * the gpg4usb project, which is under GPL-3.0-or-later. * - * The initial version of the source code is inherited from gpg4usb-team. - * Their source code version also complies with GNU General Public License. + * All the source code of GpgFrontend was modified and released by + * Saturneric starting on May 12, 2021. * - * The source code version of this software was modified and released - * by Saturneric starting on May 12, 2021. + * SPDX-License-Identifier: GPL-3.0-or-later * */ -- cgit v1.2.3 From 247b5b8f7ffb5cf7df5d4bc0e4fb786152934569 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Sun, 23 Jan 2022 15:36:55 +0800 Subject: (ui): tidy up codes and comments. 1. tidy up thread. --- src/ui/thread/VersionCheckThread.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/ui/thread/VersionCheckThread.cpp') diff --git a/src/ui/thread/VersionCheckThread.cpp b/src/ui/thread/VersionCheckThread.cpp index c1d835d0..6d73417d 100644 --- a/src/ui/thread/VersionCheckThread.cpp +++ b/src/ui/thread/VersionCheckThread.cpp @@ -119,7 +119,7 @@ void VersionCheckThread::run() { LOG(INFO) << "error occurred"; version.load_info_done = false; } - emit upgradeVersion(version); + emit SignalUpgradeVersion(version); } VersionCheckThread::VersionCheckThread() : QThread(nullptr) { -- cgit v1.2.3