3#include "structure/container/spk_thread_safe_queue.hpp"
4#include "structure/widget/spk_widget.hpp"
28 template <
typename TEvent>
29 class EventBasedModule
43 EventBasedModule() =
default;
45 virtual ~EventBasedModule() =
default;
47 EventBasedModule(
const EventBasedModule &) =
delete;
48 EventBasedModule &operator=(
const EventBasedModule &) =
delete;
49 EventBasedModule(EventBasedModule &&) =
delete;
50 EventBasedModule &operator=(EventBasedModule &&) =
delete;
76 _eventQueue.insert(std::move(p_ievent));
85 return !_eventQueue.empty();
93 while (!_eventQueue.empty())
95 TEvent Ievent = _eventQueue.popFront();
void setWidget(spk::Widget *p_widget)
Binds the module to a widget that will receive callbacks.
Definition spk_event_based_module.hpp:56
void treatEvents()
Processes all queued events by invoking _treatEvent.
Definition spk_event_based_module.hpp:91
void insertEvent(TEvent &&p_ievent)
Queues a new event to be processed later.
Definition spk_event_based_module.hpp:74
virtual void _treatEvent(TEvent &p_ievent)=0
Handles a single event pulled from the queue.
spk::Widget * widget() const
Returns the currently bound widget.
Definition spk_event_based_module.hpp:65
bool hasEvent() const
Checks whether the module has pending events.
Definition spk_event_based_module.hpp:83
Minimal mutex-protected FIFO deque wrapper.
Definition spk_thread_safe_queue.hpp:21