diff -r 1b207dd38b72 -r ace62b58f4b2 menucontentsrv/srvsrc/mcssuiteparser.cpp --- a/menucontentsrv/srvsrc/mcssuiteparser.cpp Tue May 25 13:01:39 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,200 +0,0 @@ -/* -* 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: -* -*/ - -// INCLUDE FILES -#include -#include -#include - -#include "mcssuiteparser.h" -#include "mcssuiteobject.h" -#include "mcsdef.h" -#include "mcssuiteobjectfactory.h" - - -// --------------------------------------------------------- -// CSuiteObject::CSuiteParser -// --------------------------------------------------------- -// -CSuiteParser::CSuiteParser() - { - // No implementation required - } - -// --------------------------------------------------------- -// CSuiteObject::~CSuiteParser -// --------------------------------------------------------- -// -CSuiteParser::~CSuiteParser() - { - iFileName.Close(); - delete iContentEngine; - delete iObjectFactory; - delete iActiveScheduler; - delete iContentTree; - } - -// --------------------------------------------------------- -// CSuiteObject::NewLC -// --------------------------------------------------------- -// -CSuiteParser* CSuiteParser::NewLC( const TDesC& aFileName ) - { - CSuiteParser* self = new (ELeave) CSuiteParser(); - CleanupStack::PushL(self); - self->ConstructL( aFileName ); - return self; - } - -// --------------------------------------------------------- -// CSuiteObject::NewL -// --------------------------------------------------------- -// -CSuiteParser* CSuiteParser::NewL( const TDesC& aFileName ) - { - CSuiteParser* self = CSuiteParser::NewLC( aFileName ); - CleanupStack::Pop( self ); // self; - return self; - } - -// --------------------------------------------------------- -// CSuiteObject::ConstructL -// --------------------------------------------------------- -// -void CSuiteParser::ConstructL( const TDesC& aFileName ) - { - iFileName.CreateL( aFileName ); - iActiveScheduler = new ( ELeave ) CActiveSchedulerWait(); - iObjectFactory = CSuiteObjectFactory::NewL(); - iContentEngine = CXCFWEngine::NewL( this ); - iContentEngine->RegisterObjectFactoryL( iObjectFactory ); - } - -// ----------------------------------------------------------------------------- -// CSuiteParser::GetSuitsArrayL -// ----------------------------------------------------------------------------- -// -TInt CSuiteParser::GetSuitsArrayL( RPointerArray& aSuitesArray ) - { - TInt err; - iContentTree = CXCFWTree::NewL( ); - iContentEngine->LoadL( *iContentTree, iFileName ); - - iActiveScheduler->Start( ); - - if ( iCompletionStatus == 0 /*TSuiteParsingStatus::ECompleted*/ ) - { - //this trap ensures stoping the ActiveSheduler - //in case a leave occurs when updating data - TRAP( err, HandleEntriesL( aSuitesArray ) ); - } - - delete iContentTree; - iContentTree = NULL; - return err; - } - -// --------------------------------------------------------- -// CSuiteObject::HandleEngineEventL -// --------------------------------------------------------- -// -void CSuiteParser::HandleEngineEventL( TXCFWEngineEvent aEvent ) - { - // handle completion - if ( aEvent == EEvtParsingComplete ) - { - TSuiteParsingStatus status = ECompleted; - HandleCompletionL( status ); - } - // else => ignore - } - -// --------------------------------------------------------- -// CSuiteObject::HandleEngineErrorL -// --------------------------------------------------------- -// -void CSuiteParser::HandleEngineErrorL( TInt /*aErrorCode*/) - { - HandleCompletionL( EFailed ); - } - -// --------------------------------------------------------- -// CSuiteObject::HandleCompletionL -// --------------------------------------------------------- -// -void CSuiteParser::HandleCompletionL( - TSuiteParsingStatus aStatus ) - { - iCompletionStatus = aStatus; - iActiveScheduler->AsyncStop( ); - } - - -// --------------------------------------------------------- -// CSuiteObject::HandleEntriesL -// --------------------------------------------------------- -// -void CSuiteParser::HandleEntriesL( RPointerArray& aSuitesArray ) - { - MXCFWNode* root = iContentTree->Root( ); - // get children - RNodeArray suites; - CleanupClosePushL( suites ); - iContentTree->GetChildNodesL( root, suites ); - for ( TInt i = 0; i < suites.Count( ); i++ ) - { - CSuiteObject* suite = CreateSuiteLC( suites[i] ); - aSuitesArray.AppendL( suite ); - CleanupStack::Pop( suite ); - } - - // clean up - CleanupStack::PopAndDestroy( &suites ); - } - -// --------------------------------------------------------- -// CSuiteObject::CreateSuiteLC -// --------------------------------------------------------- -// -CSuiteObject* CSuiteParser::CreateSuiteLC( MXCFWNode* aNode ) - { - TInt lastBackSlash = iFileName.Length() - - iFileName.LocateReverseF( KBackSlashSuite ) - 1; - CSuiteObject* suite = - CSuiteObject::NewLC( iFileName.Right( lastBackSlash ) ); - - CGECODefaultObject* node= - static_cast( aNode->Data() ); - - TPtrC name; - TPtrC value; - TInt attrCount = node->NumAttributes(); - TBool isLocalized = EFalse; - - for( TInt i = 0; i < attrCount; i++ ) - { - node->AttributeDetailsL( i, name, value, isLocalized ); - if( name == KMenuAttSuiteName() ) - { - suite->SetSuiteNameL( value ); - } - suite->SetInitialAttributeL( name, value, isLocalized ); - } - - return suite; - } -