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