aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-07-12 18:39:17 +0000
committersaturneric <[email protected]>2024-07-12 18:39:17 +0000
commit96e4c85edc09e106631860f823a42440d013e455 (patch)
treefd69604b607da4f7d9a9d51503ef5fc64ed75f89
parentfeat: initialize and move in two modules (diff)
downloadModules-96e4c85edc09e106631860f823a42440d013e455.tar.gz
Modules-96e4c85edc09e106631860f823a42440d013e455.zip
feat: try using ui and i18n apis from sdk
-rw-r--r--CMakeLists.txt16
-rw-r--r--include/GFModuleCommonUtils.hpp112
-rw-r--r--include/GFModuleExport.h (renamed from src/gpg_info/GFModuleExport.h)2
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/m_gpg_info/CMakeLists.txt (renamed from src/gpg_info/CMakeLists.txt)19
-rw-r--r--src/m_gpg_info/GnuPGInfoGatheringModule.cpp (renamed from src/gpg_info/GnuPGInfoGatheringModule.cpp)0
-rw-r--r--src/m_gpg_info/GnuPGInfoGatheringModule.h (renamed from src/gpg_info/GnuPGInfoGatheringModule.h)0
-rw-r--r--src/m_gpg_info/GpgInfo.cpp (renamed from src/gpg_info/GpgInfo.cpp)0
-rw-r--r--src/m_gpg_info/GpgInfo.h (renamed from src/gpg_info/GpgInfo.h)0
-rw-r--r--src/m_gpg_info/QtLoggerFmt.h (renamed from src/gpg_info/QtLoggerFmt.h)0
-rw-r--r--src/m_ver_check/CMakeLists.txt (renamed from src/ver_check/CMakeLists.txt)40
-rw-r--r--src/m_ver_check/QtLoggerFmt.h (renamed from src/ver_check/QtLoggerFmt.h)0
-rw-r--r--src/m_ver_check/SoftwareVersion.cpp (renamed from src/ver_check/SoftwareVersion.cpp)0
-rw-r--r--src/m_ver_check/SoftwareVersion.h (renamed from src/ver_check/SoftwareVersion.h)0
-rw-r--r--src/m_ver_check/UpdateTab.cpp171
-rw-r--r--src/m_ver_check/UpdateTab.h74
-rw-r--r--src/m_ver_check/VersionCheckTask.cpp (renamed from src/ver_check/VersionCheckTask.cpp)45
-rw-r--r--src/m_ver_check/VersionCheckTask.h (renamed from src/ver_check/VersionCheckTask.h)12
-rw-r--r--src/m_ver_check/VersionCheckingModule.cpp115
-rw-r--r--src/m_ver_check/VersionCheckingModule.h (renamed from src/ver_check/VersionCheckingModule.h)0
-rw-r--r--src/m_ver_check/ts/ModuleVersionChecking.de_DE.ts68
-rw-r--r--src/m_ver_check/ts/ModuleVersionChecking.en_US.ts68
-rw-r--r--src/m_ver_check/ts/ModuleVersionChecking.fr_FR.ts68
-rw-r--r--src/m_ver_check/ts/ModuleVersionChecking.zh_CN.ts68
-rw-r--r--src/ver_check/GFModuleExport.h42
-rw-r--r--src/ver_check/VersionCheckingModule.cpp164
26 files changed, 842 insertions, 246 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e41b045..85ede50 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -74,11 +74,11 @@ link_directories(
if(GPGFRONTEND_QT5_BUILD)
# Introduce Qt
# Support Qt version: 5.15.x
- find_package(Qt5 5.15 COMPONENTS Core Widgets PrintSupport Network LinguistTools REQUIRED)
+ find_package(Qt5 5.15 COMPONENTS Core Widgets Network LinguistTools REQUIRED)
else()
# Introduce Qt
# Support Qt version: 6.x
- find_package(Qt6 6 COMPONENTS Core Widgets PrintSupport Network LinguistTools REQUIRED)
+ find_package(Qt6 6 COMPONENTS Core Widgets Network LinguistTools REQUIRED)
endif()
# Qt configuration
@@ -87,6 +87,18 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC_OPTIONS "--compress;9")
+# rpath config
+if (WIN32)
+ message(STATUS "Configuring for Windows without rpath")
+elseif (APPLE)
+ set(CMAKE_MACOSX_RPATH 1)
+ set(CMAKE_INSTALL_RPATH "@loader_path/../lib")
+else()
+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+ set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
+ set(CMAKE_INSTALL_RPATH "$ORIGIN:$ORIGIN/../lib")
+endif()
+
# third_party
add_subdirectory(third_party)
diff --git a/include/GFModuleCommonUtils.hpp b/include/GFModuleCommonUtils.hpp
new file mode 100644
index 0000000..c318a1c
--- /dev/null
+++ b/include/GFModuleCommonUtils.hpp
@@ -0,0 +1,112 @@
+/**
+ * Copyright (C) 2021 Saturneric <[email protected]>
+ *
+ * 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.
+ *
+ * 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 GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from
+ * the gpg4usb project, which is under GPL-3.0-or-later.
+ *
+ * All the source code of GpgFrontend was modified and released by
+ * Saturneric <[email protected]> starting on May 12, 2021.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+#pragma once
+
+#include <GFSDKUI.h>
+
+#include <QMap>
+#include <QString>
+#include <cstring>
+
+#include "GFSDKBasic.h"
+#include "GFSDKLog.h"
+#include "GFSDKModule.h"
+
+#define DUP(v) GFModuleStrDup(v)
+
+inline void MLogDebug(const QString& s) { GFModuleLogDebug(s.toUtf8()); }
+inline void MLogInfo(const QString& s) { GFModuleLogInfo(s.toUtf8()); }
+inline void MLogWarn(const QString& s) { GFModuleLogWarn(s.toUtf8()); }
+inline void MLogError(const QString& s) { GFModuleLogError(s.toUtf8()); }
+
+#define MLogDebugS(format, ...) \
+ MLogDebug(QString::asprintf(format, __VA_ARGS__))
+#define MLogInfoS(format, ...) MLogInfo(QString::asprintf(format, __VA_ARGS__))
+#define MLogWarnS(format, ...) MLogWarn(QString::asprintf(format, __VA_ARGS__))
+#define MLogErrorS(format, ...) \
+ MLogError(QString::asprintf(format, __VA_ARGS__))
+
+auto QMapToMetaDataArray(const QMap<QString, QString>& map) -> MetaData** {
+ auto** meta_data_array =
+ static_cast<MetaData**>(GFAllocateMemory(sizeof(MetaData*) * map.size()));
+
+ int index = 0;
+ for (auto it = map.begin(); it != map.end(); ++it) {
+ meta_data_array[index] =
+ static_cast<MetaData*>(GFAllocateMemory(sizeof(MetaData)));
+
+ QByteArray const key = it.key().toUtf8();
+ QByteArray const value = it.value().toUtf8();
+
+ meta_data_array[index]->key = GFModuleStrDup(key);
+
+ meta_data_array[index]->value = GFModuleStrDup(value);
+
+ ++index;
+ }
+
+ return meta_data_array;
+}
+
+auto QMapToGFModuleMetaDataList(const QMap<QString, QString>& map)
+ -> GFModuleMetaData* {
+ GFModuleMetaData* head = nullptr;
+ GFModuleMetaData* tail = nullptr;
+
+ for (auto it = map.begin(); it != map.end(); ++it) {
+ auto* new_node = static_cast<GFModuleMetaData*>(
+ GFAllocateMemory(sizeof(GFModuleMetaData)));
+
+ QByteArray const key = it.key().toUtf8();
+ QByteArray const value = it.value().toUtf8();
+
+ new_node->key = new char[key.size() + 1];
+ std::strcpy(const_cast<char*>(new_node->key), key.constData());
+
+ new_node->value = new char[value.size() + 1];
+ std::strcpy(const_cast<char*>(new_node->value), value.constData());
+
+ new_node->next = nullptr;
+
+ if (tail != nullptr) {
+ tail->next = new_node;
+ } else {
+ head = new_node;
+ }
+ tail = new_node;
+ }
+
+ return head;
+}
+
+auto AllocBufferAndCopy(const QByteArray& b) -> char* {
+ auto* p = static_cast<char*>(GFAllocateMemory(sizeof(char) * b.size()));
+ memcpy(p, b.constData(), b.size());
+ return p;
+}
diff --git a/src/gpg_info/GFModuleExport.h b/include/GFModuleExport.h
index a1fc105..2a669cc 100644
--- a/src/gpg_info/GFModuleExport.h
+++ b/include/GFModuleExport.h
@@ -7,7 +7,7 @@
# define GF_MODULE_NO_EXPORT
#else
# ifndef GF_MODULE_EXPORT
-# ifdef mod_gpg_info_EXPORTS
+# ifdef GF_MODULE_EXPORTS
/* We are building this library */
# define GF_MODULE_EXPORT __attribute__((visibility("default")))
# else
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index aca2f2e..be2d07d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -24,5 +24,5 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# modules
-add_subdirectory(ver_check)
-add_subdirectory(gpg_info) \ No newline at end of file
+add_subdirectory(m_ver_check)
+add_subdirectory(m_gpg_info) \ No newline at end of file
diff --git a/src/gpg_info/CMakeLists.txt b/src/m_gpg_info/CMakeLists.txt
index 63127f5..1d96a5a 100644
--- a/src/gpg_info/CMakeLists.txt
+++ b/src/m_gpg_info/CMakeLists.txt
@@ -29,22 +29,13 @@ aux_source_directory(. INTEGRATED_MODULE_SOURCE)
# define libgpgfrontend_module
add_library(mod_gpg_info SHARED ${INTEGRATED_MODULE_SOURCE})
-set(_export_file "${CMAKE_CURRENT_SOURCE_DIR}/GFModuleExport.h")
-generate_export_header(mod_gpg_info
- BASE_NAME "GF_MODULE"
- EXPORT_FILE_NAME "${_export_file}")
target_include_directories(mod_gpg_info PRIVATE
${CMAKE_SOURCE_DIR}/third_party/spdlog/include)
-# set output directory
-set_target_properties(mod_gpg_info PROPERTIES
- LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
- RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
-
# install dir
install(TARGETS mod_gpg_info
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/modules")
# link sdk
target_link_libraries(mod_gpg_info PRIVATE
@@ -58,8 +49,8 @@ else()
target_link_libraries(mod_gpg_info PRIVATE Qt6::Core)
endif()
-# property
-set_property(TARGET mod_gpg_info PROPERTY AUTOMOC ON)
-
# using std c++ 17
-target_compile_features(mod_gpg_info PRIVATE cxx_std_17) \ No newline at end of file
+target_compile_features(mod_gpg_info PRIVATE cxx_std_17)
+
+# ui
+set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_AUTOUIC_SEARCH_PATHS} ${CMAKE_CURRENT_SOURCE_DIR}/ui) \ No newline at end of file
diff --git a/src/gpg_info/GnuPGInfoGatheringModule.cpp b/src/m_gpg_info/GnuPGInfoGatheringModule.cpp
index 8d400c8..8d400c8 100644
--- a/src/gpg_info/GnuPGInfoGatheringModule.cpp
+++ b/src/m_gpg_info/GnuPGInfoGatheringModule.cpp
diff --git a/src/gpg_info/GnuPGInfoGatheringModule.h b/src/m_gpg_info/GnuPGInfoGatheringModule.h
index 35ee4ac..35ee4ac 100644
--- a/src/gpg_info/GnuPGInfoGatheringModule.h
+++ b/src/m_gpg_info/GnuPGInfoGatheringModule.h
diff --git a/src/gpg_info/GpgInfo.cpp b/src/m_gpg_info/GpgInfo.cpp
index 680f4a8..680f4a8 100644
--- a/src/gpg_info/GpgInfo.cpp
+++ b/src/m_gpg_info/GpgInfo.cpp
diff --git a/src/gpg_info/GpgInfo.h b/src/m_gpg_info/GpgInfo.h
index 1aacc20..1aacc20 100644
--- a/src/gpg_info/GpgInfo.h
+++ b/src/m_gpg_info/GpgInfo.h
diff --git a/src/gpg_info/QtLoggerFmt.h b/src/m_gpg_info/QtLoggerFmt.h
index 2399746..2399746 100644
--- a/src/gpg_info/QtLoggerFmt.h
+++ b/src/m_gpg_info/QtLoggerFmt.h
diff --git a/src/ver_check/CMakeLists.txt b/src/m_ver_check/CMakeLists.txt
index 30a6faf..58edcd7 100644
--- a/src/ver_check/CMakeLists.txt
+++ b/src/m_ver_check/CMakeLists.txt
@@ -25,25 +25,17 @@
# com.bktus.gpgfrontend.module.integrated.version_checking
-aux_source_directory(. INTEGRATED_MODULE_SOURCE)
+aux_source_directory(. MODULE_SOURCE_FILES)
# define libgpgfrontend_module
-add_library(mod_ver_check SHARED ${INTEGRATED_MODULE_SOURCE})
-set(_export_file "${CMAKE_CURRENT_SOURCE_DIR}/GFModuleExport.h")
-generate_export_header(mod_ver_check
- BASE_NAME "GF_MODULE"
- EXPORT_FILE_NAME "${_export_file}")
+add_library(mod_ver_check SHARED ${MODULE_SOURCE_FILES})
target_include_directories(mod_ver_check PRIVATE
${CMAKE_SOURCE_DIR}/third_party/spdlog/include)
-# set output directory
-set_target_properties(mod_ver_check PROPERTIES
- LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
- RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
-
+# install dir
install(TARGETS mod_ver_check
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/modules")
# link sdk
target_link_libraries(mod_ver_check PRIVATE
@@ -51,14 +43,26 @@ target_link_libraries(mod_ver_check PRIVATE
if(GPGFRONTEND_QT5_BUILD)
# link Qt
- target_link_libraries(mod_ver_check PUBLIC Qt5::Core Qt5::Network)
+ target_link_libraries(mod_ver_check PUBLIC Qt5::Core Qt5::Network Qt5::Widgets)
else()
# link Qt
- target_link_libraries(mod_ver_check PUBLIC Qt6::Core Qt6::Network)
+ target_link_libraries(mod_ver_check PUBLIC Qt6::Core Qt6::Network Qt6::Widgets)
endif()
-# property
-set_property(TARGET mod_ver_check PROPERTY AUTOMOC ON)
-
# using std c++ 17
-target_compile_features(mod_ver_check PRIVATE cxx_std_17) \ No newline at end of file
+target_compile_features(mod_ver_check PRIVATE cxx_std_17)
+
+# ui
+set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_AUTOUIC_SEARCH_PATHS} ${CMAKE_CURRENT_SOURCE_DIR}/ui)
+
+# i18n
+set(LOCALE_TS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/ts)
+set(TS_FILES "${LOCALE_TS_PATH}/ModuleVersionChecking.en_US.ts"
+ "${LOCALE_TS_PATH}/ModuleVersionChecking.de_DE.ts"
+ "${LOCALE_TS_PATH}/ModuleVersionChecking.fr_FR.ts"
+ "${LOCALE_TS_PATH}/ModuleVersionChecking.zh_CN.ts")
+qt_add_translations(mod_ver_check
+ RESOURCE_PREFIX "/i18n"
+ TS_FILES ${TS_FILES}
+ SOURCES ${MODULE_SOURCE_FILES}
+ INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}) \ No newline at end of file
diff --git a/src/ver_check/QtLoggerFmt.h b/src/m_ver_check/QtLoggerFmt.h
index 2399746..2399746 100644
--- a/src/ver_check/QtLoggerFmt.h
+++ b/src/m_ver_check/QtLoggerFmt.h
diff --git a/src/ver_check/SoftwareVersion.cpp b/src/m_ver_check/SoftwareVersion.cpp
index cd86419..cd86419 100644
--- a/src/ver_check/SoftwareVersion.cpp
+++ b/src/m_ver_check/SoftwareVersion.cpp
diff --git a/src/ver_check/SoftwareVersion.h b/src/m_ver_check/SoftwareVersion.h
index 6b05d41..6b05d41 100644
--- a/src/ver_check/SoftwareVersion.h
+++ b/src/m_ver_check/SoftwareVersion.h
diff --git a/src/m_ver_check/UpdateTab.cpp b/src/m_ver_check/UpdateTab.cpp
new file mode 100644
index 0000000..ea38780
--- /dev/null
+++ b/src/m_ver_check/UpdateTab.cpp
@@ -0,0 +1,171 @@
+/**
+ * Copyright (C) 2021 Saturneric <[email protected]>
+ *
+ * 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.
+ *
+ * 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 GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from
+ * the gpg4usb project, which is under GPL-3.0-or-later.
+ *
+ * All the source code of GpgFrontend was modified and released by
+ * Saturneric <[email protected]> starting on May 12, 2021.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+#include "UpdateTab.h"
+
+#include "GFSDKBasic.h"
+#include "GFSDKLog.h"
+#include "GFSDKModule.h"
+#include "VersionCheckTask.h"
+#include "VersionCheckingModule.h"
+
+UpdateTab::UpdateTab(QWidget* parent) : QWidget(parent) {
+ auto* layout = new QGridLayout();
+
+ current_version_ = GFProjectVersion();
+
+ auto* tips_label = new QLabel();
+ tips_label->setText(
+ "<center>" +
+ tr("It is recommended that you always check the version "
+ "of GpgFrontend and upgrade to the latest version.") +
+ "</center><center>" +
+ tr("New versions not only represent new features, but "
+ "also often represent functional and security fixes.") +
+ "</center>");
+ tips_label->setWordWrap(true);
+
+ current_version_label_ = new QLabel();
+ current_version_label_->setText("<center>" + tr("Current Version") +
+ tr(": ") + "<b>" + current_version_ +
+ "</b></center>");
+ current_version_label_->setWordWrap(true);
+
+ latest_version_label_ = new QLabel();
+ latest_version_label_->setWordWrap(true);
+
+ upgrade_label_ = new QLabel();
+ upgrade_label_->setWordWrap(true);
+ upgrade_label_->setOpenExternalLinks(true);
+ upgrade_label_->setHidden(true);
+
+ pb_ = new QProgressBar();
+ pb_->setRange(0, 0);
+ pb_->setTextVisible(false);
+
+ layout->addWidget(tips_label, 1, 0, 1, -1);
+ layout->addWidget(current_version_label_, 2, 0, 1, -1);
+ layout->addWidget(latest_version_label_, 3, 0, 1, -1);
+ layout->addWidget(upgrade_label_, 4, 0, 1, -1);
+ layout->addWidget(pb_, 5, 0, 1, -1);
+ layout->addItem(
+ new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::Fixed), 2, 1,
+ 1, 1);
+
+ setLayout(layout);
+}
+
+void UpdateTab::showEvent(QShowEvent* event) {
+ QWidget::showEvent(event);
+ GFModuleLogDebug("loading version loading info from rt");
+
+ auto is_loading_done = GFModuleRetrieveRTValueOrDefaultBool(
+ GFGetModuleID(), GFModuleStrDup("version.loading_done"), 0);
+
+ if (is_loading_done == 0) {
+ auto* task = new VersionCheckTask();
+ QObject::connect(
+ task, &VersionCheckTask::SignalUpgradeVersion, QThread::currentThread(),
+ [this](const SoftwareVersion&) { slot_show_version_status(); });
+ QObject::connect(task, &VersionCheckTask::SignalUpgradeVersion, task,
+ &QObject::deleteLater);
+ task->Run();
+
+ } else {
+ slot_show_version_status();
+ }
+}
+
+void UpdateTab::slot_show_version_status() {
+ GFModuleLogDebug("loading version info from rt");
+ this->pb_->setHidden(true);
+
+ auto is_loading_done = GFModuleRetrieveRTValueOrDefaultBool(
+ GFGetModuleID(), GFModuleStrDup("version.loading_done"), 0);
+
+ if (is_loading_done == 0) {
+ GFModuleLogDebug("version info loading haven't been done yet.");
+ return;
+ }
+
+ auto is_need_upgrade = GFModuleRetrieveRTValueOrDefaultBool(
+ GFGetModuleID(), GFModuleStrDup("version.need_upgrade"), 0);
+
+ auto is_current_a_withdrawn_version = GFModuleRetrieveRTValueOrDefaultBool(
+ GFGetModuleID(), GFModuleStrDup("version.current_a_withdrawn_version"),
+ 0);
+
+ auto is_current_version_released = GFModuleRetrieveRTValueOrDefaultBool(
+ GFGetModuleID(), GFModuleStrDup("version.current_version_released"), 0);
+
+ QString const latest_version = GFModuleRetrieveRTValueOrDefault(
+ GFGetModuleID(), GFModuleStrDup("version.latest_version"),
+ GFModuleStrDup(""));
+
+ latest_version_label_->setText("<center><b>" +
+ tr("Latest Version From Github") + ": " +
+ latest_version + "</b></center>");
+
+ if (is_need_upgrade != 0) {
+ upgrade_label_->setText(
+ "<center>" +
+ tr("The current version is less than the latest version on "
+ "github.") +
+ "</center><center>" + tr("Please click") +
+ " <a "
+ "href=\"https://www.gpgfrontend.bktus.com/#/downloads\">" +
+ tr("Here") + "</a> " + tr("to download the latest stable version.") +
+ "</center>");
+ upgrade_label_->show();
+ } else if (is_current_a_withdrawn_version != 0) {
+ upgrade_label_->setText(
+ "<center>" +
+ tr("This version has serious problems and has been withdrawn. "
+ "Please stop using it immediately.") +
+ "</center><center>" + tr("Please click") +
+ " <a "
+ "href=\"https://github.com/saturneric/GpgFrontend/releases\">" +
+ tr("Here") + "</a> " + tr("to download the latest stable version.") +
+ "</center>");
+ upgrade_label_->show();
+ } else if (is_current_version_released == 0) {
+ upgrade_label_->setText(
+ "<center>" +
+ tr("This version has not been released yet, it may be a beta "
+ "version. If you are not a tester and care about version "
+ "stability, please do not use this version.") +
+ "</center><center>" + tr("Please click") +
+ " <a "
+ "href=\"https://www.gpgfrontend.bktus.com/#/downloads\">" +
+ tr("Here") + "</a> " + tr("to download the latest stable version.") +
+ "</center>");
+ upgrade_label_->show();
+ }
+}
+
+auto UpdateTabFactory(const char* id) -> void* { return new UpdateTab(); } \ No newline at end of file
diff --git a/src/m_ver_check/UpdateTab.h b/src/m_ver_check/UpdateTab.h
new file mode 100644
index 0000000..fd48f05
--- /dev/null
+++ b/src/m_ver_check/UpdateTab.h
@@ -0,0 +1,74 @@
+/**
+ * Copyright (C) 2021 Saturneric <[email protected]>
+ *
+ * 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.
+ *
+ * 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 GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from
+ * the gpg4usb project, which is under GPL-3.0-or-later.
+ *
+ * All the source code of GpgFrontend was modified and released by
+ * Saturneric <[email protected]> starting on May 12, 2021.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+#pragma once
+
+#include <QtWidgets/QtWidgets>
+
+/**
+ * @brief Class containing the main tab of about dialog
+ *
+ */
+class UpdateTab : public QWidget {
+ Q_OBJECT
+
+ QLabel* current_version_label_; ///<
+ QLabel* latest_version_label_; ///<
+ QLabel* upgrade_label_; ///<
+ QProgressBar* pb_; ///<
+ QString current_version_; ///<
+
+ public:
+ /**
+ * @brief Construct a new Update Tab object
+ *
+ * @param parent
+ */
+ explicit UpdateTab(QWidget* parent = nullptr);
+
+ protected:
+ void showEvent(QShowEvent* event) override;
+
+ private slots:
+ /**
+ * @brief
+ *
+ * @param version
+ */
+ void slot_show_version_status();
+
+ signals:
+ /**
+ * @brief
+ *
+ * @param data
+ */
+ void SignalReplyFromUpdateServer(QByteArray data);
+};
+
+auto UpdateTabFactory(const char* id) -> void*; \ No newline at end of file
diff --git a/src/ver_check/VersionCheckTask.cpp b/src/m_ver_check/VersionCheckTask.cpp
index a0a3dfe..3455ddc 100644
--- a/src/ver_check/VersionCheckTask.cpp
+++ b/src/m_ver_check/VersionCheckTask.cpp
@@ -39,6 +39,8 @@
#include <spdlog/spdlog.h>
#include "LogFormatter.h"
+#include "SoftwareVersion.h"
+#include "VersionCheckingModule.h"
VersionCheckTask::VersionCheckTask()
: network_manager_(new QNetworkAccessManager(this)),
@@ -172,5 +174,48 @@ void VersionCheckTask::slot_parse_current_version_info() {
.c_str());
if (current_reply_ != nullptr) current_reply_->deleteLater();
+
+ slot_fill_grt_with_version_info(version_);
emit SignalUpgradeVersion(version_);
}
+
+void VersionCheckTask::slot_fill_grt_with_version_info(
+ const SoftwareVersion &version) {
+ GFModuleLogDebug("filling software information info in rt...");
+
+ GFModuleUpsertRTValue(GFGetModuleID(),
+ GFModuleStrDup("version.current_version"),
+ GFModuleStrDup(version.current_version.toUtf8()));
+ GFModuleUpsertRTValue(GFGetModuleID(),
+ GFModuleStrDup("version.latest_version"),
+ GFModuleStrDup(version.latest_version.toUtf8()));
+ GFModuleUpsertRTValueBool(
+ GFGetModuleID(), GFModuleStrDup("version.current_version_is_drafted"),
+ version.current_version_is_drafted ? 1 : 0);
+ GFModuleUpsertRTValueBool(
+ GFGetModuleID(),
+ GFModuleStrDup("version.current_version_is_a_prerelease"),
+ version.current_version_is_a_prerelease ? 1 : 0);
+ GFModuleUpsertRTValueBool(
+ GFGetModuleID(),
+ GFModuleStrDup("version.current_version_publish_in_remote"),
+ version.current_version_publish_in_remote ? 1 : 0);
+ GFModuleUpsertRTValueBool(
+ GFGetModuleID(),
+ GFModuleStrDup("version.latest_prerelease_version_from_remote"),
+ version.latest_prerelease_version_from_remote ? 1 : 0);
+ GFModuleUpsertRTValueBool(GFGetModuleID(),
+ GFModuleStrDup("version.need_upgrade"),
+ version.NeedUpgrade() ? 1 : 0);
+ GFModuleUpsertRTValueBool(GFGetModuleID(),
+ GFModuleStrDup("version.current_version_released"),
+ version.CurrentVersionReleased() ? 1 : 0);
+ GFModuleUpsertRTValueBool(
+ GFGetModuleID(), GFModuleStrDup("version.current_a_withdrawn_version"),
+ version.VersionWithdrawn() ? 1 : 0);
+ GFModuleUpsertRTValueBool(GFGetModuleID(),
+ GFModuleStrDup("version.loading_done"),
+ version.loading_done ? 1 : 0);
+
+ GFModuleLogDebug("software information filled in rt");
+}
diff --git a/src/ver_check/VersionCheckTask.h b/src/m_ver_check/VersionCheckTask.h
index 2d42b36..b915be6 100644
--- a/src/ver_check/VersionCheckTask.h
+++ b/src/m_ver_check/VersionCheckTask.h
@@ -78,12 +78,18 @@ class VersionCheckTask : public QObject {
*/
void slot_parse_current_version_info();
+ /**
+ * @brief
+ *
+ */
+ void slot_fill_grt_with_version_info(const SoftwareVersion&);
+
private:
QByteArray latest_reply_bytes_; ///<
QByteArray current_reply_bytes_; ///<
- QNetworkReply *latest_reply_ = nullptr; ///< latest version info reply
- QNetworkReply *current_reply_ = nullptr; ///< current version info reply
- QNetworkAccessManager *network_manager_; ///<
+ QNetworkReply* latest_reply_ = nullptr; ///< latest version info reply
+ QNetworkReply* current_reply_ = nullptr; ///< current version info reply
+ QNetworkAccessManager* network_manager_; ///<
QString current_version_;
SoftwareVersion version_;
};
diff --git a/src/m_ver_check/VersionCheckingModule.cpp b/src/m_ver_check/VersionCheckingModule.cpp
new file mode 100644
index 0000000..0b57a25
--- /dev/null
+++ b/src/m_ver_check/VersionCheckingModule.cpp
@@ -0,0 +1,115 @@
+/**
+ * Copyright (C) 2021 Saturneric <[email protected]>
+ *
+ * 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.
+ *
+ * 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 GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from
+ * the gpg4usb project, which is under GPL-3.0-or-later.
+ *
+ * All the source code of GpgFrontend was modified and released by
+ * Saturneric <[email protected]> starting on May 12, 2021.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+#include "VersionCheckingModule.h"
+
+#include <GFSDKBasic.h>
+#include <GFSDKBuildInfo.h>
+#include <GFSDKExtra.h>
+#include <GFSDKLog.h>
+#include <GFSDKUI.h>
+#include <spdlog/spdlog.h>
+
+#include <QMetaType>
+#include <QtNetwork>
+
+#include "GFModuleCommonUtils.hpp"
+#include "SoftwareVersion.h"
+#include "UpdateTab.h"
+#include "VersionCheckTask.h"
+
+auto GFGetModuleGFSDKVersion() -> const char* {
+ return DUP(GF_SDK_VERSION_STR);
+}
+
+auto GFGetModuleQtEnvVersion() -> const char* { return DUP(QT_VERSION_STR); }
+
+auto GFGetModuleID() -> const char* {
+ return DUP("com.bktus.gpgfrontend.module.version_checking");
+}
+
+auto GFGetModuleVersion() -> const char* { return DUP("1.0.0"); }
+
+auto GFGetModuleMetaData() -> GFModuleMetaData* {
+ return QMapToGFModuleMetaDataList(
+ {{"Name", "VersionChecking"},
+ {"Description", "Try checking GpgFrontend version."},
+ {"Author", "Saturneric"}});
+}
+
+auto GFRegisterModule() -> int {
+ MLogInfo("version checking module registering");
+ return 0;
+}
+
+auto GFActiveModule() -> int {
+ MLogInfo("version checking module activating");
+
+ GFModuleListenEvent(GFGetModuleID(), DUP("APPLICATION_LOADED"));
+ GFModuleListenEvent(GFGetModuleID(), DUP("CHECK_APPLICATION_VERSION"));
+
+ GFUIMountEntry(DUP("AboutDialogTabs"),
+ QMapToMetaDataArray({{"TabTitle", "Update"}}), 1,
+ UpdateTabFactory);
+
+ // load translations
+ QFile f(
+ QString(":/i18n/ModuleVersionChecking.%1.qm").arg(GFAppActiveLocale()));
+ if (f.exists() && f.open(QIODevice::ReadOnly)) {
+ auto f_n = f.fileName().toUtf8();
+ MLogInfoS("version checking module loading, locale: %s, path: %s",
+ GFAppActiveLocale(), f_n.data());
+ auto b = f.readAll();
+ GFAppRegisterTranslator(AllocBufferAndCopy(b), b.size());
+ }
+ return 0;
+}
+
+auto GFExecuteModule(GFModuleEvent* event) -> int {
+ MLogInfoS("version checking module executing, event id: %s", event->id);
+
+ auto* task = new VersionCheckTask();
+ QObject::connect(task, &VersionCheckTask::SignalUpgradeVersion,
+ QThread::currentThread(), [event](const SoftwareVersion&) {
+ char** event_argv = static_cast<char**>(
+ GFAllocateMemory(sizeof(char**) * 1));
+ event_argv[0] = DUP("0");
+
+ GFModuleTriggerModuleEventCallback(event, GFGetModuleID(),
+ 1, event_argv);
+ });
+ QObject::connect(task, &VersionCheckTask::SignalUpgradeVersion, task,
+ &QObject::deleteLater);
+ task->Run();
+
+ return 0;
+}
+
+auto GFDeactiveModule() -> int { return 0; }
+
+auto GFUnregisterModule() -> int { return 0; } \ No newline at end of file
diff --git a/src/ver_check/VersionCheckingModule.h b/src/m_ver_check/VersionCheckingModule.h
index 35ee4ac..35ee4ac 100644
--- a/src/ver_check/VersionCheckingModule.h
+++ b/src/m_ver_check/VersionCheckingModule.h
diff --git a/src/m_ver_check/ts/ModuleVersionChecking.de_DE.ts b/src/m_ver_check/ts/ModuleVersionChecking.de_DE.ts
new file mode 100644
index 0000000..ad113a5
--- /dev/null
+++ b/src/m_ver_check/ts/ModuleVersionChecking.de_DE.ts
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE">
+<context>
+ <name>UpdateTab</name>
+ <message>
+ <location filename="../UpdateTab.cpp" line="45"/>
+ <source>It is recommended that you always check the version of GpgFrontend and upgrade to the latest version.</source>
+ <translation type="unfinished">Es wird empfohlen, immer die Version von GpgFrontend zu überprüfen und auf die neueste Version zu aktualisieren.</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="48"/>
+ <source>New versions not only represent new features, but also often represent functional and security fixes.</source>
+ <translation type="unfinished">Neue Versionen beinhalten nicht nur neue Funktionen, sondern stellen oft auch Funktions- und Sicherheitskorrekturen dar.</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="54"/>
+ <source>Current Version</source>
+ <translation type="unfinished">Aktuelle Version</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="55"/>
+ <source>: </source>
+ <translation type="unfinished">: </translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="131"/>
+ <source>Latest Version From Github</source>
+ <translation type="unfinished">Neueste Version von Github</translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="137"/>
+ <source>The current version is less than the latest version on github.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="139"/>
+ <location filename="../UpdateTab.cpp" line="150"/>
+ <location filename="../UpdateTab.cpp" line="162"/>
+ <source>Please click</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="142"/>
+ <location filename="../UpdateTab.cpp" line="153"/>
+ <location filename="../UpdateTab.cpp" line="165"/>
+ <source>Here</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="142"/>
+ <location filename="../UpdateTab.cpp" line="153"/>
+ <location filename="../UpdateTab.cpp" line="165"/>
+ <source>to download the latest stable version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="148"/>
+ <source>This version has serious problems and has been withdrawn. Please stop using it immediately.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="159"/>
+ <source>This version has not been released yet, it may be a beta version. If you are not a tester and care about version stability, please do not use this version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/m_ver_check/ts/ModuleVersionChecking.en_US.ts b/src/m_ver_check/ts/ModuleVersionChecking.en_US.ts
new file mode 100644
index 0000000..6e4afc5
--- /dev/null
+++ b/src/m_ver_check/ts/ModuleVersionChecking.en_US.ts
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>UpdateTab</name>
+ <message>
+ <location filename="../UpdateTab.cpp" line="45"/>
+ <source>It is recommended that you always check the version of GpgFrontend and upgrade to the latest version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="48"/>
+ <source>New versions not only represent new features, but also often represent functional and security fixes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="54"/>
+ <source>Current Version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="55"/>
+ <source>: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="131"/>
+ <source>Latest Version From Github</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="137"/>
+ <source>The current version is less than the latest version on github.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="139"/>
+ <location filename="../UpdateTab.cpp" line="150"/>
+ <location filename="../UpdateTab.cpp" line="162"/>
+ <source>Please click</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="142"/>
+ <location filename="../UpdateTab.cpp" line="153"/>
+ <location filename="../UpdateTab.cpp" line="165"/>
+ <source>Here</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="142"/>
+ <location filename="../UpdateTab.cpp" line="153"/>
+ <location filename="../UpdateTab.cpp" line="165"/>
+ <source>to download the latest stable version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="148"/>
+ <source>This version has serious problems and has been withdrawn. Please stop using it immediately.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="159"/>
+ <source>This version has not been released yet, it may be a beta version. If you are not a tester and care about version stability, please do not use this version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/m_ver_check/ts/ModuleVersionChecking.fr_FR.ts b/src/m_ver_check/ts/ModuleVersionChecking.fr_FR.ts
new file mode 100644
index 0000000..6e4afc5
--- /dev/null
+++ b/src/m_ver_check/ts/ModuleVersionChecking.fr_FR.ts
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>UpdateTab</name>
+ <message>
+ <location filename="../UpdateTab.cpp" line="45"/>
+ <source>It is recommended that you always check the version of GpgFrontend and upgrade to the latest version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="48"/>
+ <source>New versions not only represent new features, but also often represent functional and security fixes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="54"/>
+ <source>Current Version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="55"/>
+ <source>: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="131"/>
+ <source>Latest Version From Github</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="137"/>
+ <source>The current version is less than the latest version on github.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="139"/>
+ <location filename="../UpdateTab.cpp" line="150"/>
+ <location filename="../UpdateTab.cpp" line="162"/>
+ <source>Please click</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="142"/>
+ <location filename="../UpdateTab.cpp" line="153"/>
+ <location filename="../UpdateTab.cpp" line="165"/>
+ <source>Here</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="142"/>
+ <location filename="../UpdateTab.cpp" line="153"/>
+ <location filename="../UpdateTab.cpp" line="165"/>
+ <source>to download the latest stable version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="148"/>
+ <source>This version has serious problems and has been withdrawn. Please stop using it immediately.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="159"/>
+ <source>This version has not been released yet, it may be a beta version. If you are not a tester and care about version stability, please do not use this version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/m_ver_check/ts/ModuleVersionChecking.zh_CN.ts b/src/m_ver_check/ts/ModuleVersionChecking.zh_CN.ts
new file mode 100644
index 0000000..6e4afc5
--- /dev/null
+++ b/src/m_ver_check/ts/ModuleVersionChecking.zh_CN.ts
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>UpdateTab</name>
+ <message>
+ <location filename="../UpdateTab.cpp" line="45"/>
+ <source>It is recommended that you always check the version of GpgFrontend and upgrade to the latest version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="48"/>
+ <source>New versions not only represent new features, but also often represent functional and security fixes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="54"/>
+ <source>Current Version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="55"/>
+ <source>: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="131"/>
+ <source>Latest Version From Github</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="137"/>
+ <source>The current version is less than the latest version on github.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="139"/>
+ <location filename="../UpdateTab.cpp" line="150"/>
+ <location filename="../UpdateTab.cpp" line="162"/>
+ <source>Please click</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="142"/>
+ <location filename="../UpdateTab.cpp" line="153"/>
+ <location filename="../UpdateTab.cpp" line="165"/>
+ <source>Here</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="142"/>
+ <location filename="../UpdateTab.cpp" line="153"/>
+ <location filename="../UpdateTab.cpp" line="165"/>
+ <source>to download the latest stable version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="148"/>
+ <source>This version has serious problems and has been withdrawn. Please stop using it immediately.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../UpdateTab.cpp" line="159"/>
+ <source>This version has not been released yet, it may be a beta version. If you are not a tester and care about version stability, please do not use this version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/ver_check/GFModuleExport.h b/src/ver_check/GFModuleExport.h
deleted file mode 100644
index ce663b5..0000000
--- a/src/ver_check/GFModuleExport.h
+++ /dev/null
@@ -1,42 +0,0 @@
-
-#ifndef GF_MODULE_EXPORT_H
-#define GF_MODULE_EXPORT_H
-
-#ifdef GF_MODULE_STATIC_DEFINE
-# define GF_MODULE_EXPORT
-# define GF_MODULE_NO_EXPORT
-#else
-# ifndef GF_MODULE_EXPORT
-# ifdef mod_ver_check_EXPORTS
- /* We are building this library */
-# define GF_MODULE_EXPORT __attribute__((visibility("default")))
-# else
- /* We are using this library */
-# define GF_MODULE_EXPORT __attribute__((visibility("default")))
-# endif
-# endif
-
-# ifndef GF_MODULE_NO_EXPORT
-# define GF_MODULE_NO_EXPORT __attribute__((visibility("hidden")))
-# endif
-#endif
-
-#ifndef GF_MODULE_DEPRECATED
-# define GF_MODULE_DEPRECATED __attribute__ ((__deprecated__))
-#endif
-
-#ifndef GF_MODULE_DEPRECATED_EXPORT
-# define GF_MODULE_DEPRECATED_EXPORT GF_MODULE_EXPORT GF_MODULE_DEPRECATED
-#endif
-
-#ifndef GF_MODULE_DEPRECATED_NO_EXPORT
-# define GF_MODULE_DEPRECATED_NO_EXPORT GF_MODULE_NO_EXPORT GF_MODULE_DEPRECATED
-#endif
-
-#if 0 /* DEFINE_NO_DEPRECATED */
-# ifndef GF_MODULE_NO_DEPRECATED
-# define GF_MODULE_NO_DEPRECATED
-# endif
-#endif
-
-#endif /* GF_MODULE_EXPORT_H */
diff --git a/src/ver_check/VersionCheckingModule.cpp b/src/ver_check/VersionCheckingModule.cpp
deleted file mode 100644
index 35d3b82..0000000
--- a/src/ver_check/VersionCheckingModule.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric <[email protected]>
- *
- * 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.
- *
- * 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 GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric <[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#include "VersionCheckingModule.h"
-
-#include <GFSDKBasic.h>
-#include <GFSDKBuildInfo.h>
-#include <GFSDKExtra.h>
-#include <GFSDKLog.h>
-#include <spdlog/spdlog.h>
-
-#include <QMetaType>
-#include <QtNetwork>
-
-#include "SoftwareVersion.h"
-#include "VersionCheckTask.h"
-
-extern void VersionCheckDone(const SoftwareVersion& version);
-
-auto GFGetModuleGFSDKVersion() -> const char* {
- return GFModuleStrDup(GF_SDK_VERSION_STR);
-}
-
-auto GFGetModuleQtEnvVersion() -> const char* {
- return GFModuleStrDup(QT_VERSION_STR);
-}
-
-auto GFGetModuleID() -> const char* {
- return GFModuleStrDup("com.bktus.gpgfrontend.module.version_checking");
-}
-
-auto GFGetModuleVersion() -> const char* { return GFModuleStrDup("1.0.0"); }
-
-auto GFGetModuleMetaData() -> GFModuleMetaData* {
- auto* p_meta = static_cast<GFModuleMetaData*>(
- GFAllocateMemory(sizeof(GFModuleMetaData)));
- auto* h_meta = p_meta;
-
- p_meta->key = "Name";
- p_meta->value = "VersionChecking";
- p_meta->next = static_cast<GFModuleMetaData*>(
- GFAllocateMemory(sizeof(GFModuleMetaData)));
- p_meta = p_meta->next;
-
- p_meta->key = "Description";
- p_meta->value = "Try checking gpgfrontend version";
- p_meta->next = static_cast<GFModuleMetaData*>(
- GFAllocateMemory(sizeof(GFModuleMetaData)));
- p_meta = p_meta->next;
-
- p_meta->key = "Author";
- p_meta->value = "Saturneric";
- p_meta->next = nullptr;
-
- return h_meta;
-}
-
-auto GFRegisterModule() -> int {
- GFModuleLogInfo("version checking module registering");
- return 0;
-}
-
-auto GFActiveModule() -> int {
- GFModuleLogInfo("version checking module activating");
-
- GFModuleListenEvent(GFGetModuleID(), GFModuleStrDup("APPLICATION_LOADED"));
- GFModuleListenEvent(GFGetModuleID(),
- GFModuleStrDup("CHECK_APPLICATION_VERSION"));
- return 0;
-}
-
-auto GFExecuteModule(GFModuleEvent* event) -> int {
- GFModuleLogInfo(
- fmt::format("version checking module executing, event id: {}", event->id)
- .c_str());
-
- auto* task = new VersionCheckTask();
- QObject::connect(
- task, &VersionCheckTask::SignalUpgradeVersion, QThread::currentThread(),
- [event](const SoftwareVersion& version) {
- VersionCheckDone(version);
-
- char** event_argv =
- static_cast<char**>(GFAllocateMemory(sizeof(char**) * 1));
- event_argv[0] = GFModuleStrDup("0");
-
- GFModuleTriggerModuleEventCallback(event, GFGetModuleID(), 1,
- event_argv);
- });
- QObject::connect(task, &VersionCheckTask::SignalUpgradeVersion, task,
- &QObject::deleteLater);
- task->Run();
-
- return 0;
-}
-
-auto GFDeactiveModule() -> int { return 0; }
-
-auto GFUnregisterModule() -> int { return 0; }
-
-void VersionCheckDone(const SoftwareVersion& version) {
- GFModuleLogDebug("filling software information info in rt...");
-
- GFModuleUpsertRTValue(GFGetModuleID(),
- GFModuleStrDup("version.current_version"),
- GFModuleStrDup(version.current_version.toUtf8()));
- GFModuleUpsertRTValue(GFGetModuleID(),
- GFModuleStrDup("version.latest_version"),
- GFModuleStrDup(version.latest_version.toUtf8()));
- GFModuleUpsertRTValueBool(
- GFGetModuleID(), GFModuleStrDup("version.current_version_is_drafted"),
- version.current_version_is_drafted ? 1 : 0);
- GFModuleUpsertRTValueBool(
- GFGetModuleID(),
- GFModuleStrDup("version.current_version_is_a_prerelease"),
- version.current_version_is_a_prerelease ? 1 : 0);
- GFModuleUpsertRTValueBool(
- GFGetModuleID(),
- GFModuleStrDup("version.current_version_publish_in_remote"),
- version.current_version_publish_in_remote ? 1 : 0);
- GFModuleUpsertRTValueBool(
- GFGetModuleID(),
- GFModuleStrDup("version.latest_prerelease_version_from_remote"),
- version.latest_prerelease_version_from_remote ? 1 : 0);
- GFModuleUpsertRTValueBool(GFGetModuleID(),
- GFModuleStrDup("version.need_upgrade"),
- version.NeedUpgrade() ? 1 : 0);
- GFModuleUpsertRTValueBool(GFGetModuleID(),
- GFModuleStrDup("version.current_version_released"),
- version.CurrentVersionReleased() ? 1 : 0);
- GFModuleUpsertRTValueBool(
- GFGetModuleID(), GFModuleStrDup("version.current_a_withdrawn_version"),
- version.VersionWithdrawn() ? 1 : 0);
- GFModuleUpsertRTValueBool(GFGetModuleID(),
- GFModuleStrDup("version.loading_done"),
- version.loading_done ? 1 : 0);
-
- GFModuleLogDebug("software information filled in rt");
-}