digiKam
Loading...
Searching...
No Matches
iteminfo.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 : 2005-04-21
7 * Description : Handling access to one item and associated data
8 *
9 * SPDX-FileCopyrightText: 2005 by Renchi Raju <renchi dot raju at gmail dot com>
10 * SPDX-FileCopyrightText: 2007-2013 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
11 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
12 * SPDX-FileCopyrightText: 2013 by Michael G. Hansen <mike at mghansen dot de>
13 *
14 * SPDX-License-Identifier: GPL-2.0-or-later
15 *
16 * ============================================================ */
17
18#pragma once
19
20// Qt includes
21
22#include <QUrl>
23#include <QList>
24#include <QSize>
25#include <QString>
26#include <QDateTime>
27#include <QExplicitlySharedDataPointer>
28
29// Local includes
30
31#include "digikam_export.h"
32#include "coredbalbuminfo.h"
33#include "coredburl.h"
34#include "coredbfields.h"
35#include "iteminfolist.h"
36
37namespace Digikam
38{
39
40class DImageHistory;
41class HistoryImageId;
42class ItemComments;
43class ImageCommonContainer;
44class ItemCopyright;
45class ItemExtendedProperties;
46class ItemInfoData;
47class ItemListerRecord;
48class ImageMetadataContainer;
49class VideoMetadataContainer;
50class ItemPosition;
51class ItemTagPair;
52class PhotoInfoContainer;
53class VideoInfoContainer;
54class Template;
55class ThumbnailIdentifier;
56class ThumbnailInfo;
57
67class DIGIKAM_DATABASE_EXPORT ItemInfo
68{
69public:
70
72
73public:
74
79 ItemInfo();
80
85 explicit ItemInfo(qlonglong ID);
86
91 explicit ItemInfo(const ItemListerRecord& record);
92
96 ItemInfo(const ItemInfo& info);
97
101 ~ItemInfo();
102
106 static ItemInfo fromLocalFile(const QString& path);
107 static ItemInfo fromUrl(const QUrl& url);
108
113 static ItemInfo fromLocationAlbumAndName(int locationId, const QString& album, const QString& name);
114
115 ItemInfo& operator=(const ItemInfo& info);
116
117 bool operator==(const ItemInfo& info) const;
118 bool operator!=(const ItemInfo& info) const;
119 bool operator<(const ItemInfo& info) const;
120
127 ItemInfo copyItem(int dstAlbumID, const QString& dstFileName);
128
134 bool isLocationAvailable() const;
135
136public:
137
138 // -----------------------------------------------------------------------------
139
144
148 bool isNull() const;
149
153 QString name() const;
154
158 QDateTime dateTime() const;
159
163 QDateTime modDateTime() const;
164
168 qlonglong fileSize() const;
169
174 QSize dimensions() const;
175
180 QUrl fileUrl() const;
181
185 QString filePath() const;
186
190 QString relativePath() const;
191
195 qlonglong id() const;
196
200 int albumId() const;
201
205 int albumRootId() const;
206
210 double aspectRatio() const;
211
215 qlonglong manualOrder() const;
216
220 DatabaseItem::Category category() const;
221
226 QString format() const;
227
231 bool isVisible() const;
232
236 bool isRemoved() const;
237
242 int orientation() const;
243
247 QString title() const;
248
252 QString comment() const;
253
257 int faceCount() const;
258
262 int unconfirmedFaceCount() const;
263
269 QMap<QString, QString> getSuggestedNames() const;
270
275 void setName(const QString& newName);
276
281 void setDateTime(const QDateTime& dateTime);
282
287 void setModDateTime(const QDateTime& dateTime);
288
292 void setManualOrder(qlonglong value);
293
297 void setOrientation(int value);
298
302 void setVisible(bool isVisible);
303
307 DatabaseFieldsHashRaw getDatabaseFieldsRaw(const DatabaseFields::Set& requestedSet) const;
308 QVariant getDatabaseFieldRaw(const DatabaseFields::Set& requestedField) const;
309
311
312public:
313
314 // -----------------------------------------------------------------------------
315
320
324 ItemPosition imagePosition() const;
325
330 double longitudeNumber() const;
331 double latitudeNumber() const;
332 double altitudeNumber() const;
333 bool hasCoordinates() const;
334 bool hasAltitude() const;
335
337
338public:
339
340 // -----------------------------------------------------------------------------
341
346
353 DImageHistory imageHistory() const;
354 void setItemHistory(const DImageHistory& history);
355 bool hasImageHistory() const;
356
360 QString uuid() const;
361 void setUuid(const QString& uuid);
362
366 HistoryImageId historyImageId() const;
367
373 bool hasDerivedImages() const;
374 bool hasAncestorImages() const;
375
376 QList<ItemInfo> derivedImages() const;
377 QList<ItemInfo> ancestorImages() const;
378
383 QList<QPair<qlonglong, qlonglong> > relationCloud() const;
384
389 void markDerivedFrom(const ItemInfo& ancestorImage);
390
392
393public:
394
395 // -----------------------------------------------------------------------------
396
401
405 bool isGrouped() const;
410 bool hasGroupedImages() const;
411 int numberOfGroupedImages() const;
412
417 ItemInfo groupImage() const;
418 qlonglong groupImageId() const;
419
424 QList<ItemInfo> groupedImages() const;
425
429 void addToGroup(const ItemInfo& info);
430
435 void removeFromGroup();
436
441 void clearGroup();
442
444
445public:
446
447 // -----------------------------------------------------------------------------
448
453
459 ImageCommonContainer imageCommonContainer() const;
460 ImageMetadataContainer imageMetadataContainer() const;
461 VideoMetadataContainer videoMetadataContainer() const;
462 PhotoInfoContainer photoInfoContainer() const;
463 VideoInfoContainer videoInfoContainer() const;
464
468 Template metadataTemplate() const;
469
474 void setMetadataTemplate(const Template& t);
475
479 void removeMetadataTemplate();
480
488 ItemComments imageComments(const CoreDbAccess& access) const;
489
495 ItemCopyright imageCopyright() const;
496
502 ItemExtendedProperties imageExtendedProperties() const;
503
505
506public:
507
508 // -----------------------------------------------------------------------------
509
514
519 void setTag(int tagID);
520
525 void addTagPaths(const QStringList& tagPaths);
526
531 void removeTag(int tagID);
532
536 void removeAllTags();
537
543 ItemTagPair imageTagPair(int tagId) const;
544 QList<ItemTagPair> availableItemTagPairs() const;
545
552 QList<int> tagIds() const;
553
554private:
555
556 void loadTagIds() const;
557
559
560public:
561
562 // -----------------------------------------------------------------------------
563
569
573 int pickLabel() const;
574
578 int colorLabel() const;
579
583 int rating() const;
584
588 void setPickLabel(int value);
589
593 void setColorLabel(int value);
594
598 void setRating(int value);
599
601
602public:
603
604 // -----------------------------------------------------------------------------
605
611
615 ThumbnailIdentifier thumbnailIdentifier() const;
616 ThumbnailInfo thumbnailInfo() const;
617 static ThumbnailIdentifier thumbnailIdentifier(qlonglong id);
618
620
621public:
622
623 // -----------------------------------------------------------------------------
624
630
631 double similarityTo(const qlonglong imageId) const;
632 double currentSimilarity() const;
633
637 qlonglong currentReferenceImage() const;
638
643#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
644
645 size_t hash() const;
646
647#else
648
649 uint hash() const;
650
651#endif
652
656 QList<ItemInfo> fromUniqueHash(const QString& uniqueHash, qlonglong fileSize);
657
661 QString uniqueHash() const;
662
664
665private:
666
667 friend class ItemInfoCache;
668 friend class ItemInfoList;
669
670 QExplicitlySharedDataPointer<ItemInfoData> m_data;
671};
672
673#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
674
675inline size_t qHash(const ItemInfo& info)
676
677#else
678
679inline uint qHash(const ItemInfo& info)
680
681#endif
682
683{
684 return info.hash();
685}
686
688DIGIKAM_DATABASE_EXPORT QDebug operator<<(QDebug stream, const ItemInfo& info);
689
690} // namespace Digikam
691
693Q_DECLARE_METATYPE(Digikam::ItemInfo)
Definition coredbaccess.h:46
Definition dimagehistory.h:39
Definition coredbfields.h:521
Definition coredbfields.h:376
Definition historyimageid.h:32
Definition coredbinfocontainers.h:26
Definition coredbinfocontainers.h:49
Definition itemcomments.h:38
Definition itemcopyright.h:38
Definition itemextendedproperties.h:34
Definition iteminfocache.h:38
Definition iteminfolist.h:37
Definition iteminfo.h:68
size_t hash() const
Definition iteminfo_similarity.cpp:63
DatabaseFields::Hash< QVariant > DatabaseFieldsHashRaw
Definition iteminfo.h:71
Definition itemlisterrecord.h:38
Definition itemposition.h:37
Definition itemtagpair.h:36
Definition photoinfocontainer.h:31
Definition template.h:36
Definition thumbnailinfo.h:31
Definition thumbnailinfo.h:53
Definition videoinfocontainer.h:31
Definition coredbinfocontainers.h:77
Q_DECLARE_TYPEINFO(Digikam::ItemInfo, Q_MOVABLE_TYPE)
qulonglong value
Definition itemviewutilities.cpp:585
Category
Definition coredbconstants.h:69
Definition datefolderview.cpp:34
QDebug operator<<(QDebug dbg, const DbEngineParameters &p)
Definition dbengineparameters.cpp:930
bool operator<(const ThumbnailIdentifier &a, const ThumbnailIdentifier &b)
Definition albumthumbnailloader.cpp:88
bool operator==(const SearchTextSettings &a, const SearchTextSettings &b)
Definition searchtextbar.cpp:40
size_t qHash(const PAlbumPath &id)
Definition albummanager_p.h:135