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"