本文整理汇总了C++中KviPointerList::setAutoDelete方法的典型用法代码示例。如果您正苦于以下问题:C++ KviPointerList::setAutoDelete方法的具体用法?C++ KviPointerList::setAutoDelete怎么用?C++ KviPointerList::setAutoDelete使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KviPointerList
的用法示例。
在下文中一共展示了KviPointerList::setAutoDelete方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: exportLog
void LogViewWindow::exportLog(int iId)
{
LogListViewItem * pItem = (LogListViewItem *)(m_pListView->currentItem());
if(!pItem)
return;
if(!pItem->childCount())
{
// Export the log
createLog(pItem->log(), iId);
return;
}
// We selected a node in the log list, scan the children
KviPointerList<LogListViewItem> logList;
logList.setAutoDelete(false);
for(int i = 0; i < pItem->childCount(); i++)
{
if(!pItem->child(i)->childCount())
{
// The child is a log file, append it to the list
logList.append((LogListViewItem *)pItem->child(i));
continue;
}
// The child is a node, scan it
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;
}
// Add the child to the list
logList.append((LogListViewItem *)pChild->child(j));
}
}
// Scan the list
for(unsigned int u = 0; u < logList.count(); u++)
{
LogListViewItem * pCurItem = logList.at(u);
createLog(pCurItem->log(), iId);
}
}
示例2: killAllKvsUserActions
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 :)
}
示例3: completeModuleFunction
void KviKvsKernel::completeModuleFunction(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->completeFunction(szCommandBegin,&lModuleMatches);
for(QString * pszModuleMatch = lModuleMatches.first();pszModuleMatch;pszModuleMatch = lModuleMatches.next())
{
QString * pszMatch = new QString(*pszModuleMatch);
pszMatch->prepend(".");
pszMatch->prepend(szModuleName);
pszMatch->prepend("$");
pMatches->append(pszMatch);
}
}
示例4: killPendingEventsByReceiver
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
}
示例5: clearUserClasses
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;
}
}
示例6: clearScriptHandlers
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;
}
}
示例7: removeAllModuleRawHandlers
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;
}
}
}
示例8: completeFunction
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);
}
}
示例9: deleteActions
void ActionEditor::deleteActions()
{
KviPointerList<ActionEditorTreeWidgetItem> l;
l.setAutoDelete(false);
for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++)
{
if(m_pTreeWidget->topLevelItem(i)->isSelected())
l.append((ActionEditorTreeWidgetItem * )m_pTreeWidget->topLevelItem(i));
}
if(l.isEmpty())return;
//if(QMessageBox::question(this,__tr2qs_ctx("Confirm Deletion","editor"),__tr2qs_ctx("Do you really want to delete the selected actions ?","editor"),__tr2qs_ctx("Yes","editor"),__tr2qs_ctx("No","editor")) != 0)
// return;
for(ActionEditorTreeWidgetItem * i = l.first();i;i = l.next())
{
if(m_pSingleActionEditor->actionData() == i->actionData())
m_pSingleActionEditor->setActionData(0);
delete i;
}
}
示例10: fillToolBar
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);
}
}
示例11: removeAllModuleAppHandlers
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);
}
}
示例12: handleUserhost
bool KviIsOnNotifyListManager::handleUserhost(KviIrcMessage * msg)
{
if(!m_bExpectingUserhost)
return false;
// first check for consistency: all the replies must be on the USERHOST list
KviPointerList<KviIrcMask> tmplist;
tmplist.setAutoDelete(true);
KviCString nk;
const char * aux = msg->trailing();
while(*aux)
{
nk = "";
aux = kvi_extractToken(nk, aux, ' ');
if(nk.hasData())
{
// split it in a mask
KviCString nick;
KviCString user;
KviCString host;
int idx = nk.findFirstIdx('=');
if(idx != -1)
{
nick = nk.left(idx);
if(nick.lastCharIs('*'))
nick.cutRight(1);
nk.cutLeft(idx + 1);
if(nk.firstCharIs('+') || nk.firstCharIs('-'))
nk.cutLeft(1);
idx = nk.findFirstIdx('@');
if(idx != -1)
{
user = nk.left(idx);
nk.cutLeft(idx + 1);
host = nk;
}
else
{
user = "*";
host = nk;
}
bool bGotIt = false;
QString szNick = m_pConnection->decodeText(nick.ptr());
QString szUser = m_pConnection->decodeText(user.ptr());
QString szHost = m_pConnection->decodeText(host.ptr());
for(QString * s = m_pUserhostList->first(); s && (!bGotIt); s = m_pUserhostList->next())
{
if(KviQString::equalCI(*s, szNick))
{
KviIrcMask * mk = new KviIrcMask(szNick, szUser, szHost);
tmplist.append(mk);
bGotIt = true;
m_pUserhostList->removeRef(s);
}
}
if(!bGotIt)
{
// ops...not my userhost!
if(_OUTPUT_VERBOSE)
m_pConsole->output(KVI_OUT_SYSTEMWARNING, __tr2qs("Notify list: Hey! You've used USERHOST behind my back? (I might be confused now...)"));
return false;
}
}
else
{
if(_OUTPUT_VERBOSE)
m_pConsole->output(KVI_OUT_SYSTEMWARNING, __tr2qs("Notify list: Broken USERHOST reply from the server? (%s)"), nk.ptr());
}
}
}
// Ok...looks to be my usershot (still not sure at 100%, but can't do better)
if(m_pConnection->lagMeter())
m_pConnection->lagMeter()->lagCheckComplete("@notify_userhost");
m_bExpectingUserhost = false;
for(KviIrcMask * mk = tmplist.first(); mk; mk = tmplist.next())
{
if(!doMatchUser(mk->nick(), *mk))
return true; // have to restart!!!
}
if(!(m_pUserhostList->isEmpty()))
{
// ops...someone is no longer online ?
while(QString * s = m_pUserhostList->first())
{
if(_OUTPUT_VERBOSE)
m_pConsole->output(KVI_OUT_SYSTEMMESSAGE, __tr2qs("Notify list: \r!n\r%Q\r appears to have gone offline before USERHOST reply was received, will recheck in the next loop"), s);
m_pUserhostList->removeFirst();
}
}
//.........这里部分代码省略.........
示例13: handleIsOn
bool KviIsOnNotifyListManager::handleIsOn(KviIrcMessage * msg)
{
if(!m_bExpectingIsOn)
return false;
// Check if it is our ISON
// all the nicks must be on the IsOnList
KviPointerList<QString> tmplist;
tmplist.setAutoDelete(false);
KviCString nk;
const char * aux = msg->trailing();
while(*aux)
{
nk = "";
aux = kvi_extractToken(nk, aux, ' ');
if(nk.hasData())
{
bool bGotIt = false;
QString dnk = m_pConnection->decodeText(nk.ptr());
for(QString * s = m_pIsOnList->first(); s && (!bGotIt); s = m_pIsOnList->next())
{
if(KviQString::equalCI(*s, dnk))
{
tmplist.append(s);
bGotIt = true;
}
}
if(!bGotIt)
{
// ops...not my userhost!
if(_OUTPUT_VERBOSE)
m_pConsole->output(KVI_OUT_SYSTEMMESSAGE, __tr2qs("Notify list: Hey! You've used ISON behind my back? (I might be confused now...)"));
return false;
}
}
}
// Ok...looks to be my ison (still not sure at 100%, but can't do better)
if(m_pConnection->lagMeter())
m_pConnection->lagMeter()->lagCheckComplete("@notify_ison");
m_bExpectingIsOn = false;
m_pOnlineList->clear();
m_pIsOnList->setAutoDelete(false);
// Ok...we have an IsOn reply here
// The nicks in the IsOnList that are also in the reply are online, and go to the OnlineList
// the remaining in the IsOnList are offline
QString * s;
for(s = tmplist.first(); s; s = tmplist.next())
{
m_pIsOnList->removeRef(s);
m_pOnlineList->append(s);
}
m_pIsOnList->setAutoDelete(true);
// Ok...all the users that are online, are on the OnlineList
// the remaining users are in the m_pIsOnList, and are no longer online
// first the easy step: remove the users that have just left irc or have never been online
// we're clearling the m_pIsOnList
while((s = m_pIsOnList->first()))
{
if(m_pConsole->notifyListView()->findEntry(*s))
{
// has just left IRC... make him part
notifyOffLine(*s);
} // else has never been here
m_pIsOnList->removeFirst(); // autodelete is true
}
// ok... complex step now: the remaining users in the userhost list are online
// if they have been online before, just remove them from the list
// otherwise they must be matched for masks
// and eventually inserted in the notify view later
KviIrcUserDataBase * db = console()->connection()->userDataBase();
KviPointerList<QString> l;
l.setAutoDelete(false);
for(s = m_pOnlineList->first(); s; s = m_pOnlineList->next())
{
if(KviUserListEntry * ent = m_pConsole->notifyListView()->findEntry(*s))
{
// the user was online from a previous notify session
// might the mask have been changed ? (heh...this is tricky, maybe too much even)
if(KVI_OPTION_BOOL(KviOption_boolNotifyListSendUserhostForOnlineUsers))
{
// user wants to be sure about online users....
// check if he is on some channels
if(ent->globalData()->nRefs() > 1)
//.........这里部分代码省略.........
示例14: processHeader
bool KviHttpRequest::processHeader(KviCString &szHeader)
{
int idx = szHeader.findFirstIdx("\r\n");
KviCString szResponse;
if(idx != -1)
{
szResponse = szHeader.left(idx);
szHeader.cutLeft(idx + 2);
} else {
szResponse = szHeader;
szHeader = "";
}
szResponse.trim();
bool bValid = false;
unsigned int uStatus = 0;
// check the response value
if(kvi_strEqualCSN(szResponse.ptr(),"HTTP",4))
{
KviCString szR = szResponse;
szR.cutToFirst(' ');
szR.trim();
int idx = szR.findFirstIdx(' ');
KviCString szNumber;
if(idx != -1)szNumber = szR.left(idx);
else szNumber = szR;
bool bOk;
uStatus = szNumber.toUInt(&bOk);
if(bOk)bValid = true;
}
QString szUniResponse = QString::fromUtf8(szResponse.ptr());
if(!bValid)
{
// the response is invalid ?
resetInternalStatus();
m_szLastError = __tr2qs("Invalid HTTP response: %1").arg(szUniResponse);
emit terminated(false);
return false;
}
emit status(__tr2qs("Received HTTP response: %1").arg(szUniResponse));
KviPointerList<KviCString> hlist;
hlist.setAutoDelete(true);
idx = szHeader.findFirstIdx("\r\n");
while(idx != -1)
{
if(idx > 0)
{
hlist.append(new KviCString(szHeader.ptr(),idx));
szHeader.cutLeft(idx + 2);
}
idx = szHeader.findFirstIdx("\r\n");
}
if(szHeader.hasData())hlist.append(new KviCString(szHeader));
KviPointerHashTable<const char *,KviCString> hdr(11,false,true);
hdr.setAutoDelete(true);
for(KviCString * s = hlist.first();s;s = hlist.next())
{
idx = s->findFirstIdx(":");
if(idx != -1)
{
KviCString szName = s->left(idx);
s->cutLeft(idx + 1);
s->trim();
hdr.replace(szName.ptr(),new KviCString(*s));
//qDebug("FOUND HEADER (%s)=(%s)",szName.ptr(),s->ptr());
}
}
KviCString * size = hdr.find("Content-length");
if(size)
{
bool bOk;
m_uTotalSize = size->toUInt(&bOk);
if(!bOk)m_uTotalSize = 0;
}
KviCString * contentEncoding = hdr.find("Content-encoding");
if(contentEncoding)
{
m_bGzip = contentEncoding->equalsCI("gzip");
}
KviCString * transferEncoding = hdr.find("Transfer-Encoding");
if(transferEncoding)
{
if(kvi_strEqualCI(transferEncoding->ptr(),"chunked"))
{
// be prepared to handle the chunked transfer encoding as required by HTTP/1.1
m_bChunkedTransferEncoding = true;
m_uRemainingChunkSize = 0;
//.........这里部分代码省略.........
示例15: deleteCurrent
void LogViewWindow::deleteCurrent()
{
LogListViewItem * pItem = dynamic_cast<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"), nullptr, 1)
!= 0)
return;
KviFileUtils::removeFile(pItem->fileName());
if(!pItem->parent()->childCount())
delete pItem->parent();
delete pItem;
m_pIrcView->clearBuffer();
}
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"), nullptr, 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;
}