diff options
Diffstat (limited to 'src/ui/dialog/help/GnupgTab.cpp')
-rw-r--r-- | src/ui/dialog/help/GnupgTab.cpp | 131 |
1 files changed, 66 insertions, 65 deletions
diff --git a/src/ui/dialog/help/GnupgTab.cpp b/src/ui/dialog/help/GnupgTab.cpp index 9d783367..2758cbe1 100644 --- a/src/ui/dialog/help/GnupgTab.cpp +++ b/src/ui/dialog/help/GnupgTab.cpp @@ -31,103 +31,104 @@ #include "GnupgTab.h" -#include "easylogging++.h" +#include <shared_mutex> + +#include "ui/UserInterfaceUtils.h" #include "ui_GnuPGInfo.h" GpgFrontend::UI::GnupgTab::GnupgTab(QWidget* parent) - : QWidget(parent), - ui_(std::make_shared<Ui_GnuPGInfo>()), - gpgconf_process_(new QProcess(this)) { - GpgContext& ctx = GpgContext::GetInstance(); - auto info = ctx.GetInfo(); - + : QWidget(parent), ui_(std::make_shared<Ui_GnuPGInfo>()) { ui_->setupUi(this); - QStringList column_titles; - column_titles << _("Name") << _("Description") << _("Version") << _("Path"); + QStringList components_column_titles; + components_column_titles << _("Name") << _("Description") << _("Version") + << _("Checksum") << _("Path"); + + ui_->componentDetailsTable->setColumnCount(components_column_titles.length()); + ui_->componentDetailsTable->setHorizontalHeaderLabels( + components_column_titles); + ui_->componentDetailsTable->horizontalHeader()->setStretchLastSection(false); + ui_->componentDetailsTable->setSelectionBehavior( + QAbstractItemView::SelectRows); + + QStringList configurations_column_titles; + configurations_column_titles << _("Name") << _("Path"); - ui_->conponentDetailsTable->setColumnCount(column_titles.length()); - ui_->conponentDetailsTable->setHorizontalHeaderLabels(column_titles); - ui_->conponentDetailsTable->horizontalHeader()->setStretchLastSection(false); - ui_->conponentDetailsTable->setSelectionBehavior( + ui_->configurationDetailsTable->setColumnCount( + configurations_column_titles.length()); + ui_->configurationDetailsTable->setHorizontalHeaderLabels( + configurations_column_titles); + ui_->configurationDetailsTable->horizontalHeader()->setStretchLastSection( + false); + ui_->configurationDetailsTable->setSelectionBehavior( QAbstractItemView::SelectRows); // tableitems not editable - ui_->conponentDetailsTable->setEditTriggers( + ui_->componentDetailsTable->setEditTriggers( QAbstractItemView::NoEditTriggers); // no focus (rectangle around tableitems) // may be it should focus on whole row - ui_->conponentDetailsTable->setFocusPolicy(Qt::NoFocus); - ui_->conponentDetailsTable->setAlternatingRowColors(true); + ui_->componentDetailsTable->setFocusPolicy(Qt::NoFocus); + ui_->componentDetailsTable->setAlternatingRowColors(true); - gpgconf_process_->start(QString::fromStdString(info.GpgConfPath), - QStringList() << "--list-components"); - - connect(gpgconf_process_, - qOverload<int, QProcess::ExitStatus>(&QProcess::finished), this, - &GnupgTab::process_components_info); + process_software_info(); } -void GpgFrontend::UI::GnupgTab::process_components_info( - int exit_code, QProcess::ExitStatus exit_status) { - LOG(INFO) << "called"; +void GpgFrontend::UI::GnupgTab::process_software_info() { + auto& ctx_info = GpgContext::GetInstance().GetInfo(); + + ui_->gnupgVersionLabel->setText(QString::fromStdString( + fmt::format("Version: {}", ctx_info.GnupgVersion))); - GpgContext& ctx = GpgContext::GetInstance(); - auto info = ctx.GetInfo(); + ui_->componentDetailsTable->setRowCount(ctx_info.ComponentsInfo.size()); - std::vector<std::vector<std::string>> components_info = { - {"gpgme", "GPG Made Easy", info.GpgMEVersion, "/"}, - {"gpgconf", "GPG Configure", "/", info.GpgConfPath}, + int row = 0; + for (const auto& info : ctx_info.ComponentsInfo) { + if (info.second.size() != 4) continue; - }; + auto* tmp0 = new QTableWidgetItem(QString::fromStdString(info.first)); + tmp0->setTextAlignment(Qt::AlignCenter); + ui_->componentDetailsTable->setItem(row, 0, tmp0); - if (gpgconf_process_ != nullptr) { - QString data = gpgconf_process_->readAllStandardOutput(); + auto* tmp1 = new QTableWidgetItem(QString::fromStdString(info.second[0])); + tmp1->setTextAlignment(Qt::AlignCenter); + ui_->componentDetailsTable->setItem(row, 1, tmp1); - std::vector<std::string> line_split_list; - boost::split(line_split_list, data.toStdString(), boost::is_any_of("\n")); + auto* tmp2 = new QTableWidgetItem(QString::fromStdString(info.second[1])); + tmp2->setTextAlignment(Qt::AlignCenter); + ui_->componentDetailsTable->setItem(row, 2, tmp2); - for (const auto& line : line_split_list) { - std::vector<std::string> info_split_list; - boost::split(info_split_list, line, boost::is_any_of(":")); - LOG(INFO) << "gpgconf info line" << line << "info size" - << info_split_list.size(); + auto* tmp3 = new QTableWidgetItem(QString::fromStdString(info.second[3])); + tmp3->setTextAlignment(Qt::AlignCenter); + ui_->componentDetailsTable->setItem(row, 3, tmp3); - if (info_split_list.size() != 3) continue; + auto* tmp4 = new QTableWidgetItem(QString::fromStdString(info.second[2])); + tmp4->setTextAlignment(Qt::AlignLeft); + ui_->componentDetailsTable->setItem(row, 4, tmp4); - if (info_split_list[0] == "gpg") { - components_info.push_back({info_split_list[0], info_split_list[1], - info.GnupgVersion, info_split_list[2]}); - } else { - components_info.push_back( - {info_split_list[0], info_split_list[1], "/", info_split_list[2]}); - } - } + row++; } - ui_->conponentDetailsTable->setRowCount(components_info.size()); + ui_->componentDetailsTable->resizeColumnsToContents(); - int row = 0; - for (const auto& info : components_info) { - if (info.size() != 4) continue; + ui_->configurationDetailsTable->setRowCount( + ctx_info.ConfigurationsInfo.size()); + + row = 0; + for (const auto& info : ctx_info.ConfigurationsInfo) { + if (info.second.size() != 1) continue; - auto* tmp0 = new QTableWidgetItem(QString::fromStdString(info[0])); + auto* tmp0 = new QTableWidgetItem(QString::fromStdString(info.first)); tmp0->setTextAlignment(Qt::AlignCenter); - ui_->conponentDetailsTable->setItem(row, 0, tmp0); + ui_->configurationDetailsTable->setItem(row, 0, tmp0); - auto* tmp1 = new QTableWidgetItem(QString::fromStdString(info[1])); + auto* tmp1 = new QTableWidgetItem(QString::fromStdString(info.second[0])); tmp1->setTextAlignment(Qt::AlignCenter); - ui_->conponentDetailsTable->setItem(row, 1, tmp1); - - auto* tmp2 = new QTableWidgetItem(QString::fromStdString(info[2])); - tmp2->setTextAlignment(Qt::AlignCenter); - ui_->conponentDetailsTable->setItem(row, 2, tmp2); - - auto* tmp3 = new QTableWidgetItem(QString::fromStdString(info[3])); - tmp3->setTextAlignment(Qt::AlignLeft); - ui_->conponentDetailsTable->setItem(row, 3, tmp3); + ui_->configurationDetailsTable->setItem(row, 1, tmp1); row++; } + + ui_->configurationDetailsTable->resizeColumnsToContents(); } |