digiKam
Loading...
Searching...
No Matches
albummanager_p.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 : 2004-06-15
7 * Description : Albums manager interface - private containers.
8 *
9 * SPDX-FileCopyrightText: 2006-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2006-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
11 * SPDX-FileCopyrightText: 2015 by Mohamed_Anwer <m_dot_anwer at gmx dot com>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19#include "albummanager.h"
20
21// C ANSI includes
22
23extern "C"
24{
25#ifndef Q_CC_MSVC
26# include <unistd.h>
27#endif
28#include <sys/types.h>
29#include <sys/stat.h>
30}
31
32// C++ includes
33
34#include <cerrno>
35#include <clocale>
36#include <cstdio>
37#include <cstdlib>
38
39// Qt includes
40
41#include <QApplication>
42#include <QByteArray>
43#include <QDir>
44#include <QFile>
45#include <QGroupBox>
46#include <QHash>
47#include <QLabel>
48#include <QList>
49#include <QMultiHash>
50#include <QRadioButton>
51#include <QTimer>
52#include <QComboBox>
53#include <QIcon>
54#include <QPointer>
55#include <QDialog>
56#include <QDialogButtonBox>
57#include <QVBoxLayout>
58#include <QMessageBox>
59#include <QCheckBox>
60#include <QSet>
61
62#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
63# include <QTextCodec>
64#endif
65
66// KDE includes
67
68#include <klocalizedstring.h>
69
70// Local includes
71
72#include "digikam_debug.h"
73#include "coredb.h"
74#include "album.h"
75#include "albumpointer.h"
76#include "applicationsettings.h"
77#include "metaenginesettings.h"
79#include "metadatahubmngr.h"
80#include "albumwatch.h"
81#include "itemattributeswatch.h"
82#include "collectionlocation.h"
83#include "collectionmanager.h"
84#include "digikam_config.h"
85#include "coredbaccess.h"
88#include "dbengineparameters.h"
89#include "dbsettingswidget.h"
92#include "coredburl.h"
93#include "coredbsearchxml.h"
94#include "coredbwatch.h"
95#include "dio.h"
96#include "facetags.h"
97#include "facetagseditor.h"
98#include "itemlister.h"
99#include "scancontroller.h"
100#include "setupcollections.h"
101#include "setup.h"
102#include "tagscache.h"
103#include "thumbsdbaccess.h"
104#include "thumbnailloadthread.h"
105#include "dnotificationwrapper.h"
106#include "dbjobinfo.h"
107#include "dbjobsmanager.h"
108#include "dbjobsthread.h"
109#include "similaritydb.h"
110#include "similaritydbaccess.h"
111
112namespace Digikam
113{
114
115class Q_DECL_HIDDEN PAlbumPath
116{
117public:
118
119 PAlbumPath() = default;
120 PAlbumPath(int albumRootId, const QString& albumPath);
121 explicit PAlbumPath(const PAlbum* const album);
122
123 bool operator==(const PAlbumPath& other) const;
124
125public:
126
127 int albumRootId = -1;
128 QString albumPath;
129};
130
131// -----------------------------------------------------------------------------------
132
133#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
134
135inline size_t qHash(const PAlbumPath& id)
136
137#else
138
139inline uint qHash(const PAlbumPath& id)
140
141#endif
142
143{
144 return (::qHash(id.albumRootId) ^ ::qHash(id.albumPath));
145}
146
147// -----------------------------------------------------------------------------------
148
149class Q_DECL_HIDDEN AlbumManager::Private
150{
151public:
152
153 Private() = default;
154
155 QString labelForAlbumRootAlbum(const CollectionLocation& location);
156
157public:
158
159 bool changed = false;
160 bool hasPriorizedDbPath = false;
161
162 bool showOnlyAvailableAlbums = false;
163
164 int longTimeMessageBoxResult = -1;
165 int askMergeMessageBoxResult = -1;
166
167 AlbumsDBJobsThread* albumListJob = nullptr;
168 DatesDBJobsThread* dateListJob = nullptr;
169 TagsDBJobsThread* tagListJob = nullptr;
170 TagsDBJobsThread* personListJob = nullptr;
171
172
173 AlbumWatch* albumWatch = nullptr;
174
175 PAlbum* rootPAlbum = nullptr;
176 TAlbum* rootTAlbum = nullptr;
177 DAlbum* rootDAlbum = nullptr;
178 SAlbum* rootSAlbum = nullptr;
179
180 QHash<int, Album*> allAlbumsIdHash;
181 QHash<PAlbumPath, PAlbum*> albumPathHash;
182 QHash<int, PAlbum*> albumRootAlbumHash;
183 Album* currentlyMovingAlbum = nullptr;
184
185 QMultiHash<Album*, Album**> guardedPointers;
186
190 QList<Album*> currentAlbums;
191
192 bool changingDB = false;
193 QTimer* scanPAlbumsTimer = nullptr;
194 QTimer* scanTAlbumsTimer = nullptr;
195 QTimer* scanSAlbumsTimer = nullptr;
196 QTimer* scanDAlbumsTimer = nullptr;
197 QTimer* updatePAlbumsTimer = nullptr;
198 QTimer* albumItemCountTimer = nullptr;
199 QTimer* tagItemCountTimer = nullptr;
200 QSet<int> changedPAlbums;
201
202 QHash<int, int> pAlbumsCount;
203 QHash<int, int> tAlbumsCount;
204 QHash<int, int> fAlbumsCount;
205 QMap<YearMonth, int> dAlbumsCount;
207 QHash<int, int> uAlbumsCount;
208 QList<int> toUpdatedFaces;
209};
210
211// -----------------------------------------------------------------------------------
212
213class Q_DECL_HIDDEN ChangingDB
214{
215public:
216
217 explicit ChangingDB(AlbumManager::Private* const dd);
218 ~ChangingDB();
219
220 AlbumManager::Private* const d = nullptr;
221};
222
223// -----------------------------------------------------------------------------------
224
225class Q_DECL_HIDDEN AlbumManagerCreator
226{
227public:
228
230};
231
232} // namespace Digikam
Definition albummanager_p.h:226
AlbumManager object
Definition albummanager_p.h:229
Definition albummanager_p.h:150
QMap< YearMonth, int > dAlbumsCount
Definition albummanager_p.h:205
QHash< int, int > fAlbumsCount
Definition albummanager_p.h:204
QHash< int, int > tAlbumsCount
Definition albummanager_p.h:203
QHash< int, Album * > allAlbumsIdHash
Definition albummanager_p.h:180
QSet< int > changedPAlbums
Definition albummanager_p.h:200
QHash< PAlbumPath, PAlbum * > albumPathHash
Definition albummanager_p.h:181
QMultiHash< Album *, Album ** > guardedPointers
Definition albummanager_p.h:185
QHash< int, PAlbum * > albumRootAlbumHash
Definition albummanager_p.h:182
QHash< int, int > uAlbumsCount
Unconfirmed face counts.
Definition albummanager_p.h:207
QList< Album * > currentAlbums
Definition albummanager_p.h:190
QHash< int, int > pAlbumsCount
Definition albummanager_p.h:202
QList< int > toUpdatedFaces
Definition albummanager_p.h:208
Definition albummanager.h:63
Definition albumwatch.h:33
Abstract base class for all album types.
Definition album.h:57
Definition dbjobsthread.h:86
Definition albummanager_p.h:214
Definition collectionlocation.h:31
Definition album.h:461
Definition dbjobsthread.h:132
Definition albummanager_p.h:116
QString albumPath
Definition albummanager_p.h:128
Definition album.h:357
Definition album.h:494
Definition album.h:421
Definition dbjobsthread.h:109
Definition datefolderview.cpp:34
bool operator==(const SearchTextSettings &a, const SearchTextSettings &b)
Definition searchtextbar.cpp:40
size_t qHash(const PAlbumPath &id)
Definition albummanager_p.h:135