diff options
| author | Felix Ernst <[email protected]> | 2021-01-02 17:48:52 +0000 |
|---|---|---|
| committer | Elvis Angelaccio <[email protected]> | 2021-01-02 17:48:52 +0000 |
| commit | f01a61b76c8588a4df2054ab70e9a746a74f7817 (patch) | |
| tree | 1bc359df5c5f2e203652f1e59e1c08544383488e /src/global.cpp | |
| parent | d3c5bb6e9b99c6ff43bd8160df58d35a725a0894 (diff) | |
Animate split view mode toggling
Have the secondary ViewContainer slide into/out of view when split view mode is switched on or off by the user.
This should help users understand what split view mode is about. Without the animation it might seem like the only thing the button does is creating a weird vertical line in the middle of the view or something. With the animation it should be clear that the second view is a separate entity that was added. The closing animation will help users understand which of the ViewContainers was just closed.
Diffstat (limited to 'src/global.cpp')
| -rw-r--r-- | src/global.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/global.cpp b/src/global.cpp index 1018c7d4c..3d17a733b 100644 --- a/src/global.cpp +++ b/src/global.cpp @@ -10,6 +10,7 @@ #include "dolphindebug.h" #include "dolphinmainwindowinterface.h" +#include <KConfigWatcher> #include <KDialogJobUiDelegate> #include <KIO/ApplicationLauncherJob> #include <KService> @@ -138,3 +139,29 @@ QVector<QPair<QSharedPointer<OrgKdeDolphinMainWindowInterface>, QStringList>> Do return dolphinInterfaces; } + +double GlobalConfig::animationDurationFactor() +{ + if (s_animationDurationFactor >= 0.0) { + return s_animationDurationFactor; + } + // This is the first time this method is called. + auto kdeGlobalsConfig = KConfigGroup(KSharedConfig::openConfig(), QStringLiteral("KDE")); + updateAnimationDurationFactor(kdeGlobalsConfig, {"AnimationDurationFactor"}); + + KConfigWatcher::Ptr configWatcher = KConfigWatcher::create(KSharedConfig::openConfig()); + connect(configWatcher.data(), &KConfigWatcher::configChanged, + &GlobalConfig::updateAnimationDurationFactor); + return s_animationDurationFactor; +} + +void GlobalConfig::updateAnimationDurationFactor(const KConfigGroup &group, const QByteArrayList &names) +{ + if (group.name() == QLatin1String("KDE") && + names.contains(QByteArrayLiteral("AnimationDurationFactor"))) { + s_animationDurationFactor = std::max(0.0, + group.readEntry("AnimationDurationFactor", 1.0)); + } +} + +double GlobalConfig::s_animationDurationFactor = -1.0; |
