diff -r 95243422089a -r 491b3ed49290 filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.cpp Tue Aug 31 15:06:05 2010 +0300 @@ -0,0 +1,839 @@ +/* + * Copyright (c) 2009 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: + * The source file of the backup engine implement for symbian + */ + +#include "fmbkupengine_p.h" + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef RD_MULTIPLE_DRIVE +#include +#endif // RD_MULTIPLE_DRIVE +#include +#include +#include "CMMCScBkupEngine.h" +#include "MMCScBkupOperations.h" +#include "CMMCScBkupArchiveInfo.h" +#include "filemanagerprivatecrkeys.h" + +#include +#include + +#include "fmcommon.h" + +#include + +/* +#include "cfilemanageritemproperties.h" +#include "cfilemanagerbackupsettings.h" +#include "filemanagerprivatecrkeys.h" +#include "bkupengine.hrh" +#include "filemanagerdebug.h" +#include "cfilemanagercommondefinitions.h" +#include "filemanageruid.h" +#include "filemanagerprivatepskeys.h" +*/ + +const TInt KFmgrSystemDrive = EDriveC; + +FmBkupEnginePrivate::FmBkupEnginePrivate(FmBkupEngine* bkupEngine): q(bkupEngine), + iError( KErrNone ) +{ + iDrvAndOpList = new ( ELeave ) CArrayFixFlat ( 10 ) ; + iBkupCategoryList = new RPointerArray ( 10 ); + iFs.Connect(); + iBkupEngine = CMMCScBkupEngine::NewL( iFs ); +} + +FmBkupEnginePrivate::~FmBkupEnginePrivate() +{ + delete iDrvAndOpList; + + iBkupCategoryList->ResetAndDestroy(); + delete iBkupCategoryList; + + delete iBkupEngine; + iFs.Close(); +} + +TUint32 FmBkupEnginePrivate::FmgrToBkupMask( + const TUint32 aFmrgMask ) + { + TUint32 ret( 0 ); + + for( TInt i( 0 ); i < KMaskLookupLen; ++i ) + { + if ( ( aFmrgMask & FmBkupEngineCommon::EFileManagerBackupContentAll ) || + ( aFmrgMask & KMaskLookup[ i ].iFmgrMask ) ) + { + ret |= KMaskLookup[ i ].iBkupMask; + } + } + return ret; + } + +bool FmBkupEnginePrivate::startBackup(QList drivesAndOperationList, + QList backupCategoryList, + QString drive, quint32 content) +{ + FM_LOG( "FmBkupEnginePrivate::startBackup_with drive: " + drive + + "_number:" + QString::number(DriverNameToNumber( drive ))); + if( drive.isEmpty() ) { + iError = KErrPathNotFound; + FM_LOG( "FmBkupEnginePrivate::startBackup_with return with KErrPathNotFound because drive is empty" ); + return false; + } + QStringList backupableDriveList; + getBackupDriveList( backupableDriveList ); + if( !backupableDriveList.contains( drive, Qt::CaseInsensitive ) ) { + iError = KErrPathNotFound; + FM_LOG( "FmBkupEnginePrivate::startBackup_with return with KErrPathNotFound because drive is not available" ); + return false; + } + QString logString; + logString = "startBackup"; + FM_LOG( logString ); + iDrvAndOpList->Reset(); + iBkupCategoryList->ResetAndDestroy(); + + logString = "startBackup_driveroperation count:" + QString::number(drivesAndOperationList.count()); + FM_LOG( logString ); + + for( QList::iterator it = drivesAndOperationList.begin(); + it != drivesAndOperationList.end(); ++it ) { + FmBkupDrivesAndOperation* fmDrvAndOp = *it; + TBkupDrivesAndOperation drvAndOp; + drvAndOp.setOwnerDataType( fmDrvAndOp->ownerDataType() ); + drvAndOp.setDrvCategories( fmDrvAndOp->drvCategories() ); + iDrvAndOpList->AppendL( drvAndOp ); + } + + logString = "startBackup_backupCategoryList count:" + QString::number(backupCategoryList.count()); + FM_LOG( logString ); + + + for( QList::iterator it = backupCategoryList.begin(); + it != backupCategoryList.end(); ++it ) { + FmBkupBackupCategory* fmbkupCategory = *it; + CBkupCategory* category = CBkupCategory::NewL(); + + category->setCategory( fmbkupCategory->category() ); + + HBufC *archiveName = HBufC::NewL( fmbkupCategory->archive_name().length() ); + *archiveName = fmbkupCategory->archive_name().utf16(); + category->setArchive_name( *archiveName ); + delete archiveName; + + category->setSpecial_flags( fmbkupCategory->special_flags() ); + category->setExclude_special_flags( fmbkupCategory->exclude_special_flags() ); + + for( QList::const_iterator it = fmbkupCategory->uids()->begin(); + it != fmbkupCategory->uids()->end(); ++it ) { + unsigned int value = *it; + category->addUids( value ); + } + + + for( QList::const_iterator it = fmbkupCategory->exclude_uids()->begin(); + it != fmbkupCategory->exclude_uids()->end(); ++it ) { + unsigned int value = *it; //( *ex_uidsList )[i]; + category->addExclude_uids( value ); + } + + + iBkupCategoryList->AppendL( category ); + } + + TUint32 bkupContent( FmgrToBkupMask( content ) ); + //TUint32 bkupContent = 63; + + logString = "startBackup_new param"; + FM_LOG( logString ); + + CMMCScBkupOpParamsBackupFull* params = + CMMCScBkupOpParamsBackupFull::NewL( + iDrvAndOpList, + iBkupCategoryList, + TDriveNumber( DriverNameToNumber( drive ) ), + bkupContent ); + + mProcess = FmBkupEngine::ProcessBackup; + + + logString = "startBackup_param ok"; + FM_LOG( logString ); + + CCoeEnv* coeEnv = CCoeEnv::Static(); + CEikonEnv* eikonEnv = (STATIC_CAST(CEikonEnv*,coeEnv)); + eikonEnv->SetSystem(ETrue); + + logString = "startBackup_StartOperationL"; + FM_LOG( logString ); + + QList< FmRestoreInfo > restoreInfoList; + GetRestoreInfoArray( drivesAndOperationList, restoreInfoList, drive ); + + 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 ) ); + + logString = "startBackup_end with error:" + QString::number(err) ; + FM_LOG( logString ); + return (err == KErrNone); +} + +void FmBkupEnginePrivate::cancelBackup() +{ + QString logString = "cancelBackup"; + FM_LOG(logString); + switch( mProcess ) + { + case FmBkupEngine::ProcessBackup: // FALLTHROUGH + case FmBkupEngine::ProcessRestore: + { +// PublishBurStatus( EFileManagerBkupStatusUnset ); + iBkupEngine->CancelOperation(); + break; + } + default: + { + break; + } + } +} + + +void FmBkupEnginePrivate::notifyPreparingInternal() +{ + iError = KErrNone; + bool cancelable = false; + switch( mProcess ) + { + case FmBkupEngine::ProcessBackup: + cancelable = false; + break; + case FmBkupEngine::ProcessRestore: + cancelable = false; + break; + case FmBkupEngine::ProcessNone: + default: + Q_ASSERT( false ); + } + + emit notifyPreparing( cancelable ); +} + +void FmBkupEnginePrivate::notifyStartInternal( int aTotalCount ) +{ + iError = KErrNone; + + bool cancelable = false; + switch( mProcess ) + { + case FmBkupEngine::ProcessBackup: + cancelable = true; + break; + case FmBkupEngine::ProcessRestore: + cancelable = false; + break; + case FmBkupEngine::ProcessNone: + default: + Q_ASSERT( false ); + } + emit notifyStart( cancelable, aTotalCount ); +} + + +void FmBkupEnginePrivate::notifyUpdateInternal( int aCount ) + { + emit notifyUpdate( aCount ); + } + +void FmBkupEnginePrivate::notifyFinishInternal() + { +// iEngine.ClearDriveInfo(); +// PublishBurStatus( EFileManagerBkupStatusUnset ); + /* CCoeEnv* coeEnv = CCoeEnv::Static(); + iEikonEnv->SetSystem( EFalse); + */ + CCoeEnv* coeEnv = CCoeEnv::Static(); + CEikonEnv* eikonEnv = (STATIC_CAST(CEikonEnv*,coeEnv)); + eikonEnv->SetSystem(EFalse); + mProcess = FmBkupEngine::ProcessNone; + emit notifyFinish( error() ); + } + + +void FmBkupEnginePrivate::notifyMemoryLowInternal( int memoryValue, int &userError ) + { + emit notifyMemoryLow( memoryValue, userError ); + } + +void FmBkupEnginePrivate::notifyBackupFilesExistInternal( bool &isContinue ) + { + emit notifyBackupFilesExist( isContinue ); + } + +TInt FmBkupEnginePrivate::HandleBkupEngineEventL( + MMMCScBkupEngineObserver::TEvent aEvent, TInt aAssociatedData ) + { + QString logString; + TInt ret( KErrNone ); + switch( aEvent ) + { + case MMMCScBkupEngineObserver::ECommonOperationStarting: + { + logString = "ECommonOperationStarting"; + + iFinalValue = KMaxTInt; +// notifyStartInternal( KMaxTInt ); + notifyPreparingInternal(); + break; + } + case MMMCScBkupEngineObserver::ECommonSizeOfTaskUnderstood: + { + logString = "ECommonSizeOfTaskUnderstood"; + iFinalValue = aAssociatedData; + notifyStartInternal( aAssociatedData ); + break; + } + case MMMCScBkupEngineObserver::ECommonOperationPrepareEnded: + { + logString = "ECommonOperationPrepareEnded"; +// PublishBurStatus( EFileManagerBkupStatusUnset ); + // In order to show finished dialog prior SysAp's note, + // notify observer already at prepare-ended state. + if( mProcess == FmBkupEngine::ProcessRestore ) + { + if ( iFinalValue ) + { + notifyUpdateInternal( iFinalValue ); + } + notifyFinishInternal(); + } + break; + } + case MMMCScBkupEngineObserver::ECommonOperationEnded: + { + logString = "ECommonOperationEnded"; +// PublishBurStatus( EFileManagerBkupStatusUnset ); + if( mProcess != FmBkupEngine::ProcessRestore && mProcess != FmBkupEngine::ProcessNone ) + { + if ( iFinalValue ) + { + notifyUpdateInternal( iFinalValue ); + } + notifyFinishInternal(); + } + break; + } + case MMMCScBkupEngineObserver::ECommonOperationError: + { + logString = "ECommonOperationError"; + iError = aAssociatedData; + break; + } + case MMMCScBkupEngineObserver::ECommonProgress: + { + logString = "ECommonProgress:" + QString::number( aAssociatedData ); + notifyUpdateInternal( aAssociatedData ); + break; + } + case MMMCScBkupEngineObserver::EBackupAnalysingData: + { + logString = "EBackupAnalysingData:" + QString::number( aAssociatedData ); + if ( mProcess == FmBkupEngine::ProcessBackup ) + { + int userError = FmErrNone; + notifyMemoryLowInternal( aAssociatedData, userError ); + switch( userError ) + { + case FmErrDiskFull: + ret = KErrDiskFull; + break; + case FmErrCancel: + ret = KErrCancel; + break; + default: + break; + } + } + break; + } + default: + { + logString = "default"; + break; + } + } + FM_LOG( logString ); + return ret; + } + +int FmBkupEnginePrivate::error() +{ + FM_LOG( "FmBkupEnginePrivate::error:" + QString::number( iError ) ); + switch (iError) + { + case KErrNone: + return FmErrNone; + case KErrNotFound: + return FmErrNotFound; + case KErrDiskFull: + return FmErrDiskFull; + case KErrAlreadyExists: + return FmErrAlreadyExists; + case KErrCancel: + return FmErrCancel; + case KErrPathNotFound: + return FmErrPathNotFound; + case KErrLocked: + return FmErrLocked; + case KErrCorrupt: + return FmErrCorrupt; + case KErrNotReady: + return FmErrNotReady; + case KErrDisMounted: + return FmErrDisMounted; + default: + return FmErrUnKnown; + } +} + + + + + +int FmBkupEnginePrivate::deleteBackup( QList drivesAndOperationList ) +{ + iError = FmErrNone; + + QList< FmRestoreInfo > selection; + FmRestoreSettings& rstSettings( *( q->RestoreSettingsL() ) ); + rstSettings.GetSelectionL( selection ); + + iBkupCategoryList->ResetAndDestroy(); + for( QList::iterator it = drivesAndOperationList.begin(); + it != drivesAndOperationList.end(); ++it ) + { + FmBkupDrivesAndOperation* fmDrvAndOp = *it; + TBkupDrivesAndOperation drvAndOp; + drvAndOp.setOwnerDataType( fmDrvAndOp->ownerDataType() ); + drvAndOp.setDrvCategories( fmDrvAndOp->drvCategories() ); + iDrvAndOpList->AppendL( drvAndOp ); + } + //////// + + CMMCScBkupOpParamsRestoreFull* params = + CMMCScBkupOpParamsRestoreFull::NewL( + iDrvAndOpList, FmBkupEngine::EBUCatAllSeparately ); + CleanupStack::PushL( params ); + + // Get list of all archives + RPointerArray< CMMCScBkupArchiveInfo > archives; + TCleanupItem cleanupItem( ResetAndDestroyArchives, &archives ); + CleanupStack::PushL( cleanupItem ); + iBkupEngine->ListArchivesL( + archives, + params, + AllowedDriveAttMatchMask()); + + TInt i( 0 ); + while ( i < archives.Count() ) + { + TBool remove( ETrue ); + + // Compare archives category and drive + CMMCScBkupArchiveInfo* archiveInfo = archives[ i ]; + TUint32 fmgrContent( + BkupToFmgrMask( archiveInfo->Category().iFlags ) ); + TInt drive( archiveInfo->Drive() ); + + TInt count( selection.count() ); + for( TInt j( 0 ); j < count; ++j ) + { + const FmRestoreInfo& info( selection[ j ] ); + if ( ( drive == DriverNameToNumber( info.drive() ) ) && ( fmgrContent & info.content() ) ) + { + // Found user selected archive + // Do not check this archive again + selection.removeAt( j ); + remove = EFalse; + break; + } + } + if ( remove ) + { + // Remove non selected archive + archives.Remove( i ); + delete archiveInfo; + } + else + { + // Move to next archive + ++i; + } + } + + iBkupEngine->DeleteArchivesL( archives ); + + CleanupStack::Pop( &archives ); + archives.Close(); + CleanupStack::PopAndDestroy( params ); + + return iError; +} + + +bool FmBkupEnginePrivate::StartRestoreL( QList drivesAndOperationList ) + { + TBool diskFull( SysUtil::DiskSpaceBelowCriticalLevelL( + &iFs, 0, KFmgrSystemDrive ) ); + if ( diskFull ) + { + mProcess = FmBkupEngine::ProcessRestore; + notifyStartInternal( KMaxTInt ); + iError = KErrDiskFull; + notifyFinishInternal(); + mProcess = FmBkupEngine::ProcessNone; + return false; + } +/////// + iDrvAndOpList->Reset(); + iBkupCategoryList->ResetAndDestroy(); + + for( QList::iterator it = drivesAndOperationList.begin(); + it != drivesAndOperationList.end(); ++it ) + { + FmBkupDrivesAndOperation* fmDrvAndOp = *it; + TBkupDrivesAndOperation drvAndOp; + drvAndOp.setOwnerDataType( fmDrvAndOp->ownerDataType() ); + drvAndOp.setDrvCategories( fmDrvAndOp->drvCategories() ); + iDrvAndOpList->AppendL( drvAndOp ); + } + //////// + + // Create restore params - ownership is transferred to + // secure backup engine + +#ifdef RD_FILE_MANAGER_BACKUP + + CMMCScBkupOpParamsRestoreFull* params = + CMMCScBkupOpParamsRestoreFull::NewL( + iDrvAndOpList, + FmBkupEngine::EBUCatAllSeparately ); +// CleanupStack::PopAndDestroy(); // driveReader + CleanupStack::PushL( params ); + + // Get list of all archives + RPointerArray< CMMCScBkupArchiveInfo > archives; + TCleanupItem cleanupItem( ResetAndDestroyArchives, &archives ); + CleanupStack::PushL( cleanupItem ); + iBkupEngine->ListArchivesL( + archives, + params, + AllowedDriveAttMatchMask() ); + + // Get user set restore selection + QList< FmRestoreInfo > selection; +// CleanupClosePushL( selection ); + FmRestoreSettings& rstSettings( *( q->RestoreSettingsL() ) ); + rstSettings.GetSelectionL( selection ); + + // Remove non user selected archives + TInt i( 0 ); + while ( i < archives.Count() ) + { + TBool remove( ETrue ); + + // Compare archives category and drive + CMMCScBkupArchiveInfo* archiveInfo = archives[ i ]; + TUint32 fmgrContent( + BkupToFmgrMask( archiveInfo->Category().iFlags ) ); + TInt drive( archiveInfo->Drive() ); + + TInt count( selection.count() ); + for( TInt j( 0 ); j < count; ++j ) + { + const FmRestoreInfo& info( selection[ j ] ); + if ( ( drive == DriverNameToNumber( info.drive() ) ) && ( fmgrContent & info.content() ) ) + { + // Found user selected archive + // Do not check this archive again + selection.removeAt( j ); + remove = EFalse; + break; + } + } + if ( remove ) + { + // Remove non selected archive + archives.Remove( i ); + delete archiveInfo; + } + else + { + // Move to next archive + ++i; + } + } + +// CleanupStack::PopAndDestroy( &selection ); + params->SetArchiveInfosL( archives ); + CleanupStack::Pop( &archives ); + archives.Close(); + CleanupStack::Pop( params ); + +#else // RD_FILE_MANAGER_BACKUP + + CMMCScBkupOpParamsRestoreFull* params = + CMMCScBkupOpParamsRestoreFull::NewL( driveReader, EBUCatAllInOne ); + CleanupStack::PopAndDestroy(); // driveReader + + FmBackupSettings& bkupSettings( *( q->BackupSettingsL() ) ); + // Get list of all archives + RPointerArray< CMMCScBkupArchiveInfo > archives; + TCleanupItem cleanupItem( ResetAndDestroyArchives, &archives ); + CleanupStack::PushL( cleanupItem ); + iBkupEngine->ListArchivesL( + archives, + params, + bkupSettings.AllowedDriveAttMatchMask() ); + params->SetArchiveInfosL( archives ); + CleanupStack::Pop( &archives ); + +#endif // RD_FILE_MANAGER_BACKUP + + // Start the process - engine owns the parameters immediately + mProcess = FmBkupEngine::ProcessRestore; + PublishBurStatus( EFileManagerBkupStatusRestore ); + + CCoeEnv* coeEnv = CCoeEnv::Static(); + CEikonEnv* eikonEnv = (STATIC_CAST(CEikonEnv*,coeEnv)); + eikonEnv->SetSystem(ETrue); + + TRAPD( err, iBkupEngine->StartOperationL( + EMMCScBkupOperationTypeFullRestore, *this, params ) ); + if ( err != KErrNone ) + { + PublishBurStatus( EFileManagerBkupStatusUnset ); + mProcess = FmBkupEngine::ProcessNone; + User::Leave( err ); + } + return true; + } + +void FmBkupEnginePrivate::GetRestoreInfoArray( QList drivesAndOperationList, + QList< FmRestoreInfo > &restoreInfoList, + const QString& aDrive ) + { + int targetDrive = DriverNameToNumber( aDrive ); + + restoreInfoList.clear(); + + /////// + iDrvAndOpList->Reset(); + iBkupCategoryList->ResetAndDestroy(); + + for( QList::iterator it = drivesAndOperationList.begin(); + it != drivesAndOperationList.end(); ++it ) + { + FmBkupDrivesAndOperation* fmDrvAndOp = *it; + TBkupDrivesAndOperation drvAndOp; + drvAndOp.setOwnerDataType( fmDrvAndOp->ownerDataType() ); + drvAndOp.setDrvCategories( fmDrvAndOp->drvCategories() ); + iDrvAndOpList->AppendL( drvAndOp ); + } + //////// + + CMMCScBkupOpParamsRestoreFull* params = + CMMCScBkupOpParamsRestoreFull::NewL( + iDrvAndOpList, FmBkupEngine::EBUCatAllSeparately ); + CleanupStack::PushL( params ); + + // Get list of all archives + RPointerArray< CMMCScBkupArchiveInfo > archives; + TCleanupItem cleanupItem( ResetAndDestroyArchives, &archives ); + CleanupStack::PushL( cleanupItem ); + iBkupEngine->ListArchivesL( + archives, + params, + AllowedDriveAttMatchMask(), + targetDrive ); + + // Fill restore info + TInt count( archives.Count() ); +// restoreInfoList.ReserveL( count ); + + for( TInt i( 0 ); i < count; ++i ) + { + // Content + CMMCScBkupArchiveInfo& archiveInfo( *archives[ i ] ); + + TUint32 iContent = BkupToFmgrMask( archiveInfo.Category().iFlags ); + TTime iTime = archiveInfo.DateTime(); + TInt iDrive = archiveInfo.Drive(); + TDateTime iDateTime = iTime.DateTime(); + + int h = iDateTime.Hour(); + int m = iDateTime.Minute(); + int s = iDateTime.Second(); + int year = iDateTime.Year(); + int month = iDateTime.Month() + 1; + int day = iDateTime.Day()+1; + QTime time( h, m, s); + QDate date( year, month, day ); + + QDateTime dateTime( date, time ); + dateTime = dateTime.toLocalTime(); + + FmRestoreInfo restoreInfo( iContent, dateTime, NumberToDriverName( iDrive ) ); + restoreInfoList.append( restoreInfo ); + } + + CleanupStack::PopAndDestroy( &archives ); + CleanupStack::PopAndDestroy( params ); + } + +TUint32 FmBkupEnginePrivate::BkupToFmgrMask( + const TUint32 aBkupMask ) + { + TUint32 ret( 0 ); + + for( TInt i( 0 ); i < KMaskLookupLen; ++i ) + { + if ( aBkupMask & KMaskLookup[ i ].iBkupMask ) + { + ret |= KMaskLookup[ i ].iFmgrMask; + } + } + return ret; + } + +void FmBkupEnginePrivate::ResetAndDestroyArchives( TAny* aPtr ) + { + RPointerArray< CMMCScBkupArchiveInfo >* archive = + static_cast< RPointerArray< CMMCScBkupArchiveInfo >* >( aPtr ); + archive->ResetAndDestroy(); + archive->Close(); + } + +TUint32 FmBkupEnginePrivate::AllowedDriveAttMatchMask() const + { + return KDriveAttRemovable;//KDriveAttRemovable; + } + +TInt FmBkupEnginePrivate::DriverNameToNumber( QString driverName ) + { + if( driverName.isEmpty() ) { + return KErrNotFound; + } + TInt drive = 0; + drive = driverName[0].toUpper().toAscii() - 'A' + EDriveA; + return drive; + } +QString FmBkupEnginePrivate::NumberToDriverName( TInt driver ) + { + QChar driverChar( driver - EDriveA + 'A' ); + QString driverName = QString( driverChar ) + ':'; + 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() +// +// ----------------------------------------------------------------------------- +// +void FmBkupEnginePrivate::PublishBurStatus( TInt aType ) + { + Q_UNUSED( aType ); + /* + _LIT_SECURITY_POLICY_S0( KFileManagerBkupWritePolicy, KFileManagerUID3 ); + _LIT_SECURITY_POLICY_PASS( KFileManagerBkupReadPolicy ); + + TInt err( RProperty::Set( + KPSUidFileManagerStatus, KFileManagerBkupStatus, aType ) ); + if ( err != KErrNone ) + { + err = RProperty::Define( + KPSUidFileManagerStatus, KFileManagerBkupStatus, + RProperty::EInt, KFileManagerBkupReadPolicy, + KFileManagerBkupWritePolicy ); + if ( err == KErrNone || err == KErrAlreadyExists ) + { + err = RProperty::Set( + KPSUidFileManagerStatus, KFileManagerBkupStatus, aType ); + } + } + LOG_IF_ERROR1( + err, "FileManagerRemovableDriveHandler::PublishBurStatus-err=%d", err ) + */ + }