digiKam
Loading...
Searching...
No Matches
geomodelhelper.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 : 2009-12-01
7 * Description : Helper class to access models
8 *
9 * SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2009-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 <QPixmap>
22#include <QAbstractItemModel>
23#include <QPersistentModelIndex>
24#include <QPoint>
25#include <QString>
26
27// Local includes
28
29#include "geoifacetypes.h"
30#include "geocoordinates.h"
31#include "digikam_export.h"
32
33namespace Digikam
34{
35
36class DIGIKAM_EXPORT GeoModelHelper : public QObject
37{
38 Q_OBJECT
39
40public:
41
43 {
44 FlagNull = 0,
45 FlagVisible = 1,
46 FlagMovable = 2,
47 FlagSnaps = 4
48 };
49
50 Q_DECLARE_FLAGS(PropertyFlags, PropertyFlag)
51
52public:
53
54 explicit GeoModelHelper(QObject* const parent = nullptr);
55 ~GeoModelHelper() override = default;
56
57 void snapItemsTo(const QModelIndex& targetIndex,
58 const QList<QPersistentModelIndex>& snappedIndices);
59
61 virtual QAbstractItemModel* model() const = 0;
62 virtual QItemSelectionModel* selectionModel() const = 0;
63 virtual bool itemCoordinates(const QModelIndex& index,
64 GeoCoordinates* const coordinates) const = 0;
65 virtual PropertyFlags modelFlags() const;
66
68 virtual bool itemIcon(const QModelIndex& index,
69 QPoint* const offset,
70 QSize* const size,
71 QPixmap* const pixmap,
72 QUrl* const url) const;
73 virtual PropertyFlags itemFlags(const QModelIndex& index) const;
74 virtual void snapItemsTo(const QModelIndex& targetIndex,
75 const QList<QModelIndex>& snappedIndices);
76
78 virtual QPixmap pixmapFromRepresentativeIndex(const QPersistentModelIndex& index,
79 const QSize& size);
80 virtual QPersistentModelIndex bestRepresentativeIndexFromList(const QList<QPersistentModelIndex>& list,
81 const int sortKey);
82
83 virtual void onIndicesClicked(const QList<QPersistentModelIndex>& clickedIndices);
84 virtual void onIndicesMoved(const QList<QPersistentModelIndex>& movedIndices,
85 const GeoCoordinates& targetCoordinates,
86 const QPersistentModelIndex& targetSnapIndex);
87
88Q_SIGNALS:
89
91 void signalThumbnailAvailableForIndex(const QPersistentModelIndex& index,
92 const QPixmap& pixmap);
94};
95
96} // namespace Digikam
97
98Q_DECLARE_OPERATORS_FOR_FLAGS(Digikam::GeoModelHelper::PropertyFlags)
Definition geocoordinates.h:44
Helper class to access data in models.
Definition geomodelhelper.h:37
void signalThumbnailAvailableForIndex(const QPersistentModelIndex &index, const QPixmap &pixmap)
PropertyFlag
Definition geomodelhelper.h:43
virtual bool itemCoordinates(const QModelIndex &index, GeoCoordinates *const coordinates) const =0
virtual QAbstractItemModel * model() const =0
these are necessary for grouped and ungrouped models
void signalModelChangedDrastically()
virtual QItemSelectionModel * selectionModel() const =0
~GeoModelHelper() override=default
Definition datefolderview.cpp:34