diff options
| author | TrickyLeifa <date.epoch@gmail.com> | 2024-06-03 18:11:17 +0200 |
|---|---|---|
| committer | TrickyLeifa <date.epoch@gmail.com> | 2024-06-03 18:11:17 +0200 |
| commit | a714bacd1aba3e54bf485580d112b42385788c50 (patch) | |
| tree | 252ce858a688d2025fcdba92036bd6a935a5608f /src/screenslidetimer.h | |
| parent | 5af9dce21481e1d402df701b91593ccde4049c4b (diff) | |
Added screen slide timer
* Added screen slide timer
* Added so that the animation becomes interruptible.
Diffstat (limited to 'src/screenslidetimer.h')
| -rw-r--r-- | src/screenslidetimer.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/screenslidetimer.h b/src/screenslidetimer.h new file mode 100644 index 00000000..c2bf7a8d --- /dev/null +++ b/src/screenslidetimer.h @@ -0,0 +1,46 @@ +#pragma once + +#include <QObject> +#include <QParallelAnimationGroup> +#include <QTimer> + +namespace kal +{ +class ScreenSlideTimer : public QObject +{ + Q_OBJECT + +public: + static const int TRANSITION_BOOKEND_DELAY = 300; + + explicit ScreenSlideTimer(QObject *parent = nullptr); + virtual ~ScreenSlideTimer(); + + void addAnimation(QAbstractAnimation *animation); + +public Q_SLOTS: + void start(); + void stop(); + +Q_SIGNALS: + void started(); + void finished(); + +private: + enum TransitionState + { + NoTransition, + PreTransition, + GroupTransition, + PostTransition, + }; + + bool m_running = false; + TransitionState m_state = NoTransition; + QParallelAnimationGroup *m_group; + QTimer *m_pause; + +private Q_SLOTS: + void startNextState(); +}; +} // namespace kal |
