FilterPlugin::FilterPlugin(unsigned base, const char *cfg) : Plugin(base), EventReceiver(HighPriority - 1) { filterPlugin = this; load_data(filterData, &data, cfg); user_data_id = getContacts()->registerUserData(info.title, filterUserData); CmdIgnoreList = registerType(); CmdIgnore = registerType(); CmdIgnoreText = registerType(); IconDef icon; icon.name = "ignorelist"; icon.xpm = ignorelist; icon.isSystem = false; Event eIcon(EventAddIcon, &icon); eIcon.process(); Command cmd; cmd->id = CmdIgnoreList; cmd->text = I18N_NOOP("Ignore list"); cmd->menu_id = MenuContactGroup; cmd->menu_grp = 0x8080; cmd->flags = COMMAND_CHECK_STATE; Event eCmd(EventCommandCreate, cmd); eCmd.process(); cmd->id = CmdIgnore; cmd->text = I18N_NOOP("Ignore user"); cmd->icon = "ignorelist"; cmd->menu_id = 0; cmd->menu_grp = 0; cmd->bar_id = ToolBarContainer; cmd->bar_grp = 0x7001; cmd->flags = COMMAND_CHECK_STATE; eCmd.process(); cmd->id = CmdIgnoreText; cmd->text = I18N_NOOP("Ignore this phrase"); cmd->icon = NULL; cmd->menu_id = MenuTextEdit; cmd->menu_grp = 0x7000; cmd->bar_id = 0; cmd->bar_grp = 0; cmd->flags = COMMAND_CHECK_STATE; eCmd.process(); cmd->id = user_data_id + 1; cmd->text = I18N_NOOP("&Filter"); cmd->icon = "filter"; cmd->menu_id = 0; cmd->menu_grp = 0; cmd->param = (void*)getFilterConfig; Event ePref(EventAddPreferences, cmd); ePref.process(); }
FilterPlugin::~FilterPlugin() { free_data(filterData, &data); Event ePref(EventRemovePreferences, (void*)user_data_id); ePref.process(); Event eCmd(EventCommandRemove, (void*)CmdIgnoreList); eCmd.process(); getContacts()->unregisterUserData(user_data_id); }