diff -r b13cd05eeb2f -r 57b735022c18 srsf/vcommandmanager/src/vcresource.cpp --- a/srsf/vcommandmanager/src/vcresource.cpp Mon Jan 18 20:20:30 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,273 +0,0 @@ -/* -* Copyright (c) 2005 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: ?Description -* -*/ - - -// INCLUDE FILES -#include "vcresource.h" -#include "rubydebug.h" -#include -#include -#include -#include -#include -#include - -// CONSTANTS - -// File name extension for EngineeringEnglish resource file -_LIT( KDefaultLanguageExtension, ".rsc" ); - -// Drives where resource file will be searched -const TBuf<2> KResourceDrives = _L("cz"); - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CVcResource::CVcResource -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CVcResource::CVcResource( RFs& aRFs ) - : iRFs( aRFs ) - { - // Nothing - } - -// ----------------------------------------------------------------------------- -// CVcResource::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CVcResource::ConstructL( const TDesC& aFileName ) - { - RUBY_DEBUG_BLOCKL( "CVcResource::ConstructL" ); - - ResolveResourceFileL( aFileName ); - } - -// ----------------------------------------------------------------------------- -// CVcResource::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CVcResource* CVcResource::NewL( RFs& aRFs, const TDesC& aFileName ) - { - CVcResource* self = new( ELeave ) CVcResource( aRFs ); - - CleanupStack::PushL( self ); - self->ConstructL( aFileName ); - CleanupStack::Pop( self ); - - return self; - } - -// ----------------------------------------------------------------------------- -// CVcResource::~CVcResource -// Destructor. -// ----------------------------------------------------------------------------- -// -CVcResource::~CVcResource() - { - iKeys.Close(); - iCommands.ResetAndDestroy(); - iCommands.Close(); - iIntegerKeys.Close(); - iIntegerValues.Close(); - } - -// ----------------------------------------------------------------------------- -// CVcResource::GetCommand -// Gets the localized string based on integer key -// ----------------------------------------------------------------------------- -// -HBufC& CVcResource::GetCommandL( TInt aKey ) - { - RUBY_DEBUG_BLOCKL( "CVcResource::GetCommandL(TInt)" ); - - TInt index = iKeys.Find( aKey ); - User::LeaveIfError( index ); - - return *iCommands[ index ]; - } - -// ----------------------------------------------------------------------------- -// CVcXmlParser::ReadValueFromLocFile -// Gets the localized string based on descriptor key -// ----------------------------------------------------------------------------- -// -HBufC& CVcResource::GetCommandL( const TDesC& aKey ) - { - RUBY_DEBUG_BLOCKL( "CVcResource::GetCommandL(TDesC)" ); - - TInt length( 0 ); - TInt result( 0 ); - TDigitType dt( EDigitTypeWestern ); - result = NumberConversion::ConvertFirstNumber( aKey, length, dt ); - - if ( length == 0 ) - { - User::Leave( KErrNotFound ); - } - - return GetCommandL( result ); - } - -// ----------------------------------------------------------------------------- -// CVcResource::GetValueL -// Gets the localized string based on integer key -// ----------------------------------------------------------------------------- -// -TInt CVcResource::GetValueL( TInt aKey ) - { - RUBY_DEBUG_BLOCKL( "CVcResource::GetValueL(TInt)" ); - - TInt index = iIntegerKeys.Find( aKey ); - User::LeaveIfError( index ); - - return iIntegerValues[ index ]; - } - -// ----------------------------------------------------------------------------- -// CVcXmlParser::ReadValueFromLocFile -// Gets the localized string based on descriptor key -// ----------------------------------------------------------------------------- -// -TInt CVcResource::GetValueL( const TDesC& aKey ) - { - RUBY_DEBUG_BLOCKL( "CVcResource::GetValueL(TDesC)" ); - - TInt length( 0 ); - TInt result( 0 ); - TDigitType dt( EDigitTypeWestern ); - result = NumberConversion::ConvertFirstNumber( aKey, length, dt ); - - if ( length == 0 ) - { - User::Leave( KErrNotFound ); - } - - return GetValueL( result ); - } - - -// ----------------------------------------------------------------------------- -// CVcResource::ResolveResourceFileL -// Resolves the correct localized resource file name -// ----------------------------------------------------------------------------- -// -void CVcResource::ResolveResourceFileL( const TDesC& aFileName ) - { - RUBY_DEBUG_BLOCKL( "CVcXmlParser::ResolveResourceFileL" ); - - // Resource file found/not found flag - TBool found( EFalse ); - - TFileName name; - - name.Append( 'a' ); // this will be replaced by real drive letter - name.Append( ':' ); - name.Append( KDC_RESOURCE_FILES_DIR ); - name.Append( aFileName ); - name.Append( KDefaultLanguageExtension ); - - TDriveList drivelist; - User::LeaveIfError( iRFs.DriveList( drivelist ) ); - TInt drive( EDriveA ); - - while ( !found && drive <= EDriveZ ) - { - if ( drivelist[drive] ) - { - TChar driveLetter; - User::LeaveIfError( iRFs.DriveToChar( drive, driveLetter ) ); - name[0] = driveLetter; - - BaflUtils::NearestLanguageFile( iRFs, name ); - - if ( BaflUtils::FileExists( iRFs, name ) ) - { - // Read resource - found = ETrue; - ReadResourceFileL( iRFs, name ); - } - } - drive++; - } - - } - -// ----------------------------------------------------------------------------- -// CVcResource::ReadResourceFileL -// Loads the resource file content -// ----------------------------------------------------------------------------- -// -void CVcResource::ReadResourceFileL( RFs& aRfs, const TDesC& aFileName ) - { - RUBY_DEBUG_BLOCKL( "CVcXmlParser::ReadResourceFileL" ); - - RResourceFile resourceFile; - - resourceFile.OpenL( aRfs, aFileName ); - CleanupClosePushL( resourceFile ); - - HBufC8* res = resourceFile.AllocReadLC( VOICECOMMANDS ); - - TResourceReader reader; - reader.SetBuffer( res ); - - TInt index( 0 ); - TInt number( 0 ); - - // The first WORD contains the number - // of structs within the resource - number = reader.ReadInt16(); - - for ( index = 0; index < number ; index++ ) - { - TInt key = reader.ReadInt16(); - iKeys.Append( key ); - HBufC* command = reader.ReadHBufCL(); - iCommands.Append( command ); - } - - CleanupStack::PopAndDestroy( res ); - - - res = resourceFile.AllocReadLC( VCOMMANDINTEGERS ); - - reader.SetBuffer( res ); - - index = 0; - number = 0; - - // The first WORD contains the number - // of structs within the resource - number = reader.ReadInt16(); - - for ( index = 0; index < number ; index++ ) - { - iIntegerKeys.Append( reader.ReadInt16() ); - iIntegerValues.Append( reader.ReadInt16() ); - } - - CleanupStack::PopAndDestroy( res ); - CleanupStack::PopAndDestroy( &resourceFile ); - } - -// End of File