1 /*
2   This file is part of KMail, the KDE mail client.
3   SPDX-FileCopyrightText: 2005 Till Adam <adam@kde.org>
4   SPDX-FileCopyrightText: 2011-2021 Laurent Montel <montel@kde.org>
5   SPDX-FileCopyrightText: 2012 Jonathan Marten <jjm@keelhaul.me.uk>
6 
7   SPDX-License-Identifier: GPL-2.0-only
8 */
9 
10 #pragma once
11 
12 #include <MailCommon/FolderSettings>
13 #include <MessageCore/MailingList>
14 
15 #include <Akonadi/Collection>
16 #include <Akonadi/CollectionPropertiesPage>
17 
18 class QCheckBox;
19 class QPushButton;
20 
21 template<typename T> class QSharedPointer;
22 
23 class QComboBox;
24 class QPushButton;
25 class KJob;
26 class KEditListWidget;
27 class KSqueezedTextLabel;
28 
29 class CollectionMailingListPage : public Akonadi::CollectionPropertiesPage
30 {
31     Q_OBJECT
32 public:
33     explicit CollectionMailingListPage(QWidget *parent = nullptr);
34     ~CollectionMailingListPage() override;
35 
36     void load(const Akonadi::Collection &col) override;
37     void save(Akonadi::Collection &col) override;
38 
39     Q_REQUIRED_RESULT bool canHandle(const Akonadi::Collection &col) const override;
40 
41 private:
42     void slotFetchDone(KJob *job);
43     void init(const Akonadi::Collection &);
44     /*
45      * Detects mailing-list related stuff
46      */
47     void slotDetectMailingList();
48     void slotInvokeHandler();
49     void slotMLHandling(int element);
50     void slotHoldsML(bool holdsML);
51     void slotAddressChanged(int addr);
52     void slotConfigChanged();
53     void fillMLFromWidgets();
54     void fillEditBox();
55 
56     Akonadi::Collection mCurrentCollection;
57     QSharedPointer<MailCommon::FolderSettings> mFolder;
58 
59     MailingList mMailingList;
60     QCheckBox *mHoldsMailingList = nullptr;
61     QComboBox *mMLHandlerCombo = nullptr;
62     QPushButton *mDetectButton = nullptr;
63     QComboBox *mAddressCombo = nullptr;
64     KEditListWidget *mEditList = nullptr;
65     KSqueezedTextLabel *mMLId = nullptr;
66     QPushButton *mHandleButton = nullptr;
67     int mLastItem = 0;
68     bool changed = false;
69 };
70 
71 AKONADI_COLLECTION_PROPERTIES_PAGE_FACTORY(CollectionMailingListPageFactory, CollectionMailingListPage)
72 
73