diff options
author | saturneric <[email protected]> | 2024-07-29 19:29:56 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-07-29 19:29:56 +0000 |
commit | fa90ec4b5315b9e70a44a9625c143ce253f0e885 (patch) | |
tree | 8ffa82e33522de03974d6d0289aa831b4fd6ebdf /src/ui/dialog/help/AboutDialog.cpp | |
parent | fix: correct urls at appdata.xml (diff) | |
parent | Merge branch 'develop' of github.com:saturneric/GpgFrontend into develop (diff) | |
download | GpgFrontend-fa90ec4b5315b9e70a44a9625c143ce253f0e885.tar.gz GpgFrontend-fa90ec4b5315b9e70a44a9625c143ce253f0e885.zip |
Merge branch 'develop'
Diffstat (limited to 'src/ui/dialog/help/AboutDialog.cpp')
-rw-r--r-- | src/ui/dialog/help/AboutDialog.cpp | 160 |
1 files changed, 12 insertions, 148 deletions
diff --git a/src/ui/dialog/help/AboutDialog.cpp b/src/ui/dialog/help/AboutDialog.cpp index 0735ddba..14cb76ad 100644 --- a/src/ui/dialog/help/AboutDialog.cpp +++ b/src/ui/dialog/help/AboutDialog.cpp @@ -32,7 +32,7 @@ #include "core/module/ModuleManager.h" #include "core/utils/BuildInfoUtils.h" -#include "ui/dialog/help/GnupgTab.h" +#include "ui/UIModuleManager.h" namespace GpgFrontend::UI { @@ -46,20 +46,18 @@ AboutDialog::AboutDialog(const QString& default_tab_name, QWidget* parent) tab_widget->addTab(info_tab, tr("About GpgFrontend")); - if (Module::IsModuleActivate(kGnuPGInfoGatheringModuleID)) { - auto* gnupg_tab = new GnupgTab(); - tab_widget->addTab(gnupg_tab, tr("GnuPG")); - } - tab_widget->addTab(translators_tab, tr("Translators")); - if (Module::IsModuleActivate(kVersionCheckingModuleID)) { - auto* update_tab = new UpdateTab(); - tab_widget->addTab(update_tab, tr("Update")); - } + auto entries = + UIModuleManager::GetInstance().QueryMountedEntries("AboutDialogTabs"); - connect(tab_widget, &QTabWidget::currentChanged, this, - [&](int index) { GF_UI_LOG_DEBUG("current index: {}", index); }); + for (const auto& entry : entries) { + auto* widget = entry.GetWidget(); + if (widget != nullptr) { + tab_widget->addTab(widget, + entry.GetMetaDataByDefault("TabTitle", tr("Unnamed"))); + } + } int default_index = 0; for (int i = 0; i < tab_widget->count(); i++) { @@ -90,15 +88,14 @@ void AboutDialog::showEvent(QShowEvent* ev) { QDialog::showEvent(ev); } InfoTab::InfoTab(QWidget* parent) : QWidget(parent) { const auto gpgme_version = Module::RetrieveRTValueTypedOrDefault<>( "core", "gpgme.version", QString{"2.0.0"}); - GF_UI_LOG_DEBUG("got gpgme version from rt: {}", gpgme_version); auto pixmap = QPixmap(":/icons/gpgfrontend_logo.png"); pixmap = pixmap.scaled(128, 128); auto text = "<center><h2>" + qApp->applicationName() + "</h2></center>" + - "<center><b>" + "v" + qApp->applicationVersion() + "</b></center>" + - "<center>" + GetProjectBuildGitVersion() + "</center>" + "<br><center>" + + "<center><b>" + GetProjectVersion() + "</b></center>" + "<center>" + + GetProjectBuildGitVersion() + "</center>" + "<br><center>" + tr("GpgFrontend is an easy-to-use, compact, cross-platform, " "and installation-free GnuPG Frontend." "It visualizes most of the common operations of GnuPG." @@ -152,137 +149,4 @@ TranslatorsTab::TranslatorsTab(QWidget* parent) : QWidget(parent) { setLayout(main_layout); } -UpdateTab::UpdateTab(QWidget* parent) : QWidget(parent) { - auto* layout = new QGridLayout(); - - current_version_ = GetProjectVersion(); - - 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); - GF_UI_LOG_DEBUG("loading version loading info from rt"); - - auto is_loading_done = Module::RetrieveRTValueTypedOrDefault<>( - kVersionCheckingModuleID, "version.loading_done", false); - - if (!is_loading_done) { - Module::ListenRTPublishEvent( - this, kVersionCheckingModuleID, "version.loading_done", - [=](Module::Namespace, Module::Key, int, std::any) { - GF_UI_LOG_DEBUG( - "version_checking module version.loading_done changed, calling " - "slot version upgrade"); - this->slot_show_version_status(); - }); - Module::TriggerEvent("CHECK_APPLICATION_VERSION"); - } else { - slot_show_version_status(); - } -} - -void UpdateTab::slot_show_version_status() { - GF_UI_LOG_DEBUG("loading version info from rt"); - this->pb_->setHidden(true); - - auto is_loading_done = Module::RetrieveRTValueTypedOrDefault<>( - kVersionCheckingModuleID, "version.loading_done", false); - - if (!is_loading_done) { - GF_UI_LOG_DEBUG("version info loading haven't been done yet."); - return; - } - - auto is_need_upgrade = Module::RetrieveRTValueTypedOrDefault<>( - kVersionCheckingModuleID, "version.need_upgrade", false); - - auto is_current_a_withdrawn_version = Module::RetrieveRTValueTypedOrDefault<>( - kVersionCheckingModuleID, "version.current_a_withdrawn_version", false); - - auto is_current_version_released = Module::RetrieveRTValueTypedOrDefault<>( - kVersionCheckingModuleID, "version.current_version_released", false); - - auto latest_version = Module::RetrieveRTValueTypedOrDefault<>( - kVersionCheckingModuleID, "version.latest_version", QString{}); - - latest_version_label_->setText("<center><b>" + - tr("Latest Version From Github") + ": " + - latest_version + "</b></center>"); - - if (is_need_upgrade) { - 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) { - 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) { - 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(); - } -} - } // namespace GpgFrontend::UI |