В qutIM 0.2 появилась полноценная плагин система с возможностью обмена любыми типами данных между плагинами и компонентами ядра. Для данной возможности была реализована структура event и интерфейс EventHandler для получения событий.
Пример того, как посылается событие:
using namespace qutim_sdk_0_2; quint16 event_id = SystemsCity::PluginSystem()->registerEventHandler ( "Core/ContactList/AskTooltip" ); TreeModelItem item; QString tooltip; Event event( event_id, 2, &item, &tooltip ); event.send()
Примеры получения события:
using namespace qutim_sdk_0_2; class SimpleEventHandler : public EventHandler { public: SimpleEventHandler () { m_event_tooltip = SystemsCity::PluginSystem()->registerEventHandler ( "Core/ContactList/AskTooltip", this ); m_event_tooltip = SystemsCity::PluginSystem()->registerEventHandler ( "Core/ContactList/AskTooltip", this, static_cast<EventHandlerFunc>( &SimpleEventHandler::customEvent ) ); } void processEvent ( Event &ev ) { if ( ev.id == m_event_tooltip && ev.size() >= 2 ) { TreeModelItem &item = ev.at<TreeModelItem>( 0 ); QString &tooltip = ev.at<QString>( 1 ); tooltip = "<h1>Just a tooltip</h1>"; } } void customEvent ( Event &ev ) { if ( ev.id == m_event_tooltip && ev.size() >= 2 ) { TreeModelItem &item = ev.at<TreeModelItem>( 0 ); QString &tooltip = ev.at<QString>( 1 ); tooltip = "<h1>Just a tooltip</h1>"; } } private: quint16 m_event_tooltip; };
using namespace qutim_sdk_0_2; class SimpleEventHandler : public QObject { Q_OBJECT public: SimpleEventHandler () { SystemsCity::PluginSystem()->registerEventHandler ( "Core/ContactList/AskTooltip", this, SLOT(getToolTip(TreeModelItem,QString)) ); } public slots: void getToolTip ( TreeModelItem &item, QString &tooltip ) { tooltip = QString( "<h1>Just a tooltip of %1</h1>" ).arg( item.m_item_name ); } };
События разбиты на следующие категории: