Line data Source code
1 : #pragma once
2 :
3 : #include <QWizard>
4 :
5 : class AccountFormWidget;
6 : class QLabel;
7 : class QProgressBar;
8 : class QPushButton;
9 :
10 : class ImapService;
11 : struct AccountConfig;
12 :
13 : // First-run wizard for setting up the initial email account.
14 : // Uses AccountFormWidget (shared with SettingsDialog) for the account form.
15 : class SetupWizard : public QWizard {
16 11 : Q_OBJECT
17 :
18 : public:
19 : explicit SetupWizard(QWidget *parent = nullptr);
20 :
21 : // Override config dir for testing
22 : void setConfigDir(const QString &dir);
23 :
24 : // Returns the configured account after wizard completes
25 : AccountConfig configuredAccount() const;
26 :
27 : private:
28 : QString m_configDir;
29 :
30 : // T-304: Runtime language switching
31 : void retranslateUi();
32 :
33 : protected:
34 : void changeEvent(QEvent *event) override;
35 : };
36 :
37 : // Page 1: Welcome message
38 : class WelcomePage : public QWizardPage {
39 20 : Q_OBJECT
40 :
41 : public:
42 : explicit WelcomePage(QWidget *parent = nullptr);
43 : };
44 :
45 : // Page 2: Account form (embeds AccountFormWidget)
46 : class AccountPage : public QWizardPage {
47 21 : Q_OBJECT
48 :
49 : public:
50 : explicit AccountPage(QWidget *parent = nullptr);
51 :
52 : bool validatePage() override;
53 :
54 11 : AccountFormWidget *form() const { return m_form; }
55 :
56 : private:
57 : AccountFormWidget *m_form = nullptr;
58 : };
59 :
60 : // Page 3: Connection test + summary
61 : class TestPage : public QWizardPage {
62 30 : Q_OBJECT
63 :
64 : public:
65 : explicit TestPage(QWidget *parent = nullptr);
66 :
67 : void initializePage() override;
68 : bool isComplete() const override;
69 :
70 : private:
71 : void runTest();
72 : void onTestSuccess();
73 : void onTestFailed(const QString &error);
74 :
75 : QLabel *m_summaryLabel = nullptr;
76 : QLabel *m_statusLabel = nullptr;
77 : QProgressBar *m_progressBar = nullptr;
78 : QPushButton *m_retryButton = nullptr;
79 :
80 : ImapService *m_testService = nullptr;
81 : bool m_testComplete = false;
82 : };
|