aboutsummaryrefslogtreecommitdiff
path: root/src/screenslidetimer.h
blob: c2bf7a8daa5cfe25eb82f3d5cc7454aa7a1325a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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