digiKam
Loading...
Searching...
No Matches
mapbackend.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 : Base-class for backends for geolocation interface
8 *
9 * SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2009-2011 by Michael G. Hansen <mike at mghansen dot de>
11 * SPDX-FileCopyrightText: 2014 by Justus Schwartz <justus at gmx dot li>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Qt includes
20
21#include <QModelIndex>
22
23// Local includes
24
25#include "geoifacecommon.h"
26#include "digikam_export.h"
27
28class QMenu;
29class QWidget;
30
31class KConfigGroup;
32
33#ifdef HAVE_GEOLOCATION
34
35namespace Marble
36{
37 class GeoDataLatLonBox;
38}
39
40#endif
41
42namespace Digikam
43{
44
45class DIGIKAM_EXPORT MapBackend : public QObject
46{
47
48Q_OBJECT
49
50public:
51
52 explicit MapBackend(const QExplicitlySharedDataPointer<GeoIfaceSharedData>& sharedData, QObject* const parent);
53 ~MapBackend() override = default;
54
55 virtual QString backendName() const = 0;
56 virtual QString backendHumanName() const = 0;
57 virtual QWidget* mapWidget() = 0;
58 virtual void releaseWidget(GeoIfaceInternalWidgetInfo* const info) = 0;
59 virtual void mapWidgetDocked(const bool state) = 0;
60
61 virtual GeoCoordinates getCenter() const = 0;
62 virtual void setCenter(const GeoCoordinates& coordinate) = 0;
63
64 virtual bool isReady() const = 0;
65
66 virtual void zoomIn() = 0;
67 virtual void zoomOut() = 0;
68
69 virtual void saveSettingsToGroup(KConfigGroup* const group) = 0;
70 virtual void readSettingsFromGroup(const KConfigGroup* const group) = 0;
71
72 virtual void addActionsToConfigurationMenu(QMenu* const configurationMenu) = 0;
73
74 virtual void updateMarkers() = 0;
75 virtual void updateClusters() = 0;
76
77 virtual bool screenCoordinates(const GeoCoordinates& coordinates,
78 QPoint* const point) = 0;
79 virtual bool geoCoordinates(const QPoint& point,
80 GeoCoordinates* const coordinates) const = 0;
81 virtual QSize mapSize() const = 0;
82
83 virtual void setZoom(const QString& newZoom) = 0;
84 virtual QString getZoom() const = 0;
85
86 virtual int getMarkerModelLevel() = 0;
88/*
89 virtual void updateDragDropMarker(const QPoint& pos,
90 const GeoIfaceDragData* const dragData) = 0;
91 virtual void updateDragDropMarkerPosition(const QPoint& pos) = 0;
92*/
93 virtual void updateActionAvailability() = 0;
94
95 virtual void regionSelectionChanged() = 0;
96 virtual void mouseModeChanged() = 0;
97
98 const QExplicitlySharedDataPointer<GeoIfaceSharedData> s;
99
100 virtual void setActive(const bool state) = 0;
101
102#ifdef HAVE_GEOLOCATION
103
104 virtual void centerOn(const Marble::GeoDataLatLonBox& box,
105 const bool useSaneZoomLevel = true) = 0;
106
107#endif
108
109 virtual void reload() = 0;
110
111public Q_SLOTS:
112
113 virtual void slotClustersNeedUpdating() = 0;
114 virtual void slotThumbnailAvailableForIndex(const QVariant& index,
115 const QPixmap& pixmap);
116 virtual void slotTrackManagerChanged();
117
118protected:
119
120 void addCommonOptions(QMenu* const configurationMenu);
121
122protected Q_SLOTS:
123
124 void slotExportScreenshot();
125
126Q_SIGNALS:
127
128 void signalBackendReadyChanged(const QString& backendName);
129 void signalClustersMoved(const QIntList& clusterIndices,
130 const QPair<int, QModelIndex>& snapTarget);
131 void signalClustersClicked(const QIntList& clusterIndices);
132 void signalMarkersMoved(const QIntList& markerIndices);
133 void signalZoomChanged(const QString& newZoom);
135};
136
137} // namespace Digikam
Definition geocoordinates.h:44
QPair< GeoCoordinates, GeoCoordinates > Pair
Definition geocoordinates.h:59
QList< GeoCoordinates::Pair > PairList
Definition geocoordinates.h:60
Class to hold information about map widgets stored in the GeoIfaceGlobalObject.
Definition geoifacecommon.h:51
Definition mapbackend.h:46
virtual void addActionsToConfigurationMenu(QMenu *const configurationMenu)=0
virtual QString getZoom() const =0
virtual bool geoCoordinates(const QPoint &point, GeoCoordinates *const coordinates) const =0
virtual void zoomOut()=0
void signalSelectionHasBeenMade(const Digikam::GeoCoordinates::Pair &coordinates)
void signalMarkersMoved(const QIntList &markerIndices)
virtual void regionSelectionChanged()=0
virtual void saveSettingsToGroup(KConfigGroup *const group)=0
virtual int getMarkerModelLevel()=0
virtual QWidget * mapWidget()=0
virtual void updateMarkers()=0
virtual QString backendName() const =0
void signalClustersClicked(const QIntList &clusterIndices)
virtual void readSettingsFromGroup(const KConfigGroup *const group)=0
virtual void updateClusters()=0
virtual void setCenter(const GeoCoordinates &coordinate)=0
virtual QSize mapSize() const =0
virtual GeoCoordinates getCenter() const =0
virtual void setActive(const bool state)=0
virtual void zoomIn()=0
virtual bool screenCoordinates(const GeoCoordinates &coordinates, QPoint *const point)=0
virtual void mapWidgetDocked(const bool state)=0
virtual void reload()=0
void signalClustersMoved(const QIntList &clusterIndices, const QPair< int, QModelIndex > &snapTarget)
virtual bool isReady() const =0
virtual void updateActionAvailability()=0
virtual void slotClustersNeedUpdating()=0
virtual void setZoom(const QString &newZoom)=0
void signalZoomChanged(const QString &newZoom)
virtual GeoCoordinates::PairList getNormalizedBounds()=0
virtual void releaseWidget(GeoIfaceInternalWidgetInfo *const info)=0
void signalBackendReadyChanged(const QString &backendName)
~MapBackend() override=default
virtual QString backendHumanName() const =0
const QExplicitlySharedDataPointer< GeoIfaceSharedData > s
Definition mapbackend.h:98
virtual void mouseModeChanged()=0
Definition datefolderview.cpp:34
QList< int > QIntList
Definition geoifacetypes.h:48