bool KviKvsEventManager::removeScriptAppHandler(unsigned int uEvIdx, const QString & szName) { if(uEvIdx >= KVI_KVS_NUM_APP_EVENTS) return false; KviKvsEventHandler * h; if(!(m_appEventTable[uEvIdx].handlers())) return false; for(h = m_appEventTable[uEvIdx].handlers()->first(); h; h = m_appEventTable[uEvIdx].handlers()->next()) { if(h->type() == KviKvsEventHandler::Script) { if(KviQString::equalCI(((KviKvsScriptEventHandler *)h)->name(), szName)) { m_appEventTable[uEvIdx].removeHandler(h); return true; } } } return false; }
void KviKvsEvent::clearScriptHandlers() { if(!m_pHandlers)return; KviPointerList<KviKvsEventHandler> dl; dl.setAutoDelete(false); KviKvsEventHandler * e; for(e = m_pHandlers->first();e;e = m_pHandlers->next()) { if(e->type() == KviKvsEventHandler::Script)dl.append(e); } for(e = dl.first();e;e = dl.next()) { m_pHandlers->removeRef(e); } if(m_pHandlers->isEmpty()) { delete m_pHandlers; m_pHandlers = 0; } }
void KviKvsEventManager::saveAppEvents(const QString & szFileName) { KviConfigurationFile cfg(szFileName,KviConfigurationFile::Write); cfg.clear(); int i; bool bCompat = false; for(i=0; i < KVI_KVS_NUM_APP_EVENTS; i++) { if(m_appEventTable[i].hasHandlers()) { QString szEventName(m_appEventTable[i].name()); // Backwards compatibility >_< if((i == 4) && cfg.hasGroup(szEventName)) { szEventName = "OnIRCConnectionEstabilished"; bCompat = true; } cfg.setGroup(szEventName); int iIdx = 0; for(KviKvsEventHandler * pEvent = m_appEventTable[i].handlers()->first(); pEvent; pEvent = m_appEventTable[i].handlers()->next()) { if(pEvent->type() == KviKvsEventHandler::Script) { QString szTmp = QString("Name%1").arg(iIdx); cfg.writeEntry(szTmp,((KviKvsScriptEventHandler *)pEvent)->name()); szTmp = QString("Buffer%1").arg(iIdx); cfg.writeEntry(szTmp,((KviKvsScriptEventHandler *)pEvent)->code()); szTmp = QString("Enabled%1").arg(iIdx); cfg.writeEntry(szTmp,((KviKvsScriptEventHandler *)pEvent)->isEnabled()); iIdx++; } } cfg.writeEntry("NHandlers",iIdx); // Backwards compatibility >_< if((i == 4) && !bCompat) i--; } } }
bool KviKvsEventManager::removeModuleRawHandler(unsigned int uRawIdx,KviKvsModuleInterface *i) { if(uRawIdx >= KVI_KVS_NUM_RAW_EVENTS)return false; if(!m_rawEventTable[uRawIdx])return false; KviKvsEventHandler * h; for(h = m_rawEventTable[uRawIdx]->first();h;h = m_rawEventTable[uRawIdx]->next()) { if(h->type() == KviKvsEventHandler::Module) { if(((KviKvsModuleEventHandler *)h)->moduleInterface() == i) { m_rawEventTable[uRawIdx]->removeRef(h); if(m_rawEventTable[uRawIdx]->isEmpty()) { delete m_rawEventTable[uRawIdx]; m_rawEventTable[uRawIdx] = 0; } return true; } } // COMPAT /* } else if(h->type() == KviKvsEventHandler::OldModule) { if(((KviKvsOldModuleEventHandler *)h)->module() == i) { m_rawEventTable[uRawIdx]->removeRef(h); if(m_rawEventTable[uRawIdx]->isEmpty()) { delete m_rawEventTable[uRawIdx]; m_rawEventTable[uRawIdx] = 0; } return true; } } */ // END COMPAT } return false; }
void KviKvsEventManager::removeAllModuleRawHandlers(KviKvsModuleInterface *pIface) { KviKvsEventHandler * h; for(unsigned int i =0;i< KVI_KVS_NUM_RAW_EVENTS;i++) { if(!m_rawEventTable[i])continue; KviPointerList<KviKvsEventHandler> l; l.setAutoDelete(false); for(h = m_rawEventTable[i]->first();h;h = m_rawEventTable[i]->next()) { if(h->type() == KviKvsEventHandler::Module) { if(((KviKvsModuleEventHandler *)h)->moduleInterface() == pIface) { l.append(h); } } // COMPAT /* } else if(h->type() == KviKvsEventHandler::OldModule) { if(((KviKvsOldModuleEventHandler *)h)->module() == pIface) { l.append(h); } } */ // END COMPAT } for(h = l.first();h;h = l.next())m_rawEventTable[i]->removeRef(h); if(m_rawEventTable[i]->isEmpty()) { delete m_rawEventTable[i]; m_rawEventTable[i] = 0; } } }
bool KviKvsEventManager::removeScriptRawHandler(unsigned int uEvIdx,const QString &szName) { if(uEvIdx >= KVI_KVS_NUM_RAW_EVENTS)return false; if(!m_rawEventTable[uEvIdx])return false; KviKvsEventHandler * h; for(h = m_rawEventTable[uEvIdx]->first();h;h = m_rawEventTable[uEvIdx]->next()) { if(h->type() == KviKvsEventHandler::Script) { if(KviQString::equalCI(((KviKvsScriptEventHandler *)h)->name(),szName)) { m_rawEventTable[uEvIdx]->removeRef(h); if(m_rawEventTable[uEvIdx]->isEmpty()) { delete m_rawEventTable[uEvIdx]; m_rawEventTable[uEvIdx] = 0; } return true; } } } return false; }
void KviKvsEventManager::removeAllModuleAppHandlers(KviKvsModuleInterface * pIface) { KviKvsEventHandler * h; for(auto & i : m_appEventTable) { if(!i.handlers()) continue; KviPointerList<KviKvsEventHandler> l; l.setAutoDelete(false); for(h = i.handlers()->first(); h; h = i.handlers()->next()) { if(h->type() == KviKvsEventHandler::Module) { if(((KviKvsModuleEventHandler *)h)->moduleInterface() == pIface) { l.append(h); } } } for(h = l.first(); h; h = l.next()) i.removeHandler(h); } }