diff -r 22e202702210 -r 1bebd60c0f00 filemanager/src/inc/fmutils_s60.cpp --- a/filemanager/src/inc/fmutils_s60.cpp Fri Sep 17 08:27:42 2010 +0300 +++ b/filemanager/src/inc/fmutils_s60.cpp Mon Oct 04 00:06:46 2010 +0300 @@ -21,6 +21,8 @@ #include "fmcommon.h" #include "fms60utils.h" +#include +#include #include #include #include @@ -54,8 +56,11 @@ if( driveName.isEmpty() ) { return FmDriverInfo( 0, 0, driveName, QString(), FmDriverInfo::EDriveNotPresent ); } - CCoeEnv *env = CCoeEnv::Static(); - RFs& fs = env->FsSession(); + // CCoeEnv *env = CCoeEnv::Static(); + // RFs& fs = env->FsSession(); + // make new fs so that this function can be called in thread + RFs fs; + fs.Connect(); TVolumeInfo volumeInfo; TInt drive = 0; @@ -186,6 +191,7 @@ "_errorCode:" + QString::number( errorCode ) + "_driveSatus:" + QString::number( state ) ); FM_LOG( logString ); + fs.Close(); return FmDriverInfo( volumeInfo.iSize, volumeInfo.iFree, driveName, volumeName, state ); } @@ -383,8 +389,11 @@ } } - CCoeEnv *env = CCoeEnv::Static(); - RFs& fs = env->FsSession(); + // CCoeEnv *env = CCoeEnv::Static(); + // RFs& fs = env->FsSession(); + // make new fs so that this function can be called in thread + RFs fs; + fs.Connect(); TInt drive = 0; drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA; @@ -396,6 +405,7 @@ QString logString = "Rename error:" + QString::number( err ); FM_LOG( logString ); + fs.Close(); if( err == KErrNone ){ return FmErrNone; } @@ -512,6 +522,12 @@ FM_LOG( QString( "isPathAccessabel false: path contain C and not in data folder" ) ); return FmErrPathDenied; } + + if( isSystemFolder( fileInfo.absoluteFilePath() ) ) { + FM_LOG( QString( "isPathAccessabel false: path is system path that not accessable" ) ); + return FmErrPathDenied; + } + if( !checkDriveAccessFilter( FmUtils::getDriveNameFromPath( fileInfo.absoluteFilePath() ) ) ){ return FmErrDriveDenied; } @@ -655,8 +671,9 @@ } /*! + return localized file name by \a path, empty string returned for non-localized path. In Symbian system, default folders will be localized. - So localize is used to check if a path is a default folder + So localize also can be used to check if a path is a default folder \sa isDefaultFolder */ QString FmUtils::localize( const QString &path ) @@ -847,3 +864,28 @@ } return true; } + +/*! + Set appliation as system mode if \a isSystem is true. + Otherwise set application as non-system mode +*/ +void FmUtils::setSystem( bool isSystem ) +{ + CCoeEnv* coeEnv = CCoeEnv::Static(); + CEikonEnv* eikonEnv = (STATIC_CAST(CEikonEnv*,coeEnv)); + if( isSystem ) { + eikonEnv->SetSystem(ETrue); + } else { + eikonEnv->SetSystem(EFalse); + } +} + +/*! + return drive name by \a drive +*/ +QString FmUtils::numberToDriveName( int drive ) +{ + QChar driveChar( drive - EDriveA + 'A' ); + QString driveName = QString( driveChar ) + ':'; + return driveName; +}