1 /* SPDX-FileCopyrightText: 2020 Tobias Leupold <tobias.leupold@gmx.de>
2 
3    SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-KDE-Accepted-GPL
4 */
5 
6 #ifndef IMAGESLISTFILTER_H
7 #define IMAGESLISTFILTER_H
8 
9 // Local includes
10 #include "KGeoTag.h"
11 
12 // Qt includes
13 #include <QSortFilterProxyModel>
14 
15 // Local classes
16 class ImagesModel;
17 
18 class ImagesListFilter : public QSortFilterProxyModel
19 {
20     Q_OBJECT
21 
22 public:
23     explicit ImagesListFilter(QObject *parent, KGeoTag::ImagesListType type);
24     void setSourceModel(QAbstractItemModel *sourceModel) override;
25     Qt::DropActions supportedDropActions() const override;
26     Qt::ItemFlags flags(const QModelIndex &index) const override;
27     bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int, int,
28                          const QModelIndex &) const override;
29     bool dropMimeData(const QMimeData *data, Qt::DropAction action, int, int,
30                       const QModelIndex &) override;
31     void setListType(KGeoTag::ImagesListType type);
32 
33 signals:
34     void requestAddingImages(const QVector<QString> &paths);
35     void requestRemoveCoordinates(const QVector<QString> &paths);
36 
37 protected:
38     bool filterAcceptsRow(int sourceRow, const QModelIndex &) const override;
39 
40 private: // Variables
41     KGeoTag::ImagesListType m_listType;
42     ImagesModel *m_imagesModel;
43 
44 };
45 
46 #endif // IMAGESLISTFILTER_H
47