File indexing completed on 2024-06-23 05:14:09
0001 /* -*- mode: c++; c-basic-offset:4 -*- 0002 newcertificatewizard/newcertificatewizard.cpp 0003 0004 This file is part of Kleopatra, the KDE keymanager 0005 SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB 0006 0007 SPDX-FileCopyrightText: 2016, 2017 Bundesamt für Sicherheit in der Informationstechnik 0008 SPDX-FileContributor: Intevation GmbH 0009 0010 SPDX-License-Identifier: GPL-2.0-or-later 0011 */ 0012 0013 #include <config-kleopatra.h> 0014 0015 #include "newcertificatewizard.h" 0016 0017 #include "enterdetailspage_p.h" 0018 #include "keycreationpage_p.h" 0019 #include "resultpage_p.h" 0020 0021 #include <KLocalizedString> 0022 0023 #include <QDir> 0024 #include <QTemporaryDir> 0025 0026 using namespace Kleo; 0027 using namespace Kleo::NewCertificateUi; 0028 using namespace GpgME; 0029 0030 class NewCertificateWizard::Private 0031 { 0032 friend class ::Kleo::NewCertificateWizard; 0033 NewCertificateWizard *const q; 0034 0035 public: 0036 explicit Private(NewCertificateWizard *qq) 0037 : q(qq) 0038 , tmp(QDir::temp().absoluteFilePath(QStringLiteral("kleo-"))) 0039 , ui(q) 0040 { 0041 q->setWindowTitle(i18nc("@title:window", "Key Pair Creation Wizard")); 0042 } 0043 0044 private: 0045 GpgME::Protocol protocol = GpgME::UnknownProtocol; 0046 QTemporaryDir tmp; 0047 struct Ui { 0048 EnterDetailsPage enterDetailsPage; 0049 KeyCreationPage keyCreationPage; 0050 ResultPage resultPage; 0051 0052 explicit Ui(NewCertificateWizard *q) 0053 : enterDetailsPage(q) 0054 , keyCreationPage(q) 0055 , resultPage(q) 0056 { 0057 KDAB_SET_OBJECT_NAME(enterDetailsPage); 0058 KDAB_SET_OBJECT_NAME(keyCreationPage); 0059 KDAB_SET_OBJECT_NAME(resultPage); 0060 0061 q->setOptions(NoBackButtonOnStartPage | DisabledBackButtonOnLastPage); 0062 0063 q->setPage(EnterDetailsPageId, &enterDetailsPage); 0064 q->setPage(KeyCreationPageId, &keyCreationPage); 0065 q->setPage(ResultPageId, &resultPage); 0066 } 0067 0068 } ui; 0069 }; 0070 0071 NewCertificateWizard::NewCertificateWizard(QWidget *p) 0072 : QWizard(p) 0073 , d(new Private(this)) 0074 { 0075 } 0076 0077 NewCertificateWizard::~NewCertificateWizard() 0078 { 0079 } 0080 0081 void NewCertificateWizard::showEvent(QShowEvent *event) 0082 { 0083 // set WA_KeyboardFocusChange attribute to force visual focus of the 0084 // focussed button when the wizard is shown (required for Breeze style 0085 // and some other styles) 0086 window()->setAttribute(Qt::WA_KeyboardFocusChange); 0087 QWizard::showEvent(event); 0088 } 0089 0090 void NewCertificateWizard::setProtocol(Protocol proto) 0091 { 0092 d->protocol = proto; 0093 } 0094 0095 Protocol NewCertificateWizard::protocol() const 0096 { 0097 return d->protocol; 0098 } 0099 0100 void NewCertificateWizard::restartAtEnterDetailsPage() 0101 { 0102 restart(); 0103 while (currentId() != NewCertificateWizard::EnterDetailsPageId) { 0104 next(); 0105 } 0106 } 0107 0108 QDir NewCertificateWizard::tmpDir() const 0109 { 0110 return QDir(d->tmp.path()); 0111 } 0112 0113 #include "moc_newcertificatewizard.cpp"