GUI
src
EventEmitter.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017 by Maciej Wiecierzewski
3
*/
4
5
#include "
EventEmitter.h
"
6
7
#include <algorithm>
8
#include <utility>
9
10
#include "
GUISystem.h
"
11
12
using namespace
gui
;
13
14
EventEmitter::EventEmitter
() :
15
lastListenerId(0)
16
{
17
}
18
19
EventEmitter::~EventEmitter
()
20
{
21
}
22
23
void
EventEmitter::setQueue
(
AddToQueue
addFunction)
24
{
25
addToQueue
= addFunction;
26
}
27
28
EventListener::Id
EventEmitter::addEventListener
(
EventType
eventType,
EventListener::Function
listenerFunc)
29
{
30
EventListener
listener(listenerFunc);
31
listener.
id
= ++
lastListenerId
;
32
eventListeners
.emplace(eventType, listener);
33
34
return
listener.
id
;
35
}
36
37
void
EventEmitter::removeEventListener
(
EventListener::Id
listenerId)
38
{
39
auto
iter = std::find_if(
eventListeners
.begin(),
eventListeners
.end(),
MapPredicate
(listenerId));
40
41
eventListeners
.erase(iter);
42
}
43
44
void
EventEmitter::emitEvent
(
Event
& event)
45
{
46
auto
range =
eventListeners
.equal_range(event.
getType
());
47
48
for
(Map::iterator i = range.first; i != range.second; i++)
49
{
50
Event
evtCopy =
guiSystem
->
cloneEvent
(event);
51
addToQueue
(std::move(evtCopy), i->second);
52
53
break
;
54
}
55
}
Generated on Sat Feb 11 2017 20:22:31 for GUI by
1.8.13