digiKam
Loading...
Searching...
No Matches
maintenancethread.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 : 2013-08-09
7 * Description : Thread actions manager for maintenance tools.
8 *
9 * SPDX-FileCopyrightText: 2013-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2017-2018 by Mario Frank <mario dot frank at uni minus potsdam dot de>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QList>
21
22// Local includes
23
24#include "actionthreadbase.h"
26#include "metadataremover.h"
27#include "iteminfo.h"
28#include "identity.h"
29
30class QImage;
31
32namespace Digikam
33{
34
35class ImageQualityContainer;
36class MaintenanceData;
37
38
40{
41 Q_OBJECT
42
43public:
44
45 explicit MaintenanceThread(QObject* const parent);
46 ~MaintenanceThread() override;
47
48 void setUseMultiCore(const bool b);
49
50 void syncMetadata(const ItemInfoList& items, MetadataSynchronizer::SyncDirection dir, bool tagsOnly);
52 void generateThumbs(const QStringList& paths);
53 void generateFingerprints(const QList<qlonglong>& itemIds, bool rebuildAll);
54 void generateTags(const QStringList& paths, int modelType, const QStringList& langs);
55 void sortByImageQuality(const QStringList& paths, const ImageQualityContainer& quality);
56
57 void computeDatabaseJunk(bool thumbsDb = false, bool facesDb = false, bool similarityDb = false);
58 void cleanCoreDb(const QList<qlonglong>& imageIds);
59 void cleanThumbsDb(const QList<int>& thumbnailIds);
60 void cleanFacesDb(const QList<Identity>& staleIdentities);
61 void cleanSimilarityDb(const QList<qlonglong>& imageIds);
62 void shrinkDatabases();
63
64 void cancel();
65
67
68Q_SIGNALS:
69
73
76 void signalAdvance(const ItemInfo&, const QImage&, int);
77 void signalAdvance(const ItemInfo&, const QImage&, const QStringList&);
78 void signalAdvance(const ItemInfo&, const QImage&);
79 void signalAdvance(const QImage&);
80
84
88
92
95 void signalData(const QList<qlonglong>& staleImageIds,
96 const QList<int>& staleThumbIds,
97 const QList<Identity>& staleIdentities,
98 const QList<qlonglong>& staleSimilarityImageIds);
99
103 void signalAddItemsToProcess(int count);
104
108 void signalRemovePending(const ItemInfo& info);
109
114 void signalFinished(bool done, bool errorFree);
115
116private Q_SLOTS:
117
118 void slotThreadFinished();
119
120private:
121
130/*
131 template<typename T>
132 QList<QList<T> > chunkList(const QList<T>& toChunk, int chunkSize = 0)
133 {
134 QList<QList<T> > chunks;
135
136 // Chunk size 0 means all
137
138 if (chunkSize == 0)
139 {
140 chunks << toChunk;
141 return chunks;
142 }
143
144 // Buffer the input list.
145
146 QList<T> toChunkList = toChunk;
147 QList<T> currentChunk;
148
149 while (!toChunkList.isEmpty())
150 {
151 // Set the current chunk to the first n elements.
152
153 currentChunk = toChunkList.mid(0,chunkSize);
154
155 // Set the buffer list to the rest, i.e.
156 // start at position n and take all from this position
157 // If n is bigger than the size, an empty list is returned.
158 // see qarraydata.cpp in Qt implementation.
159
160 toChunkList = toChunkList.mid(chunkSize);
161 chunks << currentChunk;
162 }
163
164 return chunks;
165 }
166
167 int getChunkSize(int elementCount);
168*/
169
170 MaintenanceData* const data = nullptr;
171};
172
173} // namespace Digikam
Definition actionthreadbase.h:100
Definition imagequalitycontainer.h:32
Definition iteminfolist.h:37
Definition iteminfo.h:68
Definition maintenancedata.h:32
Definition maintenancethread.h:40
void signalFinished(bool done, bool errorFree)
void cleanSimilarityDb(const QList< qlonglong > &imageIds)
Definition maintenancethread.cpp:315
void generateThumbs(const QStringList &paths)
Definition maintenancethread.cpp:121
void signalAdvance(const ItemInfo &, const QImage &, const QStringList &)
void cleanCoreDb(const QList< qlonglong > &imageIds)
Definition maintenancethread.cpp:243
void cleanThumbsDb(const QList< int > &thumbnailIds)
Definition maintenancethread.cpp:267
void cleanFacesDb(const QList< Identity > &staleIdentities)
Definition maintenancethread.cpp:291
void signalData(const QList< qlonglong > &staleImageIds, const QList< int > &staleThumbIds, const QList< Identity > &staleIdentities, const QList< qlonglong > &staleSimilarityImageIds)
void generateTags(const QStringList &paths, int modelType, const QStringList &langs)
Definition maintenancethread.cpp:168
void generateFingerprints(const QList< qlonglong > &itemIds, bool rebuildAll)
Definition maintenancethread.cpp:144
void removeMetadata(const ItemInfoList &items, MetadataRemover::RemoveAction action)
Definition maintenancethread.cpp:98
void shrinkDatabases()
Definition maintenancethread.cpp:339
void computeDatabaseJunk(bool thumbsDb=false, bool facesDb=false, bool similarityDb=false)
Definition maintenancethread.cpp:221
void syncMetadata(const ItemInfoList &items, MetadataSynchronizer::SyncDirection dir, bool tagsOnly)
Definition maintenancethread.cpp:71
void signalAdvance(const ItemInfo &, const QImage &, int)
void signalAdvance(const ItemInfo &, const QImage &)
void signalAdvance(const QImage &)
void setUseMultiCore(const bool b)
Definition maintenancethread.cpp:58
void cancel()
Definition maintenancethread.cpp:357
void signalAddItemsToProcess(int count)
void signalRemovePending(const ItemInfo &info)
~MaintenanceThread() override
Definition maintenancethread.cpp:50
void sortByImageQuality(const QStringList &paths, const ImageQualityContainer &quality)
Definition maintenancethread.cpp:195
RemoveAction
Definition metadataremover.h:38
SyncDirection
Definition metadatasynchronizer.h:37
Definition datefolderview.cpp:34