digiKam Developer Documentation
Professional Photo Management with the Power of Open Source
Loading...
Searching...
No Matches
Digikam::LoadSaveThread Class Reference
+ Inheritance diagram for Digikam::LoadSaveThread:

Public Types

enum  AccessMode { AccessModeRead , AccessModeReadWrite }
 used by SharedLoadSaveThread only More...
 
enum  NotificationPolicy { NotificationPolicyDirect , NotificationPolicyTimeLimited }
 
- Public Types inherited from Digikam::DynamicThread
enum  State { Inactive , Scheduled , Running , Deactivating }
 

Signals

void signalImageLoaded (const LoadingDescription &loadingDescription, const DImg &img)
 This signal is emitted when the loading process has finished.
 
void signalImageSaved (const QString &filePath, bool success)
 
void signalImageStartedLoading (const LoadingDescription &loadingDescription)
 All signals are delivered to the thread from where the LoadSaveThread object has been created.
 
void signalImageStartedSaving (const QString &filePath)
 
void signalLoadingProgress (const LoadingDescription &loadingDescription, float progress)
 This signal is emitted whenever new progress info is available and the notification policy allows emitting the signal.
 
void signalMoreCompleteLoadingAvailable (const LoadingDescription &oldLoadingDescription, const LoadingDescription &newLoadingDescription)
 This signal is emitted if.
 
void signalQImageThumbnailLoaded (const LoadingDescription &loadingDescription, const QImage &img)
 
void signalSavingProgress (const QString &filePath, float progress)
 
- Signals inherited from Digikam::DynamicThread
void finished ()
 
void starting ()
 Emitted if emitSignals is enabled.
 

Public Member Functions

 LoadSaveThread (QObject *const parent=nullptr)
 
 ~LoadSaveThread () override
 Destructor: The thread will execute all pending tasks and wait for this upon destruction.
 
void imageLoaded (const LoadingDescription &loadingDescription, const DImg &img) override
 
void imageSaved (const QString &filePath, bool success) override
 
void imageStartedLoading (const LoadingDescription &loadingDescription) override
 
void imageStartedSaving (const QString &filePath) override
 
virtual void load (const LoadingDescription &description)
 Append a task to load the given file to the task list.
 
void loadingProgress (const LoadingDescription &loadingDescription, float progress) override
 
void moreCompleteLoadingAvailable (const LoadingDescription &oldLoadingDescription, const LoadingDescription &newLoadingDescription) override
 
virtual bool querySendNotifyEvent () const
 
virtual void save (const DImg &image, const QString &filePath, const QString &format)
 Append a task to save the image to the task list.
 
void savingProgress (const QString &filePath, float progress) override
 
void setNotificationPolicy (NotificationPolicy notificationPolicy)
 
virtual void taskHasFinished ()
 
void thumbnailLoaded (const LoadingDescription &loadingDescription, const QImage &img) override
 
- Public Member Functions inherited from Digikam::DynamicThread
 DynamicThread (QObject *const parent=nullptr)
 This class extends QRunnable, so you have to reimplement virtual void run().
 
 ~DynamicThread () override
 The destructor calls stop() and wait(), but if you, in your destructor, delete any data that is accessed by your run() method, you must call stop() and wait() before yourself.
 
bool isFinished () const
 
bool isRunning () const
 
QThread::Priority priority () const
 
void setEmitSignals (bool emitThem)
 
void setPriority (QThread::Priority priority)
 Sets the priority for this dynamic thread.
 
State state () const
 

Static Public Member Functions

static int exifOrientation (const QString &filePath, const DMetadata &metadata, bool isRaw, bool fromRawEmbeddedPreview)
 Retrieves the Exif orientation, either from the info provider if available, or from the metadata.
 
static LoadSaveFileInfoProviderinfoProvider ()
 
static void setInfoProvider (LoadSaveFileInfoProvider *const infoProvider)
 

Protected Member Functions

void notificationReceived ()
 
void run () override
 Implement this pure virtual function in your subclass.
 
- Protected Member Functions inherited from Digikam::DynamicThread
bool runningFlag () const volatile
 In you run() method, you shall regularly check for runningFlag() and cleanup and return if false.
 
virtual void shutDown ()
 If you are deleting data in your destructor which is accessed from the thread, do one of the following from your destructor to guarantee a safe shutdown: 1) Call this method 2) Call stop() and wait(), knowing that nothing will call start() anymore after this 3) Be sure the thread will never be running at destruction.
 
void start (QMutexLocker< QMutex > &locker)
 Doing the same as start(), stop() and wait above, provide it with a locked QMutexLocker on mutex().
 
void stop (const QMutexLocker< QMutex > &locker)
 
QMutex * threadMutex () const
 This is the non-recursive mutex used to protect state variables and waiting in this class.
 
void wait (QMutexLocker< QMutex > &locker)
 

Protected Attributes

LoadSaveTaskm_currentTask = nullptr
 
QMutex m_mutex
 
NotificationPolicy m_notificationPolicy = NotificationPolicyTimeLimited
 
QList< LoadSaveTask * > m_todo
 

Additional Inherited Members

- Public Slots inherited from Digikam::DynamicThread
void start ()
 
void stop ()
 Stop computation, sets the running flag to false.
 
void wait ()
 Waits until the thread finishes.
 

Member Enumeration Documentation

◆ AccessMode

Enumerator
AccessModeRead 

image will only be used for reading

AccessModeReadWrite 

image data will possibly be changed

◆ NotificationPolicy

Enumerator
NotificationPolicyDirect 

Always send notification, unless the last event is still in the event queue.

NotificationPolicyTimeLimited 

Always wait for a certain amount of time after the last event sent.

In particular, the first event will be sent only after waiting for this time span. (Or no event will be sent, when the loading has finished before) This is the default.

Member Function Documentation

◆ imageLoaded()

void Digikam::LoadSaveThread::imageLoaded ( const LoadingDescription loadingDescription,
const DImg img 
)
overridevirtual

◆ imageSaved()

void Digikam::LoadSaveThread::imageSaved ( const QString &  filePath,
bool  success 
)
overridevirtual

◆ imageStartedLoading()

void Digikam::LoadSaveThread::imageStartedLoading ( const LoadingDescription loadingDescription)
overridevirtual

◆ imageStartedSaving()

void Digikam::LoadSaveThread::imageStartedSaving ( const QString &  filePath)
overridevirtual

◆ load()

void Digikam::LoadSaveThread::load ( const LoadingDescription description)
virtual

◆ loadingProgress()

void Digikam::LoadSaveThread::loadingProgress ( const LoadingDescription loadingDescription,
float  progress 
)
overridevirtual

◆ moreCompleteLoadingAvailable()

void Digikam::LoadSaveThread::moreCompleteLoadingAvailable ( const LoadingDescription oldLoadingDescription,
const LoadingDescription newLoadingDescription 
)
overridevirtual

◆ run()

void Digikam::LoadSaveThread::run ( )
overrideprotectedvirtual

◆ save()

void Digikam::LoadSaveThread::save ( const DImg image,
const QString &  filePath,
const QString &  format 
)
virtual

Reimplemented in Digikam::ManagedLoadSaveThread.

◆ savingProgress()

void Digikam::LoadSaveThread::savingProgress ( const QString &  filePath,
float  progress 
)
overridevirtual

◆ signalImageLoaded

void Digikam::LoadSaveThread::signalImageLoaded ( const LoadingDescription loadingDescription,
const DImg img 
)
signal

If the process failed, img is null.

◆ signalImageStartedLoading

void Digikam::LoadSaveThread::signalImageStartedLoading ( const LoadingDescription loadingDescription)
signal

This thread must use its event loop to get the signals. You must connect to these signals with Qt::AutoConnection (default) or Qt::QueuedConnection. This signal is emitted when the loading process begins.

◆ signalLoadingProgress

void Digikam::LoadSaveThread::signalLoadingProgress ( const LoadingDescription loadingDescription,
float  progress 
)
signal

No progress info will be sent for preloaded images (ManagedLoadSaveThread).

◆ signalMoreCompleteLoadingAvailable

void Digikam::LoadSaveThread::signalMoreCompleteLoadingAvailable ( const LoadingDescription oldLoadingDescription,
const LoadingDescription newLoadingDescription 
)
signal
  • you are doing shared loading (SharedLoadSaveThread)
  • you started a loading operation with a LoadingDescription for a reduced version of the image
  • another thread started a loading operation for a more complete version You may want to cancel the current operation and start with the given loadingDescription

◆ thumbnailLoaded()

void Digikam::LoadSaveThread::thumbnailLoaded ( const LoadingDescription loadingDescription,
const QImage &  img 
)
overridevirtual