digiKam
Loading...
Searching...
No Matches
scancontroller_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 : 2005-10-28
7 * Description : scan item controller - private containers.
8 *
9 * SPDX-FileCopyrightText: 2005-2006 by Tom Albers <tomalbers at kde dot nl>
10 * SPDX-FileCopyrightText: 2006-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 * SPDX-FileCopyrightText: 2007-2013 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19#include "scancontroller.h"
20
21// Qt includes
22
23#include <QStringList>
24#include <QFileInfo>
25#include <QPixmap>
26#include <QIcon>
27#include <QTime>
28#include <QMutex>
29#include <QMutexLocker>
30#include <QWaitCondition>
31#include <QTimer>
32#include <QEventLoop>
33#include <QApplication>
34#include <QMessageBox>
35
36// KDE includes
37
38#include <klocalizedstring.h>
39
40// Local includes
41
42#include "digikam_debug.h"
43#include "coredbaccess.h"
44#include "collectionmanager.h"
45#include "collectionlocation.h"
46#include "filereadwritelock.h"
47#include "coredbwatch.h"
48#include "dprogressdlg.h"
49#include "dmetadata.h"
50#include "coredb.h"
51#include "albummanager.h"
52#include "album.h"
53#include "coredbschemaupdater.h"
54#include "iteminfo.h"
55
56namespace Digikam
57{
58
59/*
60 * This class is derived from the LoadingCacheFileWatch,
61 * which means it has the full functionality of the class
62 * and only extends it by listening to CollectionScanner information
63 */
65{
66 Q_OBJECT
67
68public:
69
71
72private Q_SLOTS:
73
74 void slotImageChanged(const ImageChangeset& changeset);
75
76private:
77
78 // Disable
79 explicit ScanControllerLoadingCacheFileWatch(QObject*) = delete;
80};
81
82// ------------------------------------------------------------------------------
83
85{
86public:
87
88 explicit SimpleCollectionScannerObserver(bool* const var);
89
90 bool continueQuery() override;
91
92public:
93
94 bool* m_continue = nullptr;
95};
96
97// ------------------------------------------------------------------------------
98
99class Q_DECL_HIDDEN ScanController::Private
100{
101public:
102
103 Private() = default;
104
105 QPixmap albumPixmap();
106 QPixmap rootPixmap();
107 QPixmap actionPixmap();
108 QPixmap errorPixmap();
109 QPixmap restartPixmap();
110
111 void garbageCollectHints(bool setAccessTime);
112
113public:
114
115 bool running = false;
116 bool needsInitialization = false;
117 bool needsCompleteScan = false;
118 bool needsUpdateUniqueHash = false;
119 bool idle = false;
120
121 int scanSuspended = 0;
122
123 QStringList scanTasks;
124
126 bool deferFileScanning = false;
127 bool finishScanAllowed = true;
128
129 QMutex mutex;
130 QWaitCondition condVar;
131
132 bool continueInitialization = false;
133 bool continueScan = false;
134 bool continuePartialScan = false;
135
136 bool fileWatchInstalled = false;
137
138 QEventLoop* eventLoop = nullptr;
139
140 QTimer* showTimer = nullptr;
141 QTimer* relaxedTimer = nullptr;
142 QTimer* externalTimer = nullptr;
143
144 QPixmap albumPix;
145 QPixmap rootPix;
146 QPixmap actionPix;
147 QPixmap errorPix;
148
149 CollectionScannerHintContainer* hints = CollectionScanner::createHintContainer();
150
151 QDateTime lastHintAdded;
152
153 DProgressDlg* progressDialog = nullptr;
154
155 ScanController::Advice advice = ScanController::Success;
156
157 bool needTotalFiles = false;
158 bool performFastScan = true;
159 int totalFilesToScan = 0;
160
161 QList<qlonglong> newIdsList;
162};
163
164// ------------------------------------------------------------------------------
165
166class Q_DECL_HIDDEN ScanControllerCreator
167{
168public:
169
171};
172
173} // namespace Digikam
Definition collectionscannerhints.h:48
Definition collectionscannerobserver.h:31
Definition dprogressdlg.h:30
Definition coredbchangesets.h:38
Definition loadingcache.h:76
Definition scancontroller_p.h:167
ScanController object
Definition scancontroller_p.h:170
Definition scancontroller_p.h:65
Definition scancontroller_p.h:100
QMutex mutex
Definition scancontroller_p.h:129
QList< qlonglong > newIdsList
Definition scancontroller_p.h:161
QDateTime lastHintAdded
Definition scancontroller_p.h:151
QPixmap errorPix
Definition scancontroller_p.h:147
QPixmap rootPix
Definition scancontroller_p.h:145
QStringList completeScanDeferredAlbums
Definition scancontroller_p.h:125
QStringList scanTasks
Definition scancontroller_p.h:123
QPixmap actionPix
Definition scancontroller_p.h:146
QPixmap albumPix
Definition scancontroller_p.h:144
QWaitCondition condVar
Definition scancontroller_p.h:130
Definition scancontroller.h:43
Advice
Definition scancontroller.h:49
Definition scancontroller_p.h:85
Definition datefolderview.cpp:34