commonutilities/common/src/glxresourceutilities.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 14 May 2010 15:52:22 +0300
changeset 29 2c833fc9e98f
parent 23 74c9f037fd5d
permissions -rw-r--r--
Revision: 201017 Kit: 201019

/*
* Copyright (c) 2008-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:   Utility for loading resource files
*
*/



//  CLASS HEADER
#include "glxresourceutilities.h"
    
//  EXTERNAL INCLUDES
#include <bautils.h>
#include <AknUtils.h>
#include <f32file.h>

//  INTERNAL INCLUDES

// ---------------------------------------------------------------------------
// GetResourceFilenameL
// ---------------------------------------------------------------------------
//
EXPORT_C void CGlxResourceUtilities::GetResourceFilenameL( TFileName& aResFile )
    {
	RFs fs;
    User::LeaveIfError( fs.Connect() );
    CleanupClosePushL( fs );
    CGlxResourceUtilities::GetResourceFilenameL( aResFile, fs );
    CleanupStack::PopAndDestroy( &fs );
    }

// ---------------------------------------------------------------------------
// GetResourceFilenameL
// ---------------------------------------------------------------------------
//
EXPORT_C void CGlxResourceUtilities::GetResourceFilenameL( TFileName& aResFile, RFs& aFs )
    {
    // don't use AknUtils CompleteWithAppPath  
    aResFile.Insert( 0, TDriveUnit( EDriveC).Name() );
	// try to locate the localised resource
    BaflUtils::NearestLanguageFile( aFs, aResFile );
    // if the localised resource is found, the file name is changed to 
    // the localised name (z:\apps\resources\xxx.r001)
    if( !BaflUtils::FileExists( aFs, aResFile ) )
        {
        // not found on c drive, try z
        aResFile.Replace( 0, KMaxDriveName, TDriveUnit( EDriveZ ).Name() );
    	// try to locate the localised resource again
        BaflUtils::NearestLanguageFile( aFs, aResFile );
        // if file was not found this time, there is no localised 
        // resource with the name
        if (!BaflUtils::FileExists( aFs, aResFile ) )
            {
            User::Leave( KErrNotFound );
            }
        }
    }