voicerecorder/UtilsSrc/VRUtils.cpp
branchRCL_3
changeset 20 072a5fa0c63b
parent 19 2f5c9ee7098c
child 21 c6bafb5162d8
--- a/voicerecorder/UtilsSrc/VRUtils.cpp	Thu Aug 19 09:57:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1172 +0,0 @@
-/*
-* Copyright (c) 2002-2006 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: 
-*     This class contains a collection of small static utility functions
-*     needed all around the application. The class has no prefix letter
-*
-*
-*/
-
-
-// INCLUDES
-
-#include <eikapp.h>
-#include <eikenv.h>
-#include <bautils.h>
-#include <centralrepository.h>
-#include <coemain.h>
-#include <f32file.h>
-#include <StringLoader.h>
-#include <AknGlobalNote.h>
-#include <aknnotewrappers.h>
-#include <e32property.h>
-#include <ctsydomainpskeys.h>
-#include <pathinfo.h>
-#include <featmgr.h>
-#include <avkon.rsg>
-#include <e32math.h>
-
-#include <voicerecorder.rsg>
-#include <VoiceRecorderUID.h>
-
-#ifdef RD_MULTIPLE_DRIVE
-#include <driveinfo.h>
-#include <pathinfo.h>
-#endif
-
-#include "VoiceRecorderInternalCRKeys.h"
-#include "VRUtils.h"
-#include "VRConsts.h"
-#include <bldvariant.hrh>
-
-// CONSTANTS
-_LIT( KVRAMRFileNameExtension,   ".amr" );
-_LIT( KVRWAVFileNameExtension,   ".wav" );
-
-// added for AAC
-#ifdef  __AAC_ENCODER_PLUGIN   
-_LIT( KVRAAC_LCFileNameExtension,".mp4" );
-#endif
-
-_LIT( KVROneToNineClipCountFormat, "%02d" ); // used with clip numbers 1..9
-_LIT( KVRDefaultClipCountFormat, "%d" );	// used with clip numbers 10->
-
-
-// ================= MEMBER FUNCTIONS ========================================
-
-// ---------------------------------------------------------------------------
-// VRUtils::MemoStoreDirectoryL
-// Checks what is the current storage place and returns the corresponding path
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void VRUtils::MemoStoreDirectoryL( TDes &aPath )
-	{
-	
-	TFileName phoneMemoryPath;
-	
-#ifndef RD_MULTIPLE_DRIVE
-	if ( FeatureManager::FeatureSupported( KFeatureIdMmc ) )
-		{
-   		
-		TVRMemoStore memoStore = MemoStoreL();
-		if ( memoStore == EMemoStorePhoneMemory )
-			{
-			phoneMemoryPath = PathInfo::PhoneMemoryRootPath();
-			phoneMemoryPath.Append( PathInfo::DigitalSoundsPath() );
-			aPath.Copy( phoneMemoryPath );
-			return;
-			}
-		else
-			{
-			// MMC is the selected memo store. Check if it's available.
-			TVRDriveInfo mmcInfo;
-			GetMMCInfo( mmcInfo );
-			if ( mmcInfo.iDrivePresent && !mmcInfo.iDriveLocked &&
-				!mmcInfo.iDriveCorrupted && !mmcInfo.iDriveReadOnly )
-				{
-				// MMC usage is OK.
-				TFileName mmcPath = PathInfo::MemoryCardRootPath();
-				mmcPath.Append( PathInfo::DigitalSoundsPath() );
-				aPath.Copy( mmcPath );
-				return;
-				}
-			else
-				{
-				// MMC is unavailable => return phone memory path
-				phoneMemoryPath = PathInfo::PhoneMemoryRootPath();
-				phoneMemoryPath.Append( PathInfo::DigitalSoundsPath() );
-				aPath.Copy( phoneMemoryPath );
-				return;
-				}
-
-			}
-
-		}
-	else
-		{
-		phoneMemoryPath = PathInfo::PhoneMemoryRootPath();
-		phoneMemoryPath.Append( PathInfo::DigitalSoundsPath() );
-		aPath.Copy( phoneMemoryPath );
-		return;
-		}
-
-// using multiple drive
-#else
-		TInt memoDrive = MemoDriveL();
-		TInt defaultDrive(0);
-        User::LeaveIfError( defaultDrive = DefaultMemoDriveL());
-        //default drive
-		if ( memoDrive == defaultDrive )
-			{
-            User::LeaveIfError( PathInfo::GetRootPath( phoneMemoryPath, memoDrive ) );
-			phoneMemoryPath.Append( PathInfo::DigitalSoundsPath() );
-			aPath.Copy( phoneMemoryPath );
-			return;
-			}
-		// other drives
-		else
-			{			
-            TUint status( 0 );
-            TInt err = VRUtils::GetDriveInfo(memoDrive, status);
-            // check if drive status is ok 
-			if ( ( err == KErrNone ) && (status & DriveInfo::EDrivePresent) && !(status & DriveInfo::EDriveLocked) &&
-				!( status & DriveInfo::EDriveCorrupt ) && !( status & DriveInfo::EDriveReadOnly ) )
-				{
-				// Drive usage is OK.
-                User::LeaveIfError( PathInfo::GetRootPath( phoneMemoryPath, memoDrive ) );
-			    phoneMemoryPath.Append( PathInfo::DigitalSoundsPath() );
-			    aPath.Copy( phoneMemoryPath );
-			    return;
-				}
-			
-			// if not ok, save to default device drive
-			else
-				{
-            memoDrive = defaultDrive;
-            User::LeaveIfError( PathInfo::GetRootPath( phoneMemoryPath, memoDrive ) );
-			phoneMemoryPath.Append( PathInfo::DigitalSoundsPath() );
-			aPath.Copy( phoneMemoryPath );
-			return;
-				}
-
-			}
-#endif
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::SetMemoStoreL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void VRUtils::SetMemoStoreL( TVRMemoStore aMemory )
-	{
-	if ( FeatureManager::FeatureSupported( KFeatureIdMmc ) )
-		{
-		SetSettingValueL( KVRMemoStore, aMemory );
-		}
-	else
-		{
-		__ASSERT_DEBUG( ETrue, User::Panic( KVRPanic, EPanicInvalidSetting ) );
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::MemoStoreL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TVRMemoStore VRUtils::MemoStoreL()
-	{
-	// Phone memory is the default
-	if ( FeatureManager::FeatureSupported( KFeatureIdMmc ) )
-		{
-		TInt ret = SettingValueL( KVRMemoStore,
-								EMemoStorePhoneMemory );
-		return static_cast< TVRMemoStore >( ret );
-		}
-	else
-		{
-		return EMemoStorePhoneMemory;
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::DefaultSpeakerL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TVRSpeaker VRUtils::DefaultSpeakerL()
-	{
-	if ( FeatureManager::FeatureSupported( KFeatureIdKeypadNoVoiceKey ) &&
-		FeatureManager::FeatureSupported( 
-							KFeatureIdApplicationControllableAudioRouting ) )
-		{
-		return ( TVRSpeaker ) SettingValueL( KVRDefaultSpeaker, ESpeakerIhf );
-		}
-	else
-		{
-		return ESpeakerIhf;
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::SetDefaultSpeakerL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void VRUtils::SetDefaultSpeakerL( const TVRSpeaker aSpeaker )
-	{
-	if ( FeatureManager::FeatureSupported( KFeatureIdKeypadNoVoiceKey ) &&
-		FeatureManager::FeatureSupported( 
-							KFeatureIdApplicationControllableAudioRouting ) )
-		{
-		SetSettingValueL( KVRDefaultSpeaker, aSpeaker );
-		}
-	else
-		{
-		__ASSERT_DEBUG( ETrue, User::Panic( KVRPanic, EPanicInvalidSetting ) );
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::QualityL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TVRQuality VRUtils::QualityL()
-	{
-    if ( VRUtils::FeatureEnabled( EVRFeatureShowQualitySetting ) )
-        {   	
-     	return ( TVRQuality ) SettingValueL( KVRQuality, 
-     											 EQualityMMSOptimized );
- 		}
-	else
-		{
-		return EQualityMMSOptimized;
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::SetQualityL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void VRUtils::SetQualityL( const TVRQuality aQuality )
-	{
-    if ( VRUtils::FeatureEnabled( EVRFeatureShowQualitySetting ) )
-        {
-		SetSettingValueL( KVRQuality, aQuality );
-		}
-	else
-		{
-		__ASSERT_DEBUG( ETrue, User::Panic( KVRPanic, EPanicInvalidSetting ) );
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::SetDefaultVolumeL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void VRUtils::SetDefaultVolumeL( const TVRSpeaker aSpeaker,
-	const TInt aVolume )
-	{
-	switch ( aSpeaker )
-		{
-		case ESpeakerEarPiece:
-			{
-			SetSettingValueL( KVREarPieceVolume, aVolume );
-			break;
-			}
-		case ESpeakerIhf:
-			{
-			SetSettingValueL( KVRIHFVolume, aVolume );
-			break;
-			}
-		default:
-			{
-			break;
-			}
-		}	
-	return;
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::DefaultVolumeL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt VRUtils::DefaultVolumeL( const TVRSpeaker aSpeaker )
-	{
-	TInt volume( KVRDefaultVolume );
-	switch ( aSpeaker )
-		{
-		case ESpeakerEarPiece:
-			{
-			volume = SettingValueL( KVREarPieceVolume, KVRDefaultVolume );
-			break;
-			}
-		case ESpeakerIhf:
-			{
-			volume = SettingValueL( KVRIHFVolume, KVRDefaultVolume );
-			break;
-			}
-		default:
-			{
-			break;
-			}
-		}
-	return volume ? volume : KVRDefaultVolume;
-	}
-
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::SetSettingValueL, 
-// save the data to central repository
-// ---------------------------------------------------------------------------
-//
-void VRUtils::SetSettingValueL( const TUint32 aKey, const TInt aValue )
-	{
-    CRepository* repository = CRepository::NewL( KCRUidVoiceRecorder );
-    CleanupStack::PushL( repository );
-    User::LeaveIfError( repository->Set( aKey, aValue ) );
-    CleanupStack::PopAndDestroy( repository );
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::SettingValueL
-// 
-// ---------------------------------------------------------------------------
-//
-TInt VRUtils::SettingValueL( const TUint32 aKey, const TInt aDefaultValue )
-	{
-    TInt data;
-
-    CRepository* repository = CRepository::NewL( KCRUidVoiceRecorder );
-	CleanupStack::PushL( repository );
-
-	// Get the value, create the key if no value was found
-    if ( repository->Get( aKey, data ) != KErrNone )
-        {
-        User::LeaveIfError( repository->Create( aKey, aDefaultValue ) );
-        data = aDefaultValue;
-        }
-
-    CleanupStack::PopAndDestroy( repository );
-
-	return data;
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::GetMMCInfo
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void VRUtils::GetMMCInfo( TVRDriveInfo& aMMCInfo )
-    {
-	if ( FeatureManager::FeatureSupported( KFeatureIdMmc ) )
-		{
-		TDriveInfo driveInfo;
-		TVolumeInfo volumeInfo;
-		RFs& fss = CCoeEnv::Static()->FsSession() ;
-
-		TInt err( fss.Drive( driveInfo, EDriveE ) );
-
-		if ( driveInfo.iType != EMediaNotPresent )
-			{
-			aMMCInfo.iDrivePresent = ETrue;
-			if ( fss.Volume( volumeInfo, EDriveE ) == KErrCorrupt )
-				{
-				aMMCInfo.iDriveCorrupted = ETrue;
-				}
-			else
-				{
-				aMMCInfo.iDriveCorrupted = EFalse;
-				}
-			}
-		else
-			{
-			aMMCInfo.iDriveCorrupted = EFalse;
-			aMMCInfo.iDrivePresent = EFalse;
-			}
-
-		if ( driveInfo.iMediaAtt & KMediaAttLocked || err == KErrLocked )
-			{
-			aMMCInfo.iDriveLocked = ETrue;
-			}
-		else
-			{
-			aMMCInfo.iDriveLocked = EFalse;
-			}
-
-		if ( driveInfo.iMediaAtt & KMediaAttWriteProtected )
-			{
-			aMMCInfo.iDriveReadOnly = ETrue;
-			}
-		else
-			{
-			aMMCInfo.iDriveReadOnly = EFalse;
-			}
-		if ( volumeInfo.iFree ==0 )
-			{
-			aMMCInfo.iDriveFull = ETrue;
-			}
-		else
-			{
-			aMMCInfo.iDriveFull = EFalse;
-			}
-
-
-		}
-    }
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::ShowMemoryFullConfirmationQuery
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void VRUtils::ShowMemoryFullConfirmationQuery( TBool aMmc )
-	{
-	// Error ignored. If the note fails, there's nothing to do.
-	TRAP_IGNORE( ShowMemoryFullConfirmationQueryL( aMmc ) );
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::UnsupportedCallTypeOngoing
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool VRUtils::UnsupportedCallTypeOngoing( TBool aShowNote )
-	{
-	TBool unsupported( EFalse );
-	TInt value( 0 );
-
-	TInt err( 0 );
-    RProperty property;
-    err = property.Attach( KPSUidCtsyCallInformation, KCTsyCallState );
-	if ( err )
-		{
-		return EFalse;
-		}
-
-    property.Get( value );
-
-    switch ( value )
-	    {
-    	case EPSCTsyCallStateUninitialized:
-    	case EPSCTsyCallStateNone:
-    		{ // No any kind of call in progress
-    		return EFalse;
-    		}
-		default: // Call in progress, check if it is videocall
-		    {
-		    err = property.Attach( KPSUidCtsyCallInformation, KCTsyCallType);
-        	if ( err )
-        		{
-        		return EFalse;
-        		}
-        	value = 0;
-    		property.Get( value );
-			break;
-		    }
-    	}
-
-	switch( value )
-		{
-		// Video call ongoing
-		case EPSCTsyCallTypeH324Multimedia:
-			{
-			unsupported = ETrue;
-			
-			if ( aShowNote )
-				{
-				// If the note fails, it's no big deal
-				TRAP_IGNORE( ShowUnsupportedCallTypeNoteL( 
-					R_VR_VIDEO_CALL_INFONOTE_LABEL ) );
-				}
-			break;			
-			}
-		// Voip call ongoing
-		case EPSCTsyCallTypeVoIP:
-			{
-			unsupported = ETrue;
-			
-			if ( aShowNote )
-				{
-				// If the note fails, it's no big deal
-				TRAP_IGNORE( ShowUnsupportedCallTypeNoteL( 
-					R_VR_INTERNET_CALL_INFONOTE_LABEL ) );
-				}
-			break;			
-			}			
-		}
-	
-	return unsupported;
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::ShowMemoryFullConfirmationQueryL
-// 
-// ---------------------------------------------------------------------------
-//
-void VRUtils::ShowMemoryFullConfirmationQueryL( TBool aMmc )
-	{
-	CAknGlobalNote* note = NULL;
-	
-	note = CAknGlobalNote::NewLC();
-	
-	HBufC* label = NULL;
-	TInt noteId( 0 );
-	if ( aMmc )
-		{
-		noteId = R_VR_MEMORY_MMC_WARNING;
-		}
-	else 
-		{
-		noteId = R_VR_MEMORY_WARNING;
-		}
-
-	label = StringLoader::LoadLC( noteId );
-
-	note->SetSoftkeys( R_AVKON_SOFTKEYS_OK_EMPTY );
-	note->ShowNoteL( EAknGlobalWarningNote, *label );
-	CleanupStack::PopAndDestroy( 2 );	// label, note;
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::ShowUnsupportedCallTypeNoteL
-// 
-// ---------------------------------------------------------------------------
-//
-void VRUtils::ShowUnsupportedCallTypeNoteL( TInt aResourceId )
-	{
-	CAknInformationNote* infoNote;
-    HBufC* noteText;
-    
-    noteText = CEikonEnv::Static()->
-    	AllocReadResourceLC( aResourceId );
-	
-	infoNote = new( ELeave ) CAknInformationNote( ETrue );
-	infoNote->ExecuteLD( *noteText );
-
-	CleanupStack::PopAndDestroy( noteText );
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::MaxLengthL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt VRUtils::MaxLengthL()
-	{
-	// If no value can be retrieved, use 60 minutes as max length
-	TInt value( 0 );
-	
-#ifdef __AAC_ENCODER_PLUGIN   // mp4 is supported now. 	
-    if (QualityL() == EQualityHigh)
-    	{	
-	    TRAPD( err, value = SettingValueL( KVRAacRecordLength, 
-									   KVRDefaultAacRecordLength ) );
-									   
-	    if ( err || value <= 0 || value > 9999 )
-		  {
-		  return KVRDefaultAacRecordLength;
-		  }
-    	}
-#endif
-	TRAPD( err, value = SettingValueL( KVRMaxRecordTime, 
-									   KVRDefaultMaxLength ) );
-									   
-	if ( err || value <= 0 || value > 9999 )
-		{
-		return KVRDefaultMaxLength;
-		}
-
-
-	return value;
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::FeatureEnabled
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool VRUtils::FeatureEnabled( TVRFeature aFeature )
-	{
-	TBool ret( EFalse );
-    TInt data( 0 );
-
-    TRAPD( err, data = SettingValueL( KVRVariationFlags, 0 ) );
-    if( err != KErrNone )
-        {
-        return EFalse;
-        }
-
-    // Compare feature to bitmask
-	if ( data & aFeature )
-		{
-		ret = ETrue;
-		}
-	return ret;
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::GenerateUniqueFilename
-// Generates unique filename that doesn't exist in the directories where VR
-// operates in. Unique filename is generated in Media Gallery sense so that no
-// two sound clips can have same name there
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void VRUtils::GenerateUniqueFilenameL( RFs& aFs, TFileName& aName,
-    TVRFiletype aType )
-    {
-           
-    TBuf< VRLABELMAXLENGTH > valueStr;
-    TBuf< VRLABELMAXLENGTH > formatStr;
-    TFileName name( aName );
-    TFileName clipName; // Used for file existence checking
-    TBool fileExists( EFalse );
-    
-    // Get current count from cenrep
-    TInt value( MemoCount() );
-    		
-    TBool uniqueFound( EFalse );
-    
-    // First memo
-    if ( !value )
-        {        
-        StringLoader::Load( formatStr, R_VOREC_FIRST_MEMO_NAME );        
-        name.Append( formatStr );
-        clipName.Append( formatStr );
-        
-        TRAPD( err1, fileExists = DoesFileExistL( aFs, clipName ) );
-        if ( err1 )
-        	{
-        	// if error occurs, no much to do->generate new filename
-        	fileExists = ETrue;
-        	}
-        	
-        AppendExtension( name, aType );
-        
-        if ( fileExists )
-            {
-            // Memo exists, continue name generation with next name
-            ++value;
-            }
-        else
-            {
-            uniqueFound = ETrue;
-            ++value; // This is saved to cenrep
-            }
-        }
-
-    // Continue generation
-    if ( !uniqueFound )
-        {
-        StringLoader::Load( formatStr, R_VOREC_DEFAULT_MEMO_NAME );
-
-
-        // Loop until unique filename is generated
-        FOREVER
-            {
-            // 0 is added before clip number when number is between 1 and 9
-            if(value >= 1 && value <= 9)  
-            	{
-            	valueStr.Format( KVROneToNineClipCountFormat, value);	
-            	}
-            // no addings for clip numbers 10->
-            else
-            	{
-            	valueStr.Format( KVRDefaultClipCountFormat, value);		
-            	}
-
-            StringLoader::Format( name, formatStr, -1, valueStr );
-
-            // name copied before the path is added          
-            clipName = name;
-            
-            // Insert path to beginning	
-            name.Insert( 0, aName );
-            
-            AknTextUtils::LanguageSpecificNumberConversion( name );
-        	    
-           	TRAPD( err2, fileExists = DoesFileExistL( aFs, clipName ) );
-           	if ( err2 )
-	        	{
-	        	fileExists = ETrue;
-	        	}
-  
-            AppendExtension( name, aType );
-            if ( !fileExists )
-                {
-                // Accept the name and increase value
-                // Value increasing is mandatory to prevent similarly named clips when quality 
-                // or store place is changed
-                ++value;
-                break;
-                }
-            // Try next...
-            ++value;                
-            }
-         }
-
-    aName = name;
-
-    // Save the new value to cenrep
-   SetMemoCount( value );
-    }
-   
-
-// ---------------------------------------------------------------------------
-// VRUtils::AppendExtension
-// 
-// ---------------------------------------------------------------------------
-//    
-void VRUtils::AppendExtension( TFileName& aName, TVRFiletype aType ) 
-    {
-    switch ( aType )
-        {
-        case EVRFileWav:
-            {
-            aName.Append( KVRWAVFileNameExtension );
-            break;
-            }
-
-//Jeffery: the following case added for the new CR
-#ifdef  __AAC_ENCODER_PLUGIN   
-         case EVRFileAAC_LC:
-            {
-            aName.Append( KVRAAC_LCFileNameExtension );
-            break;
-            }
-#endif
-
-        // In error case amr extension is appended
-        case EVRFileAmr:
-        default:
-            {
-            aName.Append( KVRAMRFileNameExtension );
-            break;
-            }                    
-        }    
-    }
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::MemoCount
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt VRUtils::MemoCount()
-    {
-	// If no value can be retrieved, use zero
-	TInt value( 0 );
-	TRAPD( err, value = SettingValueL( KVRMemoCount, 0 ) );
-	if ( err != KErrNone )
-		{
-		return 0;
-		}
-	return value;    
-    }
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::SetMemoCount
-// 
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C void VRUtils::SetMemoCount( TInt aNewCount )
-    {
-    TRAP_IGNORE( SetSettingValueL( KVRMemoCount, aNewCount ) );
-    }    
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::AMRBitrateL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TUint VRUtils::AMRBitrateL()
-    {
-    TUint bitrate(KVRDefaultAmrBitrate);
-
-    // Fetch bitrate from 
-	TRAPD( err, bitrate = SettingValueL( KVRBitrateAmr, 
-										 KVRDefaultAmrBitrate ) );
-										 
-	if ( err || bitrate <= 0 || bitrate > 12200 )
-		{
-		bitrate = KVRDefaultAmrBitrate;
-		}
-		
-    return bitrate;    
-    }
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::AACBitrateL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TUint VRUtils::AACBitrateL()
-    {
-       
-    TUint bitrate(KVRDefaultBitrateAac);
-
-    // Fetch bitrate from 
-	TRAPD( err, bitrate = SettingValueL( KVRBitrateAac, 
-										 KVRDefaultBitrateAac ) );
-
-	if ( err || bitrate <= 8000 || bitrate > 288000 )
-	  {
-      bitrate = KVRDefaultBitrateAac;
-	  }
-    return bitrate;    
-    }
-
-// ---------------------------------------------------------------------------
-// VRUtils::DoesFileExistL
-// Makes the full checking if the filename (aName) exists in the directories 
-// that Voice Recorder uses for clip storage
-// ---------------------------------------------------------------------------
-//
-TBool VRUtils::DoesFileExistL( RFs& aFs, TFileName aName )
-	{
-// old memory storage
-#ifndef RD_MULTIPLE_DRIVE	
-	// Storage place at the moment
-	TVRMemoStore memoStore = MemoStoreL();
-	TFileName path;
-	TFileName fileName(aName);
-	
-	// The path for the current storage place
-	VRUtils::MemoStoreDirectoryL( path );
-	
-	// Add the path to the filename
-    fileName.Insert( 0, path );
-    
-    if ( CheckFileExistence( aFs, fileName ) )
-    	{
-    	return ETrue;
-    	}
-    
-    // Check possible alternative storage place
-    TVRMemoStore secondaryStore;
-	if ( memoStore == EMemoStorePhoneMemory )
-		{
-		if ( FeatureManager::FeatureSupported( KFeatureIdMmc ) )
-			{
-			secondaryStore = EMemoStoreMMC;	
-			}
-		else
-			{
-			secondaryStore = EMemoStorePhoneMemory;	
-			}	
-		}
-	else
-		{
-		secondaryStore = EMemoStorePhoneMemory;
-		}
-	
-	// If there is some secondary storage place to check
-	if( memoStore != secondaryStore )
-		{
-		// Temporarily change the storage place (needed by MemoStoreDirectoryL)
-		VRUtils::SetSettingValueL( KVRMemoStore, secondaryStore );
-		
-		// Retrieve the path and add it to the filename
-		VRUtils::MemoStoreDirectoryL( path );
-		    
-	    fileName = aName;
-	    fileName.Insert( 0, path );
-	    
-	    // Change back to the original 
-	    VRUtils::SetSettingValueL( KVRMemoStore, memoStore );
-		
-	    if ( CheckFileExistence( aFs, fileName ) )
-	    	{
-	    	return ETrue;
-	    	}
-		}
-
-// for multiple drives  
-#else
-	 TFileName path;
-	 TFileName fileName(aName);
-
-     TDriveList allDrives;
-     TInt allDriveCount( 0 );
-
-     User::LeaveIfError(DriveInfo::GetUserVisibleDrives( aFs, allDrives, allDriveCount ));
-
-     TInt max( allDrives.Length());
-     for ( TInt i = 0; i < max; i++ )
-       {
-  	       if ( allDrives[ i ] )
-  	       	{
-			    TUint status( 0 );  
-			    VRUtils::GetDriveInfo( i, status);
-
-			    if( status & DriveInfo::EDriveRemote )	
-                    {
-                    continue;
-                    }
-				
-                User::LeaveIfError( PathInfo::GetRootPath( path, i) );
-			    path.Append( PathInfo::DigitalSoundsPath() );
-	
-	            // Add the path to the filename
-                fileName.Insert( 0, path );
-    
-                if ( CheckFileExistence( aFs, fileName ) )
-    	            {
-    	            return ETrue;
-    	            }			         			
-                
-                fileName.Copy(aName);
-  	       	}
-     	}
-#endif
-
-	return EFalse;
-
-	}
-	
-	
-// ---------------------------------------------------------------------------
-// VRUtils::CheckFileExistence
-// Checks if the filename given as a parameter exists. This function checks all
-// possible extensions (in VR). Note that aName includes path but no extension.
-// ---------------------------------------------------------------------------
-//	
-TBool VRUtils::CheckFileExistence( RFs& aFs, TFileName aName )
-	{
-	TFileName fileName( aName );
-    
-    // AMR file  
-    AppendExtension( fileName, EVRFileAmr );
-    AknTextUtils::LanguageSpecificNumberConversion( fileName );
-    if ( BaflUtils::FileExists( aFs, fileName ) )
-    	{
-    	return ETrue;
-    	}	  
-    
-    // WAV file	
-   	fileName = aName;
-    AppendExtension( fileName, EVRFileWav );
-    AknTextUtils::LanguageSpecificNumberConversion( fileName );
-    if ( BaflUtils::FileExists( aFs, fileName ) )
-    	{
-    	return ETrue;
-    	}
-    
- 	 
-    // AAC_LC file	
- #ifdef  __AAC_ENCODER_PLUGIN   
-   	fileName = aName;
-    AppendExtension( fileName, EVRFileAAC_LC );
-    AknTextUtils::LanguageSpecificNumberConversion( fileName );
-  
-    if ( BaflUtils::FileExists( aFs, fileName ) )
-    	{
-    	return ETrue;
-    	}
- #endif
- 
-    return EFalse;			
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::AACSamplerateL
-// ---------------------------------------------------------------------------
-//	
-
-EXPORT_C TInt VRUtils::AACSamplerateL()
-    {
-
-	TUint samplerate( KVRDefaultSamplerateAac );
-
-    // Fetch bitrate from 
-	TRAPD( err, samplerate = SettingValueL( KVRSamplerateAac, 
-										 KVRDefaultSamplerateAac ) );
-
-	if ( err || samplerate < 8000 || samplerate > 48000 )
-		{
-		return KVRDefaultSamplerateAac;
-		}
-
-
-	return samplerate;    
-    }
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::AACAudioModeL
-// ---------------------------------------------------------------------------
-//	
-
-EXPORT_C TInt VRUtils::AACAudioModeL()
-    {
-
-	TUint mode( KVRDefaultStereoMonoFlag );
-
-    // Fetch audiomode from 
-	TRAPD( err, mode = SettingValueL( KVRStereoMonoFlag, 
-										 KVRDefaultStereoMonoFlag ) );
-
-	if ( err || (mode != 1 && mode != 2))
-		{
-		return KVRDefaultStereoMonoFlag;
-		}
-
-
-	return mode;    
-    }
-
-// ---------------------------------------------------------------------------
-// DriveValid checks the drive is valid or not
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool VRUtils::DriveValid( const TInt aDrive )
-    {
-    TUint status( 0 );
-    TBool flag( ETrue );
-    TInt err = VRUtils::GetDriveInfo( aDrive, status );
-    if ( err != KErrNone )
-    	{ flag = EFalse; }
-    else 
-    	{
-    	if ( !(status & DriveInfo::EDrivePresent) ||
-    			(status & DriveInfo::EDriveLocked) ||
-    			(status & DriveInfo::EDriveReadOnly) ||
-    			(status & DriveInfo::EDriveCorrupt) ||
-    			(status & DriveInfo::EDriveInUse) )
-    		{ flag = EFalse; }
-    	}
-    return flag;
-    
-    }
-
-EXPORT_C TBool VRUtils::MultipleMassStorageAvailable()
-	{
-	TBool flag( ETrue );
-	TInt driveDefaultMassStorage(0);
-	TInt driveRemovableMassStorage(0);
-	TInt defaultStorageErr = DriveInfo::GetDefaultDrive(
-			DriveInfo::EDefaultMassStorage, driveDefaultMassStorage );
-	TInt removableStorageErr = DriveInfo::GetDefaultDrive(
-			DriveInfo::EDefaultRemovableMassStorage,    driveRemovableMassStorage );
-	if ( (defaultStorageErr) || (removableStorageErr) ||
-			( driveDefaultMassStorage == driveRemovableMassStorage ) )
-		{ flag = EFalse; }
-	
-	return flag;
-	}
-
-EXPORT_C TInt VRUtils::GetRemovableMassStorageL()
-	{
-    TInt drive(0);
-    User::LeaveIfError( DriveInfo::GetDefaultDrive(
-    			DriveInfo::EDefaultRemovableMassStorage , drive ) );
-	return drive;
-	}
-
-#ifdef RD_MULTIPLE_DRIVE
-// ---------------------------------------------------------------------------
-// VRUtils::SetMemoDriveL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void VRUtils::SetMemoDriveL( TDriveNumber aDrive )
-	{
-	if ( FeatureManager::FeatureSupported( KFeatureIdMmc ) )
-		{
-		SetSettingValueL( KVRMemoStore, aDrive );
-		}
-	else
-		{
-		__ASSERT_DEBUG( ETrue, User::Panic( KVRPanic, EPanicInvalidSetting ) );
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::MemoDriveL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt VRUtils::MemoDriveL()
-	{
-    TInt defaultDrive = DefaultMemoDriveL();	
-	// Phone memory is the default
-	if ( FeatureManager::FeatureSupported( KFeatureIdMmc ) )
-		{
-		TInt ret = SettingValueL( KVRMemoStore,
-								defaultDrive );
-		return static_cast< TInt >( ret );
-		}
-	else
-		{
-		return defaultDrive;
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::DefaultMemoDriveL
-// 
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt VRUtils::DefaultMemoDriveL()
-	{
-    TInt drive(0);
-    User::LeaveIfError( DriveInfo::GetDefaultDrive(DriveInfo::EDefaultMassStorage, drive ) );
-    return drive;
-	}
-
-
-// ---------------------------------------------------------------------------
-// VRUtils::Get drive Info
-// it is for multiple drive feature
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt VRUtils::GetDriveInfo( TInt aDrive, TUint& aDriveInfo )
-    {
-	RFs& iFs = CCoeEnv::Static()->FsSession() ;
-	TInt err = DriveInfo::GetDriveStatus( iFs, aDrive, aDriveInfo ); 
-	return err;
-    }
-#endif
-
-
-//  End of File