From 96e4c85edc09e106631860f823a42440d013e455 Mon Sep 17 00:00:00 2001 From: saturneric Date: Fri, 12 Jul 2024 20:39:17 +0200 Subject: feat: try using ui and i18n apis from sdk --- src/m_ver_check/VersionCheckingModule.cpp | 115 ++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 src/m_ver_check/VersionCheckingModule.cpp (limited to 'src/m_ver_check/VersionCheckingModule.cpp') 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 + * + * 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 . + * + * 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 starting on May 12, 2021. + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + */ + +#include "VersionCheckingModule.h" + +#include +#include +#include +#include +#include +#include + +#include +#include + +#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( + 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 -- cgit v1.2.3