void KviKvsEventManager::removeAllModuleAppHandlers(KviKvsModuleInterface *pIface) { KviKvsEventHandler * h; for(unsigned int i =0;i< KVI_KVS_NUM_APP_EVENTS;i++) { if(!m_appEventTable[i].handlers())continue; KviPointerList<KviKvsEventHandler> l; l.setAutoDelete(false); for(h = m_appEventTable[i].handlers()->first();h;h = m_appEventTable[i].handlers()->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_appEventTable[i].removeHandler(h); } }
void KviKvsEventManager::removeAllScriptRawHandlers() { for(auto & i : m_rawEventTable) { if(i) { KviPointerList<KviKvsEventHandler> dl; dl.setAutoDelete(false); KviKvsEventHandler * e; for(e = i->first(); e; e = i->next()) { if(e->type() == KviKvsEventHandler::Script) dl.append(e); } for(e = dl.first(); e; e = dl.next()) { i->removeRef(e); } if(i->isEmpty()) { delete i; i = nullptr; } } } }
void KviKvsEventManager::removeAllScriptRawHandlers() { for(int i=0;i< KVI_KVS_NUM_RAW_EVENTS;i++) { if(m_rawEventTable[i]) { KviPointerList<KviKvsEventHandler> dl; dl.setAutoDelete(false); KviKvsEventHandler * e; for(e = m_rawEventTable[i]->first();e;e = m_rawEventTable[i]->next()) { if(e->type() == KviKvsEventHandler::Script)dl.append(e); } for(e = dl.first();e;e = dl.next()) { m_rawEventTable[i]->removeRef(e); } if(m_rawEventTable[i]->isEmpty()) { delete m_rawEventTable[i]; m_rawEventTable[i] = 0; } } } }
void KviKvsEventManager::removeAllModuleRawHandlers(KviKvsModuleInterface * pIface) { KviKvsEventHandler * h; for(auto & i : m_rawEventTable) { if(!i) continue; KviPointerList<KviKvsEventHandler> l; l.setAutoDelete(false); for(h = i->first(); h; h = i->next()) { if(h->type() == KviKvsEventHandler::Module) { if(((KviKvsModuleEventHandler *)h)->moduleInterface() == pIface) { l.append(h); } } } for(h = l.first(); h; h = l.next()) i->removeRef(h); if(i->isEmpty()) { delete i; i = nullptr; } } }
void KviModuleExtensionManager::unregisterExtensionsByModule(KviModule * m) { KviPointerHashTableIterator<const char *,KviModuleExtensionDescriptorList> it(*m_pExtensionDict); KviPointerList<KviCString> dying; dying.setAutoDelete(true); while(KviModuleExtensionDescriptorList * l = it.current()) { KviPointerList<KviModuleExtensionDescriptor> dying2; dying2.setAutoDelete(true); for(KviModuleExtensionDescriptor * d = l->first();d;d = l->next()) { if(d->module() == m)dying2.append(d); } for(KviModuleExtensionDescriptor * de = dying2.first();de;de = dying2.next()) { l->removeRef(de); } if(l->isEmpty())dying.append(new KviCString(it.currentKey())); ++it; } for(KviCString * li = dying.first();li;li = dying.next()) { m_pExtensionDict->remove(li->ptr()); } }
void KviKvsAliasManager::load(const QString & filename) { m_pAliasDict->clear(); KviConfigurationFile cfg(filename,KviConfigurationFile::Read); KviConfigurationFileIterator it(*(cfg.dict())); KviPointerList<QString> l; l.setAutoDelete(true); while(it.current()) { l.append(new QString(it.currentKey())); ++it; } for(QString * s = l.first();s;s = l.next()) { cfg.setGroup(*s); QString szCode = cfg.readEntry("_Buffer",""); if(!szCode.isEmpty()) { KviKvsScript * m = new KviKvsScript(*s,szCode); m_pAliasDict->insert(*s,m); } ++it; } }
void KviKvsObjectController::killAllObjectsWithClass(KviKvsObjectClass * pClass) { if(!m_pObjectDict) return; // no more objects at all... KviPointerList< QPointer<KviKvsObject> > lDying; lDying.setAutoDelete(true); KviKvsObject * pObject; for(pObject = m_pTopLevelObjectList->first();pObject;pObject = m_pTopLevelObjectList->next()) { if(pObject->getClass() == pClass) { lDying.append(new QPointer<KviKvsObject>(pObject)); } else { pObject->killAllChildrenWithClass(pClass); } } for(QPointer<KviKvsObject> * pObject = lDying.first();pObject;pObject = lDying.next()) { if(pObject->isNull()) continue; // already dead ? (*pObject)->dieNow(); } }
KviTalWizardPageData * findPage(QWidget * pWidget) { for(KviTalWizardPageData * pData = pPageList->first();pData;pData = pPageList->next()) { if(pData->pWidget == pWidget) return pData; } return NULL; }
KviTalWizardPageData * findLastEnabledPage() { KviTalWizardPageData * pData; for(pData = pPageList->last();pData;pData = pPageList->prev()) { if(pData->bEnabled) return pData; } return NULL; }
KviTalWizardPageData * findFirstEnabledPage() { KviTalWizardPageData * pData; for(pData = pPageList->first();pData;pData = pPageList->next()) { if(pData->bEnabled) return pData; } return NULL; }
static bool theme_kvs_cmd_pack(KviKvsModuleCommandCall * c) { QString szPath, szName, szVersion, szDescription, szAuthor, szImage; KviKvsArrayCast aCast; KVSM_PARAMETERS_BEGIN(c) KVSM_PARAMETER("package_path", KVS_PT_NONEMPTYSTRING, 0, szPath) KVSM_PARAMETER("package_name", KVS_PT_NONEMPTYSTRING, 0, szName) KVSM_PARAMETER("package_version", KVS_PT_NONEMPTYSTRING, 0, szVersion) KVSM_PARAMETER("package_description", KVS_PT_STRING, 0, szDescription) KVSM_PARAMETER("package_author", KVS_PT_NONEMPTYSTRING, 0, szAuthor) KVSM_PARAMETER("package_image", KVS_PT_STRING, 0, szImage) KVSM_PARAMETER("theme", KVS_PT_ARRAYCAST, 0, aCast) KVSM_PARAMETERS_END(c) KviKvsArray * pArray = aCast.array(); if((!pArray) || (pArray->size() < 1)) { c->error(__tr2qs_ctx("No themes specified", "theme")); return false; } kvs_uint_t s = pArray->size(); QStringList lThemeList; for(kvs_uint_t i = 0; i < s; i++) { KviKvsVariant * v = pArray->at(i); if(!v) continue; // ? QString szVal; v->asString(szVal); if(szVal.isEmpty()) continue; lThemeList.append(szVal); } KviPointerList<KviThemeInfo> lThemeInfoList; lThemeInfoList.setAutoDelete(true); Q_FOREACH(QString szTheme, lThemeList) { KviThemeInfo * pInfo = new KviThemeInfo(); if(!pInfo->load(szTheme, KviThemeInfo::External)) { QString szErr = pInfo->lastError(); c->error(__tr2qs_ctx("Failed to load theme from directory %Q: %Q", "theme"), &szTheme, &szErr); delete pInfo; return false; } lThemeInfoList.append(pInfo); }
KviTalWizardPageData * findPrevEnabledPage(QWidget * pReference) { if(!pReference) return findLastEnabledPage(); KviTalWizardPageData * pData = findPage(pReference); if(!pData) return NULL; for(pData = pPageList->prev();pData;pData = pPageList->prev()) { if(pData->bEnabled) return pData; } return NULL; }
void KviChannelListSelector::removeClicked() { KviPointerList<QTreeWidgetItem> lst; QList<QTreeWidgetItem *> items=m_pTreeWidget->selectedItems () ; for (int i=0;i<items.count();i++) { lst.append((QTreeWidgetItem *)items.at(i)); } lst.setAutoDelete(true); lst.clear(); }
void KviLagMeter::lagCheckAbort(const char * key) { KviPointerList<KviLagCheck> l; l.setAutoDelete(false); KviLagCheck * c; if(_OUTPUT_PARANOIC) m_pConnection->console()->output(KVI_OUT_VERBOSE,__tr2qs("Lag check aborted (%s)"),key); for(c = m_pCheckList->first();c;c = m_pCheckList->next()) if(kvi_strEqualCS(c->szKey.ptr(),key))l.append(c); for(c = l.first();c;c = l.next())m_pCheckList->removeRef(c); }
void ThemeManagementDialog::packTheme() { KviPointerList<KviThemeInfo> dl; dl.setAutoDelete(false); QList<QListWidgetItem*> itemsSelected = m_pListWidget->selectedItems (); for(int i=0;i<itemsSelected.count();i++) dl.append(((ThemeListWidgetItem *)itemsSelected.at(i))->themeInfo()); if(dl.isEmpty())return; PackThemeDialog * pDialog = new PackThemeDialog(this,&dl); pDialog->exec(); pDialog->deleteLater(); }
int reindexPages() { int iEnabledCount = 0; for(KviTalWizardPageData * pData = pPageList->first();pData;pData = pPageList->next()) { if(pData->bEnabled) { iEnabledCount++; pData->iVisibleIndex = iEnabledCount; } } return iEnabledCount; }
KviTalWizardPageData * findNextEnabledPage(QWidget * pReference) { if(!pReference) return findFirstEnabledPage(); KviTalWizardPageData * pData = findPage(pReference); if(!pData) return nullptr; for(pData = pPageList->next(); pData; pData = pPageList->next()) { if(pData->bEnabled) return pData; } return nullptr; }
void KviModuleManager::unloadAllModules() { KviPointerHashTableIterator<QString,KviModule> it(*m_pModuleDict); KviPointerList<KviModule> lModulesToUnload; lModulesToUnload.setAutoDelete(false); while(KviModule * pModule = it.current()) { lModulesToUnload.append(pModule); ++it; } for(KviModule * pModule = lModulesToUnload.first();pModule;pModule = lModulesToUnload.next()) unloadModule(pModule); }
void KviKvsKernel::completeModuleCommand(const QString &szModuleName,const QString &szCommandBegin,KviPointerList<QString> * pMatches) { KviModule * pModule = g_pModuleManager->getModule(szModuleName); if(!pModule)return; KviPointerList<QString> lModuleMatches; lModuleMatches.setAutoDelete(true); pModule->completeCommand(szCommandBegin,&lModuleMatches); for(QString * pszModuleMatch = lModuleMatches.first();pszModuleMatch;pszModuleMatch = lModuleMatches.next()) { QString * pszMatch = new QString(*pszModuleMatch); pszMatch->prepend("."); pszMatch->prepend(szModuleName); pMatches->append(pszMatch); } }
void KviActionManager::killAllKvsUserActions() { KviPointerList<KviKvsUserAction> dying; dying.setAutoDelete(true); KviPointerHashTableIterator<QString, KviAction> it(*m_pActions); while(KviAction * a = it.current()) { if(a->isKviUserActionNeverOverrideThis()) { dying.append(((KviKvsUserAction *)a)); } ++it; } dying.clear(); // bye :) }
void KviSharedFilesManager::cleanup() { KviPointerHashTableIterator<QString, KviSharedFileList> it(*m_pSharedListDict); time_t curTime = time(nullptr); bool bOtherStuffToCleanup = false; KviPointerList<QString> lDying; lDying.setAutoDelete(true); while(KviSharedFileList * l = it.current()) { KviPointerList<KviSharedFile> tmp; tmp.setAutoDelete(false); for(KviSharedFile * o = l->first(); o; o = l->next()) { if(o->expireTime() > 0) { if(((int)o->expireTime()) <= ((int)curTime)) { tmp.append(o); } else { bOtherStuffToCleanup = true; } } } for(KviSharedFile * fo = tmp.first(); fo; fo = tmp.next()) { l->removeRef(fo); emit sharedFileRemoved(fo); } if(l->count() == 0) lDying.append(new QString(it.currentKey())); ++it; } for(QString * pDyingKey = lDying.first(); pDyingKey; pDyingKey = lDying.next()) m_pSharedListDict->remove(*pDyingKey); if(!bOtherStuffToCleanup) m_pCleanupTimer->stop(); }
void KviThreadManager::killPendingEventsByReceiver(QObject * receiver) { #if !defined(COMPILE_ON_WINDOWS) && !defined(COMPILE_ON_MINGW) KviPointerList<KviThreadPendingEvent> l; l.setAutoDelete(false); m_pMutex->lock(); for(KviThreadPendingEvent * ev = m_pEventQueue->first(); ev; ev = m_pEventQueue->next()) { if(ev->o == receiver) l.append(ev); } for(KviThreadPendingEvent * ev = l.first(); ev; ev = l.next()) { delete ev->e; m_pEventQueue->removeRef(ev); } m_pMutex->unlock(); #endif }
void OptionsDialog::fillTreeWidget(QTreeWidgetItem * p,KviPointerList<OptionsWidgetInstanceEntry> * l,const QString &szGroup,bool bNotContainedOnly) { if(!l)return; OptionsDialogTreeWidgetItem * it; OptionsWidgetInstanceEntry * e; KviPointerList<OptionsWidgetInstanceEntry> tmp; tmp.setAutoDelete(false); for(e = l->first(); e; e = l->next()) { // must be in the correct group // if we want only containers then well.. must be one e->bDoInsert = KviQString::equalCI(szGroup,e->szGroup) && ((!bNotContainedOnly) || e->bIsContainer || e->bIsNotContained); OptionsWidgetInstanceEntry * ee = tmp.first(); int idx = 0; while(ee) { if(ee->iPriority >= e->iPriority)break; idx++; ee = tmp.next(); } tmp.insert(idx,e); } for(e = tmp.first(); e; e = tmp.next()) { if(e->bDoInsert) { if(p)it = new OptionsDialogTreeWidgetItem(p,e); else it = new OptionsDialogTreeWidgetItem(m_pTreeWidget,e); if(!it->m_pOptionsWidget) { it->m_pOptionsWidget = g_pOptionsInstanceManager->getInstance(it->m_pInstanceEntry,m_pWidgetStack); if(it->m_pOptionsWidget) m_pWidgetStack->addWidget(it->m_pOptionsWidget); } } else { it = (OptionsDialogTreeWidgetItem *)p; } if(e->pChildList) { if(e->bIsContainer) { // it's a container: add only eventual not contained children (containers or explicitly marked as not contained) fillTreeWidget(it,e->pChildList,szGroup,true); } else { // it's not a container, add any children fillTreeWidget(it,e->pChildList,szGroup,false); } } } }
void KviKvsObjectController::clearUserClasses() { flushUserClasses(); KviPointerHashTableIterator<QString,KviKvsObjectClass> it(*m_pClassDict); KviPointerList<KviKvsObjectClass> lDying; lDying.setAutoDelete(false); while(it.current()) { if(!(it.current()->isBuiltin())) lDying.append(it.current()); ++it; } for(KviKvsObjectClass * pDyingClass = lDying.first();pDyingClass;pDyingClass = lDying.next()) { if(!m_pClassDict->findRef(pDyingClass)) continue; // already deleted (by parent <-> child relations) delete pDyingClass; } }
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 KviModuleManager::cleanupUnusedModules() { KviPointerHashTableIterator<QString,KviModule> it(*m_pModuleDict); KviPointerList<KviModule> lModulesToUnload; lModulesToUnload.setAutoDelete(false); while(it.current()) { if(it.current()->secondsSinceLastAccess() > KVI_OPTION_UINT(KviOption_uintModuleCleanupTimeout)) { if(it.current()->moduleInfo()->can_unload) { if((it.current()->moduleInfo()->can_unload)(it.current())) lModulesToUnload.append(it.current()); else { // the module don't want to be unloaded // keep it memory for a while it.current()->updateAccessTime(); } } else { if(!(it.current()->isLocked())) lModulesToUnload.append(it.current()); } } ++it; } for(KviModule * pModule = lModulesToUnload.first();pModule;pModule = lModulesToUnload.next()) unloadModule(pModule); }
void LogViewWindow::deleteCurrent() { LogListViewItem * pItem = (LogListViewItem *)(m_pListView->currentItem()); if(!pItem) return; if(!pItem->childCount()) { if(!pItem->fileName().isNull()) { if(QMessageBox::question( this, __tr2qs_ctx("Confirm Current User Log Deletion","log"), __tr2qs_ctx("Do you really wish to delete this log?","log"), __tr2qs("Yes"),__tr2qs("No"),0,1) != 0) return; KviFileUtils::removeFile(pItem->fileName()); delete pItem; m_pIrcView->clearBuffer(); if(!pItem->parent()->childCount()) delete pItem->parent(); } return; } if(QMessageBox::question( this, __tr2qs_ctx("Confirm Current User Logs Deletion","log"), __tr2qs_ctx("Do you really wish to delete all these logs?","log"), __tr2qs("Yes"),__tr2qs("No"),0,1) != 0) return; KviPointerList<LogListViewItem> itemsList; itemsList.setAutoDelete(false); for(int i=0; i < pItem->childCount(); i++) { if(!pItem->child(i)->childCount()) { itemsList.append((LogListViewItem *)pItem->child(i)); continue; } LogListViewItem * pChild = (LogListViewItem *)pItem->child(i); for(int j=0; j < pChild->childCount(); j++) { if(!(LogListViewItem *)pChild->child(j)) { qDebug("Null pointer in logviewitem"); continue; } itemsList.append((LogListViewItem *)pChild->child(j)); } } for(unsigned int u=0; u < itemsList.count(); u++) { LogListViewItem * pCurItem = itemsList.at(u); if(!pCurItem->fileName().isNull()) KviFileUtils::removeFile(pCurItem->fileName()); } delete pItem; }
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; } } }
void KviKvsKernel::completeFunction(const QString &szFunctionBegin,KviPointerList<QString> * pMatches) { int idx = szFunctionBegin.indexOf(QChar('.')); if(idx == -1) { // no module name inside KviPointerHashTableIterator<QString,KviKvsCoreFunctionExecRoutine> it(*m_pCoreFunctionExecRoutineDict); int l = szFunctionBegin.length(); while(it.current()) { if(KviQString::equalCIN(szFunctionBegin,it.currentKey(),l)) { QString * pMatch = new QString(it.currentKey()); //pMatch->prepend("$"); pMatches->append(pMatch); } ++it; } g_pModuleManager->completeModuleNames(szFunctionBegin,pMatches); KviPointerList<QString> lAliases; lAliases.setAutoDelete(true); KviKvsAliasManager::instance()->completeCommand(szFunctionBegin,&lAliases); for(QString * pszAlias = lAliases.first();pszAlias;pszAlias = lAliases.next()) { QString * pszAliasMatch = new QString(*pszAlias); //pszAliasMatch->prepend("$"); pMatches->append(pszAliasMatch); } } else { // contains a module name QString szModuleName = szFunctionBegin.left(idx); QString szRight = szFunctionBegin.right(szFunctionBegin.length() - (idx+1)); completeModuleFunction(szModuleName,szRight,pMatches); } }
void KviCustomToolBarDescriptor::fillToolBar() { if(m_pActions->count() == 0) { // force layout of the toolbar QApplication::postEvent(m_pToolBar, new QEvent(QEvent::LayoutRequest)); } else { KviPointerList<QString> dying; dying.setAutoDelete(false); for(QString * p = m_pActions->first(); p; p = m_pActions->next()) { KviAction * a = KviActionManager::instance()->getAction(*p); if(a) a->addToCustomToolBar(m_pToolBar); else dying.append(p); } for(QString * d = dying.first(); d; d = dying.next()) m_pActions->removeRef(d); } }