feat: 添加ElaWidgetTool库
This commit is contained in:
81
ElaWidgetTools/ElaEventBus.cpp
Normal file
81
ElaWidgetTools/ElaEventBus.cpp
Normal file
@@ -0,0 +1,81 @@
|
||||
#include "ElaEventBus.h"
|
||||
|
||||
#include <QVariant>
|
||||
|
||||
#include "ElaEventBusPrivate.h"
|
||||
Q_SINGLETON_CREATE_CPP(ElaEventBus);
|
||||
Q_PROPERTY_CREATE_Q_CPP(ElaEvent, QString, EventName);
|
||||
Q_PROPERTY_CREATE_Q_CPP(ElaEvent, QString, FunctionName);
|
||||
Q_PROPERTY_CREATE_Q_CPP(ElaEvent, Qt::ConnectionType, ConnectionType);
|
||||
ElaEvent::ElaEvent(QObject* parent)
|
||||
: QObject{parent}, d_ptr(new ElaEventPrivate())
|
||||
{
|
||||
Q_D(ElaEvent);
|
||||
d->q_ptr = this;
|
||||
d->_pConnectionType = Qt::AutoConnection;
|
||||
d->_pFunctionName = "";
|
||||
d->_pEventName = "";
|
||||
}
|
||||
|
||||
ElaEvent::ElaEvent(QString eventName, QString functionName, QObject* parent)
|
||||
: QObject{parent}, d_ptr(new ElaEventPrivate())
|
||||
{
|
||||
Q_D(ElaEvent);
|
||||
d->q_ptr = this;
|
||||
d->_pConnectionType = Qt::AutoConnection;
|
||||
d->_pEventName = eventName;
|
||||
d->_pFunctionName = functionName;
|
||||
}
|
||||
|
||||
ElaEventBusType::EventBusReturnType ElaEvent::registerAndInit()
|
||||
{
|
||||
return ElaEventBus::getInstance()->d_ptr->registerEvent(this);
|
||||
}
|
||||
|
||||
ElaEvent::~ElaEvent()
|
||||
{
|
||||
ElaEventBus::getInstance()->d_ptr->unRegisterEvent(this);
|
||||
}
|
||||
|
||||
ElaEventBus::ElaEventBus(QObject* parent)
|
||||
: QObject{parent}, d_ptr(new ElaEventBusPrivate())
|
||||
{
|
||||
Q_D(ElaEventBus);
|
||||
d->q_ptr = this;
|
||||
}
|
||||
|
||||
ElaEventBus::~ElaEventBus()
|
||||
{
|
||||
}
|
||||
|
||||
ElaEventBusType::EventBusReturnType ElaEventBus::post(const QString& eventName, const QVariantMap& data)
|
||||
{
|
||||
Q_D(ElaEventBus);
|
||||
if (eventName.isEmpty())
|
||||
{
|
||||
return ElaEventBusType::EventBusReturnType::EventNameInvalid;
|
||||
}
|
||||
if (d->_eventMap.contains(eventName))
|
||||
{
|
||||
QList<ElaEvent*> eventList = d->_eventMap.value(eventName);
|
||||
foreach (auto event, eventList)
|
||||
{
|
||||
if (event->parent())
|
||||
{
|
||||
QMetaObject::invokeMethod(event->parent(), event->getFunctionName().toLocal8Bit().constData(), event->getConnectionType(), Q_ARG(QVariantMap, data));
|
||||
}
|
||||
}
|
||||
}
|
||||
return ElaEventBusType::EventBusReturnType::Success;
|
||||
}
|
||||
|
||||
QStringList ElaEventBus::getRegisteredEventsName() const
|
||||
{
|
||||
Q_D(const ElaEventBus);
|
||||
if (d->_eventMap.count() == 0)
|
||||
{
|
||||
return QStringList();
|
||||
}
|
||||
QStringList eventsNameList = d->_eventMap.keys();
|
||||
return eventsNameList;
|
||||
}
|
||||
Reference in New Issue
Block a user