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 }