File indexing completed on 2024-06-23 05:14:02
0001 /* -*- mode: c++; c-basic-offset:4 -*- 0002 dialogs/signcertificatedialog.cpp 0003 0004 This file is part of Kleopatra, the KDE keymanager 0005 SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB 0006 SPDX-FileCopyrightText: 2019 g10code GmbH 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #include <config-kleopatra.h> 0012 0013 #include "kleopatra_debug.h" 0014 0015 #include "certifycertificatedialog.h" 0016 0017 #include "certifywidget.h" 0018 0019 #include <Libkleo/Algorithm> 0020 #include <Libkleo/Formatting> 0021 #include <Libkleo/KeyHelpers> 0022 #include <Libkleo/Stl_Util> 0023 0024 #include <KConfigGroup> 0025 #include <KLocalizedString> 0026 #include <KMessageBox> 0027 #include <KSharedConfig> 0028 #include <KStandardGuiItem> 0029 0030 #include <QDialogButtonBox> 0031 #include <QKeyEvent> 0032 #include <QPushButton> 0033 #include <QVBoxLayout> 0034 0035 #include <gpg-error.h> 0036 0037 using namespace GpgME; 0038 using namespace Kleo; 0039 0040 CertifyCertificateDialog::CertifyCertificateDialog(QWidget *p, Qt::WindowFlags f) 0041 : QDialog(p, f) 0042 { 0043 setWindowTitle(i18nc("@title:window", "Certify Certificates")); 0044 setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint)); 0045 0046 // Setup GUI 0047 auto mainLay = new QVBoxLayout(this); 0048 mCertWidget = new CertifyWidget(this); 0049 mainLay->addWidget(mCertWidget); 0050 0051 auto buttonBox = new QDialogButtonBox{this}; 0052 buttonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); 0053 const auto okButton = buttonBox->button(QDialogButtonBox::Ok); 0054 KGuiItem::assign(okButton, KStandardGuiItem::ok()); 0055 okButton->setText(i18n("Certify")); 0056 KGuiItem::assign(buttonBox->button(QDialogButtonBox::Cancel), KStandardGuiItem::cancel()); 0057 connect(buttonBox, &QDialogButtonBox::accepted, this, &CertifyCertificateDialog::accept); 0058 connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::close); 0059 0060 mainLay->addWidget(buttonBox); 0061 0062 okButton->setEnabled(mCertWidget->isValid()); 0063 connect(mCertWidget, &CertifyWidget::changed, this, [this, okButton]() { 0064 okButton->setEnabled(mCertWidget->isValid()); 0065 }); 0066 0067 KConfigGroup cfgGroup(KSharedConfig::openStateConfig(), QStringLiteral("CertifyDialog")); 0068 const auto size = cfgGroup.readEntry("Size", QSize{640, 480}); 0069 if (size.isValid()) { 0070 resize(size); 0071 } 0072 } 0073 0074 CertifyCertificateDialog::~CertifyCertificateDialog() 0075 { 0076 KConfigGroup cfgGroup(KSharedConfig::openStateConfig(), QStringLiteral("CertifyDialog")); 0077 cfgGroup.writeEntry("Size", size()); 0078 cfgGroup.sync(); 0079 } 0080 0081 void CertifyCertificateDialog::setCertificateToCertify(const Key &key, const std::vector<GpgME::UserID> &uids) 0082 { 0083 Q_ASSERT(Kleo::all_of(uids, [key](const auto &uid) { 0084 return Kleo::userIDBelongsToKey(uid, key); 0085 })); 0086 setWindowTitle(i18nc("@title:window arg is name, email of certificate holder", "Certify Certificate: %1", Formatting::prettyName(key))); 0087 mCertWidget->setCertificate(key, uids); 0088 } 0089 0090 void CertifyCertificateDialog::setCertificatesToCertify(const std::vector<GpgME::Key> &keys) 0091 { 0092 mCertWidget->setCertificates(keys); 0093 } 0094 0095 void CertifyCertificateDialog::setGroupName(const QString &name) 0096 { 0097 setWindowTitle(i18nc("@title:window Certify Certificate Group <group name>", "Certify Certificate Group %1", name)); 0098 } 0099 0100 bool CertifyCertificateDialog::exportableCertificationSelected() const 0101 { 0102 return mCertWidget->exportableSelected(); 0103 } 0104 0105 bool CertifyCertificateDialog::trustSignatureSelected() const 0106 { 0107 return mCertWidget->trustSignatureSelected(); 0108 } 0109 0110 QString CertifyCertificateDialog::trustSignatureDomain() const 0111 { 0112 return mCertWidget->trustSignatureDomain(); 0113 } 0114 0115 Key CertifyCertificateDialog::selectedSecretKey() const 0116 { 0117 return mCertWidget->secKey(); 0118 } 0119 0120 bool CertifyCertificateDialog::sendToServer() const 0121 { 0122 return mCertWidget->publishSelected(); 0123 } 0124 0125 void CertifyCertificateDialog::setSelectedUserIDs(const std::vector<UserID> &uids) 0126 { 0127 mCertWidget->selectUserIDs(uids); 0128 } 0129 0130 std::vector<GpgME::UserID> CertifyCertificateDialog::selectedUserIDs() const 0131 { 0132 return mCertWidget->selectedUserIDs(); 0133 } 0134 0135 QString CertifyCertificateDialog::tags() const 0136 { 0137 return mCertWidget->tags(); 0138 } 0139 0140 QDate CertifyCertificateDialog::expirationDate() const 0141 { 0142 return mCertWidget->expirationDate(); 0143 } 0144 0145 void CertifyCertificateDialog::accept() 0146 { 0147 if (!mCertWidget->isValid()) { 0148 return; 0149 } 0150 0151 mCertWidget->saveState(); 0152 0153 QDialog::accept(); 0154 } 0155 0156 #include "moc_certifycertificatedialog.cpp"