--- 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:
--- 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));
}
}
// -----------------------------------------------------------------------------
--- 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:
/**