phonebookui/Phonebook2/spbcontentprovider/src/spbcontactdatamodelrow.cpp
branchRCL_3
changeset 6 e8e3147d53eb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/spbcontentprovider/src/spbcontactdatamodelrow.cpp	Mon Mar 15 12:39:26 2010 +0200
@@ -0,0 +1,199 @@
+/*
+ * Copyright (c) 2009 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:  Listbox model row contact model
+ *
+ */
+
+#include "spbcontactdatamodelrow.h"
+#include <s32strm.h>
+
+// ======== MEMBER FUNCTIONS ========
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::CSpbContactDataModelRow
+// --------------------------------------------------------------------------
+//
+inline CSpbContactDataModelRow::CSpbContactDataModelRow()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::~CSpbContactDataModelRow
+// --------------------------------------------------------------------------
+//
+CSpbContactDataModelRow::~CSpbContactDataModelRow()
+    {
+    iColumns.ResetAndDestroy();
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::NewL
+// --------------------------------------------------------------------------
+//
+CSpbContactDataModelRow* CSpbContactDataModelRow::NewL()
+    {
+    return new (ELeave) CSpbContactDataModelRow;
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::ColumnCount
+// --------------------------------------------------------------------------
+//
+TInt CSpbContactDataModelRow::ColumnCount() const
+    {
+    return iColumns.Count();
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::At
+// --------------------------------------------------------------------------
+//
+TPtrC CSpbContactDataModelRow::At(TInt aColumnIndex) const
+    {
+    return *iColumns[aColumnIndex];
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::AppendColumnL
+// --------------------------------------------------------------------------
+//
+void CSpbContactDataModelRow::AppendColumnL(const TDesC& aColumnText)
+    {
+    HBufC* buf = aColumnText.AllocLC();
+    iColumns.AppendL( buf );
+    CleanupStack::Pop( buf );
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::ReplaceColumnL
+// --------------------------------------------------------------------------
+//
+void CSpbContactDataModelRow::ReplaceColumnL( 
+    TInt aIndex, const TDesC& aColumnText )
+    {
+    HBufC* buf = aColumnText.AllocL();
+    HBufC*& old = iColumns[aIndex];
+    delete old;
+    old = buf;
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::IsClipRequired
+// --------------------------------------------------------------------------
+//
+TBool CSpbContactDataModelRow::IsClipRequired() const
+    {
+    return iClipBeginning;
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::SetClipRequired
+// --------------------------------------------------------------------------
+//
+void CSpbContactDataModelRow::SetClipRequired(TBool aFlag)
+    {
+    iClipBeginning = aFlag;
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::Icon
+// --------------------------------------------------------------------------
+//
+const TPbk2IconId& CSpbContactDataModelRow::Icon()
+    {
+    return iIcon;
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::SetIcon
+// --------------------------------------------------------------------------
+//
+void CSpbContactDataModelRow::SetIcon( const TPbk2IconId& aIcon )
+    {
+    iIcon = aIcon;
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::TotalLength
+// --------------------------------------------------------------------------
+//
+TInt CSpbContactDataModelRow::TotalLength() const
+    {
+    TInt result = 0;
+    const TInt count = iColumns.Count();
+    for (TInt i = 0; i < count; ++i)
+        {
+        result += At(i).Length();
+        }
+    return result;
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::MaxColumnLength
+// --------------------------------------------------------------------------
+//
+TInt CSpbContactDataModelRow::MaxColumnLength() const
+    {
+    TInt result = 0;
+    const TInt count = iColumns.Count();
+    for (TInt i = 0; i < count; ++i)
+        {
+        result = Max(result, At(i).Length());
+        }
+    return result;
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::ExternalizeL
+// --------------------------------------------------------------------------
+//
+void CSpbContactDataModelRow::ExternalizeL( RWriteStream& aStream ) const
+    {
+    const TInt count = iColumns.Count();
+    aStream.WriteInt8L( iClipBeginning );
+    aStream.WriteL( (TUint8*)(&iIcon), sizeof( TPbk2IconId ) );
+
+    aStream.WriteInt32L( count );
+    for (TInt i = 0; i < count; ++i)
+        {
+        HBufC* text = iColumns[i]; 
+        aStream.WriteInt32L( text->Length() );
+        aStream.WriteL( *text );
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CSpbContactDataModelRow::InternalizeL
+// --------------------------------------------------------------------------
+//
+void CSpbContactDataModelRow::InternalizeL( RReadStream& aStream )
+    {
+    iColumns.ResetAndDestroy();
+
+    iClipBeginning = aStream.ReadInt8L();
+    aStream.ReadL( (TUint8*)(&iIcon), sizeof( TPbk2IconId ) );
+    
+    const TInt count = aStream.ReadInt32L();
+    for (TInt i = 0; i < count; ++i)
+        {
+        const TInt length = aStream.ReadInt32L();
+        HBufC* buffer = HBufC::NewLC( length );
+        TPtr column( buffer->Des() );
+        aStream.ReadL( column, length );
+        iColumns.AppendL( buffer );
+        CleanupStack::Pop( buffer );
+        }
+    }
+
+// End of File