mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:07:46 +00:00
LibCore: Move LibGUI/GObject to LibCore/CObject.
This commit is contained in:
parent
b8062f69d8
commit
2f1f51b8ab
30 changed files with 144 additions and 75 deletions
69
LibCore/CEvent.h
Normal file
69
LibCore/CEvent.h
Normal file
|
@ -0,0 +1,69 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/AKString.h>
|
||||
#include <AK/Types.h>
|
||||
#include <AK/WeakPtr.h>
|
||||
#include <AK/Function.h>
|
||||
|
||||
class CObject;
|
||||
|
||||
class CEvent {
|
||||
public:
|
||||
enum Type {
|
||||
Invalid = 0,
|
||||
Quit,
|
||||
Timer,
|
||||
DeferredDestroy,
|
||||
DeferredInvoke,
|
||||
ChildAdded,
|
||||
ChildRemoved,
|
||||
};
|
||||
|
||||
CEvent() { }
|
||||
explicit CEvent(unsigned type) : m_type(type) { }
|
||||
virtual ~CEvent() { }
|
||||
|
||||
unsigned type() const { return m_type; }
|
||||
|
||||
private:
|
||||
unsigned m_type { Type::Invalid };
|
||||
};
|
||||
|
||||
class CDeferredInvocationEvent : public CEvent {
|
||||
friend class GEventLoop;
|
||||
public:
|
||||
CDeferredInvocationEvent(Function<void(CObject&)> invokee)
|
||||
: CEvent(CEvent::Type::DeferredInvoke)
|
||||
, m_invokee(move(invokee))
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
Function<void(CObject&)> m_invokee;
|
||||
};
|
||||
|
||||
class CTimerEvent final : public CEvent {
|
||||
public:
|
||||
explicit CTimerEvent(int timer_id)
|
||||
: CEvent(CEvent::Timer), m_timer_id(timer_id)
|
||||
{
|
||||
}
|
||||
~CTimerEvent() { }
|
||||
|
||||
int timer_id() const { return m_timer_id; }
|
||||
|
||||
private:
|
||||
int m_timer_id;
|
||||
};
|
||||
|
||||
class CChildEvent final : public CEvent {
|
||||
public:
|
||||
CChildEvent(Type, CObject& child);
|
||||
~CChildEvent();
|
||||
|
||||
CObject* child() { return m_child.ptr(); }
|
||||
const CObject* child() const { return m_child.ptr(); }
|
||||
|
||||
private:
|
||||
WeakPtr<CObject> m_child;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue