Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_async_action_feedback.cpp
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com>
3
*
4
* SPDX-License-Identifier: GPL-2.0-or-later
5
*/
6
7
#include "
kis_async_action_feedback.h
"
8
9
#include <QtConcurrent>
10
#include <QProgressDialog>
11
12
13
struct
KisAsyncActionFeedback::Private
14
{
15
QScopedPointer<QProgressDialog>
progress
;
16
};
17
18
KisAsyncActionFeedback::KisAsyncActionFeedback
(
const
QString &message, QWidget *parent)
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
}
30
31
KisAsyncActionFeedback::~KisAsyncActionFeedback
()
32
{
33
}
34
35
template
<
typename
T>
36
T
runActionImpl
(std::function<T()> func)
37
{
38
QFuture<T>
result = QtConcurrent::run(func);
39
QFutureWatcher<T> watcher;
40
watcher.setFuture(result);
41
42
while
(watcher.isRunning()) {
43
qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
44
}
45
46
watcher.waitForFinished();
47
return
watcher.result();
48
}
49
50
KisImportExportErrorCode
KisAsyncActionFeedback::runAction
(std::function<
KisImportExportErrorCode
()> func)
51
{
52
return
runActionImpl
(func);
53
}
54
55
void
KisAsyncActionFeedback::runVoidAction
(std::function<
void
()> func)
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
}
67
68
void
KisAsyncActionFeedback::waitForMutexLikeImpl
(std::unique_ptr<MutexLikeBase> &&
mutex
)
69
{
70
while
(!
mutex
->try_lock()) {
71
qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
72
}
73
74
mutex
->unlock();
75
}
76
77
QString
KisAsyncActionFeedback::DefaultWaitingMessageCallback::operator()
()
const
78
{
79
return
i18nc(
"progress dialog message when the user has to wait for the image to become unlocked"
,
"Waiting for the action to complete..."
);
80
}
KisAsyncActionFeedback::m_d
const QScopedPointer< Private > m_d
Definition
kis_async_action_feedback.h:94
KisAsyncActionFeedback::runAction
KisImportExportErrorCode runAction(std::function< KisImportExportErrorCode()> func)
Definition
kis_async_action_feedback.cpp:50
KisAsyncActionFeedback::~KisAsyncActionFeedback
~KisAsyncActionFeedback()
Definition
kis_async_action_feedback.cpp:31
KisAsyncActionFeedback::KisAsyncActionFeedback
KisAsyncActionFeedback(const QString &message, QWidget *parent)
Definition
kis_async_action_feedback.cpp:18
KisAsyncActionFeedback::runVoidAction
void runVoidAction(std::function< void()> func)
Definition
kis_async_action_feedback.cpp:55
KisAsyncActionFeedback::waitForMutexLikeImpl
void waitForMutexLikeImpl(std::unique_ptr< MutexLikeBase > &&mutex)
Definition
kis_async_action_feedback.cpp:68
KisImportExportErrorCode
Definition
KisImportExportErrorCode.h:110
QFuture
Definition
KisImportExportManager.h:23
runActionImpl
T runActionImpl(std::function< T()> func)
Definition
kis_async_action_feedback.cpp:36
kis_async_action_feedback.h
mutex
static QMutex mutex
Definition
kis_extended_modifiers_mapper_osx.mm:37
Private
Definition
SvgTransformParser.cpp:20
KisAsyncActionFeedback::DefaultWaitingMessageCallback::operator()
QString operator()() const
Definition
kis_async_action_feedback.cpp:77
KisAsyncActionFeedback::Private
Definition
kis_async_action_feedback.cpp:14
KisAsyncActionFeedback::Private::progress
QScopedPointer< QProgressDialog > progress
Definition
kis_async_action_feedback.cpp:15
libs
ui
kis_async_action_feedback.cpp
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52