digiKam
Loading...
Searching...
No Matches
collectionscanner.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 : 2007-03-21
7 * Description : Collection scanning to database.
8 *
9 * SPDX-FileCopyrightText: 2005 by Renchi Raju <renchi dot raju at gmail dot com>
10 * SPDX-FileCopyrightText: 2005-2006 by Tom Albers <tomalbers at kde dot nl>
11 * SPDX-FileCopyrightText: 2007-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
12 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles 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 <QString>
23#include <QObject>
24#include <QList>
25
26// Local includes
27
28#include "iteminfo.h"
29#include "digikam_export.h"
30#include "coredbaccess.h"
31#include "coredbalbuminfo.h"
33
34class QFileInfo;
35
36namespace Digikam
37{
38
39class DIGIKAM_DATABASE_EXPORT CollectionScanner : public QObject
40{
41 Q_OBJECT
42
43public:
44
46 {
54
62
69
75 CleanScan
76 };
77
78public:
79
81 ~CollectionScanner() override;
82
84
91 static CollectionScannerHintContainer* createHintContainer();
92 void setHintContainer(CollectionScannerHintContainer* const container);
93 void setUpdateHashHint(bool hint = true);
95
100 void setSignalsEnabled(bool on);
101
107 void setNeedFileCount(bool on);
108
113 void setPerformFastScan(bool on);
114
118 void setObserver(CollectionScannerObserver* const observer);
119
120 void setDeferredFileScanning(bool defer);
121 QStringList deferredAlbumPaths() const;
122
126 QList<qlonglong> getNewIdsList() const;
127
128 // -----------------------------------------------------------------------------
129
134
135public:
136
143 void completeScan();
144
152 void finishCompleteScan(const QStringList& albumPaths);
153
159 static bool databaseInitialScanDone();
160
167 void partialScan(const QString& filePath);
168
172 void partialScan(const QString& albumRoot, const QString& album);
173
178 qlonglong scanFile(const QString& filePath, FileScanMode mode = ModifiedScan);
179
185 qlonglong scanFile(const QString& albumRoot,
186 const QString& album,
187 const QString& fileName,
188 FileScanMode mode = ModifiedScan);
189
193 void scanFile(const ItemInfo& info, FileScanMode mode = ModifiedScan);
194
195protected:
196
197 void scanForStaleAlbums(const QList<CollectionLocation>& locations);
198 void scanForStaleAlbums(const QList<int>& locationIdsToScan);
199 void scanAlbumRoot(const CollectionLocation& location);
200 void scanAlbum(const CollectionLocation& location, const QString& album, bool checkDate = false);
201 void scanExistingFile(const QFileInfo& fi, qlonglong id);
202 void scanFileNormal(const QFileInfo& info, const ItemScanInfo& scanInfo,
203 bool checkSidecar = true, const QFileInfo* const sidecarInfo = nullptr);
204 void scanModifiedFile(const QFileInfo& info, const ItemScanInfo& scanInfo);
205 void scanFileUpdateHashReuseThumbnail(const QFileInfo& fi, const ItemScanInfo& scanInfo, bool fileWasEdited);
206 void cleanScanFile(const QFileInfo& info, const ItemScanInfo& scanInfo);
207 void rescanFile(const QFileInfo& info, const ItemScanInfo& scanInfo);
208 void completeScanCleanupPart();
209 void completeHistoryScanning();
210 void finishHistoryScanning();
211 void historyScanningStage2(const QList<qlonglong>& ids);
212 void historyScanningStage3(const QList<qlonglong>& ids);
213
214 qlonglong scanFile(const QFileInfo& fi, int albumId, qlonglong id, FileScanMode mode);
215 qlonglong scanNewFile(const QFileInfo& info, int albumId);
216 qlonglong scanNewFileFullScan(const QFileInfo& info, int albumId);
217
219
220 // -----------------------------------------------------------------------------
221
226
227public:
228
234 void safelyRemoveAlbums(const QList<int>& albumIds);
235
240 static void copyFileProperties(const ItemInfo& source, const ItemInfo& dest);
241
242protected:
243
244 void markDatabaseAsScanned();
245 void mainEntryPoint(bool complete);
246 int checkAlbum(const CollectionLocation& location, const QString& album);
247 void itemsWereRemoved(const QList<qlonglong>& removedIds);
248 void updateRemovedItemsTime();
249 void incrementDeleteRemovedCompleteScanCount();
250 void resetDeleteRemovedSettings();
251 bool checkDeleteRemoved();
252 void loadNameFilters();
253 int countItemsInFolder(const QString& path);
254 DatabaseItem::Category category(const QFileInfo& info);
255
257
258Q_SIGNALS:
259
264 void totalFilesToScan(int count);
265
267
271 void startScanningAlbumRoot(const QString& albumRoot);
272 void startScanningAlbum(const QString& albumRoot, const QString& album);
276 void signalScannedNewImage(const QFileInfo& info);
278
280
284 void finishedScanningAlbumRoot(const QString& albumRoot);
285 void finishedScanningAlbum(const QString& albumRoot, const QString& album, int filesScanned);
289
295 void scannedFiles(int filesScanned);
296
300 void cancelled();
301
302private:
303
304 // Disable
305 CollectionScanner(QObject*) = delete;
306
307 class Private;
308 Private* const d = nullptr;
309};
310
311} // namespace Digikam
Definition collectionlocation.h:31
Definition collectionscannerhints.h:48
Definition collectionscannerobserver.h:31
Definition collectionscanner_p.h:139
Definition collectionscanner.h:40
void scannedFiles(int filesScanned)
void scanExistingFile(const QFileInfo &fi, qlonglong id)
void finishedScanningAlbumRoot(const QString &albumRoot)
void signalScannedNewImage(const QFileInfo &info)
void totalFilesToScan(int count)
void startScanningAlbum(const QString &albumRoot, const QString &album)
FileScanMode
Definition collectionscanner.h:46
@ ModifiedScan
Definition collectionscanner.h:61
@ NormalScan
Definition collectionscanner.h:53
@ Rescan
Definition collectionscanner.h:68
void startScanningAlbumRoot(const QString &albumRoot)
void finishedScanningAlbum(const QString &albumRoot, const QString &album, int filesScanned)
Definition iteminfo.h:68
Definition coredbalbuminfo.h:236
Category
Definition coredbconstants.h:69
Definition datefolderview.cpp:34