File indexing completed on 2024-04-28 15:39:06

0001 // SPDX-FileCopyrightText: 2020-2022 Tobias Leupold <tl at stonemx dot de>
0002 //
0003 // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 
0005 #ifndef IMAGESLISTFILTER_H
0006 #define IMAGESLISTFILTER_H
0007 
0008 // Local includes
0009 #include "KGeoTag.h"
0010 
0011 // Qt includes
0012 #include <QSortFilterProxyModel>
0013 
0014 // Local classes
0015 class ImagesModel;
0016 
0017 class ImagesListFilter : public QSortFilterProxyModel
0018 {
0019     Q_OBJECT
0020 
0021 public:
0022     explicit ImagesListFilter(QObject *parent, KGeoTag::ImagesListType type);
0023     void setSourceModel(QAbstractItemModel *sourceModel) override;
0024     Qt::DropActions supportedDropActions() const override;
0025     Qt::ItemFlags flags(const QModelIndex &index) const override;
0026     bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int, int,
0027                          const QModelIndex &) const override;
0028     bool dropMimeData(const QMimeData *data, Qt::DropAction action, int, int,
0029                       const QModelIndex &) override;
0030     void setListType(KGeoTag::ImagesListType type);
0031 
0032 Q_SIGNALS:
0033     void requestAddingImages(const QVector<QString> &paths);
0034     void requestRemoveCoordinates(const QVector<QString> &paths);
0035 
0036 protected:
0037     bool filterAcceptsRow(int sourceRow, const QModelIndex &) const override;
0038 
0039 private: // Variables
0040     KGeoTag::ImagesListType m_listType;
0041     ImagesModel *m_imagesModel;
0042 
0043 };
0044 
0045 #endif // IMAGESLISTFILTER_H