digiKam
Loading...
Searching...
No Matches
gpsitemsortproxymodel.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 : 2010-03-21
7 * Description : A model to hold GPS information about items.
8 *
9 * SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2010 by Michael G. Hansen <mike at mghansen dot de>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QItemSelectionModel>
21#include <QSortFilterProxyModel>
22#include <QAbstractItemModel>
23#include <QModelIndex>
24#include <QItemSelection>
25
26// Local includes
27
28#include "gpsitemmodel.h"
29
30namespace Digikam
31{
32
33class GPSItemSortProxyModel : public QSortFilterProxyModel
34{
35 Q_OBJECT
36
37public:
38
39 explicit GPSItemSortProxyModel(GPSItemModel* const imageModel,
40 QItemSelectionModel* const sourceSelectionModel);
41 ~GPSItemSortProxyModel() override;
42
43 QItemSelectionModel* mappedSelectionModel() const;
44
45protected:
46
47 bool lessThan(const QModelIndex& left,
48 const QModelIndex& right) const override;
49
50private:
51
52 class Private;
53 Private* const d = nullptr;
54};
55
56// ----------------------------------------------------------------------------------------------------------
57
58class GPSLinkItemSelectionModelPrivate;
59
69class GPSLinkItemSelectionModel : public QItemSelectionModel
70{
71 Q_OBJECT
72 Q_PROPERTY(QItemSelectionModel* linkedItemSelectionModel
76
77public:
78
79 GPSLinkItemSelectionModel(QAbstractItemModel* const targetModel,
80 QItemSelectionModel* const linkedItemSelectionModel,
81 QObject* const parent = nullptr);
82 explicit GPSLinkItemSelectionModel(QObject* const parent = nullptr);
84
85 QItemSelectionModel* linkedItemSelectionModel() const;
86 void setLinkedItemSelectionModel(QItemSelectionModel* const selectionModel);
87
88 void select(const QModelIndex& index, QItemSelectionModel::SelectionFlags command) override;
89 void select(const QItemSelection& selection, QItemSelectionModel::SelectionFlags command) override;
90
91Q_SIGNALS:
92
94
95protected:
96
97 GPSLinkItemSelectionModelPrivate* const d_ptr;
98
99private:
100
101 Q_DECLARE_PRIVATE(GPSLinkItemSelectionModel)
102 Q_PRIVATE_SLOT(d_func(), void sourceSelectionChanged(const QItemSelection& selected,
103 const QItemSelection& deselected))
104 Q_PRIVATE_SLOT(d_func(), void sourceCurrentChanged(const QModelIndex& current))
105 Q_PRIVATE_SLOT(d_func(), void slotCurrentChanged(const QModelIndex& current))
106};
107
108// ----------------------------------------------------------------------------------------------------------
109
110class GPSModelIndexProxyMapperPrivate;
111
129class GPSModelIndexProxyMapper : public QObject
130{
131 Q_OBJECT
132
138 Q_PROPERTY(bool isConnected
139 READ isConnected
140 NOTIFY isConnectedChanged)
141
142public:
143
144 explicit GPSModelIndexProxyMapper(const QAbstractItemModel* const leftModel,
145 const QAbstractItemModel* const rightModel,
146 QObject* const parent = nullptr);
147 ~GPSModelIndexProxyMapper() override;
148
152 QModelIndex mapLeftToRight(const QModelIndex& index) const;
153
157 QModelIndex mapRightToLeft(const QModelIndex& index) const;
158
162 QItemSelection mapSelectionLeftToRight(const QItemSelection& selection) const;
163
167 QItemSelection mapSelectionRightToLeft(const QItemSelection& selection) const;
168
169 bool isConnected() const;
170
171Q_SIGNALS:
172
174
175private:
176
177 Q_DECLARE_PRIVATE(GPSModelIndexProxyMapper)
178 GPSModelIndexProxyMapperPrivate* const d_ptr;
179};
180
181} // namespace Digikam
Definition gpsitemmodel.h:33
Definition gpsitemsortproxymodel.h:34
~GPSItemSortProxyModel() override
Definition gpsitemsortproxymodel.cpp:51
QItemSelectionModel * mappedSelectionModel() const
Definition gpsitemsortproxymodel.cpp:75
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override
Definition gpsitemsortproxymodel.cpp:56
Definition gpsitemsortproxymodel.h:70
~GPSLinkItemSelectionModel() override
Definition gpsitemsortproxymodel.cpp:167
void select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command) override
Definition gpsitemsortproxymodel.cpp:210
GPSLinkItemSelectionModelPrivate *const d_ptr
Definition gpsitemsortproxymodel.h:97
QItemSelectionModel * linkedItemSelectionModel
Definition gpsitemsortproxymodel.h:75
void setLinkedItemSelectionModel(QItemSelectionModel *const selectionModel)
Definition gpsitemsortproxymodel.cpp:179
Definition gpsitemsortproxymodel.h:130
QModelIndex mapLeftToRight(const QModelIndex &index) const
Definition gpsitemsortproxymodel.cpp:470
QItemSelection mapSelectionRightToLeft(const QItemSelection &selection) const
Definition gpsitemsortproxymodel.cpp:559
QModelIndex mapRightToLeft(const QModelIndex &index) const
Definition gpsitemsortproxymodel.cpp:482
bool isConnected
Definition gpsitemsortproxymodel.h:140
QItemSelection mapSelectionLeftToRight(const QItemSelection &selection) const
Definition gpsitemsortproxymodel.cpp:494
~GPSModelIndexProxyMapper() override
Definition gpsitemsortproxymodel.cpp:465
Definition datefolderview.cpp:34