diff -r eedf17a17c27 -r cfd5c2994f10 imservices/instantmessagingcache/imcacheserver/src/ccacheserveractivehelper.cpp --- a/imservices/instantmessagingcache/imcacheserver/src/ccacheserveractivehelper.cpp Thu Aug 19 10:14:19 2010 +0300 +++ b/imservices/instantmessagingcache/imcacheserver/src/ccacheserveractivehelper.cpp Tue Aug 31 15:31:29 2010 +0300 @@ -226,30 +226,19 @@ } // if there are no unread messages then reset the status pane indicator. TInt unreadCount = 0; - TInt currentContactUnReadCount = 0; TInt headerCount = iHeaderArray.Count(); - TInt id = 0; for( TInt i=0; i< headerCount; i++ ) { // note in this case reciepient is own user id MIMCacheMessageHeader* header = iHeaderArray[i]; if( header->ServiceId() == sericeId ) { - if(buddyId->Compare(iHeaderArray[i]->BuddyId()) == 0) - { - currentContactUnReadCount = header->UnreadMessageCount(); - } - if(header->UnreadMessageCount()) - { - id = i; - } - + unreadCount = unreadCount + header->UnreadMessageCount(); } } - - if(!currentContactUnReadCount) + if(!unreadCount) { - PublishMessageInfoL(iHeaderArray[id]->BuddyId(),sericeId); + PublishMessageInfoL(*buddyId,sericeId); } CleanupStack::PopAndDestroy(buddyId); @@ -441,37 +430,7 @@ { iActiveHeader = NULL; } - // remove the universal indicator notification if there are no more unread messages, - // apart form whose conversation is closed. loop through - TInt headerCount = iHeaderArray.Count(); - headerIndex = KErrNotFound; - for( TInt i=0; i< headerCount; i++ ) - { - // note in this case reciepient is own user id - MIMCacheMessageHeader* header = iHeaderArray[i]; - TRACE(T_LIT( "CCacheServerActiveHelper::PublishMessageInfoL UnreadMessageCount -- %d"), header->UnreadMessageCount()); - if( header->ServiceId() == sericeId && header->UnreadMessageCount() ) - { - // this is required in the following scenario - // you receive 10 new messgaes form two parties(5, each) - // whne you close the conversation form one, the universal indicator is still - // for the other party's messages, and when clicked on universal indicator it should - // open the conversation view wiht the latest user id. - headerIndex = i; - } - } - // there are new messages received form only one party. - // hence the buddyid is required as conversation view will be openend. - if(KErrNone == headerIndex) - { - PublishMessageInfoL(iHeaderArray[headerIndex]->BuddyId(), sericeId, ETrue); - } - // new messages are recieved from multiple parties, hence no need of the sender id - // as the service tab will be opened. - else - { - PublishMessageInfoL(KNullDesC(), sericeId,ETrue); - } + PackAndNotifyEventL( EIMOperationChatDeleted, sericeId, msgHeader, NULL ); delete msgHeader; @@ -510,10 +469,6 @@ } if( needToNotify ) { - // remove the universal indicator notification if there it was displayed, - // as when you logout all the ocnversations are removed. - PublishMessageInfoL(KNullDesC(), aServiceId, ETrue); - PackAndNotifyEventL( EIMOperationAllChatDeleted, aServiceId, NULL, NULL ); } TRACE( T_LIT( "CCacheServerActiveHelper::CloseAllConversationL End") ); @@ -595,7 +550,6 @@ { TRACE( T_LIT( "CCacheServerActiveHelper::GetServiceChatHeaderArrayL start") ); - CleanupClosePushL(aServiceHeaderArray); if( -1 == aServiceId ) { @@ -612,7 +566,6 @@ } } } - CleanupStack::Pop(&aServiceHeaderArray); TRACE( T_LIT( "CCacheServerActiveHelper::GetServiceChatHeaderArrayL end") ); } @@ -669,8 +622,7 @@ // name of history data // ----------------------------------------------------------------------------- // -void CCacheServerActiveHelper::PublishMessageInfoL(const TDesC& aSenderId,TInt aServiceId, - TBool aCloseConversation /*= EFalse*/ ) +void CCacheServerActiveHelper::PublishMessageInfoL(const TDesC& aSenderId,TInt aServiceId ) { // set/reset the status pane indicator here // based on the unread count. @@ -700,7 +652,7 @@ for ( TInt index = 0; index < count; ++index ) { //trap is required if one plugin leaves then it should continue with other plugins. - TRAP_IGNORE(iPluginInfo[index]->Plugin().MessageInfoL(unreadCount,aServiceId,aSenderId,multipleSender,aCloseConversation)); + TRAP_IGNORE(iPluginInfo[index]->Plugin().MessageInfoL(unreadCount,aServiceId,aSenderId,multipleSender)); } } // -----------------------------------------------------------------------------