Line data Source code
1 : #pragma once
2 :
3 : #include <QDialog>
4 :
5 : class QLabel;
6 : class QPushButton;
7 : class QCheckBox;
8 : class QLineEdit;
9 : class QListWidget;
10 : class MailCache;
11 : class FolderPredictor;
12 :
13 : // T-134: Dialog for editing folder properties.
14 : // T-199b: Uses MDI webfont icon picker (QListWidget, searchable, 7448 icons).
15 : class FolderPropertiesDialog : public QDialog {
16 285 : Q_OBJECT
17 : friend class TestSprint55Dialogs;
18 :
19 : public:
20 : struct Options {
21 : QString folderPath;
22 : QString currentIcon; // MDI icon name, empty = default
23 : QString currentColor; // hex color, empty = no tint
24 : bool isSubscribed = true;
25 : bool isHidden = false;
26 : };
27 :
28 : explicit FolderPropertiesDialog(const Options &opts, MailCache *cache,
29 : FolderPredictor *predictor,
30 : const QString &account,
31 : QWidget *parent = nullptr);
32 :
33 3 : QString selectedIcon() const { return m_selectedIcon; }
34 3 : QString selectedColor() const { return m_selectedColor; }
35 : bool isSubscribed() const;
36 : bool isHidden() const;
37 :
38 : private slots:
39 : void filterIcons(const QString &text);
40 :
41 : private:
42 : // T-304: Runtime language switching
43 : void retranslateUi();
44 :
45 : protected:
46 : void changeEvent(QEvent *event) override;
47 :
48 : void buildAppearanceSection();
49 : void buildSubscriptionSection();
50 : void buildCacheSection();
51 : void buildStatsSection(); // T-288
52 : void updateColorPreview();
53 : void refreshCacheLabels();
54 : void refreshStatsLabels(); // T-288
55 :
56 : Options m_opts;
57 : MailCache *m_cache;
58 : FolderPredictor *m_predictor; // T-288
59 : QString m_account;
60 :
61 : // Appearance
62 : QString m_selectedIcon;
63 : QString m_selectedColor;
64 :
65 : QLineEdit *m_iconFilter = nullptr;
66 : QListWidget *m_iconList = nullptr;
67 : QPushButton *m_colorBtn = nullptr;
68 :
69 : // Subscription
70 : QCheckBox *m_subscribedCheck = nullptr;
71 : QCheckBox *m_hiddenCheck = nullptr;
72 :
73 : // Cache
74 : QLabel *m_headerCountLabel = nullptr;
75 : QLabel *m_bodyCountLabel = nullptr;
76 :
77 : // T-288: Statistics
78 : QLabel *m_diskUsageLabel = nullptr;
79 : QLabel *m_serverSizeLabel = nullptr;
80 : QLabel *m_avgSizeLabel = nullptr;
81 : QLabel *m_predictorDocsLabel = nullptr;
82 : QLabel *m_predictorTokensLabel = nullptr;
83 : };
|