diff options
author | Saturneric <[email protected]> | 2021-05-12 02:14:58 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2021-05-12 02:14:58 +0000 |
commit | 26691b14d7d3294769c1cb0d0e099efd75dcc6c6 (patch) | |
tree | 7e16cb949955e635bada530ba7fd23a43ef8e4bb /src/ui/KeyImportDetailDialog.cpp | |
parent | Srouce Files Tidy and Reform (diff) | |
download | GpgFrontend-26691b14d7d3294769c1cb0d0e099efd75dcc6c6.tar.gz GpgFrontend-26691b14d7d3294769c1cb0d0e099efd75dcc6c6.zip |
File Structure Modified.
Change Headers and Source Files Name.
Modified CMake Structure.
Diffstat (limited to 'src/ui/KeyImportDetailDialog.cpp')
-rw-r--r-- | src/ui/KeyImportDetailDialog.cpp | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/src/ui/KeyImportDetailDialog.cpp b/src/ui/KeyImportDetailDialog.cpp new file mode 100644 index 00000000..c46202ce --- /dev/null +++ b/src/ui/KeyImportDetailDialog.cpp @@ -0,0 +1,155 @@ +/* + * keyimportdetailsdialog.cpp + * + * Copyright 2008 gpg4usb-team <[email protected]> + * + * This file is part of gpg4usb. + * + * Gpg4usb 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. + * + * Gpg4usb 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 gpg4usb. If not, see <http://www.gnu.org/licenses/> + */ + +#include <ui/KeyImportDetailDialog.h> + +KeyImportDetailDialog::KeyImportDetailDialog(GpgME::GpgContext *ctx, GpgImportInformation result, QWidget *parent) + : QDialog(parent) { + mCtx = ctx; + mResult = std::move(result); + // If no key for import found, just show a message + if (mResult.considered == 0) { + QMessageBox::information(nullptr, tr("Key import details"), tr("No keys found to import")); + return; + } + + auto *mvbox = new QVBoxLayout(); + + this->createGeneralInfoBox(); + mvbox->addWidget(generalInfoBox); + + this->createKeysTable(); + mvbox->addWidget(keysTable); + + this->createButtonBox(); + mvbox->addWidget(buttonBox); + + this->setLayout(mvbox); + this->setWindowTitle(tr("Key import details")); + this->resize(QSize(600, 300)); + this->setModal(true); + this->exec(); +} + +void KeyImportDetailDialog::createGeneralInfoBox() { + // GridBox for general import information + generalInfoBox = new QGroupBox(tr("Genral key import info")); + auto *generalInfoBoxLayout = new QGridLayout(generalInfoBox); + + generalInfoBoxLayout->addWidget(new QLabel(tr("Considered:")), 1, 0); + generalInfoBoxLayout->addWidget(new QLabel(QString::number(mResult.considered)), 1, 1); + int row = 2; + if (mResult.unchanged != 0) { + generalInfoBoxLayout->addWidget(new QLabel(tr("Public unchanged:")), row, 0); + generalInfoBoxLayout->addWidget(new QLabel(QString::number(mResult.unchanged)), row, 1); + row++; + } + if (mResult.imported != 0) { + generalInfoBoxLayout->addWidget(new QLabel(tr("Imported:")), row, 0); + generalInfoBoxLayout->addWidget(new QLabel(QString::number(mResult.imported)), row, 1); + row++; + } + if (mResult.not_imported != 0) { + generalInfoBoxLayout->addWidget(new QLabel(tr("Not imported:")), row, 0); + generalInfoBoxLayout->addWidget(new QLabel(QString::number(mResult.not_imported)), row, 1); + row++; + } + if (mResult.secret_read != 0) { + generalInfoBoxLayout->addWidget(new QLabel(tr("Private read:")), row, 0); + generalInfoBoxLayout->addWidget(new QLabel(QString::number(mResult.secret_read)), row, 1); + row++; + } + if (mResult.secret_imported != 0) { + generalInfoBoxLayout->addWidget(new QLabel(tr("Private imported:")), row, 0); + generalInfoBoxLayout->addWidget(new QLabel(QString::number(mResult.secret_imported)), row, 1); + row++; + } + if (mResult.secret_unchanged != 0) { + generalInfoBoxLayout->addWidget(new QLabel(tr("Private unchanged:")), row, 0); + generalInfoBoxLayout->addWidget(new QLabel(QString::number(mResult.secret_unchanged)), row, 1); + row++; + } +} + +void KeyImportDetailDialog::createKeysTable() { + keysTable = new QTableWidget(this); + keysTable->setRowCount(0); + keysTable->setColumnCount(4); + keysTable->setEditTriggers(QAbstractItemView::NoEditTriggers); + // Nothing is selectable + keysTable->setSelectionMode(QAbstractItemView::NoSelection); + + QStringList headerLabels; + headerLabels << tr("Name") << tr("Email") << tr("Status") << tr("Fingerprint"); + keysTable->verticalHeader()->hide(); + + keysTable->setHorizontalHeaderLabels(headerLabels); + int row = 0; + foreach (GpgImportedKey impKey, mResult.importedKeys) { + keysTable->setRowCount(row + 1); + GpgKey key = mCtx->getKeyByFpr(impKey.fpr); + keysTable->setItem(row, 0, new QTableWidgetItem(key.name)); + keysTable->setItem(row, 1, new QTableWidgetItem(key.email)); + keysTable->setItem(row, 2, new QTableWidgetItem(getStatusString(impKey.importStatus))); + keysTable->setItem(row, 3, new QTableWidgetItem(impKey.fpr)); + row++; + } + keysTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); + keysTable->horizontalHeader()->setStretchLastSection(true); + keysTable->resizeColumnsToContents(); +} + +QString KeyImportDetailDialog::getStatusString(int keyStatus) { + QString statusString; + // keystatus is greater than 15, if key is private + if (keyStatus > 15) { + statusString.append(tr("private")); + keyStatus = keyStatus - 16; + } else { + statusString.append(tr("public")); + } + if (keyStatus == 0) { + statusString.append(", " + tr("unchanged")); + } else { + if (keyStatus == 1) { + statusString.append(", " + tr("new key")); + } else { + if (keyStatus > 7) { + statusString.append(", " + tr("new subkey")); + keyStatus = keyStatus - 8; + } + if (keyStatus > 3) { + statusString.append(", " + tr("new signature")); + keyStatus = keyStatus - 4; + } + if (keyStatus > 1) { + statusString.append(", " + tr("new uid")); + keyStatus = keyStatus - 2; + } + } + } + return statusString; +} + +void KeyImportDetailDialog::createButtonBox() { + buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok); + connect(buttonBox, SIGNAL(accepted()), this, SLOT(close())); +} |