digiKam
Loading...
Searching...
No Matches
dinfointerface.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 : 2017-05-06
7 * Description : abstract interface to image information.
8 * This class do not depend of digiKam database library
9 * to permit to re-use plugins with Showfoto.
10 *
11 * SPDX-FileCopyrightText: 2017-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
12 * SPDX-FileCopyrightText: 2019-2020 by Minh Nghia Duong <minhnghiaduong997 at gmail 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 <QMap>
23#include <QString>
24#include <QObject>
25#include <QVariant>
26#include <QUrl>
27#include <QSize>
28#include <QList>
29#include <QDateTime>
30#include <QDate>
31#include <QAbstractItemModel>
32
33// Local includes
34
35#include "digikam_export.h"
36#include "digikam_config.h"
37#include "captionvalues.h"
38#include "metaengine.h"
39
40#ifdef HAVE_GEOLOCATION
41# include "gpsitemcontainer.h"
42#endif
43
44namespace Digikam
45{
46
47class DIGIKAM_EXPORT DInfoInterface : public QObject
48{
49 Q_OBJECT
50
51public:
52
53 typedef QMap<QString, QVariant> DInfoMap;
54 typedef QList<int> DAlbumIDs;
55
56public:
57
58 explicit DInfoInterface(QObject* const parent);
59 ~DInfoInterface() override = default;
60
61public:
62
64 Q_SLOT virtual void slotDateTimeForUrl(const QUrl& url,
65 const QDateTime& dt,
66 bool updModDate);
67
69 Q_SLOT virtual void slotMetadataChangedForUrl(const QUrl& url);
70
71 Q_SIGNAL void signalAlbumItemsRecursiveCompleted(const QList<QUrl>& imageList);
72
73 Q_SIGNAL void signalShortcutPressed(const QString& shortcut, int val);
74
75public:
76
79
80 virtual QList<QUrl> currentSelectedItems() const;
81 virtual QList<QUrl> currentAlbumItems() const;
82 virtual QUrl currentActiveItem() const;
83 virtual void parseAlbumItemsRecursive();
84
85 virtual QList<QUrl> albumItems(int) const;
86 virtual QList<QUrl> albumsItems(const DAlbumIDs&) const;
87 virtual QList<QUrl> allAlbumItems() const;
88
89 virtual DInfoMap albumInfo(int) const;
90 virtual void setAlbumInfo(int, const DInfoMap&) const;
91
92 virtual DInfoMap itemInfo(const QUrl&) const;
93 virtual void setItemInfo(const QUrl&, const DInfoMap&);
94
95 Q_SIGNAL void signalLastItemUrl(const QUrl&);
97
98public:
99
102
103 virtual QWidget* albumChooser(QWidget* const parent) const;
104 virtual DAlbumIDs albumChooserItems() const;
105 virtual bool supportAlbums() const;
106
109
110public:
111
114
115 virtual QWidget* uploadWidget(QWidget* const parent) const;
116 virtual QUrl uploadUrl() const;
117
118 Q_SIGNAL void signalUploadUrlChanged();
119
121 virtual QUrl defaultUploadUrl() const;
122
123 Q_SIGNAL void signalImportedImage(const QUrl&);
125
126public:
127
129 virtual QAbstractItemModel* tagFilterModel();
130
131#ifdef HAVE_GEOLOCATION
132
133 virtual QList<GPSItemContainer*> currentGPSItems() const;
134
135#endif
136
137public:
138
140 virtual QMap<QString, QString> passShortcutActionsToWidget(QWidget* const) const;
141
142public:
143
145 virtual void deleteImage(const QUrl& url);
146
147public:
148
150 {
151 ExifToolPage = 0,
152 ImageQualityPage
153 };
154
156 virtual void openSetupPage(SetupPage page);
157
158 Q_SIGNAL void signalSetupChanged();
159
160public:
161
162 bool forceAlbumSelection = false;
163};
164
165// -------------------------------------------------------------------------------------------------------------
166
195class DIGIKAM_EXPORT DItemInfo
196{
197
198public:
199
200 DItemInfo() = default;
201 explicit DItemInfo(const DInfoInterface::DInfoMap&);
202 ~DItemInfo() = default;
203
204 DInfoInterface::DInfoMap infoMap() const;
205
206public:
207
208 QString name() const;
209 QString title() const;
210 QString comment() const;
211 QSize dimensions() const;
212 QDateTime dateTime() const;
213 QStringList tagsPath() const;
214 QStringList keywords() const;
215
216 CaptionsMap titles() const;
217 void setTitles(const CaptionsMap&);
218 CaptionsMap captions() const;
219 void setCaptions(const CaptionsMap&);
220
221 MetaEngine::AltLangMap copyrights() const;
222 void setCopyrights(const MetaEngine::AltLangMap& map);
223 MetaEngine::AltLangMap copyrightNotices() const;
224 void setCopyrightNotices(const MetaEngine::AltLangMap& map);
225
226 int albumId() const;
227 int orientation() const;
228 void setOrientation(int);
229 int rating() const;
230 void setRating(int);
231 int colorLabel() const;
232 void setColorLabel(int);
233 int pickLabel() const;
234 void setPickLabel(int);
235
236 double latitude() const;
237 double longitude() const;
238 double altitude() const;
239 qlonglong fileSize() const;
240 QStringList creators() const;
241 QString credit() const;
242 QString rights() const;
243 QString source() const;
244 QString lens() const;
245 QString make() const;
246 QString model() const;
247 QString exposureTime() const;
248 QString sensitivity() const;
249 QString aperture() const;
250 QString focalLength() const;
251 QString focalLength35mm() const;
252 QString videoCodec() const;
253
254 bool hasGeolocationInfo() const;
255
256private:
257
258 QVariant parseInfoMap(const QString& key) const;
259
260private:
261
263};
264
265// -----------------------------------------------------------------
266
267class DIGIKAM_EXPORT DAlbumInfo
268{
269
270public:
271
272 explicit DAlbumInfo(const DInfoInterface::DInfoMap&);
273 ~DAlbumInfo() = default;
274
275public:
276
277 QString title() const;
278 QString caption() const;
279 QDate date() const;
280 QString path() const;
281 QString albumPath() const;
282
283private:
284
286};
287
288} // namespace Digikam
Definition captionvalues.h:59
Definition dinfointerface.h:268
Definition dinfointerface.h:48
QList< int > DAlbumIDs
List of Album ids.
Definition dinfointerface.h:54
Q_SIGNAL void signalImportedImage(const QUrl &)
Q_SIGNAL void signalShortcutPressed(const QString &shortcut, int val)
Q_SIGNAL void signalAlbumItemsRecursiveCompleted(const QList< QUrl > &imageList)
~DInfoInterface() override=default
Q_SIGNAL void signalAlbumChooserSelectionChanged()
Q_SIGNAL void signalSetupChanged()
Q_SIGNAL void signalLastItemUrl(const QUrl &)
SetupPage
Definition dinfointerface.h:150
QMap< QString, QVariant > DInfoMap
Map of properties name and value.
Definition dinfointerface.h:53
Q_SIGNAL void signalUploadUrlChanged()
Definition dinfointerface.h:196
~DItemInfo()=default
QMap< QString, QString > AltLangMap
Definition metaengine.h:135
Definition datefolderview.cpp:34