filemanager/src/inc/fmutils_s60.cpp
changeset 48 1bebd60c0f00
parent 44 22e202702210
equal deleted inserted replaced
44:22e202702210 48:1bebd60c0f00
    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 }