diff -r 84d9eb65b26f -r 518b245aa84c messagingapp/msgui/appengine/src/conversationsengine_p.cpp --- a/messagingapp/msgui/appengine/src/conversationsengine_p.cpp Mon May 03 12:29:07 2010 +0300 +++ b/messagingapp/msgui/appengine/src/conversationsengine_p.cpp Fri Jun 25 15:47:40 2010 +0530 @@ -26,6 +26,7 @@ #include "conversationsmodel.h" #include "conversationchangehandler.h" #include "conversationlistchangehandler.h" +#include "debugtraces.h" //--------------------------------------------------------------- // ConversationsEnginePrivate::ConversationsEnginePrivate @@ -50,28 +51,31 @@ //--------------------------------------------------------------- ConversationsEnginePrivate::~ConversationsEnginePrivate() { + + if( mClientConv ) + { + if(mServer && mConvChangeHandler) + { + TRAP_IGNORE(mServer->RemoveConversationChangeEventL( + mConvChangeHandler,mClientConv)); + } + delete mClientConv; + mClientConv = NULL; + } + if(mServer && mConvListChangeHandler) + { + TRAP_IGNORE(mServer->RemoveConversationListChangeEventL( + mConvListChangeHandler)); + TRAP_IGNORE(mServer->RemoveResultsEventL ( this )); + mServer->Cancel(); + delete mServer; + mServer = NULL; + } + delete mConvChangeHandler; delete mConvListChangeHandler; - if( mClientConv ) - { - if(mServer) - { - mServer->RemoveConversationChangeEventL (mConvChangeHandler, - mClientConv); - } - delete mClientConv; - mClientConv = NULL; - } - if(mServer) - { - mServer->RemoveConversationListChangeEventL (mConvListChangeHandler); - mServer->RemoveResultsEventL ( this ); - mServer->Cancel(); - delete mServer; - mServer = NULL; - } } //--------------------------------------------------------------- @@ -113,6 +117,7 @@ { if(!mClientConv) { + QCRITICAL_WRITE("ConversationsEnginePrivate::getConversationsL start."); //Clear the model before issueing fetch mConversationsModel->clear(); //create a client conversation @@ -120,12 +125,15 @@ mClientConv->SetConversationEntryId(aConversationId); //set dummy entry CCsConversationEntry *entry = CCsConversationEntry::NewL(); - CleanupStack::PushL(entry); + CleanupStack::PushL(entry); mClientConv->SetConversationEntryL(entry); - CleanupStack::PopAndDestroy(entry); + CleanupStack::PopAndDestroy(entry); //Get the conversations for new conversationId - mServer->GetConversationsL( mClientConv ); - } + mServer->GetConversationsL(mClientConv); + + QCRITICAL_WRITE("ConversationsEnginePrivate::getConversationsL end."); + } + } //--------------------------------------------------------------- @@ -213,6 +221,14 @@ return convId; } +//--------------------------------------------------------------- +// ConversationsEnginePrivate::getConversationFromConversationId +// @see header +//--------------------------------------------------------------- +CCsClientConversation* ConversationsEnginePrivate::getConversationFromConversationIdL(TInt aConversationId) +{ + return mServer->GetConversationFromConversationIdL(aConversationId); +} //--------------------------------------------------------------- // ConversationsEnginePrivate::clearConversationsL @@ -220,18 +236,24 @@ //--------------------------------------------------------------- void ConversationsEnginePrivate::clearConversationsL() { + QCRITICAL_WRITE("ConversationsEnginePrivate::clearConversationsL start."); + mConvChangeHandler->Cancel(); //Clear conversations model before populating with new data - mConversationsModel->clear(); + mConversationsModel->clearModel(); // Delete old CCsClientConversation object // Remove the old Conversation change observer if(mClientConv) - { - mServer->RemoveConversationChangeEventL (mConvChangeHandler ,mClientConv); + { + int error = KErrNone; + TRAP(error, mServer->RemoveConversationChangeEventL (mConvChangeHandler ,mClientConv)); delete mClientConv; mClientConv = NULL; + User::LeaveIfError(error); } + + QCRITICAL_WRITE("ConversationsEnginePrivate::clearConversationsL end."); } //--------------------------------------------------------------- @@ -248,6 +270,30 @@ } //--------------------------------------------------------------- +// ConversationsEnginePrivate::deRegisterCVUpdatesTemporary +// @see header +//--------------------------------------------------------------- +void ConversationsEnginePrivate::deRegisterCVUpdatesTemporary() +{ + mServer->RemoveConversationChangeEventL (mConvChangeHandler ,mClientConv); +} + +//--------------------------------------------------------------- +// ConversationsEnginePrivate::registerAgainForConversationUpdatesL +// @see header +//--------------------------------------------------------------- +void ConversationsEnginePrivate::registerAgainForConversationUpdatesL( + int newConversationId) +{ + //Add the Conversation Change for new conversationId + if(mClientConv) + { + mClientConv->SetConversationEntryId(newConversationId); + mServer->RequestConversationChangeEventL (mConvChangeHandler ,mClientConv); + } +} + +//--------------------------------------------------------------- // ConversationsEnginePrivate::ConversationList // @see header //--------------------------------------------------------------- @@ -267,10 +313,14 @@ RPointerArray& aConversationEntryList) { int error; - if(mClientConv) - { + if (mClientConv) + { + QCRITICAL_WRITE("ConversationsEnginePrivate::Conversations start."); + TRAP(error,mConvChangeHandler->ConversationsL(aConversationEntryList)); - } + + QCRITICAL_WRITE("ConversationsEnginePrivate::Conversations end."); + } } @@ -280,9 +330,9 @@ //--------------------------------------------------------------- void ConversationsEnginePrivate::fetchMoreConversations() { - if(mClientConv) - { - mConvChangeHandler->restartHandleConversations(); + if (mClientConv) + { + mConvChangeHandler->restartHandleConversations(); } }