--- a/mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp Wed Jun 16 16:05:08 2010 +0100
+++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp Thu Jul 22 16:38:21 2010 +0100
@@ -48,7 +48,8 @@
// ---------------------------------------------------------------------------
//
CMPXHarvesterDatabaseManager::CMPXHarvesterDatabaseManager( RFs& aFs ):
- iFs( aFs )
+ iFs( aFs ),
+ iEMMC( EFalse )
#ifdef __RAMDISK_PERF_ENABLE
,iRAMDiskPerfEnabled(EFalse),
iMaximumAllowedRAMDiskSpaceToCopy(0),
@@ -70,6 +71,13 @@
MPX_FUNC("CMPXHarvesterDatabaseManager::ConstructL");
User::LeaveIfError( iDBSession.Connect() );
+ //Find out if the system has an internal drive (eMMC)
+ TDriveInfo driveInfo;
+ if( iFs.Drive( driveInfo, EDriveE ) == KErrNone )
+ {
+ if ( driveInfo.iDriveAtt & KDriveAttInternal )
+ iEMMC = ETrue;
+ }
#ifdef __RAMDISK_PERF_ENABLE
TInt temp;
CRepository* repository = CRepository::NewLC( KCRUIDMpxHarvesterFeatures );
@@ -162,7 +170,7 @@
{
MPX_DEBUG1("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: re-creating database");
CMPXHarvesterDB* dB = CMPXHarvesterDB::NewL(
- static_cast<TDriveNumber>(driveNum), iFs );
+ static_cast<TDriveNumber>(driveNum), iFs, iEMMC );
CleanupStack::PushL( dB );
TRAPD(openError, rtn |= dB->OpenL() ); //lint !e665
if(openError == KErrNone)
@@ -211,7 +219,8 @@
TInt index = FindDatabaseIndex ( aDrive );
if ( index == KErrNotFound )
{
- db = CMPXHarvesterDB::NewL( aDrive, iFs );
+ index = iDatabases.Count();
+ db = CMPXHarvesterDB::NewL( aDrive, iFs, iEMMC );
CleanupStack::PushL( db );
iDatabases.AppendL( db );
CleanupStack::Pop( db );
@@ -407,8 +416,7 @@
void CMPXHarvesterDatabaseManager::RecreateDatabases()
{
MPX_DEBUG1("CMPXHarvesterDatabaseManager::RecreateDatabases <--");
- TInt count( iDatabases.Count() );
- for( TInt i=0; i<count; )
+ for( TInt i=0; i < iDatabases.Count(); )
{
// Close db, delete and recreate
//
@@ -1000,13 +1008,23 @@
{
name.Append(iRAMFolder);
name.Append(aDriveUnit.Name()[0]);
- name.Append(KHarvesterDBName);
+
+ //Use different name for Dbs if the system has an internal drive vs. MMC-only.
+ //Since hard-coded drive letters in the Thumbnail URIs
+ //So Dbs are not interchangeable between an internal drive system and MMC-only system.
+ if ( iEMMC )
+ name.Append( KHarvesterDBNameEMMC );
+ else
+ name.Append( KHarvesterDBName );
}
else
{
name.Append(aDriveUnit.Name());
name.Append(KHarvesterDBPath);
- name.Append(KHarvesterDBName);
+ if ( iEMMC )
+ name.Append( KHarvesterDBNameEMMC );
+ else
+ name.Append( KHarvesterDBName );
}
MPX_DEBUG2("CMPXHarvesterDatabaseManager::GenerateHarvesterDbName name = %S", &name );