inc/musresourcefinderutil.inl
changeset 15 ccd8e69b5392
parent 2 b31261fd4e04
child 20 e8be2c2e049d
child 22 496ad160a278
equal deleted inserted replaced
2:b31261fd4e04 15:ccd8e69b5392
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Utility Class for Rom / Ram file finder.
       
    15 *
       
    16 */
       
    17 
       
    18 #ifndef MUSRESOURCEFINDERUTIL_INL
       
    19 #define MUSRESOURCEFINDERUTIL_INL
       
    20 
       
    21 #include "musresourcefinderutil.h"
       
    22 #include "muslogger.h"
       
    23 
       
    24 #include <bautils.h>
       
    25 
       
    26 
       
    27 // -----------------------------------------------------------------------------
       
    28 // Returns the full path of filename of the resource file from Resource dir
       
    29 // -----------------------------------------------------------------------------
       
    30 //
       
    31 
       
    32 inline HBufC* MusResourceFinderUtil::ResourcePathL( const TDesC& aFileName )
       
    33     {
       
    34     MUS_LOG( "[COMMON]  -> MusResourceFinderUtil::ResourcePathL" )    
       
    35     
       
    36     RFs fs;
       
    37     User::LeaveIfError( fs.Connect() );
       
    38     CleanupClosePushL( fs );
       
    39 
       
    40     // here extra one chracter length is added because of some strange chineese
       
    41     // resource extension reason.
       
    42     HBufC* fileName = HBufC::NewLC(KMusResourceRam().Length() + 
       
    43                                                      aFileName.Length() + 1 );
       
    44     TPtr fileNamePtr = fileName -> Des();
       
    45     fileNamePtr.Copy(KMusResourceRam());		
       
    46     fileNamePtr.Append(aFileName);
       
    47    
       
    48     bool resourceFileFound = false;
       
    49 
       
    50     //check for resource and variant file in RAM
       
    51     
       
    52     if (!resourceFileFound)
       
    53         {
       
    54         if(fileName->Length()<KMaxFileName)
       
    55          {
       
    56          MUS_LOG( "[COMMON]     File Name Length is lesser than KMaxFileName")
       
    57          TFileName fName(*fileName);    
       
    58          MUS_LOG( "[COMMON]     Searching For Language Variant in Ram (C:)")
       
    59          BaflUtils::NearestLanguageFile(fs ,fName );
       
    60          CleanupStack::PopAndDestroy( fileName ); // fileName
       
    61          fileName = fName.AllocLC();
       
    62          }
       
    63         if ( BaflUtils::FileExists( fs, *fileName ) )
       
    64             {
       
    65               resourceFileFound = true;
       
    66               MUS_LOG( "[COMMON]     Resource file was found from Ram (C:)")
       
    67             }
       
    68         else
       
    69             {
       
    70               resourceFileFound = false;
       
    71               MUS_LOG( "[COMMON]     Resource file NOT FOUND from Ram (C:)")
       
    72             }
       
    73         }
       
    74     
       
    75     //if not found in RAM, check for resource and variant file in ROM
       
    76     if (!resourceFileFound)
       
    77         {
       
    78         fileNamePtr.Copy(KMusResourceRom());        
       
    79         fileNamePtr.Append(aFileName);
       
    80         if(fileName->Length()<KMaxFileName)
       
    81          {
       
    82          MUS_LOG( "[COMMON]     File Name Length is lesser than KMaxFileName")
       
    83          TFileName fName(*fileName);    
       
    84          MUS_LOG( "[COMMON]     Searching For Language Variant in Rom (Z:)")
       
    85          BaflUtils::NearestLanguageFile(fs ,fName );
       
    86          CleanupStack::PopAndDestroy( fileName ); // fileName
       
    87          fileName = fName.AllocLC();
       
    88          }
       
    89         if ( BaflUtils::FileExists( fs, *fileName ) )
       
    90             {
       
    91               resourceFileFound = true;
       
    92               MUS_LOG( "[COMMON]     Resource file was found from Rom (Z:)")
       
    93             }
       
    94         else
       
    95             {
       
    96               resourceFileFound = false;
       
    97               MUS_LOG( "[COMMON]     Resource file NOT FOUND from Rom (Z:)")
       
    98             }
       
    99         }   
       
   100     
       
   101     CleanupStack::Pop( fileName ); // fileName
       
   102     CleanupStack::PopAndDestroy(); // fs
       
   103     MUS_LOG( "[COMMON]  <- MusResourceFinderUtil::ResourcePathL" )
       
   104     return fileName;
       
   105     }
       
   106     
       
   107 
       
   108 // -----------------------------------------------------------------------------
       
   109 // Returns the full path of filename of the resource file from App Resource dir
       
   110 // -----------------------------------------------------------------------------
       
   111 //
       
   112 
       
   113 inline HBufC* MusResourceFinderUtil::AppResourcePathL( const TDesC& aFileName )
       
   114     {
       
   115     MUS_LOG( "[COMMON]  -> MusResourceFinderUtil::AppResourcePathL" )    
       
   116     
       
   117     RFs fs;
       
   118     User::LeaveIfError( fs.Connect() );
       
   119     CleanupClosePushL( fs );
       
   120 
       
   121     // here extra one chracter length is added because of some strange chineese
       
   122     // resource extension reason.
       
   123     HBufC* fileName = HBufC::NewLC(KMusAppResourceRam().Length() + 
       
   124                                                    aFileName.Length() + 1 );
       
   125     TPtr fileNamePtr = fileName -> Des();
       
   126     fileNamePtr.Copy(KMusAppResourceRam());		
       
   127     fileNamePtr.Append(aFileName);
       
   128     if( BaflUtils::FileExists( fs, *fileName ) )  // Check in Ram
       
   129         {
       
   130         MUS_LOG_TDESC( "[COMMON]     File Found in Ram (C:) -> " , aFileName )                
       
   131         }
       
   132     else
       
   133     	{
       
   134         fileNamePtr.Copy(KMusAppResourceRom());		
       
   135         fileNamePtr.Append(aFileName);
       
   136         if( BaflUtils::FileExists( fs, *fileName) )
       
   137           {
       
   138           MUS_LOG_TDESC( "[COMMON]     File Found in Rom (Z:) -> " , aFileName )     
       
   139           }    
       
   140         else
       
   141     	  {            
       
   142     	  MUS_LOG_TDESC( "[COMMON]     File Not Found -> " , aFileName )     
       
   143     	  MUS_LOG( "[COMMON]     Returning Rom File by default")
       
   144           // Return Rom path since that will be default in real product
       
   145           // if that doesnt exist , it is upto sub system to handle this
       
   146           // because some cases it will not be mandatory file   
       
   147     	  fileNamePtr.Copy(KMusAppResourceRom());		
       
   148           fileNamePtr.Append(aFileName);
       
   149     	  }
       
   150     	}
       
   151     if(fileName->Length()<KMaxFileName)
       
   152         {
       
   153         MUS_LOG( "[COMMON]     File Name Length is lesser than KMaxFileName")
       
   154         TFileName fName(*fileName);    
       
   155         MUS_LOG( "[COMMON]     Searching For Language Variant")
       
   156         BaflUtils::NearestLanguageFile(fs ,fName );
       
   157         CleanupStack::PopAndDestroy( fileName ); // fileName
       
   158         fileName = fName.AllocLC();
       
   159         }
       
   160     CleanupStack::Pop( fileName ); // fileName
       
   161     CleanupStack::PopAndDestroy(); // fs
       
   162     MUS_LOG_TDESC( "[COMMON]     Returning -> " , fileNamePtr )         
       
   163     MUS_LOG( "[COMMON]  <- MusResourceFinderUtil::AppResourcePathL" )
       
   164     return fileName;
       
   165     }
       
   166  
       
   167  
       
   168 // -----------------------------------------------------------------------------
       
   169 // Returns ETrue if File Exist else EFalse
       
   170 // -----------------------------------------------------------------------------
       
   171 //
       
   172 
       
   173 inline TBool MusResourceFinderUtil::IsExistL( const TDesC& aFileNameWithPath )
       
   174     {
       
   175     MUS_LOG( "[COMMON]  -> MusResourceFinderUtil::IsExist" )    
       
   176     TBool exist = EFalse;
       
   177     RFs fs;
       
   178     User::LeaveIfError( fs.Connect() );
       
   179     CleanupClosePushL( fs );
       
   180     if( BaflUtils::FileExists( fs, aFileNameWithPath ) )  // Check file
       
   181         {
       
   182         MUS_LOG_TDESC( "[COMMON]     File Exists -> " , aFileNameWithPath )   
       
   183         exist = ETrue ;             
       
   184         }
       
   185     else
       
   186     	 {    	
       
   187     	 MUS_LOG_TDESC( "[COMMON]     File Not Found -> " , aFileNameWithPath )  
       
   188     	 exist = EFalse;       	 
       
   189     	 }    
       
   190     CleanupStack::PopAndDestroy(); // fs
       
   191     MUS_LOG( "[COMMON]  <- MusResourceFinderUtil::IsExist" )
       
   192     return exist;
       
   193     }
       
   194 
       
   195 #endif // MUSRESOURCEFINDERUTIL_INL
       
   196 
       
   197 // end of file