contentstorage/cautils/src/cautils.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 00:38:31 +0300
changeset 124 e36b2f4799c0
parent 60 f62f87b200ec
permissions -rw-r--r--
Revision: 201037 Kit: 201039

/*
 * 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:  ?Description
 *
 */

#include <hbtextresolversymbian.h>
#include <f32file.h>

#include "cautils.h"
#include "cadef.h"

_LIT(KHexPrefix, "0x");

// ---------------------------------------------------------
// MenuUtils::GetTUint
// ---------------------------------------------------------
//
EXPORT_C TInt MenuUtils::GetTUint( const TDesC& aStr, TUint& aInt )
    {
    TInt position( aStr.Find( KHexPrefix ) );
    TPtrC string( aStr );
    TRadix radix( EDecimal );
    if( position == 0 )
        {
        // is hex
        radix = EHex;
        string.Set( aStr.Mid( KHexPrefix().Length() ) );
        }

    return TLex( string ).Val( aInt, radix );
    }

// ---------------------------------------------------------
// MenuUtils::InitTextResolverSymbian
// ---------------------------------------------------------
//
EXPORT_C void MenuUtils::InitTextResolverSymbianL( const TDesC& aFilename )
    {
    if( !HbTextResolverSymbian::Init( aFilename, KLocalizationFilepathC ) )
       {
       if( !HbTextResolverSymbian::Init( aFilename, KLocalizationFilepathZ ) )
           {
           // this should not be called too often 
           TChar currentDriveLetter;
           TDriveList driveList;
           RFs fs;
           CleanupClosePushL( fs );
           User::LeaveIfError( fs.Connect() );
           User::LeaveIfError( fs.DriveList( driveList ) );

           RBuf path;
           CleanupClosePushL( path );
           path.CreateL( KLocalizationFilepath().Length() + 1 );
           
           for( TInt driveNr=EDriveY; driveNr >= EDriveA; driveNr-- )
               {
               if( driveList[driveNr] )
                   {
                   User::LeaveIfError( fs.DriveToChar( driveNr,
                           currentDriveLetter ) );
                   path.Append( currentDriveLetter );
                   path.Append( KLocalizationFilepath );
                   if( HbTextResolverSymbian::Init( aFilename, path ) )
                       {
                       break;
                       }
                   }
               path.Zero();
               }
           CleanupStack::PopAndDestroy( &path );
           CleanupStack::PopAndDestroy( &fs );
           }
        }
    }