digiKam
Loading...
Searching...
No Matches
importfiltermodel.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2012-21-06
7 * Description : Qt filter model for import items
8 *
9 * SPDX-FileCopyrightText: 2012 by Islam Wazery <wazery at ubuntu dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QObject>
20
21// Local includes
22
24#include "camitemsortsettings.h"
25#include "importimagemodel.h"
26
27namespace Digikam
28{
29class Filter;
30class ImportFilterModel;
31
33{
34 Q_OBJECT
35
36public:
37
38 explicit ImportSortFilterModel(QObject* const parent = nullptr);
39 ~ImportSortFilterModel() override = default;
40
41 void setSourceImportModel(ImportItemModel* const sourceModel);
43
44 void setSourceFilterModel(ImportSortFilterModel* const sourceModel);
46
51 QModelIndex mapToSourceImportModel(const QModelIndex& proxyIndex) const;
52 QModelIndex mapFromSourceImportModel(const QModelIndex& importModelIndex) const;
53 QModelIndex mapFromDirectSourceToSourceImportModel(const QModelIndex& sourceModelIndex) const;
54
55 QList<QModelIndex> mapListToSource(const QList<QModelIndex>& indexes) const;
56 QList<QModelIndex> mapListFromSource(const QList<QModelIndex>& sourceIndexes) const;
57
58 CamItemInfo camItemInfo(const QModelIndex& index) const;
59 qlonglong camItemId(const QModelIndex& index) const;
60 QList<CamItemInfo> camItemInfos(const QList<QModelIndex>& indexes) const;
61 QList<qlonglong> camItemIds(const QList<QModelIndex>& indexes) const;
62
63 QModelIndex indexForPath(const QString& filePath) const;
64 QModelIndex indexForCamItemInfo(const CamItemInfo& info) const;
65 QModelIndex indexForCamItemId(qlonglong id) const;
66
71 QList<CamItemInfo> camItemInfosSorted() const;
72
74 virtual ImportFilterModel* importFilterModel() const;
75
76protected:
77
78 void setSourceModel(QAbstractItemModel* sourceModel) override;
79
81 virtual void setDirectSourceImportModel(ImportItemModel* const sourceModel);
82
83protected:
84
86};
87
88// ------------------------------------------------------------------------------------------
89
91{
92 Q_OBJECT
93
94public:
95
114
115public:
116
117 explicit ImportFilterModel(QObject* const parent = nullptr);
118 ~ImportFilterModel() override;
119
121
123
125 void setSendCamItemInfoSignals(bool sendSignals);
126
127 // TODO: Implement grouping in import tool.
128/*
129 bool isGroupOpen(qlonglong group) const;
130 bool isAllGroupsOpen() const;
131*/
132 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
133 ImportFilterModel* importFilterModel() const override;
134
135public Q_SLOTS:
136
140 void setStringTypeNatural(bool natural);
141 void setFilter(Filter*);
142 void setCameraThumbsController(CameraThumbsCtrl* const thumbsCtrl);
143
144 // TODO: Implement grouping in import tool.
145/*
146 void setGroupOpen(qlonglong group, bool open);
147 void toggleGroupOpen(qlonglong group);
148 void setAllGroupsOpen(bool open);
149*/
154 // TODO: Implement filtering in import tool.
155/*
156 virtual void setItemFilterSettings(const ItemFilterSettings& settings);
157*/
162 // TODO: Implement filtering in import tool.
163/*
164 virtual void setItemSortSettings(const ItemSortSettings& settings);
165*/
166
167Q_SIGNALS:
168
171 void camItemInfosAdded(const QList<CamItemInfo>& infos);
172 void camItemInfosAboutToBeRemoved(const QList<CamItemInfo>& infos);
173
174protected Q_SLOTS:
175
176 void slotRowsInserted(const QModelIndex& parent, int start, int end);
177 void slotRowsAboutToBeRemoved(const QModelIndex& parent, int start, int end);
178 void slotProcessAdded(const QList<CamItemInfo>&);
179
180public:
181
182 // Declared as public because of use in sub-classes.
183 class ImportFilterModelPrivate;
184
185protected:
186
187 ImportFilterModelPrivate* const d_ptr;
188
189protected:
190
191 void setDirectSourceImportModel(ImportItemModel* const sourceModel) override;
192
193 bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const override;
194
195 int compareCategories(const QModelIndex& left, const QModelIndex& right) const override;
196 bool subSortLessThan(const QModelIndex& left, const QModelIndex& right) const override;
197
203 virtual int compareInfosCategories(const CamItemInfo& left, const CamItemInfo& right) const;
204
208 virtual bool infosLessThan(const CamItemInfo& left, const CamItemInfo& right) const;
209
213 virtual QString categoryIdentifier(const CamItemInfo& info) const;
214
215private:
216
217 Q_DECLARE_PRIVATE(ImportFilterModel)
218};
219
220// -----------------------------------------------------------------------------------------------------
221
223{
224 Q_OBJECT
225
226public:
227
228 explicit NoDuplicatesImportFilterModel(QObject* const parent = nullptr);
229
230protected:
231
232 bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const override;
233};
234
235} // namespace Digikam
236
237Q_DECLARE_METATYPE(Digikam::ImportFilterModel*)
Definition camiteminfo.h:39
Definition camitemsortsettings.h:32
CategorizationMode
Definition camitemsortsettings.h:43
SortOrder
Definition camitemsortsettings.h:36
SortRole
Definition camitemsortsettings.h:51
Definition camerathumbsctrl.h:38
Definition dcategorizedsortfilterproxymodel.h:43
Definition importfilter.h:34
Definition importfiltermodel.h:91
void setCamItemSortSettings(const CamItemSortSettings &sorter)
Definition importfiltermodel.cpp:327
void setFilter(Filter *)
Definition importfiltermodel.cpp:368
void camItemInfosAdded(const QList< CamItemInfo > &infos)
void setCameraThumbsController(CameraThumbsCtrl *const thumbsCtrl)
Definition importfiltermodel.cpp:376
void slotRowsInserted(const QModelIndex &parent, int start, int end)
Definition importfiltermodel.cpp:403
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition importfiltermodel.cpp:275
void setSortRole(CamItemSortSettings::SortRole role)
Definition importfiltermodel.cpp:344
virtual QString categoryIdentifier(const CamItemInfo &info) const
Definition importfiltermodel.cpp:527
ImportFilterModel * importFilterModel() const override
Returns this, any chained ImportFilterModel, or 0.
Definition importfiltermodel.cpp:320
void setCategorizationMode(CamItemSortSettings::CategorizationMode mode)
Definition importfiltermodel.cpp:336
virtual int compareInfosCategories(const CamItemInfo &left, const CamItemInfo &right) const
Definition importfiltermodel.cpp:513
void slotProcessAdded(const QList< CamItemInfo > &)
Definition importfiltermodel.cpp:466
ImportFilterModelPrivate *const d_ptr
Definition importfiltermodel.h:187
bool subSortLessThan(const QModelIndex &left, const QModelIndex &right) const override
Definition importfiltermodel.cpp:488
CamItemSortSettings camItemSortSettings() const
void slotRowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
Definition importfiltermodel.cpp:415
void camItemInfosAboutToBeRemoved(const QList< CamItemInfo > &infos)
ImportFilterModelRoles
Definition importfiltermodel.h:97
@ CategoryFormatRole
Returns the format of the index which is used for category.
Definition importfiltermodel.h:105
@ ImportFilterModelPointerRole
Returns true if the given camera item is a group leader, and the group is opened.
Definition importfiltermodel.h:112
@ SortOrderRole
Returns the current sort order.
Definition importfiltermodel.h:102
@ CategorizationModeRole
Returns the current categorization mode.
Definition importfiltermodel.h:99
@ CategoryDateRole
Returns the date of the index which is used for category.
Definition importfiltermodel.h:108
void setSendCamItemInfoSignals(bool sendSignals)
Enables sending camItemInfosAdded and camItemInfosAboutToBeRemoved.
Definition importfiltermodel.cpp:383
int compareCategories(const QModelIndex &left, const QModelIndex &right) const override
Definition importfiltermodel.cpp:471
~ImportFilterModel() override
Definition importfiltermodel.cpp:268
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override
Definition importfiltermodel.cpp:560
void setSortOrder(CamItemSortSettings::SortOrder order)
Definition importfiltermodel.cpp:352
void setStringTypeNatural(bool natural)
Definition importfiltermodel.cpp:360
virtual bool infosLessThan(const CamItemInfo &left, const CamItemInfo &right) const
Definition importfiltermodel.cpp:520
void setDirectSourceImportModel(ImportItemModel *const sourceModel) override
Reimplement if needed. Called only when model shall be set as (direct) sourceModel.
Definition importfiltermodel.cpp:427
Definition importimagemodel.h:33
@ FilterModelRoles
Definition importimagemodel.h:61
Definition importfiltermodel.h:33
void setSourceImportModel(ImportItemModel *const sourceModel)
Definition importfiltermodel.cpp:30
QList< QModelIndex > mapListToSource(const QList< QModelIndex > &indexes) const
Definition importfiltermodel.cpp:118
QModelIndex indexForPath(const QString &filePath) const
Definition importfiltermodel.cpp:176
qlonglong camItemId(const QModelIndex &index) const
Definition importfiltermodel.cpp:147
CamItemInfo camItemInfo(const QModelIndex &index) const
Definition importfiltermodel.cpp:142
QModelIndex indexForCamItemId(qlonglong id) const
Definition importfiltermodel.cpp:188
ImportItemModel * sourceImportModel() const
Definition importfiltermodel.cpp:42
QModelIndex mapToSourceImportModel(const QModelIndex &proxyIndex) const
Definition importfiltermodel.cpp:73
QList< CamItemInfo > camItemInfos(const QList< QModelIndex > &indexes) const
Definition importfiltermodel.cpp:152
void setSourceModel(QAbstractItemModel *sourceModel) override
Definition importfiltermodel.cpp:216
QList< QModelIndex > mapListFromSource(const QList< QModelIndex > &sourceIndexes) const
Definition importfiltermodel.cpp:130
QList< CamItemInfo > camItemInfosSorted() const
Definition importfiltermodel.cpp:193
QModelIndex mapFromSourceImportModel(const QModelIndex &importModelIndex) const
Definition importfiltermodel.cpp:88
ImportSortFilterModel * m_chainedModel
Definition importfiltermodel.h:85
ImportSortFilterModel * sourceFilterModel() const
Definition importfiltermodel.cpp:68
QModelIndex indexForCamItemInfo(const CamItemInfo &info) const
Definition importfiltermodel.cpp:183
virtual void setDirectSourceImportModel(ImportItemModel *const sourceModel)
Reimplement if needed. Called only when model shall be set as (direct) sourceModel.
Definition importfiltermodel.cpp:221
QModelIndex mapFromDirectSourceToSourceImportModel(const QModelIndex &sourceModelIndex) const
Definition importfiltermodel.cpp:103
QList< qlonglong > camItemIds(const QList< QModelIndex > &indexes) const
Definition importfiltermodel.cpp:164
virtual ImportFilterModel * importFilterModel() const
Returns this, any chained ImportFilterModel, or 0.
Definition importfiltermodel.cpp:206
~ImportSortFilterModel() override=default
void setSourceFilterModel(ImportSortFilterModel *const sourceModel)
Definition importfiltermodel.cpp:52
Definition importfiltermodel.h:223
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override
Definition importfiltermodel.cpp:587
Definition datefolderview.cpp:34