В 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 );
  }
 
};

События разбиты на следующие категории:

/home/qutim/data/www/wiki.qutim.org/data/pages/ru/events.txt · Last modified: 2010/05/09 02:00 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki