digiKam
Loading...
Searching...
No Matches
loadsavetask.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-20
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// Qt includes
19
20#include <QList>
21#include <QEvent>
22
23// Local includes
24
25#include "dimg.h"
26#include "dimgloaderobserver.h"
27#include "loadingdescription.h"
28#include "loadingcache.h"
29
30namespace Digikam
31{
32
33class LoadSaveThread;
34
36{
37public:
38
44
45public:
46
47 explicit LoadSaveTask(LoadSaveThread* const thread);
48 virtual ~LoadSaveTask() = default;
49
50public:
51
52 virtual void execute() = 0;
53 virtual TaskType type() = 0;
54
55 virtual void progressInfo(float progress) = 0;
56 virtual bool continueQuery() = 0;
57
58protected:
59
61
62private:
63
64 // Disable
65 LoadSaveTask(const LoadSaveTask&) = delete;
66 LoadSaveTask& operator=(const LoadSaveTask&) = delete;
67};
68
69//---------------------------------------------------------------------------------------------------
70
73{
74public:
75
82
83public:
84
85 explicit LoadingTask(LoadSaveThread* const thread,
86 const LoadingDescription& description,
88 ~LoadingTask() override = default;
89
91 QString filePath() const;
92
94
95 // LoadSaveTask
96
97 void execute() override;
98 TaskType type() override;
99
100 // DImgLoaderObserver
101
102 void progressInfo(float progress) override;
103 bool continueQuery() override;
104
106
107protected:
108
111
112private:
113
114 // Disable
115 LoadingTask(const LoadingTask&) = delete;
116 LoadingTask& operator=(const LoadingTask&) = delete;
117};
118
119//---------------------------------------------------------------------------------------------------
120
122 public LoadingProcess,
124{
125public:
126
127 explicit SharedLoadingTask(LoadSaveThread* const thread,
128 const LoadingDescription& description,
130 LoadingTaskStatus loadingTaskStatus = LoadingTaskStatusLoading);
131
132 void execute() override;
133 void progressInfo(float progress) override;
134
135 bool needsPostProcessing() const;
136 virtual void postProcess();
137
138 // LoadingProcess
139
140 bool completed() const override;
141 QString cacheKey() const override;
142 void addListener(LoadingProcessListener* const listener) override;
143 void removeListener(LoadingProcessListener* const listener) override;
144 void notifyNewLoadingProcess(LoadingProcess* const process,
145 const LoadingDescription& description) override;
146
147 // LoadingProcessListener
148
149 bool querySendNotifyEvent() const override;
151 const DImg& img) override;
152 LoadSaveNotifier* loadSaveNotifier() const override;
153 LoadSaveThread::AccessMode accessMode() const override;
154
155 DImg img() const;
156
157protected:
158
159 volatile bool m_completed = false;
161 QList<LoadingProcessListener*> m_listeners;
163
164private:
165
166 // Disable
167 SharedLoadingTask(const SharedLoadingTask&) = delete;
168 SharedLoadingTask& operator=(const SharedLoadingTask&) = delete;
169};
170
171//---------------------------------------------------------------------------------------------------
172
174 public DImgLoaderObserver
175{
176public:
177
183
184public:
185
186 explicit SavingTask(LoadSaveThread* const thread,
187 const DImg& img,
188 const QString& filePath,
189 const QString& format);
190
191 SavingTaskStatus status() const;
192 QString filePath() const;
193
194public:
195
196 void execute() override;
197 TaskType type() override;
198
199 void progressInfo(float progress) override;
200 bool continueQuery() override;
201
203
204private:
205
206 QString m_filePath;
207 QString m_format;
208 DImg m_img;
209 volatile SavingTaskStatus m_savingTaskStatus = SavingTaskStatusSaving;
210
211private:
212
213 // Disable
214 SavingTask(const SavingTask&) = delete;
215 SavingTask& operator=(const SavingTask&) = delete;
216};
217
218} // namespace Digikam
Definition dimgloaderobserver.h:31
Definition dimg.h:52
Definition loadsavethread.h:41
Definition loadsavetask.h:36
virtual bool continueQuery()=0
TaskType
Definition loadsavetask.h:40
@ TaskTypeLoading
Definition loadsavetask.h:41
@ TaskTypeSaving
Definition loadsavetask.h:42
virtual void progressInfo(float progress)=0
virtual ~LoadSaveTask()=default
LoadSaveThread * m_thread
Definition loadsavetask.h:60
virtual TaskType type()=0
virtual void execute()=0
Definition loadsavethread.h:93
AccessMode
Definition loadsavethread.h:117
@ AccessModeReadWrite
Definition loadsavethread.h:125
Definition loadingdescription.h:35
Definition loadingcache.h:33
Definition loadingcache.h:54
Definition loadsavetask.h:73
LoadingTaskStatus status() const
Definition loadsavetask.cpp:46
~LoadingTask() override=default
QString filePath() const
Definition loadsavetask.cpp:51
bool continueQuery() override
Definition loadsavetask.cpp:91
const LoadingDescription & loadingDescription() const
Definition loadsavetask.cpp:56
void setStatus(LoadingTaskStatus status)
Definition loadsavetask.cpp:96
TaskType type() override
Definition loadsavetask.cpp:75
LoadingTaskStatus
Definition loadsavetask.h:77
@ LoadingTaskStatusPreloading
Definition loadsavetask.h:79
@ LoadingTaskStatusLoading
Definition loadsavetask.h:78
@ LoadingTaskStatusStopping
Definition loadsavetask.h:80
void execute() override
Definition loadsavetask.cpp:61
volatile LoadingTaskStatus m_loadingTaskStatus
Definition loadsavetask.h:110
LoadingDescription m_loadingDescription
Definition loadsavetask.h:109
void progressInfo(float progress) override
Definition loadsavetask.cpp:80
Definition loadsavetask.h:175
SavingTaskStatus status() const
Definition loadsavetask.cpp:471
QString filePath() const
Definition loadsavetask.cpp:476
TaskType type() override
Definition loadsavetask.cpp:489
void setStatus(SavingTaskStatus status)
Definition loadsavetask.cpp:507
bool continueQuery() override
Definition loadsavetask.cpp:502
void progressInfo(float progress) override
Definition loadsavetask.cpp:494
void execute() override
Definition loadsavetask.cpp:481
SavingTaskStatus
Definition loadsavetask.h:179
@ SavingTaskStatusSaving
Definition loadsavetask.h:180
@ SavingTaskStatusStopping
Definition loadsavetask.h:181
Definition loadsavetask.h:124
LoadSaveNotifier * loadSaveNotifier() const override
Definition loadsavetask.cpp:443
QString cacheKey() const override
Definition loadsavetask.cpp:397
void progressInfo(float progress) override
Definition loadsavetask.cpp:372
void removeListener(LoadingProcessListener *const listener) override
Definition loadsavetask.cpp:407
bool querySendNotifyEvent() const override
Definition loadsavetask.cpp:438
void execute() override
Definition loadsavetask.cpp:114
LoadSaveThread::AccessMode accessMode() const override
Definition loadsavetask.cpp:448
DImg m_img
Definition loadsavetask.h:162
bool completed() const override
Definition loadsavetask.cpp:392
LoadSaveThread::AccessMode m_accessMode
Definition loadsavetask.h:160
bool needsPostProcessing() const
Definition loadsavetask.cpp:320
QList< LoadingProcessListener * > m_listeners
Definition loadsavetask.h:161
DImg img() const
Definition loadsavetask.cpp:453
void addListener(LoadingProcessListener *const listener) override
Definition loadsavetask.cpp:402
void setResult(const LoadingDescription &loadingDescription, const DImg &img) override
Definition loadsavetask.cpp:306
virtual void postProcess()
Definition loadsavetask.cpp:325
volatile bool m_completed
Definition loadsavetask.h:159
void notifyNewLoadingProcess(LoadingProcess *const process, const LoadingDescription &description) override
Definition loadsavetask.cpp:412
Definition datefolderview.cpp:34