diff options
Diffstat (limited to 'src/plugins/coreplugin/progressmanager/progressmanager.cpp')
-rw-r--r-- | src/plugins/coreplugin/progressmanager/progressmanager.cpp | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.cpp b/src/plugins/coreplugin/progressmanager/progressmanager.cpp index 9891a2b3f4..1b4166df5a 100644 --- a/src/plugins/coreplugin/progressmanager/progressmanager.cpp +++ b/src/plugins/coreplugin/progressmanager/progressmanager.cpp @@ -13,6 +13,7 @@ #include <extensionsystem/pluginmanager.h> #include <utils/hostosinfo.h> +#include <utils/mathutils.h> #include <utils/qtcassert.h> #include <utils/stylehelper.h> #include <utils/theme/theme.h> @@ -27,7 +28,6 @@ #include <QStyle> #include <QStyleOption> #include <QTimer> -#include <QtMath> #include <QVariant> static const char kSettingsGroup[] = "Progress"; @@ -779,13 +779,8 @@ ProgressTimer::ProgressTimer(const QFutureInterfaceBase &futureInterface, void ProgressTimer::handleTimeout() { ++m_currentTime; - - // This maps expectation to atan(1) to Pi/4 ~= 0.78, i.e. snaps - // from 78% to 100% when expectations are met at the time the - // future finishes. That's not bad for a random choice. - const double mapped = atan2(double(m_currentTime) * TimerInterval / 1000.0, - double(m_expectedTime)); - const double progress = 100 * 2 * mapped / M_PI; - m_futureInterface.setProgressValue(int(progress)); + const int halfLife = qRound(1000.0 * m_expectedTime / TimerInterval); + const int progress = MathUtils::interpolateTangential(m_currentTime, halfLife, 0, 100); + m_futureInterface.setProgressValue(progress); } |