diff -r bf7eb7911fc5 -r 997a02608b3a emailuis/nmailuiengine/src/nmuiengine.cpp --- a/emailuis/nmailuiengine/src/nmuiengine.cpp Wed Jun 23 18:00:21 2010 +0300 +++ b/emailuis/nmailuiengine/src/nmuiengine.cpp Tue Jul 06 14:04:34 2010 +0300 @@ -82,7 +82,7 @@ /*! - Destructor + Class destructor. */ NmUiEngine::~NmUiEngine() { @@ -95,46 +95,66 @@ delete mMessageSearchListModel; mMessageSearchListModel = NULL; } + if (mInboxListModel) { delete mInboxListModel; mInboxListModel = NULL; - } + } + if (mMessageListModel) { delete mMessageListModel; mMessageListModel = NULL; } + if (mMailboxListModel) { delete mMailboxListModel; mMailboxListModel = NULL; } - // do the unsubscriptions + + // Do the unsubscriptions. QList mailboxIdList; mDataManager->listMailboxIds(mailboxIdList); + for (int i(0); i < mailboxIdList.count(); i++) { NmId id = mailboxIdList[i]; - NmDataPluginInterface *pluginInterface = mPluginFactory->interfaceInstance(id); + NmDataPluginInterface *pluginInterface = + mPluginFactory->interfaceInstance(id); + if (pluginInterface) { pluginInterface->unsubscribeMailboxEvents(id); } } + mailboxIdList.clear(); + NmDataPluginFactory::releaseInstance(mPluginFactory); + delete mDataManager; + + // Cancel all operations. if (mSendOperation && mSendOperation->isRunning()) { mSendOperation->cancelOperation(); } - if(mRemoveDraftOperation && mRemoveDraftOperation->isRunning()) { + + if (mRemoveDraftOperation && mRemoveDraftOperation->isRunning()) { mRemoveDraftOperation->cancelOperation(); } - if(mSaveDraftOperation && mSaveDraftOperation->isRunning()) { + + if (mSaveDraftOperation && mSaveDraftOperation->isRunning()) { mSaveDraftOperation->cancelOperation(); } + + // Call processEvents() to ensure that the cancelled operations get the time + // they need to destroy themselves. + qApp->processEvents(); + if(mDraftMessage) { delete mDraftMessage; mDraftMessage = NULL; } } + /*! */ @@ -1235,3 +1255,23 @@ emit operationCompleted(event); } } + +/*! + returns full mailbox id from plain account id +*/ +NmId NmUiEngine::getPluginIdByMailboxId(quint32 accountId) +{ + NM_FUNCTION; + + NmId fullId = NULL; + fullId.setId32(accountId); + QList mailboxList; + if(mDataManager){ + mDataManager->listMailboxIds(mailboxList); + for(int i=0;i