equal
deleted
inserted
replaced
19 |
19 |
20 #include "fmutils.h" |
20 #include "fmutils.h" |
21 #include "fmcommon.h" |
21 #include "fmcommon.h" |
22 #include "fms60utils.h" |
22 #include "fms60utils.h" |
23 |
23 |
|
24 #include <COEMAIN.H> |
|
25 #include <eikenv.H> |
24 #include <apgcli.h> |
26 #include <apgcli.h> |
25 #include <sysutil.h> |
27 #include <sysutil.h> |
26 #include <f32file.h> |
28 #include <f32file.h> |
27 #include <coemain.h> |
29 #include <coemain.h> |
28 #include <pathinfo.h> |
30 #include <pathinfo.h> |
52 FmDriverInfo FmUtils::queryDriverInfo( const QString &driveName ) |
54 FmDriverInfo FmUtils::queryDriverInfo( const QString &driveName ) |
53 { |
55 { |
54 if( driveName.isEmpty() ) { |
56 if( driveName.isEmpty() ) { |
55 return FmDriverInfo( 0, 0, driveName, QString(), FmDriverInfo::EDriveNotPresent ); |
57 return FmDriverInfo( 0, 0, driveName, QString(), FmDriverInfo::EDriveNotPresent ); |
56 } |
58 } |
57 CCoeEnv *env = CCoeEnv::Static(); |
59 // CCoeEnv *env = CCoeEnv::Static(); |
58 RFs& fs = env->FsSession(); |
60 // RFs& fs = env->FsSession(); |
|
61 // make new fs so that this function can be called in thread |
|
62 RFs fs; |
|
63 fs.Connect(); |
59 |
64 |
60 TVolumeInfo volumeInfo; |
65 TVolumeInfo volumeInfo; |
61 TInt drive = 0; |
66 TInt drive = 0; |
62 drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA; |
67 drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA; |
63 |
68 |
184 "_volumeInfoErr:" + QString::number( volumeInfoErr ) + |
189 "_volumeInfoErr:" + QString::number( volumeInfoErr ) + |
185 "_driveInfoErr:" + QString::number( driveInfoErr ) + |
190 "_driveInfoErr:" + QString::number( driveInfoErr ) + |
186 "_errorCode:" + QString::number( errorCode ) + |
191 "_errorCode:" + QString::number( errorCode ) + |
187 "_driveSatus:" + QString::number( state ) ); |
192 "_driveSatus:" + QString::number( state ) ); |
188 FM_LOG( logString ); |
193 FM_LOG( logString ); |
|
194 fs.Close(); |
189 return FmDriverInfo( volumeInfo.iSize, volumeInfo.iFree, driveName, volumeName, state ); |
195 return FmDriverInfo( volumeInfo.iSize, volumeInfo.iFree, driveName, volumeName, state ); |
190 } |
196 } |
191 |
197 |
192 /*! |
198 /*! |
193 remove drive password for \a driveName |
199 remove drive password for \a driveName |
381 { |
387 { |
382 return FmErrBadName; |
388 return FmErrBadName; |
383 } |
389 } |
384 } |
390 } |
385 |
391 |
386 CCoeEnv *env = CCoeEnv::Static(); |
392 // CCoeEnv *env = CCoeEnv::Static(); |
387 RFs& fs = env->FsSession(); |
393 // RFs& fs = env->FsSession(); |
|
394 // make new fs so that this function can be called in thread |
|
395 RFs fs; |
|
396 fs.Connect(); |
388 |
397 |
389 TInt drive = 0; |
398 TInt drive = 0; |
390 drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA; |
399 drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA; |
391 |
400 |
392 TPtr newName ( ( XQConversions::qStringToS60Desc( newVolumeName ) )->Des() ); |
401 TPtr newName ( ( XQConversions::qStringToS60Desc( newVolumeName ) )->Des() ); |
394 int err( fs.SetVolumeLabel( newName, drive )); |
403 int err( fs.SetVolumeLabel( newName, drive )); |
395 |
404 |
396 QString logString = "Rename error:" + QString::number( err ); |
405 QString logString = "Rename error:" + QString::number( err ); |
397 FM_LOG( logString ); |
406 FM_LOG( logString ); |
398 |
407 |
|
408 fs.Close(); |
399 if( err == KErrNone ){ |
409 if( err == KErrNone ){ |
400 return FmErrNone; |
410 return FmErrNone; |
401 } |
411 } |
402 else if( err == KErrNotReady ){ |
412 else if( err == KErrNotReady ){ |
403 return FmErrNotReady; |
413 return FmErrNotReady; |
510 if( fileInfo.absoluteFilePath().contains( Drive_C, Qt::CaseInsensitive ) && |
520 if( fileInfo.absoluteFilePath().contains( Drive_C, Qt::CaseInsensitive ) && |
511 !fileInfo.absoluteFilePath().contains( Folder_C_Data, Qt::CaseInsensitive ) ) { |
521 !fileInfo.absoluteFilePath().contains( Folder_C_Data, Qt::CaseInsensitive ) ) { |
512 FM_LOG( QString( "isPathAccessabel false: path contain C and not in data folder" ) ); |
522 FM_LOG( QString( "isPathAccessabel false: path contain C and not in data folder" ) ); |
513 return FmErrPathDenied; |
523 return FmErrPathDenied; |
514 } |
524 } |
|
525 |
|
526 if( isSystemFolder( fileInfo.absoluteFilePath() ) ) { |
|
527 FM_LOG( QString( "isPathAccessabel false: path is system path that not accessable" ) ); |
|
528 return FmErrPathDenied; |
|
529 } |
|
530 |
515 if( !checkDriveAccessFilter( FmUtils::getDriveNameFromPath( fileInfo.absoluteFilePath() ) ) ){ |
531 if( !checkDriveAccessFilter( FmUtils::getDriveNameFromPath( fileInfo.absoluteFilePath() ) ) ){ |
516 return FmErrDriveDenied; |
532 return FmErrDriveDenied; |
517 } |
533 } |
518 if( !fileInfo.exists() ) { |
534 if( !fileInfo.exists() ) { |
519 FM_LOG( QString( "isPathAccessabel false: path not exist" ) ); |
535 FM_LOG( QString( "isPathAccessabel false: path not exist" ) ); |
653 } |
669 } |
654 CleanupStack::PopAndDestroy( array ); |
670 CleanupStack::PopAndDestroy( array ); |
655 } |
671 } |
656 |
672 |
657 /*! |
673 /*! |
|
674 return localized file name by \a path, empty string returned for non-localized path. |
658 In Symbian system, default folders will be localized. |
675 In Symbian system, default folders will be localized. |
659 So localize is used to check if a path is a default folder |
676 So localize also can be used to check if a path is a default folder |
660 \sa isDefaultFolder |
677 \sa isDefaultFolder |
661 */ |
678 */ |
662 QString FmUtils::localize( const QString &path ) |
679 QString FmUtils::localize( const QString &path ) |
663 { |
680 { |
664 // HbDirectoryNameLocalizer can not recognize path with \ in the end |
681 // HbDirectoryNameLocalizer can not recognize path with \ in the end |
845 if( path.length() > KMaxPath ) { |
862 if( path.length() > KMaxPath ) { |
846 return false; |
863 return false; |
847 } |
864 } |
848 return true; |
865 return true; |
849 } |
866 } |
|
867 |
|
868 /*! |
|
869 Set appliation as system mode if \a isSystem is true. |
|
870 Otherwise set application as non-system mode |
|
871 */ |
|
872 void FmUtils::setSystem( bool isSystem ) |
|
873 { |
|
874 CCoeEnv* coeEnv = CCoeEnv::Static(); |
|
875 CEikonEnv* eikonEnv = (STATIC_CAST(CEikonEnv*,coeEnv)); |
|
876 if( isSystem ) { |
|
877 eikonEnv->SetSystem(ETrue); |
|
878 } else { |
|
879 eikonEnv->SetSystem(EFalse); |
|
880 } |
|
881 } |
|
882 |
|
883 /*! |
|
884 return drive name by \a drive |
|
885 */ |
|
886 QString FmUtils::numberToDriveName( int drive ) |
|
887 { |
|
888 QChar driveChar( drive - EDriveA + 'A' ); |
|
889 QString driveName = QString( driveChar ) + ':'; |
|
890 return driveName; |
|
891 } |