emailuis/emailui/src/FreestyleEmailUiMsgDetailsModel.cpp
changeset 0 8466d47a6819
child 8 e1b6206813b4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/src/FreestyleEmailUiMsgDetailsModel.cpp	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,181 @@
+/*
+* Copyright (c) 2007-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:  FreestyleEmailUi message details model implementation
+*
+*/
+
+
+// SYSTEM INCLUDES
+//<cmail>
+#include "emailtrace.h"
+#include "CFSMailAddress.h"
+//</cmail>
+
+// INTERNAL INCLUDES
+#include "FreestyleEmailUiMsgDetailsModel.h"
+
+// ---------------------------------------------------------------------------
+// Folder list item constructor.
+// ---------------------------------------------------------------------------
+CFSEmailUiMsgDetailsItem::CFSEmailUiMsgDetailsItem( TFsTreeItemId aListId )
+	: iListId( aListId ), iMailAddress( NULL ), iText( NULL )
+	{
+    FUNC_LOG;
+	}
+
+// ---------------------------------------------------------------------------
+// Folder list item destructor.
+// ---------------------------------------------------------------------------
+CFSEmailUiMsgDetailsItem::~CFSEmailUiMsgDetailsItem()
+	{
+    FUNC_LOG;
+	}
+
+// ---------------------------------------------------------------------------
+// NewLC
+// ---------------------------------------------------------------------------
+//
+CFSEmailUiMsgDetailsItem* CFSEmailUiMsgDetailsItem::NewLC(
+    TFsTreeItemId aListId )
+    {
+    FUNC_LOG;
+    CFSEmailUiMsgDetailsItem* self = new (ELeave) CFSEmailUiMsgDetailsItem( aListId );
+    CleanupStack::PushL( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+CFSEmailUiMsgDetailsModel::CFSEmailUiMsgDetailsModel()
+	{
+    FUNC_LOG;
+	}
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+CFSEmailUiMsgDetailsModel::~CFSEmailUiMsgDetailsModel()
+	{
+    FUNC_LOG;
+	RemoveAll();
+	iItemArray.Close();
+	}
+
+// ---------------------------------------------------------------------------
+// Add an item to the end of the list.
+// ---------------------------------------------------------------------------
+void CFSEmailUiMsgDetailsModel::AppendL( TFsTreeItemId aListId, CFSMailAddress* aMailAddress )
+	{
+    FUNC_LOG;
+	CFSEmailUiMsgDetailsItem* item = CFSEmailUiMsgDetailsItem::NewLC( aListId );
+	item->iMailAddress = aMailAddress;
+	iItemArray.AppendL( item );
+    CleanupStack::Pop( item );
+	}
+
+// ---------------------------------------------------------------------------
+// Add an item to the end of the list.
+// ---------------------------------------------------------------------------
+void CFSEmailUiMsgDetailsModel::AppendL( TFsTreeItemId aListId, TDesC* aText )
+	{
+    FUNC_LOG;
+	CFSEmailUiMsgDetailsItem* item = CFSEmailUiMsgDetailsItem::NewLC( aListId );
+	item->iText = aText;
+	iItemArray.AppendL( item );
+    CleanupStack::Pop( item );
+	}
+
+// ---------------------------------------------------------------------------
+// Remove item by list item id.
+// ---------------------------------------------------------------------------
+void CFSEmailUiMsgDetailsModel::Remove( TFsTreeItemId aListId )
+	{
+    FUNC_LOG;
+	TInt index = Index( aListId );
+	if( index != KErrNotFound )
+		{
+		delete iItemArray[index];
+		iItemArray.Remove( index );
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// Remove all items.
+// ---------------------------------------------------------------------------	
+void CFSEmailUiMsgDetailsModel::RemoveAll()
+	{
+    FUNC_LOG;
+	iItemArray.ResetAndDestroy();
+	}
+
+// ---------------------------------------------------------------------------
+// Get an item by list item id.
+// 
+// @return NULL if not found.
+// ---------------------------------------------------------------------------
+CFSEmailUiMsgDetailsItem* CFSEmailUiMsgDetailsModel::ItemByListId( TFsTreeItemId aListId ) const
+	{
+    FUNC_LOG;
+	TInt index = Index( aListId );
+	if( index != KErrNotFound )
+		{
+		return iItemArray[ index ];
+		}
+	else
+		{
+		return NULL;
+		}
+	}
+	
+// ---------------------------------------------------------------------------
+// Get an item by list index.
+// 
+// @return NULL if not found.
+// ---------------------------------------------------------------------------
+CFSEmailUiMsgDetailsItem* CFSEmailUiMsgDetailsModel::ItemByIndex( TInt aModelIndex ) const
+	{
+    FUNC_LOG;
+	return iItemArray[ aModelIndex ];
+	}
+
+// ---------------------------------------------------------------------------
+// Get number of items in list.
+// 
+// @return Number of items.
+// ---------------------------------------------------------------------------		
+TInt CFSEmailUiMsgDetailsModel::Count() const
+	{
+    FUNC_LOG;
+	return iItemArray.Count();
+	}
+	
+// ---------------------------------------------------------------------------
+// Get the array index of the spcified item.
+// 
+// @return Array index of the item.
+// ---------------------------------------------------------------------------		
+TInt CFSEmailUiMsgDetailsModel::Index( TFsTreeItemId aListId ) const
+	{
+    FUNC_LOG;
+	for( TInt i = 0; i < Count(); i++ )
+		{
+		if( iItemArray[i]->iListId == aListId )
+			{
+			return i;
+			}
+		}
+	return KErrNotFound;
+	}
+