internetradio2.0/irxmlparser/src/irxmlelements.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 18 Aug 2010 09:40:26 +0300
changeset 14 896e9dbc5f19
permissions -rw-r--r--
Revision: 201031 Kit: 201033

/*
* 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:  The implementation for presentation elements.
*
*/


#include <stringpool.h>

#include "irdebug.h"
#include "irxmlelements.h"

//Ignores PC Lint Warning 618.

//! Literals for the StringPool

//! Literals for List of genres,languages,countries
 _STLIT8( KName, "name" );
 _STLIT8( KID, "id" );
 _STLIT8( KSize, "size" );
 
//!Literals for the List of Channels
 _STLIT8( KShortDesC, "shortDesc" );

 _STLIT8( KBitrate, "bitrate" );
 _STLIT8( KValue, "value" );
//! Literals for the channel 

_STLIT8( KSdsid, "sdsid" );
_STLIT8( KLangCode, "langCode" );
_STLIT8( KLang, "lang" );
_STLIT8( KCountryCode, "countryCode" );
_STLIT8( KLastUpdated, "lastUpdated" );
_STLIT8( KDescription, "description" );
_STLIT8( KImgURL, "imgUrl" );
_STLIT8( KAdvUrl, "advertiseImgUrl" );
_STLIT8( KAdvUse, "advertiseInUse" );
_STLIT8( KGenreId, "genreid" );
_STLIT8( KURL, "url" );
_STLIT8( KMusicStoreEnabled, "musicStoreEnabled" );
//!Literals for the log Usage

_STLIT8( KIRId, "irid" ); 
//! Literals for the OTA Update

_STLIT8( KVersion, "version" );
_STLIT8( KUpdateInterval, "updateInterval" );
_STLIT8( KUpdateMethod, "updateMethod" );

 //! Literals for Advertisement
_STLIT8( KInUse, "inUse" );
_STLIT8( KUsageVisibleTimes, "usageVisibleTimes" );
_STLIT8( KVisibleTime, "visibleTime" );
 
const TInt KNoOfElementInTable = 27;
 
 //! PoolTable
 const TAny* const IRXMLPoolContent[] =
    { 
  (const TAny*)         &KGetOp,    
  (const TAny*)         &KName,       
  (const TAny*)         &KID,    
  (const TAny*)         &KSize,
  (const TAny*)         &KShortDesC,
  (const TAny*)         &KValue,        
  (const TAny*)         &KSdsid,
  (const TAny*)         &KLangCode,
  (const TAny*)         &KLang,
  (const TAny*)         &KCountryCode,
  (const TAny*)         &KCountry,
  (const TAny*)         &KLastUpdated,
  (const TAny*)         &KDescription,
  (const TAny*)         &KImgURL,
  (const TAny*)         &KAdvUrl,    
  (const TAny*)         &KAdvUse,
  (const TAny*)         &KGenreId,
  (const TAny*)         &KURL,    
  (const TAny*)         &KMusicStoreEnabled,    
  (const TAny*)         &KBitrate,
  (const TAny*)         &KIRId,
  (const TAny*)         &KVersion,
  (const TAny*)         &KUpdateInterval,
  (const TAny*)         &KUpdateMethod,
  (const TAny*)          &KInUse,
  (const TAny*)         &KUsageVisibleTimes,
  (const TAny*)          &KVisibleTime
    };
    
//! Pointer to a StringTable
const static TStringTable IRPoolTable = 
    {
    KNoOfElementInTable,      
    &IRXMLPoolContent[0],
    EFalse
    };     


// ---------------------------------------------------------------------------
// Creates an initialised string pool with no pre-loaded string tables.
// ---------------------------------------------------------------------------
//
void TIRXMLElementFormat::OpenStringPoolL( RStringPool&  aStringPool )
    {
    IRLOG_DEBUG( "CIRXMLContentHandler::OpenStringPoolL" );
    aStringPool.OpenL( IRPoolTable );
    IRLOG_DEBUG( "CIRXMLContentHandler::OpenStringPoolL - Exiting." );
    }


// ---------------------------------------------------------------------------
// TIRXMLElementFormat :: GetElementIdL
// The ElementId of the element from the StringPool
// ---------------------------------------------------------------------------
//
TIRXMLElement TIRXMLElementFormat::GetElementIdL( const TDesC8& aElement, 
                                  const RStringPool& aStringPool )
    {
    IRLOG_DEBUG( "TIRXMLElementFormat::GetElementIdL" );
    TBool validElement = EFalse;
    TInt  tableEntries;
    TInt  pos(0);
    tableEntries = IRPoolTable.iCount;
    while( pos < tableEntries && validElement == EFalse )
        {
        RStringF tableEntry;
        tableEntry = aStringPool.StringF( pos, IRPoolTable );
        HBufC8* ElementName = HBufC8::NewLC( tableEntry.DesC().Length() );
        ElementName->Des().Copy( tableEntry.DesC() );
        TLex8 string( *ElementName );
        TPtrC8 token = string.NextToken();
        TInt CompareResult = aElement.Compare( token );
        if ( CompareResult == 0 )
            {
             validElement = ETrue;
            }
        if ( validElement == EFalse )
            {
             pos++;
            }
        tableEntry.Close();
        CleanupStack::PopAndDestroy( ElementName );        
        }
    if ( validElement )
        {
        IRLOG_DEBUG( "CIRXMLContentHandler::GetElementIdL - Exiting (1)." );
        return static_cast<TIRXMLElement>( pos );
        }        
    IRLOG_DEBUG( "CIRXMLContentHandler::GetElementIdL - Exiting (2)." );
    return(EElementIDUnknown);
    } 
    
// ---------------------------------------------------------------------------
// TIRXMLElementFormat::CloseStringPoolL
// Closes the StringPool
// ---------------------------------------------------------------------------
//
void TIRXMLElementFormat::CloseStringPoolL( RStringPool&  aStringPool )
    {
    IRLOG_DEBUG( "TIRXMLElementFormat::CloseStringPoolL" );
    aStringPool.Close();
    IRLOG_DEBUG( "TIRXMLElementFormat::CloseStringPoolL - Exiting." );
    return;
    }