Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAsyncActionFeedback Class Reference

#include <kis_async_action_feedback.h>

Classes

struct  DefaultWaitingMessageCallback
 
struct  MutexLike
 
struct  MutexLikeBase
 
class  MutexWrapper
 
struct  Private
 

Public Member Functions

 KisAsyncActionFeedback (const QString &message, QWidget *parent)
 
KisImportExportErrorCode runAction (std::function< KisImportExportErrorCode()> func)
 
void runVoidAction (std::function< void()> func)
 
template<typename Mutex >
void waitForMutex (Mutex &mutex)
 
 ~KisAsyncActionFeedback ()
 

Private Member Functions

void waitForMutexLikeImpl (std::unique_ptr< MutexLikeBase > &&mutex)
 

Private Attributes

const QScopedPointer< Privatem_d
 

Detailed Description

Definition at line 17 of file kis_async_action_feedback.h.

Constructor & Destructor Documentation

◆ KisAsyncActionFeedback()

KisAsyncActionFeedback::KisAsyncActionFeedback ( const QString & message,
QWidget * parent )

Definition at line 18 of file kis_async_action_feedback.cpp.

19 : m_d(new Private)
20{
21 m_d->progress.reset(new QProgressDialog(message, "", 0, 0, parent));
22 m_d->progress->setWindowModality(Qt::ApplicationModal);
23 m_d->progress->setCancelButton(0);
24 m_d->progress->setMinimumDuration(1000);
25 m_d->progress->setValue(0);
26
27 // disable close button
28 m_d->progress->setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint);
29}
const QScopedPointer< Private > m_d

References m_d.

◆ ~KisAsyncActionFeedback()

KisAsyncActionFeedback::~KisAsyncActionFeedback ( )

Definition at line 31 of file kis_async_action_feedback.cpp.

32{
33}

Member Function Documentation

◆ runAction()

KisImportExportErrorCode KisAsyncActionFeedback::runAction ( std::function< KisImportExportErrorCode()> func)

Definition at line 50 of file kis_async_action_feedback.cpp.

51{
52 return runActionImpl(func);
53}
T runActionImpl(std::function< T()> func)

References runActionImpl().

◆ runVoidAction()

void KisAsyncActionFeedback::runVoidAction ( std::function< void()> func)

Definition at line 55 of file kis_async_action_feedback.cpp.

56{
57 QFuture<void> result = QtConcurrent::run(func);
58 QFutureWatcher<void> watcher;
59 watcher.setFuture(result);
60
61 while (watcher.isRunning()) {
62 qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
63 }
64
65 watcher.waitForFinished();
66}

◆ waitForMutex()

template<typename Mutex >
void KisAsyncActionFeedback::waitForMutex ( Mutex & mutex)
inline

Definition at line 32 of file kis_async_action_feedback.h.

32 {
33 waitForMutexLikeImpl(std::make_unique<MutexLike<Mutex>>(mutex));
34 }
void waitForMutexLikeImpl(std::unique_ptr< MutexLikeBase > &&mutex)
static QMutex mutex

References mutex, and waitForMutexLikeImpl().

◆ waitForMutexLikeImpl()

void KisAsyncActionFeedback::waitForMutexLikeImpl ( std::unique_ptr< MutexLikeBase > && mutex)
private

Definition at line 68 of file kis_async_action_feedback.cpp.

69{
70 while (!mutex->try_lock()) {
71 qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
72 }
73
74 mutex->unlock();
75}

References mutex.

Member Data Documentation

◆ m_d

const QScopedPointer<Private> KisAsyncActionFeedback::m_d
private

Definition at line 94 of file kis_async_action_feedback.h.


The documentation for this class was generated from the following files: