diff -r 1957042d8c7e -r ada7962b4308 filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.cpp --- a/filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.cpp Fri Apr 16 14:53:38 2010 +0300 +++ b/filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.cpp Mon May 03 12:24:39 2010 +0300 @@ -19,12 +19,6 @@ #include "fmbkupengine_p.h" // INCLUDE FILES -/*#include -#include "cfilemanagerremovabledrivehandler.h" -#include "mfilemanagerprocessobserver.h" -#include "cfilemanagerutils.h" -#include "cfilemanagerengine.h" -*/ #include #include #include @@ -49,6 +43,8 @@ #include "fmcommon.h" +#include + /* #include "cfilemanageritemproperties.h" #include "cfilemanagerbackupsettings.h" @@ -102,6 +98,10 @@ QList backupCategoryList, QString drive, quint32 content) { + if( drive.isEmpty() ) { + iError = KErrPathNotFound; + return false; + } QString logString; logString = "startBackup"; FmLogger::log( logString ); @@ -182,6 +182,31 @@ logString = "startBackup_StartOperationL"; FmLogger::log( logString ); + QList< FmRestoreInfo > restoreInfoList; + TInt driveNumber = DriverNameToNumber( drive ); + GetRestoreInfoArray( drivesAndOperationList, restoreInfoList, driveNumber ); + + for ( TInt i( 0 ); i < restoreInfoList.count(); i++ ) + { + bool toContinue = false; + FmRestoreInfo &info = restoreInfoList[ i ]; + TUint32 existContent( FmgrToBkupMask( info.content() ) ); + if ( bkupContent & existContent ) + { + notifyBackupFilesExistInternal( toContinue ); + if (!toContinue) + { + iError = KErrAlreadyExists; + return false; + } + else + { + break; + } + } + } + + TRAPD( err, iBkupEngine->StartOperationL( EMMCScBkupOperationTypeFullBackup, *this, params ) ); @@ -277,6 +302,11 @@ emit notifyMemoryLow( memoryValue, userError ); } +void FmBkupEnginePrivate::notifyBackupFilesExistInternal( bool &isContinue ) + { + emit notifyBackupFilesExist( isContinue ); + } + TInt FmBkupEnginePrivate::HandleBkupEngineEventL( MMMCScBkupEngineObserver::TEvent aEvent, TInt aAssociatedData ) { @@ -332,7 +362,7 @@ } case MMMCScBkupEngineObserver::ECommonOperationError: { - logString = "ECommonOperationError:" + QString::number(aAssociatedData); + logString = "ECommonOperationError"; iError = aAssociatedData; break; } @@ -387,6 +417,8 @@ return FmErrAlreadyExists; case KErrCancel: return FmErrCancel; + case KErrPathNotFound: + return FmErrPathNotFound; default: return FmErrUnKnown; } @@ -713,7 +745,7 @@ TUint32 FmBkupEnginePrivate::AllowedDriveAttMatchMask() const { - return KDriveAttRemovable | KDriveAttInternal;//KDriveAttRemovable; + return KDriveAttRemovable;//KDriveAttRemovable; } TInt FmBkupEnginePrivate::DriverNameToNumber( QString driverName ) @@ -729,6 +761,33 @@ return driverName; } +void FmBkupEnginePrivate::getBackupDriveList( QStringList &driveList ) + { + TUint32 driveAttMask( AllowedDriveAttMatchMask() ); + RFs fs; + fs.Connect(); + for ( TInt i( 0 ); i < KMaxDrives; ++i ) + { + TDriveInfo driveInfo; + if ( fs.Drive( driveInfo, i ) == KErrNone ) + { + // Do not allow backup for internal drives + TUint driveStatus( 0 ); + DriveInfo::GetDriveStatus( fs, i, driveStatus ); + if ( driveStatus & DriveInfo::EDriveInternal ) + { + continue; + } + if ( driveInfo.iDriveAtt & driveAttMask ) + { + driveList.append( NumberToDriverName( i ) ); + } + } + } + + fs.Close(); + } + // ----------------------------------------------------------------------------- // CFileManagerEngine::PublishBurStatus() //