digiKam
Loading...
Searching...
No Matches
thumbsdb.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-05-29
7 * Description : Thumbnails database interface.
8 *
9 * SPDX-FileCopyrightText: 2009 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QDateTime>
21#include <QString>
22#include <QHash>
23#include <QList>
24
25// Local includes
26
27#include "dbenginesqlquery.h"
28#include "thumbsdbbackend.h"
29#include "thumbsdbaccess.h"
30#include "digikam_export.h"
31
32namespace Digikam
33{
34
35namespace DatabaseThumbnail
36{
37
38enum Type
39{
43 JPEG, // Warning : no alpha channel support. Cannot be used as well.
45 PNG
46 //FreeDesktopHash
47};
48
49} // namespace DatabaseThumbnail
50
51class DIGIKAM_EXPORT ThumbsDbInfo
52{
53
54public:
55
56 ThumbsDbInfo() = default;
57
58 int id = -1;
59 DatabaseThumbnail::Type type = DatabaseThumbnail::UndefinedType;
61 int orientationHint = 0;
62 QByteArray data;
63};
64
65// ------------------------------------------------------------------------------------------
66
67class DIGIKAM_EXPORT ThumbsDb
68{
69
70public:
71
72 bool setSetting(const QString& keyword, const QString& value);
73 QString getSetting(const QString& keyword);
74 QString getLegacySetting(const QString& keyword);
75
76 ThumbsDbInfo findByHash(const QString& uniqueHash, qlonglong fileSize);
77 ThumbsDbInfo findByFilePath(const QString& path);
78 ThumbsDbInfo findByCustomIdentifier(const QString& id);
79
86 ThumbsDbInfo findByFilePath(const QString& path, const QString& uniqueHash);
87
91 QList<int> findAll();
92
93 BdEngineBackend::QueryState insertUniqueHash(const QString& uniqueHash, qlonglong fileSize, int thumbId);
94 BdEngineBackend::QueryState insertFilePath(const QString& path, int thumbId);
95 BdEngineBackend::QueryState insertCustomIdentifier(const QString& id, int thumbId);
96
97 BdEngineBackend::QueryState remove(int thumbId);
98
102 BdEngineBackend::QueryState removeByUniqueHash(const QString& uniqueHash, qlonglong fileSize);
103
107 BdEngineBackend::QueryState removeByFilePath(const QString& path);
108 BdEngineBackend::QueryState removeByCustomIdentifier(const QString& id);
109
110 BdEngineBackend::QueryState renameByFilePath(const QString& oldPath, const QString& newPath);
111
112 BdEngineBackend::QueryState insertThumbnail(const ThumbsDbInfo& info, QVariant* const lastInsertId = nullptr);
113 BdEngineBackend::QueryState replaceThumbnail(const ThumbsDbInfo& info);
114
115 QHash<QString, int> getFilePathsWithThumbnail();
116
117 void replaceUniqueHash(const QString& oldUniqueHash, int oldFileSize, const QString& newUniqueHash, int newFileSize);
118 BdEngineBackend::QueryState updateModificationDate(int thumbId, const QDateTime& modificationDate);
119
120 // ----------- Database shrinking methods ----------
121
125 bool integrityCheck();
126
130 void vacuum();
131
132private:
133
134 explicit ThumbsDb(ThumbsDbBackend* const backend);
135 ~ThumbsDb();
136
137 ThumbsDbInfo fillThumbnailInfo(const QList<QVariant>& values);
138
139private:
140
141 // Disable
142 ThumbsDb(const ThumbsDb&) = delete;
143 ThumbsDb& operator=(const ThumbsDb&) = delete;
144
145 class Private;
146 Private* const d = nullptr;
147
148 friend class ThumbsDbAccess;
149};
150
151} // namespace Digikam
Definition dbenginebackend.h:154
Definition thumbsdbaccess.h:33
Definition thumbsdbbackend.h:29
Definition thumbsdb.h:52
QByteArray data
Definition thumbsdb.h:62
QDateTime modificationDate
Definition thumbsdb.h:60
Definition thumbsdb.h:68
qulonglong value
Definition itemviewutilities.cpp:585
Type
Definition thumbsdb.h:39
@ JPEG
Definition thumbsdb.h:43
@ PNG
Definition thumbsdb.h:45
@ PGF
Definition thumbsdb.h:42
@ UndefinedType
Definition thumbsdb.h:40
@ JPEG2000
Definition thumbsdb.h:44
@ NoThumbnail
Definition thumbsdb.h:41
Definition datefolderview.cpp:34