srsf/sisrscontrollerplugin/src/asrplugindataloader.cpp
changeset 13 57b735022c18
parent 1 b13cd05eeb2f
--- a/srsf/sisrscontrollerplugin/src/asrplugindataloader.cpp	Mon Jan 18 20:20:30 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,336 +0,0 @@
-/*
-* Copyright (c) 2004 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:  Language package data file loader 
-*
-*/
-
-
-// INCLUDE FILES
-#include "asrplugindataloader.h"
-#include "sysconfigprovider.h"
-
-
-#ifdef __SIND_AUTOCONF_LID
-#include <syslangutil.h>
-/* MSysConfigProvider is a wrapper for get syslangutil. This makes it easier to test without */
-/* dependency to the actual language configuration in the emulator environment. The test  */
-/* class implements this interface. */
-class TDefaultConfig : public MSysConfigProvider {
-public:
-	TDefaultConfig() {};
-	~TDefaultConfig() {};
-	TInt GetInstalledLanguages( CArrayFixFlat<TInt>*& aLanguages, RFs* aFileServerSession = NULL ) 
-	{
-		return SysLangUtil::GetInstalledLanguages(aLanguages, aFileServerSession);		
-	};
-};
-#endif  // __SIND_AUTOCONF_LID
-
-// Local constants
-
-_LIT( KZDriveLetter, "z" ); 
- 
-
-#ifdef __SIND_AUTOCONF_LID
-const TUint32 KTtpAutoConfLidPackageType = 1;
-const TUint32 KTtpAutoConfLidPackageID   = 1;
-const TInt KLidBufGranularity = 1000;
-#endif  // __SIND_AUTOCONF_LID
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CDataLoaderLoader::CDataLoader
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CDataLoader::CDataLoader() 
-    {
-    // Nothing
-    }
-
-// -----------------------------------------------------------------------------
-// CDataLoader::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CDataLoader::ConstructL( const TDesC& aPrefixOfFileName,
-							  const TDesC& aSeparator,                                     
-                              const TDesC& aPostfixOfFileName,
-                              MSysConfigProvider *aProvider )
-    {
-    iPrefixOfFileName = HBufC::NewL( aPrefixOfFileName.Length() );
-    (*iPrefixOfFileName) = aPrefixOfFileName;
-    iSeparator = HBufC::NewL( aSeparator.Length() );
-    (*iSeparator) = aSeparator;
-    iPostfixOfFileName = HBufC::NewL( aPostfixOfFileName.Length() );
-    (*iPostfixOfFileName) = aPostfixOfFileName;
-    
-	iProvider = aProvider;
-
-    // Open file session
-    User::LeaveIfError( iFs.Connect() );
-    }
-
-// -----------------------------------------------------------------------------
-// CDataLoader::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CDataLoader* CDataLoader::NewL( const TDesC& aPrefixOfFileName,
-								const TDesC& aSeparator,                                     
-                                const TDesC& aPostfixOfFileName,
-                                MSysConfigProvider *aProvider )
-    {
-    CDataLoader* self = new ( ELeave ) CDataLoader();
-    
-    CleanupStack::PushL( self );
-    self->ConstructL( aPrefixOfFileName,
-					  aSeparator,                                     
-                      aPostfixOfFileName,
-                      aProvider);
-    CleanupStack::Pop( self );
-    
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CDataLoader::~CDataLoader
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CDataLoader::~CDataLoader()
-    {
-    delete iPrefixOfFileName,
-	delete iSeparator,                                     
-    delete iPostfixOfFileName;    
-    
-    iFs.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CDataLoader::PackageName
-// Construct filename for requested package
-// -----------------------------------------------------------------------------
-//	
-void CDataLoader::PackageName (TFileName &aFileName, TUint32 aPackageType, TUint32 aPackageID) 
-{
-	// Resolve the name of the file
-	// filename is <iPrefixOfFileName>_<PackageType>_<aPackageID><iPostfixOfFileName>
-
-	aFileName.Copy( iPrefixOfFileName->Des() );          //  path/SRSF_
-	aFileName.AppendNumUC( aPackageType );               //  path/SRSF_1
-	aFileName.Append( iSeparator->Des() );               //  path/SRSF_1_
-	aFileName.AppendNumUC( aPackageID );                 //  path/SRSF_1_326
-	aFileName.Append( iPostfixOfFileName->Des() );       //  path/SRSF_1_326.bin
-}
-
-#ifdef __SIND_AUTOCONF_LID
-// -----------------------------------------------------------------------------
-// CDataLoader::AppendLoadL
-// Load language package file to the end of buffer
-// -----------------------------------------------------------------------------
-//	
-void CDataLoader::AppendLoadL( CBufBase *aBuffer,
-								TUint32 aPackageType, 
-								TUint32 aPackageID ) 
-{
-	// Resolve filename
-	TFileName fileName;
-	PackageName (fileName, aPackageType, aPackageID);
-
-	// Load data
-	HBufC8* buffer = NULL;
-	
-	TRAPD( err, buffer = DoLoadL( fileName, 0, KMaxTUint32 ));  // IMPLICIT: LID packages are loaded completely
- 	if( err == KErrNone && buffer ) 
- 	{
-		CleanupStack::PushL( buffer );                    // ResizeL may leave below
-
-		TInt prevSize = aBuffer->Size();                  // size before resize
-		TInt newSize  = aBuffer->Size() + buffer->Size(); // new size for lid data buffer
-
-		aBuffer->ResizeL( newSize );                      // resize lid data buffer
-		aBuffer->Write( prevSize, *buffer );              // append data from read buffer
-
-		CleanupStack::PopAndDestroy(buffer);              // buffer copied -> free
-	}
-}
-
-
-
-// -----------------------------------------------------------------------------
-// CDataLoader::LoadSysLangPackagesL
-// Load LID language data to a buffer according to installed system languages
-// -----------------------------------------------------------------------------
-//	
-void CDataLoader::SysLangPackagesToBufferL( CBufBase *aBuffer ) 
-{        
-	MSysConfigProvider *config = iProvider;
-	TDefaultConfig defaultProvider;
-	if (!config) config = &defaultProvider;
-
-	// Get installed languages
-	CArrayFixFlat<TInt>* languages( NULL );
-
-	//User::LeaveIfError (SysLangUtil::GetInstalledLanguages(languages, &iFs));
-	User::LeaveIfError (config->GetInstalledLanguages(languages, &iFs));
-	CleanupStack::PushL( languages ) ;
-
-	// Loop over installed languages
-	for ( TInt i = 0 ; i < languages->Count(); i++ )
-	{
-		AppendLoadL(aBuffer, KTtpAutoConfLidPackageType, languages->At(i));
-	}// next language
-	
-	CleanupStack::PopAndDestroy( languages );
-}
-
-// -----------------------------------------------------------------------------
-// CDataLoader::ConstructLidDataL
-// Load LID language data to a buffer according to installed system languages
-// -----------------------------------------------------------------------------
-//	
-HBufC8* CDataLoader::ConstructLidDataL()
-{
-	CBufBase* lidDataBuffer = CBufSeg::NewL( KLidBufGranularity ) ; // accumulates the binary data from lid model files
-	CleanupStack::PushL( lidDataBuffer ) ;
-
-	SysLangPackagesToBufferL (lidDataBuffer);
-
-	// Prepare returnable data
-	HBufC8* dataBuffer = NULL;
-	
-	if( lidDataBuffer->Size() > 0 ) 
-	{
-		// If any data was loaded, create a buffer for it
-		dataBuffer = HBufC8::NewL( lidDataBuffer->Size() );     // create a returnable buffer
-		TPtr8 dataBufferPtr = dataBuffer->Des();                        // get a modifiable pointer to it
-		lidDataBuffer->Read( 0, dataBufferPtr, lidDataBuffer->Size() ); // put the lid data into it
-	}
-
-	CleanupStack::PopAndDestroy( lidDataBuffer ) ;  
-
-	return dataBuffer;
-}
-#endif  // __SIND_AUTOCONF_LID
-
-
-// -----------------------------------------------------------------------------
-// CDataLoader::LoadData
-// Load language package file. It resolves the name of the language package
-// -----------------------------------------------------------------------------
-//	
-HBufC8* CDataLoader::LoadData( TUint32 aPackageType, 
-								TUint32 aPackageID,
-								TUint32 aStartPosition,
-								TUint32 aEndPosition ) {
-
-	TInt err;
-	HBufC8* buffer = NULL;
-
-#ifdef __SIND_AUTOCONF_LID
-	// If LID data is requested, construct it from installed LID binary files
-	// Otherwise run normal data loading
-
-	if( aPackageType == KTtpAutoConfLidPackageType &&
-		aPackageID   == KTtpAutoConfLidPackageID )
-	{
-		TRAP( err, buffer = ConstructLidDataL() );
-	}
-#endif  // __SIND_AUTOCONF_LID
-
-	if (!buffer)	{
-		TFileName fileName;
-		PackageName (fileName, aPackageType, aPackageID);
-	
-		// Load data    
-		TRAP( err, buffer = DoLoadL( fileName, aStartPosition, aEndPosition ) );
-	}
-
-	if ( err == KErrNone )
-	{
-		return buffer;
-  }
-	else
-	{
-		return NULL;
-	}    
-}
-                                         
-
-
-// -----------------------------------------------------------------------------
-// CDataLoader::DoLoadL
-// Actual file loading function
-// -----------------------------------------------------------------------------
-//	
-HBufC8* CDataLoader::DoLoadL( TFileName& aFileName,
-                              TUint32 aStartPosition, 
-                              TUint32 aEndPosition )
-    {
-    TInt fileSize( 0 );
-    RFile dataFile;
-    TInt readLength;
-
-    // Open file	
-    TInt err = dataFile.Open( iFs, aFileName, EFileRead);
-	 
-		if ( err != KErrNone )	 
-		{		
-			aFileName.Replace(0,1,KZDriveLetter); // "z:\"
-			TInt err = dataFile.Open( iFs, aFileName, EFileRead);		 
-			if ( err != KErrNone )
-          {
-    			return NULL;
-          }
-		}
-
-	CleanupClosePushL( dataFile );
-    // Try to resolve how much should be read
-    readLength = aEndPosition - aStartPosition;
-    User::LeaveIfError( dataFile.Size( fileSize ) );
-
-    if ( aEndPosition != KMaxTUint32 )
-        {
-        // Cannot read more than filesize
-        if ( ( readLength > fileSize ) || ( readLength < 0 ) )
-            {
-            readLength = fileSize;
-            }
-        }
-    else
-        {
-        readLength = fileSize;
-        }
-    
-    // Seek the starting point
-    // Casting needed to convert from uint to int which is needed by Seek()
-    TInt startPosition = ( TInt ) aStartPosition;
-    dataFile.Seek( ESeekStart, startPosition );
-
-    // Reserve enough memory for the data
-    HBufC8* fileBuffer = HBufC8::NewLC( readLength );
-    TPtr8 bufferPtr( fileBuffer->Des() );
-    
-    User::LeaveIfError( dataFile.Read( bufferPtr ) );
-
-    CleanupStack::Pop( fileBuffer );
-    CleanupStack::PopAndDestroy( &dataFile );
-    return fileBuffer;
-    }
-
-// End of File