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

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     newcertificatewizard/enterdetailspage_p.h
0003 
0004     This file is part of Kleopatra, the KDE keymanager
0005     SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB
0006     SPDX-FileCopyrightText: 2016, 2017 Bundesamt für Sicherheit in der Informationstechnik
0007     SPDX-FileContributor: Intevation GmbH
0008     SPDX-FileCopyrightText: 2022 g10 Code GmbH
0009     SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de>
0010 
0011     SPDX-License-Identifier: GPL-2.0-or-later
0012 */
0013 
0014 #pragma once
0015 
0016 #include "wizardpage_p.h"
0017 
0018 class AdvancedSettingsDialog;
0019 class QLineEdit;
0020 class QValidator;
0021 
0022 class EnterDetailsPage : public Kleo::NewCertificateUi::WizardPage
0023 {
0024     Q_OBJECT
0025 
0026 public:
0027     struct Line {
0028         QString attr;
0029         QString label;
0030         QString regex;
0031         QLineEdit *edit;
0032         std::shared_ptr<QValidator> validator;
0033     };
0034 
0035     explicit EnterDetailsPage(QWidget *parent = nullptr);
0036     ~EnterDetailsPage() override;
0037 
0038     bool isComplete() const override;
0039     void initializePage() override;
0040     void cleanupPage() override;
0041 
0042 private:
0043     void updateForm();
0044     void clearForm();
0045     void saveValues();
0046     void registerDialogPropertiesAsFields();
0047 
0048 private:
0049     QString pgpUserID() const;
0050     QString cmsDN() const;
0051 
0052 private Q_SLOTS:
0053     void slotAdvancedSettingsClicked();
0054     void slotUpdateResultLabel();
0055 
0056 private:
0057     struct UI;
0058     std::unique_ptr<UI> ui;
0059 
0060     QList<Line> lineList;
0061     QList<QWidget *> dynamicWidgets;
0062     QMap<QString, QString> savedValues;
0063     AdvancedSettingsDialog *dialog;
0064 };