1 /* 2 SPDX-FileCopyrightText: 2010 Tobias Koenig <tokoe@kde.org> 3 4 SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 #pragma once 8 9 #include <KDAV/Enums> 10 11 #include <QWizard> 12 #include <QWizardPage> 13 14 class KJob; 15 class QLineEdit; 16 class QTextBrowser; 17 18 class QLabel; 19 class QButtonGroup; 20 class QCheckBox; 21 class QComboBox; 22 class QFormLayout; 23 class QRadioButton; 24 class KPasswordLineEdit; 25 26 class SetupWizard : public QWizard 27 { 28 Q_OBJECT 29 30 public: 31 explicit SetupWizard(QWidget *parent = nullptr); 32 33 enum { 34 W_CredentialsPage, 35 W_PredefinedProviderPage, 36 W_ServerTypePage, 37 W_ConnectionPage, 38 W_CheckPage, 39 }; 40 41 class Url 42 { 43 public: 44 using List = QVector<Url>; 45 46 KDAV::Protocol protocol; 47 QString url; 48 QString userName; 49 QString password; 50 }; 51 52 Url::List urls() const; 53 QString displayName() const; 54 }; 55 56 class PredefinedProviderPage : public QWizardPage 57 { 58 public: 59 explicit PredefinedProviderPage(QWidget *parent = nullptr); 60 61 void initializePage() override; 62 int nextId() const override; 63 64 private: 65 QLabel *mLabel = nullptr; 66 QButtonGroup *mProviderGroup = nullptr; 67 QRadioButton *mUseProvider = nullptr; 68 QRadioButton *mDontUseProvider = nullptr; 69 }; 70 71 class CredentialsPage : public QWizardPage 72 { 73 public: 74 explicit CredentialsPage(QWidget *parent = nullptr); 75 int nextId() const override; 76 77 private: 78 QLineEdit *mUserName = nullptr; 79 KPasswordLineEdit *mPassword = nullptr; 80 }; 81 82 class ServerTypePage : public QWizardPage 83 { 84 Q_OBJECT 85 86 public: 87 explicit ServerTypePage(QWidget *parent = nullptr); 88 89 bool validatePage() override; 90 91 private: 92 void manualConfigToggled(bool toggled); 93 QButtonGroup *mServerGroup = nullptr; 94 QComboBox *mProvidersCombo = nullptr; 95 }; 96 97 class ConnectionPage : public QWizardPage 98 { 99 Q_OBJECT 100 101 public: 102 explicit ConnectionPage(QWidget *parent = nullptr); 103 104 void initializePage() override; 105 void cleanupPage() override; 106 107 private: 108 void urlElementChanged(); 109 QFormLayout *mLayout = nullptr; 110 QLineEdit *mHost = nullptr; 111 QLineEdit *mPath = nullptr; 112 QCheckBox *mUseSecureConnection = nullptr; 113 QFormLayout *mPreviewLayout = nullptr; 114 QLabel *mCalDavUrlLabel = nullptr; 115 QLabel *mCalDavUrlPreview = nullptr; 116 QLabel *mCardDavUrlLabel = nullptr; 117 QLabel *mCardDavUrlPreview = nullptr; 118 QLabel *mGroupDavUrlLabel = nullptr; 119 QLabel *mGroupDavUrlPreview = nullptr; 120 }; 121 122 class CheckPage : public QWizardPage 123 { 124 Q_OBJECT 125 126 public: 127 explicit CheckPage(QWidget *parent = nullptr); 128 129 private: 130 void checkConnection(); 131 void onFetchDone(KJob *); 132 QTextBrowser *mStatusLabel = nullptr; 133 }; 134 135