imservices/instantmessagingcache/imcacheserver/src/cimcachemessageheader.cpp
changeset 0 e6b17d312c8b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imservices/instantmessagingcache/imcacheserver/src/cimcachemessageheader.cpp	Thu Dec 17 08:54:49 2009 +0200
@@ -0,0 +1,199 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  implementation of header of all convesation
+*
+*/
+
+
+//  Include Files
+
+#include "cimcachemessageheader.h"
+
+#include "cimcachemessagebase.h"
+ //logs
+#include "imcachedebugtrace.h"
+
+
+// CONSTRUCTION
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::NewL
+// Static constructor
+// -----------------------------------------------------------------------------
+//
+CIMCacheMessageHeader* CIMCacheMessageHeader::NewL(TInt aServiceId, const TDesC& aBuddyId )
+    {
+    TRACE( T_LIT( "CIMCacheMessageHeader::NewL begin") );
+    CIMCacheMessageHeader* self = new (ELeave) CIMCacheMessageHeader;
+    CleanupStack::PushL(self);
+    self->ConstructL( aServiceId, aBuddyId );
+	CleanupStack::Pop();
+	TRACE( T_LIT( "CIMCacheMessageHeader::NewL end") );
+    return self;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::~CIMCacheMessageHeader
+// Destructor (virtual by CBase)
+// -----------------------------------------------------------------------------
+//
+CIMCacheMessageHeader::~CIMCacheMessageHeader()
+    {
+    TRACE( T_LIT( "CIMCacheMessageHeader::~CIMCacheMessageHeader begin") );
+	delete iBuddyId;
+	iMessageArray.ResetAndDestroy() ; // all messages
+	TRACE( T_LIT( "CIMCacheMessageHeader::~CIMCacheMessageHeader end") );
+    }
+
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::ConstructL
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void CIMCacheMessageHeader::ConstructL(TInt aServiceId, const TDesC& aBuddyId )
+    {
+    TRACE( T_LIT( "CIMCacheMessageHeader::ConstructL begin") );
+	iServiceId = aServiceId;
+	iBuddyId   = aBuddyId.AllocL();
+    TRACE( T_LIT( "CIMCacheMessageHeader::ConstructL end") );
+    }
+
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::CIMCacheMessageHeader
+// Constructor
+// -----------------------------------------------------------------------------
+//
+CIMCacheMessageHeader::CIMCacheMessageHeader():
+    iChatStarted( EFalse)
+    {
+    TRACE( T_LIT( "CIMCacheMessageHeader::CIMCacheMessageHeader") );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::Recipient
+// name of history data
+// -----------------------------------------------------------------------------
+//
+const TDesC& CIMCacheMessageHeader::BuddyId() const
+	{
+	TRACE( T_LIT( "CIMCacheMessageHeader::Recipient begin") );
+	if( iBuddyId )
+        {
+        return *iBuddyId;
+        }
+    TRACE( T_LIT( "CIMCacheMessageHeader::Recipient end") );
+    return KNullDesC;
+	
+	}
+
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::ServiceId
+// name of history data
+// -----------------------------------------------------------------------------
+//
+ TInt CIMCacheMessageHeader::ServiceId() const
+	{
+	return iServiceId;
+	}
+	
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::MessageCount
+// name of history data
+// -----------------------------------------------------------------------------
+//
+ TInt CIMCacheMessageHeader::MessageCount() const
+	{
+	return iMessageArray.Count();
+	}
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::GetMessage
+// name of history data
+// -----------------------------------------------------------------------------
+//
+ CIMCacheMessageBase* CIMCacheMessageHeader::GetMessage(TInt aIndex ) 
+	{
+	return iMessageArray[aIndex];
+	}
+
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::AppendMessageL
+// name of history data
+// -----------------------------------------------------------------------------
+//
+void CIMCacheMessageHeader::AppendMessageL(CIMCacheMessageBase* aMessge) 
+	{
+	TRACE( T_LIT( "CIMCacheMessageHeader::AppendMessageL begin") );
+
+    iMessageArray.AppendL( aMessge );
+   	
+	TRACE( T_LIT( "CIMCacheMessageHeader::AppendMessageL end") );
+	}
+
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::UnreadMessageCount
+// name of history data
+// -----------------------------------------------------------------------------
+//
+TInt CIMCacheMessageHeader::UnreadMessageCount()  const
+	{
+	TRACE( T_LIT( "CIMCacheMessageHeader::UnreadMessageCount begin") );
+	TInt ret = 0;
+	TInt msgcount = iMessageArray.Count();
+	for(TInt i=0; i<msgcount; i++ )
+		{
+		CIMCacheMessageBase* msg = 	iMessageArray[i];
+		if(msg->IsUnread() )
+			{
+			ret++;	
+			}
+		}
+	TRACE( T_LIT( "CIMCacheMessageHeader::UnreadMessageCount end") );
+	return ret;
+	}
+
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::IsChatStarted
+// name of history data
+//-----------------------------------------------------------------------------
+TBool CIMCacheMessageHeader::IsChatStarted()
+    {
+    return iChatStarted;
+    }
+
+// -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::SetChatStarted
+// name of history data
+//-----------------------------------------------------------------------------
+void CIMCacheMessageHeader::SetChatStarted(TBool aStarted )
+    {
+    iChatStarted = aStarted;
+    }
+
+ // -----------------------------------------------------------------------------
+// CIMCacheMessageHeader::MarkAllRead
+// name of history data
+//-----------------------------------------------------------------------------
+void CIMCacheMessageHeader::MarkAllRead()
+    {
+    TInt unreadCount = UnreadMessageCount();
+    TInt count = MessageCount();
+    
+    for( TInt i = count-1; i >= count- unreadCount; i--  )
+	    {
+	    iMessageArray[i]->SetRead();	
+	    }
+    }
+ 
+//  End of File