aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/help/GnupgTab.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/dialog/help/GnupgTab.cpp')
-rw-r--r--src/ui/dialog/help/GnupgTab.cpp184
1 files changed, 143 insertions, 41 deletions
diff --git a/src/ui/dialog/help/GnupgTab.cpp b/src/ui/dialog/help/GnupgTab.cpp
index 996d4ad9..28f1acfe 100644
--- a/src/ui/dialog/help/GnupgTab.cpp
+++ b/src/ui/dialog/help/GnupgTab.cpp
@@ -1,7 +1,7 @@
-/*
- * Copyright (c) 2022. Saturneric
+/**
+ * Copyright (C) 2021 Saturneric <[email protected]>
*
- * This file is part of GpgFrontend.
+ * 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
@@ -20,9 +20,10 @@
* 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.
+ * Saturneric <[email protected]> starting on May 12, 2021.
*
* SPDX-License-Identifier: GPL-3.0-or-later
+ *
*/
//
@@ -31,21 +32,20 @@
#include "GnupgTab.h"
-#include <shared_mutex>
-
-#include "ui/UserInterfaceUtils.h"
+#include "core/module/ModuleManager.h"
#include "ui_GnuPGInfo.h"
GpgFrontend::UI::GnupgTab::GnupgTab(QWidget* parent)
- : QWidget(parent), ui_(std::make_shared<Ui_GnuPGInfo>()) {
+ : QWidget(parent),
+ ui_(GpgFrontend::SecureCreateSharedObject<Ui_GnuPGInfo>()) {
ui_->setupUi(this);
QStringList components_column_titles;
- components_column_titles << _("Name") << _("Description") << _("Version")
- << _("Checksum") << _("Binary Path");
+ components_column_titles << tr("Name") << tr("Description") << tr("Version")
+ << tr("Checksum") << tr("Binary Path");
- ui_->tabWidget->setTabText(0, _("Components"));
- ui_->tabWidget->setTabText(1, _("Configurations"));
+ ui_->tabWidget->setTabText(0, tr("Components"));
+ ui_->tabWidget->setTabText(1, tr("Configurations"));
ui_->componentDetailsTable->setColumnCount(components_column_titles.length());
ui_->componentDetailsTable->setHorizontalHeaderLabels(
@@ -55,7 +55,9 @@ GpgFrontend::UI::GnupgTab::GnupgTab(QWidget* parent)
QAbstractItemView::SelectRows);
QStringList configurations_column_titles;
- configurations_column_titles << _("Key") << _("Value");
+ configurations_column_titles << tr("Component") << tr("Group") << tr("Key")
+ << tr("Description") << tr("Default Value")
+ << tr("Value");
ui_->configurationDetailsTable->setColumnCount(
configurations_column_titles.length());
@@ -79,34 +81,61 @@ GpgFrontend::UI::GnupgTab::GnupgTab(QWidget* parent)
}
void GpgFrontend::UI::GnupgTab::process_software_info() {
- auto& ctx_info = GpgContext::GetInstance().GetInfo();
+ const auto gnupg_version = Module::RetrieveRTValueTypedOrDefault<>(
+ "core", "gpgme.ctx.gnupg_version", QString{"2.0.0"});
+ GF_UI_LOG_DEBUG("got gnupg version from rt: {}", gnupg_version);
- ui_->gnupgVersionLabel->setText(QString::fromStdString(
- fmt::format("Version: {}", ctx_info.GnupgVersion)));
+ ui_->gnupgVersionLabel->setText(
+ QString::fromStdString(fmt::format("Version: {}", gnupg_version)));
- ui_->componentDetailsTable->setRowCount(ctx_info.ComponentsInfo.size());
+ auto components = Module::ListRTChildKeys(
+ "com.bktus.gpgfrontend.module.integrated.gnupg-info-gathering",
+ "gnupg.components");
+ GF_UI_LOG_DEBUG("got gnupg components from rt, size: {}", components.size());
- int row = 0;
- for (const auto& info : ctx_info.ComponentsInfo) {
- if (info.second.size() != 4) continue;
+ ui_->componentDetailsTable->setRowCount(components.size());
- auto* tmp0 = new QTableWidgetItem(QString::fromStdString(info.first));
+ int row = 0;
+ for (auto& component : components) {
+ auto component_info_json_bytes = Module::RetrieveRTValueTypedOrDefault(
+ "com.bktus.gpgfrontend.module.integrated.gnupg-info-gathering",
+ QString("gnupg.components.%1").arg(component), QByteArray{});
+ GF_UI_LOG_DEBUG("got gnupg component {} info from rt", component);
+
+ auto component_info_json =
+ QJsonDocument::fromJson(component_info_json_bytes);
+ if (!component_info_json.isObject()) {
+ GF_UI_LOG_WARN("illegal gnupg component info, json: {}",
+ QString(component_info_json_bytes));
+ continue;
+ }
+
+ auto component_info = component_info_json.object();
+ if (!component_info.contains("name")) {
+ GF_UI_LOG_WARN(
+ "illegal gnupg component info. it doesn't have a name, json: {}",
+ QString(component_info_json_bytes));
+ continue;
+ }
+
+ auto* tmp0 = new QTableWidgetItem(component_info["name"].toString());
tmp0->setTextAlignment(Qt::AlignCenter);
ui_->componentDetailsTable->setItem(row, 0, tmp0);
- auto* tmp1 = new QTableWidgetItem(QString::fromStdString(info.second[0]));
+ auto* tmp1 = new QTableWidgetItem(component_info["desc"].toString());
tmp1->setTextAlignment(Qt::AlignCenter);
ui_->componentDetailsTable->setItem(row, 1, tmp1);
- auto* tmp2 = new QTableWidgetItem(QString::fromStdString(info.second[1]));
+ auto* tmp2 = new QTableWidgetItem(component_info["version"].toString());
tmp2->setTextAlignment(Qt::AlignCenter);
ui_->componentDetailsTable->setItem(row, 2, tmp2);
- auto* tmp3 = new QTableWidgetItem(QString::fromStdString(info.second[3]));
+ auto* tmp3 =
+ new QTableWidgetItem(component_info["binary_checksum"].toString());
tmp3->setTextAlignment(Qt::AlignCenter);
ui_->componentDetailsTable->setItem(row, 3, tmp3);
- auto* tmp4 = new QTableWidgetItem(QString::fromStdString(info.second[2]));
+ auto* tmp4 = new QTableWidgetItem(component_info["path"].toString());
tmp4->setTextAlignment(Qt::AlignLeft);
ui_->componentDetailsTable->setItem(row, 4, tmp4);
@@ -115,23 +144,96 @@ void GpgFrontend::UI::GnupgTab::process_software_info() {
ui_->componentDetailsTable->resizeColumnsToContents();
- ui_->configurationDetailsTable->setRowCount(
- ctx_info.ConfigurationsInfo.size());
-
+ // calcualte the total row number of configuration table
row = 0;
- for (const auto& info : ctx_info.ConfigurationsInfo) {
- if (info.second.size() != 1) continue;
-
- auto* tmp0 = new QTableWidgetItem(QString::fromStdString(info.first));
- tmp0->setTextAlignment(Qt::AlignCenter);
- ui_->configurationDetailsTable->setItem(row, 0, tmp0);
-
- auto* tmp1 = new QTableWidgetItem(QString::fromStdString(info.second[0]));
- tmp1->setTextAlignment(Qt::AlignCenter);
- ui_->configurationDetailsTable->setItem(row, 1, tmp1);
-
- row++;
+ for (auto& component : components) {
+ auto options = Module::ListRTChildKeys(
+ "com.bktus.gpgfrontend.module.integrated.gnupg-info-gathering",
+ QString("gnupg.components.%1.options").arg(component));
+ for (auto& option : options) {
+ const auto option_info_json =
+ QJsonDocument::fromJson(Module::RetrieveRTValueTypedOrDefault(
+ "com.bktus.gpgfrontend.module.integrated.gnupg-info-gathering",
+ QString("gnupg.components.%1.options.%2")
+ .arg(component)
+ .arg(option),
+ QByteArray{}));
+
+ if (!option_info_json.isObject()) continue;
+
+ auto option_info = option_info_json.object();
+ if (!option_info.contains("name") || option_info["flags"] == "1") {
+ continue;
+ }
+ row++;
+ }
}
+ ui_->configurationDetailsTable->setRowCount(row);
- ui_->configurationDetailsTable->resizeColumnsToContents();
+ row = 0;
+ QString configuration_group;
+ for (auto& component : components) {
+ auto options = Module::ListRTChildKeys(
+ "com.bktus.gpgfrontend.module.integrated.gnupg-info-gathering",
+ QString("gnupg.components.%1.options").arg(component));
+
+ for (auto& option : options) {
+ auto option_info_json_bytes = Module::RetrieveRTValueTypedOrDefault(
+ "com.bktus.gpgfrontend.module.integrated.gnupg-info-gathering",
+ QString("gnupg.components.%1.options.%2").arg(component).arg(option),
+ QByteArray{});
+ GF_UI_LOG_DEBUG("got gnupg component's option {} info from rt, info: {}",
+ component, option_info_json_bytes);
+
+ auto option_info_json = QJsonDocument::fromJson(option_info_json_bytes);
+
+ if (!option_info_json.isObject()) {
+ GF_UI_LOG_WARN("illegal gnupg option info, json: {}",
+ QString(option_info_json_bytes));
+ continue;
+ }
+
+ auto option_info = option_info_json.object();
+ if (!option_info.contains("name")) {
+ GF_UI_LOG_WARN(
+ "illegal gnupg configuation info. it doesn't have a name, json: {}",
+ QString(option_info_json_bytes));
+ continue;
+ }
+
+ if (option_info["flags"] == "1") {
+ configuration_group = option_info["name"].toString();
+ continue;
+ }
+
+ auto* tmp0 = new QTableWidgetItem(component);
+ tmp0->setTextAlignment(Qt::AlignCenter);
+ ui_->configurationDetailsTable->setItem(row, 0, tmp0);
+
+ auto* tmp1 = new QTableWidgetItem(configuration_group);
+ tmp1->setTextAlignment(Qt::AlignCenter);
+ ui_->configurationDetailsTable->setItem(row, 1, tmp1);
+
+ auto* tmp2 = new QTableWidgetItem(option_info["name"].toString());
+ tmp2->setTextAlignment(Qt::AlignCenter);
+ ui_->configurationDetailsTable->setItem(row, 2, tmp2);
+
+ auto* tmp3 = new QTableWidgetItem(option_info["description"].toString());
+
+ tmp3->setTextAlignment(Qt::AlignLeft);
+ ui_->configurationDetailsTable->setItem(row, 3, tmp3);
+
+ auto* tmp4 =
+ new QTableWidgetItem(option_info["default_value"].toString());
+ tmp4->setTextAlignment(Qt::AlignLeft);
+ ui_->configurationDetailsTable->setItem(row, 4, tmp4);
+
+ auto* tmp5 = new QTableWidgetItem(option_info["value"].toString());
+ tmp5->setTextAlignment(Qt::AlignLeft);
+ ui_->configurationDetailsTable->setItem(row, 5, tmp5);
+
+ row++;
+ }
+ }
+ // ui_->configurationDetailsTable->resizeColumnsToContents();
}