File indexing completed on 2024-06-23 05:13:54

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     crypto/gui/wizard.h
0003 
0004     This file is part of Kleopatra, the KDE keymanager
0005     SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #pragma once
0011 
0012 #include <utils/pimpl_ptr.h>
0013 
0014 #include <vector>
0015 
0016 #include <QDialog>
0017 
0018 namespace Kleo
0019 {
0020 namespace Crypto
0021 {
0022 namespace Gui
0023 {
0024 
0025 class WizardPage;
0026 
0027 class Wizard : public QDialog
0028 {
0029     Q_OBJECT
0030 public:
0031     explicit Wizard(QWidget *parent = nullptr, Qt::WindowFlags f = {});
0032     ~Wizard() override;
0033 
0034     enum Page {
0035         InvalidPage = -1,
0036     };
0037 
0038     void setPage(int id, WizardPage *page);
0039 
0040     const WizardPage *page(int id) const;
0041     WizardPage *page(int id);
0042 
0043     void setPageOrder(const std::vector<int> &pages);
0044     void setPageVisible(int id, bool visible);
0045 
0046     void setCurrentPage(int id);
0047 
0048     int currentPage() const;
0049 
0050     const WizardPage *currentPageWidget() const;
0051     WizardPage *currentPageWidget();
0052 
0053     bool canGoToPreviousPage() const;
0054     bool canGoToNextPage() const;
0055 
0056 public Q_SLOTS:
0057     void next();
0058     void back();
0059 
0060 Q_SIGNALS:
0061     void canceled();
0062 
0063 protected:
0064     virtual void onNext(int currentId);
0065     virtual void onBack(int currentId);
0066 
0067 private:
0068     class Private;
0069     kdtools::pimpl_ptr<Private> d;
0070     Q_PRIVATE_SLOT(d, void updateButtonStates())
0071     Q_PRIVATE_SLOT(d, void updateHeader())
0072 };
0073 
0074 }
0075 }
0076 }