File indexing completed on 2024-06-23 05:14:01

0001 /*  SPDX-FileCopyrightText: 2016 Klarälvdalens Datakonsult AB
0002     SPDX-FileCopyrightText: 2017 Intevation GmbH
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "certificatedetailsdialog.h"
0008 
0009 #include "certificatedetailswidget.h"
0010 
0011 #include <KConfigGroup>
0012 #include <KLocalizedString>
0013 #include <KSharedConfig>
0014 
0015 #include <QDialogButtonBox>
0016 #include <QPushButton>
0017 #include <QVBoxLayout>
0018 
0019 #include <gpgme++/key.h>
0020 
0021 CertificateDetailsDialog::CertificateDetailsDialog(QWidget *parent)
0022     : QDialog(parent)
0023 {
0024     auto l = new QVBoxLayout(this);
0025     auto w = new CertificateDetailsWidget{this};
0026     w->layout()->setContentsMargins(0, 0, 0, 0);
0027     l->addWidget(w);
0028 
0029     auto bbox = new QDialogButtonBox(this);
0030     auto btn = bbox->addButton(QDialogButtonBox::Close);
0031     connect(btn, &QPushButton::pressed, this, &QDialog::accept);
0032     l->addWidget(bbox);
0033     readConfig();
0034 }
0035 
0036 CertificateDetailsDialog::~CertificateDetailsDialog()
0037 {
0038     writeConfig();
0039 }
0040 
0041 void CertificateDetailsDialog::readConfig()
0042 {
0043     KConfigGroup dialog(KSharedConfig::openStateConfig(), QStringLiteral("CertificateDetailsDialog"));
0044     const QSize size = dialog.readEntry("Size", QSize(730, 280));
0045     if (size.isValid()) {
0046         resize(size);
0047     }
0048 }
0049 
0050 void CertificateDetailsDialog::writeConfig()
0051 {
0052     KConfigGroup dialog(KSharedConfig::openStateConfig(), QStringLiteral("CertificateDetailsDialog"));
0053     dialog.writeEntry("Size", size());
0054     dialog.sync();
0055 }
0056 
0057 namespace
0058 {
0059 QString title(const GpgME::Key &key)
0060 {
0061     switch (key.protocol()) {
0062     case GpgME::OpenPGP:
0063         return i18nc("@title:window", "OpenPGP Certificate");
0064     case GpgME::CMS:
0065         return i18nc("@title:window", "S/MIME Certificate");
0066     default:
0067         return {};
0068     }
0069 }
0070 }
0071 
0072 void CertificateDetailsDialog::setKey(const GpgME::Key &key)
0073 {
0074     setWindowTitle(title(key));
0075     findChild<CertificateDetailsWidget *>()->setKey(key);
0076 }
0077 
0078 GpgME::Key CertificateDetailsDialog::key() const
0079 {
0080     return findChild<CertificateDetailsWidget *>()->key();
0081 }
0082 
0083 #include "moc_certificatedetailsdialog.cpp"