digiKam
Loading...
Searching...
No Matches
managedloadsavethread.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 : 2006-01-16
7 * Description : image file IO threaded interface.
8 *
9 * SPDX-FileCopyrightText: 2005-2013 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2005-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// Local includes
19
20#include "loadsavethread.h"
21
22namespace Digikam
23{
24
25class LoadingTask;
26class LoadSaveTask;
27
28class DIGIKAM_EXPORT ManagedLoadSaveThread : public LoadSaveThread
29{
30 Q_OBJECT
31
32public:
33
70
91
93 {
101 LoadingTaskFilterPreloading
102 };
103
108 {
116 LoadingModeShared
117 };
118
119public:
120
125 explicit ManagedLoadSaveThread(QObject* const parent = nullptr);
126 ~ManagedLoadSaveThread() override;
127
135 void load(const LoadingDescription& description);
136 void load(const LoadingDescription& description, LoadingPolicy policy);
137
142 void stopLoading(const QString& filePath = QString(),
143 LoadingTaskFilter filter = LoadingTaskFilterAll);
144
148 void stopLoading(const LoadingDescription& desc,
149 LoadingTaskFilter filter = LoadingTaskFilterAll);
150
155 void stopSaving(const QString& filePath = QString());
156
157 void stopAllTasks();
158
162 void save(const DImg& image, const QString& filePath, const QString& format);
163
164 void setTerminationPolicy(TerminationPolicy terminationPolicy);
165 TerminationPolicy terminationPolicy() const;
166
172 void setLoadingPolicy(LoadingPolicy policy);
173 LoadingPolicy loadingPolicy() const;
174
175protected:
176
177 void shutDown();
178
179 void load(const LoadingDescription& description, LoadingMode loadingMode,
180 AccessMode mode = AccessModeReadWrite);
181
182 void load(const LoadingDescription& description, LoadingMode loadingMode,
183 LoadingPolicy policy, AccessMode mode = AccessModeReadWrite);
184
185 void loadPreview(const LoadingDescription& description, LoadingPolicy policy);
186 void loadThumbnail(const LoadingDescription& description);
187
188 void preloadThumbnail(const LoadingDescription& description);
189 void preloadThumbnailGroup(const QList<LoadingDescription>& descriptions);
190 void prependThumbnailGroup(const QList<LoadingDescription>& descriptions);
191
192protected:
193
194 LoadingPolicy m_loadingPolicy = LoadingPolicyAppend;
195 TerminationPolicy m_terminationPolicy = TerminationPolicyTerminateLoading;
196
197private:
198
199 LoadingTask* checkLoadingTask(LoadSaveTask* const task, LoadingTaskFilter filter) const;
200 LoadingTask* findExistingTask(const LoadingDescription& description) const;
201 LoadingTask* createLoadingTask(const LoadingDescription& description,
202 bool preloading,
203 LoadingMode loadingMode,
204 AccessMode accessMode);
205
206 void removeLoadingTasks(const LoadingDescription& description, LoadingTaskFilter filter);
207
208private:
209
210 // Disable
212 ManagedLoadSaveThread& operator=(const ManagedLoadSaveThread&) = delete;
213};
214
215} // namespace Digikam
Definition dimg.h:52
Definition loadsavetask.h:36
Definition loadsavethread.h:93
AccessMode
Definition loadsavethread.h:117
Definition loadingdescription.h:35
Definition loadsavetask.h:73
Definition managedloadsavethread.h:29
TerminationPolicy
Definition managedloadsavethread.h:72
@ TerminationPolicyWait
Definition managedloadsavethread.h:85
@ TerminationPolicyTerminateLoading
Definition managedloadsavethread.h:77
@ TerminationPolicyTerminatePreloading
Definition managedloadsavethread.h:81
LoadingPolicy
Definition managedloadsavethread.h:35
@ LoadingPolicySimplePrepend
Definition managedloadsavethread.h:49
@ LoadingPolicyFirstRemovePrevious
Definition managedloadsavethread.h:39
@ LoadingPolicyAppend
Definition managedloadsavethread.h:56
@ LoadingPolicyPrepend
Definition managedloadsavethread.h:44
@ LoadingPolicySimpleAppend
Definition managedloadsavethread.h:61
LoadingTaskFilter
Definition managedloadsavethread.h:93
@ LoadingTaskFilterAll
Definition managedloadsavethread.h:97
LoadingMode
Definition managedloadsavethread.h:108
@ LoadingModeNormal
Definition managedloadsavethread.h:112
Definition datefolderview.cpp:34