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 21 of file kis_async_action_feedback.cpp.

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

References m_d.

◆ ~KisAsyncActionFeedback()

KisAsyncActionFeedback::~KisAsyncActionFeedback ( )

Definition at line 34 of file kis_async_action_feedback.cpp.

35{
36}

Member Function Documentation

◆ runAction()

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

Definition at line 53 of file kis_async_action_feedback.cpp.

54{
55 return runActionImpl(func);
56}
T runActionImpl(std::function< T()> func)

References runActionImpl().

◆ runVoidAction()

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

Definition at line 58 of file kis_async_action_feedback.cpp.

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

◆ 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 71 of file kis_async_action_feedback.cpp.

72{
73 while (!mutex->try_lock()) {
74 qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
75 }
76
77 mutex->unlock();
78}

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: