1 /* 2 SPDX-FileCopyrightText: 2013-2021 Laurent Montel <montel@kde.org> 3 4 SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 #pragma once 7 8 #include <Akonadi/Collection> 9 #include <QIdentityProxyModel> 10 #include <QModelIndex> 11 #include <QWidget> 12 class QSortFilterProxyModel; 13 namespace Akonadi 14 { 15 class EntityTreeModel; 16 class ChangeRecorder; 17 class CollectionRequester; 18 class EntityTreeView; 19 } 20 class KJob; 21 class QPushButton; 22 23 class KNoteCollectionDisplayProxyModel : public QIdentityProxyModel 24 { 25 Q_OBJECT 26 public: 27 explicit KNoteCollectionDisplayProxyModel(QObject *parent = nullptr); 28 29 QVariant data(const QModelIndex &index, int role) const override; 30 31 bool setData(const QModelIndex &index, const QVariant &_data, int role) override; 32 Qt::ItemFlags flags(const QModelIndex &index) const override; 33 34 QHash<Akonadi::Collection, bool> displayCollection() const; 35 36 private: 37 QHash<Akonadi::Collection, bool> mDisplayCollection; 38 }; 39 40 class KNoteCollectionConfigWidget : public QWidget 41 { 42 Q_OBJECT 43 public: 44 explicit KNoteCollectionConfigWidget(QWidget *parent = nullptr); 45 ~KNoteCollectionConfigWidget() override; 46 47 void updateCollectionsRecursive(); 48 49 void save(); 50 Q_SIGNALS: 51 void emitChanged(bool); 52 53 private Q_SLOTS: 54 void slotSelectAllCollections(); 55 void slotUnselectAllCollections(); 56 void slotCollectionsInserted(); 57 void slotModifyJobDone(KJob *job); 58 void slotSetCollectionFilter(const QString &); 59 void slotDataChanged(); 60 void slotRenameCollection(); 61 void slotUpdateButtons(); 62 void slotCollectionModifyFinished(KJob *); 63 64 private: 65 void forceStatus(const QModelIndex &parent, bool status); 66 Akonadi::EntityTreeView *mFolderView = nullptr; 67 Akonadi::EntityTreeModel *mModel = nullptr; 68 Akonadi::ChangeRecorder *mChangeRecorder = nullptr; 69 QSortFilterProxyModel *mCollectionFilter = nullptr; 70 Akonadi::CollectionRequester *mDefaultSaveFolder = nullptr; 71 QPushButton *mRenameCollection = nullptr; 72 KNoteCollectionDisplayProxyModel *mDisplayNotifierProxyModel = nullptr; 73 }; 74 75