digiKam
Loading...
Searching...
No Matches
gpsmarkertiler.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-07-20
7 * Description : GPS search marker tiler
8 *
9 * SPDX-FileCopyrightText: 2010 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2010 by Gabriel Voicu <ping dot gabi at gmail dot com>
11 * SPDX-FileCopyrightText: 2010-2011 by Michael G. Hansen <mike at mghansen dot de>
12 * SPDX-FileCopyrightText: 2015 by Mohamed_Anwer <m_dot_anwer at gmx dot com>
13 *
14 * SPDX-License-Identifier: GPL-2.0-or-later
15 *
16 * ============================================================ */
17
18#pragma once
19
20// Qt includes
21
22#include <QByteArray>
23#include <QMetaType>
24#include <QItemSelectionModel>
25
26// Local includes
27
28#include "abstractmarkertiler.h"
29#include "mapwidget.h"
30#include "digikam_export.h"
31#include "itemposition.h"
32#include "coredbchangesets.h"
33#include "itemlister.h"
34#include "coredbaccess.h"
35#include "coredb.h"
36#include "iteminfo.h"
37#include "thumbnailloadthread.h"
38#include "thumbsdbaccess.h"
39#include "thumbsdb.h"
40#include "coredbwatch.h"
41#include "coredbfields.h"
42#include "itemalbummodel.h"
43#include "itemfiltermodel.h"
44
45namespace Digikam
46{
47
48class GPSItemInfo;
49
51{
52 Q_OBJECT
53
54public:
55
56 class MyTile;
57
58 explicit GPSMarkerTiler(QObject* const parent,
59 ItemFilterModel* const imageFilterModel,
60 QItemSelectionModel* const selectionModel);
61 ~GPSMarkerTiler() override;
62
63 Tile* tileNew() override;
64 void prepareTiles(const GeoCoordinates& upperLeft, const GeoCoordinates& lowerRight, int level) override;
65 void regenerateTiles() override;
66 AbstractMarkerTiler::Tile* getTile(const TileIndex& tileIndex, const bool stopIfEmpty) override;
67 int getTileMarkerCount(const TileIndex& tileIndex) override;
68 int getTileSelectedCount(const TileIndex& tileIndex) override;
69
70 QVariant getTileRepresentativeMarker(const TileIndex& tileIndex, const int sortKey) override;
71 QVariant bestRepresentativeIndexFromList(const QList<QVariant>& indices, const int sortKey) override;
72 QPixmap pixmapFromRepresentativeIndex(const QVariant& index, const QSize& size) override;
73 bool indicesEqual(const QVariant& a, const QVariant& b) const override;
74 GeoGroupState getTileGroupState(const TileIndex& tileIndex) override;
75 GeoGroupState getGlobalGroupState() override;
76
77 void onIndicesClicked(const ClickInfo& clickInfo) override;
78
79 void setActive(const bool state) override;
80
83 void setPositiveFilterIsActive(const bool state);
84
85Q_SIGNALS:
86
87 void signalModelFilteredImages(const QList<qlonglong>& imagesId);
88
89public Q_SLOTS:
90
91 void slotNewModelData(const QList<ItemInfo>& infoList);
92
93private Q_SLOTS:
94
96 void slotMapImagesJobResult();
97 void slotMapImagesJobData(const QList<ItemListerRecord>& records);
98 void slotThumbnailLoaded(const LoadingDescription&, const QPixmap&);
99 void slotImageChange(const ImageChangeset& changeset);
100 void slotSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected);
101
102private:
103
104 QList<qlonglong> getTileMarkerIds(const TileIndex& tileIndex);
105 GeoGroupState getImageState(const qlonglong imageId);
106 void removeMarkerFromTileAndChildren(const qlonglong imageId,
107 const TileIndex& markerTileIndex);
108 void addMarkerToTileAndChildren(const qlonglong imageId,
109 const TileIndex& markerTileIndex);
110
111private:
112
113 class Private;
114 Private* const d = nullptr;
115};
116
117} // namespace Digikam
Definition abstractmarkertiler.h:51
Definition abstractmarkertiler.h:67
Definition abstractmarkertiler.h:35
Marker model for storing data needed to display markers on the map. The data is retrieved from Digika...
Definition gpsmarkertiler.h:51
void onIndicesClicked(const ClickInfo &clickInfo) override
These can be implemented if you want to react to actions in geolocation interface.
Definition gpsmarkertiler.cpp:793
GeoGroupState getTileGroupState(const TileIndex &tileIndex) override
Definition gpsmarkertiler.cpp:473
void slotNewModelData(const QList< ItemInfo > &infoList)
Receives notifications from the album model about new items.
Definition gpsmarkertiler.cpp:756
void regenerateTiles() override
Definition gpsmarkertiler.cpp:132
AbstractMarkerTiler::Tile * getTile(const TileIndex &tileIndex, const bool stopIfEmpty) override
Returns a pointer to a tile.
Definition gpsmarkertiler.cpp:261
void removeCurrentRegionSelection()
Definition gpsmarkertiler.cpp:784
void setActive(const bool state) override
Sets the map active/inactive.
Definition gpsmarkertiler.cpp:647
QVariant bestRepresentativeIndexFromList(const QList< QVariant > &indices, const int sortKey) override
This function finds the best representative marker from a group of markers. This is needed to display...
Definition gpsmarkertiler.cpp:389
int getTileSelectedCount(const TileIndex &tileIndex) override
Definition gpsmarkertiler.cpp:331
QVariant getTileRepresentativeMarker(const TileIndex &tileIndex, const int sortKey) override
This function finds the best representative marker from a tile of markers.
Definition gpsmarkertiler.cpp:344
GeoGroupState getGlobalGroupState() override
Definition gpsmarkertiler.cpp:865
void prepareTiles(const GeoCoordinates &upperLeft, const GeoCoordinates &lowerRight, int level) override
Requests all images inside a given rectangle from the database.
Definition gpsmarkertiler.cpp:147
void setRegionSelection(const GeoCoordinates::Pair &sel)
Definition gpsmarkertiler.cpp:768
void setPositiveFilterIsActive(const bool state)
Definition gpsmarkertiler.cpp:939
~GPSMarkerTiler() override
Destructor.
Definition gpsmarkertiler.cpp:127
bool indicesEqual(const QVariant &a, const QVariant &b) const override
This function compares two marker indices.
Definition gpsmarkertiler.cpp:457
Tile * tileNew() override
Definition gpsmarkertiler.cpp:652
int getTileMarkerCount(const TileIndex &tileIndex) override
Definition gpsmarkertiler.cpp:319
void signalModelFilteredImages(const QList< qlonglong > &imagesId)
QPixmap pixmapFromRepresentativeIndex(const QVariant &index, const QSize &size) override
This function retrieves the thumbnail for an index.
Definition gpsmarkertiler.cpp:433
Definition geocoordinates.h:44
QPair< GeoCoordinates, GeoCoordinates > Pair
Definition geocoordinates.h:59
Definition coredbchangesets.h:38
Definition itemfiltermodel.h:115
Definition loadingdescription.h:35
Definition tileindex.h:35
Definition datefolderview.cpp:34