# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1271251040 -10800 # Node ID b6f2a363adf7210d04dfc7725756aa0b60e70b79 # Parent e1ad3c803639198f8989441f43bd20a8948e6411 Revision: 201013 Kit: 201015 diff -r e1ad3c803639 -r b6f2a363adf7 imservices/instantmessagingcache/imcacheserver/inc/ccacheserveractivehelper.h --- a/imservices/instantmessagingcache/imcacheserver/inc/ccacheserveractivehelper.h Wed Mar 31 22:05:52 2010 +0300 +++ b/imservices/instantmessagingcache/imcacheserver/inc/ccacheserveractivehelper.h Wed Apr 14 16:17:20 2010 +0300 @@ -102,8 +102,10 @@ * publishes the message info to the plugins * @param aSenderId, buddy id * @param aServiceId, service id + * @Param aCloseConversation indicates that the event came from closing the ocnversation. */ - void PublishMessageInfoL(const TDesC& aSenderId,TInt aServiceId ); + void PublishMessageInfoL(const TDesC& aSenderId,TInt aServiceId, + TBool aCloseConversation = EFalse ); public: diff -r e1ad3c803639 -r b6f2a363adf7 imservices/instantmessagingcache/imcacheserver/src/ccacheserveractivehelper.cpp --- a/imservices/instantmessagingcache/imcacheserver/src/ccacheserveractivehelper.cpp Wed Mar 31 22:05:52 2010 +0300 +++ b/imservices/instantmessagingcache/imcacheserver/src/ccacheserveractivehelper.cpp Wed Apr 14 16:17:20 2010 +0300 @@ -236,10 +236,11 @@ unreadCount = unreadCount + header->UnreadMessageCount(); } } - if(!unreadCount) - { + //BugFix:ESLM-83TF7K: Unread messages are not updated to universal indicator. +// if(!unreadCount) +// { PublishMessageInfoL(*buddyId,sericeId); - } +// } CleanupStack::PopAndDestroy(buddyId); @@ -453,13 +454,13 @@ // hence the buddyid is required as conversation view will be openend. if(KErrNone == headerIndex) { - PublishMessageInfoL(iHeaderArray[headerIndex]->BuddyId(), sericeId); + 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); + PublishMessageInfoL(KNullDesC(), sericeId,ETrue); } PackAndNotifyEventL( EIMOperationChatDeleted, sericeId, msgHeader, NULL ); @@ -501,7 +502,7 @@ { // remove the universal indicator notification if there it was displayed, // as when you logout all the ocnversations are removed. - PublishMessageInfoL(KNullDesC(), aServiceId); + PublishMessageInfoL(KNullDesC(), aServiceId, ETrue); PackAndNotifyEventL( EIMOperationAllChatDeleted, aServiceId, NULL, NULL ); } @@ -656,7 +657,8 @@ // name of history data // ----------------------------------------------------------------------------- // -void CCacheServerActiveHelper::PublishMessageInfoL(const TDesC& aSenderId,TInt aServiceId ) +void CCacheServerActiveHelper::PublishMessageInfoL(const TDesC& aSenderId,TInt aServiceId, + TBool aCloseConversation /*= EFalse*/ ) { // set/reset the status pane indicator here // based on the unread count. @@ -686,7 +688,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)); + TRAP_IGNORE(iPluginInfo[index]->Plugin().MessageInfoL(unreadCount,aServiceId,aSenderId,multipleSender,aCloseConversation)); } } // ----------------------------------------------------------------------------- diff -r e1ad3c803639 -r b6f2a363adf7 imsrv_plat/im_cache_server_api/inc/cinstantmsgindicator.h --- a/imsrv_plat/im_cache_server_api/inc/cinstantmsgindicator.h Wed Mar 31 22:05:52 2010 +0300 +++ b/imsrv_plat/im_cache_server_api/inc/cinstantmsgindicator.h Wed Apr 14 16:17:20 2010 +0300 @@ -61,8 +61,11 @@ * @param aSeriveId, service id. * @param aSenderId, message sender id. * @param aMultipleSender, count of number of P-2_p chats. + * @param aCloseConversation, indicates that this even came from closing the + * conversation and hence no need to paly the tone if there were already new messages. */ - virtual void MessageInfoL(TInt aNewMessages, TInt aSeriveId,const TDesC& aSenderId,TInt aMultipleSenders) = 0; + virtual void MessageInfoL(TInt aNewMessages, TInt aSeriveId,const TDesC& aSenderId, + TInt aMultipleSenders,TBool aCloseConversation = EFalse) = 0; private: /**