diff options
author | saturneric <[email protected]> | 2024-07-12 18:39:17 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-07-12 18:39:17 +0000 |
commit | 96e4c85edc09e106631860f823a42440d013e455 (patch) | |
tree | fd69604b607da4f7d9a9d51503ef5fc64ed75f89 /src/m_ver_check/VersionCheckingModule.cpp | |
parent | feat: initialize and move in two modules (diff) | |
download | Modules-96e4c85edc09e106631860f823a42440d013e455.tar.gz Modules-96e4c85edc09e106631860f823a42440d013e455.zip |
feat: try using ui and i18n apis from sdk
Diffstat (limited to 'src/m_ver_check/VersionCheckingModule.cpp')
-rw-r--r-- | src/m_ver_check/VersionCheckingModule.cpp | 115 |
1 files changed, 115 insertions, 0 deletions
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 |