-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAnimator.cpp
More file actions
61 lines (49 loc) · 1.02 KB
/
Copy pathAnimator.cpp
File metadata and controls
61 lines (49 loc) · 1.02 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "Animator.h"
#include <QWidget>
Animator::Animator() : QObject(), m_frameTimer(new QTimer(this))
{
connect(m_frameTimer, SIGNAL(timeout()), this, SLOT(OnFrameTimerTimeout()));
}
Animator::~Animator()
{
m_frameTimer->blockSignals(true);
m_frameTimer->disconnect();
delete m_frameTimer;
}
Animator *Animator::Instance()
{
static Animator inst;
return &inst;
}
void Animator::OnObjectDestroyed(QObject *o)
{
QWidget *w = qobject_cast<QWidget*>(o);
if (w)
{
m_dirtyWidgets.remove(w);
}
}
void Animator::OnFrameTimerTimeout()
{
if (m_dirtyWidgets.isEmpty())
{
m_frameTimer->stop();
}
else
{
foreach (QWidget *w, m_dirtyWidgets)
{
w->update();
}
m_dirtyWidgets.clear();
}
}
void Animator::UpdateNextFrame(QWidget *w)
{
Animator *inst = Animator::Instance();
if (!inst->m_frameTimer->isActive())
{
inst->m_frameTimer->start(UI_FRAMETIME);
}
inst->m_dirtyWidgets.insert(w);
}