browserui/browser/FavouritesSrc/BrowserBookmarksOrder.cpp
changeset 0 84ad3b177aa3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/FavouritesSrc/BrowserBookmarksOrder.cpp	Mon Mar 30 12:49:49 2009 +0300
@@ -0,0 +1,133 @@
+/*
+* 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 the License "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: 
+*
+*/
+#include <s32strm.h>
+#include "BrowserBookmarksOrder.h"
+#include "Commonconstants.h"
+
+_LIT( KBrowserBMOrderDataBegin, "BMOrderDataBegin" );
+_LIT( KBrowserBMOrderDataEnd, "BMOrderDataEnd" );
+
+
+// ---------------------------------------------------------
+// CBrowserBookmarksOrder::NewLC()
+// ---------------------------------------------------------
+//
+
+CBrowserBookmarksOrder* CBrowserBookmarksOrder::NewLC()
+    {
+   CBrowserBookmarksOrder* order = 
+        new (ELeave) CBrowserBookmarksOrder();
+    CleanupStack::PushL(order);
+    order->ConstructL();
+    return order;
+    }
+
+// ---------------------------------------------------------
+// CBrowserBookmarksOrder::ConstructL()
+// ---------------------------------------------------------
+//
+
+void CBrowserBookmarksOrder::ConstructL()
+    {
+    iBMOrderArray = new (ELeave) CArrayFixFlat<TInt>(KGranularityHigh);
+    }
+
+CBrowserBookmarksOrder::~CBrowserBookmarksOrder()
+    {
+    delete iBMOrderArray;
+    }
+
+// ---------------------------------------------------------
+// CBrowserBookmarksOrder::InternalizeL
+// ---------------------------------------------------------
+//
+
+void CBrowserBookmarksOrder::InternalizeL( RReadStream& aStream )
+    {
+    iBMOrderArray->Reset();
+    HBufC* tag = HBufC::NewLC(sizeof (KBrowserBMOrderDataBegin));
+    TInt err = 0;
+    TPtr des = tag->Des();
+
+    TRAP(err, aStream>>des );
+   if ( (err == KErrNone) && (tag->Des() == KBrowserBMOrderDataBegin ) )
+        {
+        TInt count = aStream.ReadInt16L();
+        for (TInt i=0; i<count; i++)
+            {
+            TInt value;
+            TRAP(err, value = aStream.ReadInt16L());
+            if (err == KErrNone)
+                {
+                iBMOrderArray->AppendL(value);
+                }
+            else
+                if (err != KErrEof)
+                {
+                User::Leave(err);
+                }
+            }
+
+            TRAP(err, aStream>>des );
+            if (tag->Des() != KBrowserBMOrderDataEnd)
+                {
+                iBMOrderArray->Reset();
+                }
+        }
+    CleanupStack::PopAndDestroy(tag);
+    }
+
+// ---------------------------------------------------------
+// CBrowserBookmarksOrder::ExternalizeL
+// ---------------------------------------------------------
+//
+
+void CBrowserBookmarksOrder::ExternalizeL( RWriteStream& aStream ) const
+    {
+    aStream<<KBrowserBMOrderDataBegin;
+    aStream.WriteInt16L(iBMOrderArray->Count());
+    for (TInt i=0; i<iBMOrderArray->Count(); i++)
+        {
+        aStream.WriteInt16L((*iBMOrderArray)[i]);
+        }
+    aStream<<KBrowserBMOrderDataEnd;
+    }
+
+// ---------------------------------------------------------
+// CBrowserBookmarksOrder::GetBookMarksOrder()
+// ---------------------------------------------------------
+//
+
+const CArrayFixFlat<TInt>& CBrowserBookmarksOrder::GetBookMarksOrder()
+    {
+    return *iBMOrderArray;
+    }
+
+// ---------------------------------------------------------
+// CBrowserBookmarksOrder::SetBookMarksOrderL
+// ---------------------------------------------------------
+//
+
+void CBrowserBookmarksOrder::SetBookMarksOrderL(const CArrayFixFlat<TInt>& aBookMarksOrder)
+    {
+
+    iBMOrderArray->Reset();
+    if ( aBookMarksOrder.Count() )
+        {   
+        iBMOrderArray->AppendL(&(aBookMarksOrder[0]), aBookMarksOrder.Count());
+        }
+    }