browserui/browser/FavouritesSrc/BrowserBookmarksOrder.cpp
author Simon Howkins <simonh@symbian.org>
Mon, 22 Nov 2010 14:25:13 +0000
branchRCL_3
changeset 73 9437cb201cd0
parent 0 84ad3b177aa3
permissions -rw-r--r--
__WEB_WIDGETS configuration is now done within the component's bld.inf files, not the top/mid level bld.infs

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