filemanager/src/inc/fmutils_s60.cpp
branchRCL_3
changeset 21 65326cf895ed
parent 20 491b3ed49290
child 22 f5c50b8af68c
--- a/filemanager/src/inc/fmutils_s60.cpp	Tue Aug 31 15:06:05 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,859 +0,0 @@
-/*
-* 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:
-*     Zhiqiang Yang <zhiqiang.yang@nokia.com>
-* 
-* Description:
-*     The source file of the file manager utilities on Symbian
-*/
-
-
-#include "fmutils.h"
-#include "fmcommon.h"
-#include "fms60utils.h"
-
-#include <apgcli.h>
-#include <sysutil.h>
-#include <f32file.h>
-#include <coemain.h>
-#include <pathinfo.h>
-#include <driveinfo.h>
-#include <e32property.h>
-#include <coreapplicationuisdomainpskeys.h>
-
-#include <QDir>
-#include <QFile>
-#include <QRegExp>
-#include <QStringList>
-#include <QFileInfoList>
-
-#include <xqappmgr.h>
-#include <XQConversions>
-#include <xqaiwrequest.h>
-
-#include <shareui.h>
-#include <hbglobal.h>
-#include <hbdirectorynamelocalizer.h>
-
-#define BURCONFIGFILE  "z:/private/2002BCC0/burconfig.xml"
-
-/*!
-    query drive info and status for \a driveName
-    return \a FmDriverInfo
-*/
-FmDriverInfo FmUtils::queryDriverInfo( const QString &driveName )
-{
-    if( driveName.isEmpty() ) {
-        return FmDriverInfo( 0, 0, driveName, QString(), FmDriverInfo::EDriveNotPresent );
-    }
-    CCoeEnv *env = CCoeEnv::Static();
-    RFs& fs = env->FsSession();
-
-    TVolumeInfo volumeInfo;
-    TInt drive = 0;
-    drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
-
-    quint32 state( 0 );
-    
-    int volumeInfoErr( KErrNone );
-    int driveInfoErr( KErrNone );
-    int errorCode( KErrNone );
-    volumeInfoErr = fs.Volume( volumeInfo, drive );
-    errorCode = volumeInfoErr;
-    QString volumeName( (QChar*)( volumeInfo.iName.Des().Ptr() ), volumeInfo.iName.Length() );
-    
-    TDriveInfo driveInfo;
-    if( volumeInfoErr == KErrNone ) {
-        driveInfo = volumeInfo.iDrive;
-    } else {
-        driveInfoErr = fs.Drive( driveInfo, drive );
-        if( driveInfoErr != KErrNone ) {
-            errorCode = driveInfoErr;
-        }
-    }
-    
-    if( volumeInfoErr == KErrNone || driveInfoErr == KErrNone ) {
-        //TDriveInfo driveInfo = volumeInfo.iDrive;
-    
-        quint32 drvStatus( 0 );
-        int err = DriveInfo::GetDriveStatus( fs, drive, drvStatus );
-        if( err == KErrNone ) {
-            
-            if ( ( drvStatus & DriveInfo::EDriveInternal ) &&
-                 ( drvStatus & DriveInfo::EDriveExternallyMountable ) ){
-                // Handle mass storage bits here
-                state |= FmDriverInfo::EDriveMassStorage | FmDriverInfo::EDriveRemovable;
-            }
-        
-            if ( drvStatus & DriveInfo::EDriveUsbMemory )
-                {
-                state |= FmDriverInfo::EDriveUsbMemory;
-                }
-            
-            if ( drvStatus & DriveInfo::EDriveRemote )
-                {
-                state |= FmDriverInfo::EDriveRemote;
-                }
-            
-            if ( drvStatus & DriveInfo::EDriveRom ){
-                state |= FmDriverInfo::EDriveRom;  
-            }
-            
-            if ( drvStatus & DriveInfo::EDriveRam ){
-                state |= FmDriverInfo::EDriveRam;  
-            }
-        
-            if ( driveInfo.iMediaAtt & KMediaAttFormattable ){
-                state |= FmDriverInfo::EDriveFormattable;
-            }
-            if ( driveInfo.iMediaAtt & KMediaAttWriteProtected ){
-                state |= FmDriverInfo::EDriveWriteProtected;
-            }
-            if ( driveInfo.iMediaAtt & KMediaAttHasPassword ){
-                state |= FmDriverInfo::EDrivePasswordProtected;
-            }    
-            if ( driveInfo.iMediaAtt & KMediaAttLocked ){
-                state |= FmDriverInfo::EDriveLocked;
-            }
-        
-            if ( driveInfo.iDriveAtt & KDriveAttRemovable ){
-                state |= FmDriverInfo::EDriveRemovable;
-        
-                if ( drvStatus & DriveInfo::EDriveSwEjectable ){
-                    state |= FmDriverInfo::EDriveEjectable;
-                }
-            }
-            
-            if( driveInfo.iType == EMediaNotPresent ){
-                state |= FmDriverInfo::EDriveNotPresent;    
-            }
-        }
-        // If memory card is not ready but type is present,
-        // then check if it is reserved.
-        if( err == KErrNone && volumeInfoErr == KErrNotReady &&
-            driveInfo.iType != EMediaNotPresent )
-            {
-            // Check USB file transfer state
-            TInt prop( ECoreAppUIsUSBFileTransferUninitialized );
-            RProperty::Get(
-                KPSUidCoreApplicationUIs,
-                KCoreAppUIsUSBFileTransfer, prop );
-            if ( prop == ECoreAppUIsUSBFileTransferActive )
-                {
-                errorCode = KErrInUse; // Reserved for file transfer
-                }
-            }
-        if( err!= KErrNone )
-            {
-            errorCode = err;
-            }
-    }
-
-    // handle error code
-    // volumeInfoErr will occur while drive is lock,corrupted...
-    // driveInfoErr can not be promoted for locked, corrupted drive.
-    // so we can not use driveInfoErr to justify EDriveAvailable
-    switch( errorCode )
-    {
-    case KErrNone:
-        // this drive could be used as it is not be locked, or corrupt.
-        state |= FmDriverInfo::EDriveAvailable; 
-        break;
-    case KErrLocked:
-        state |= FmDriverInfo::EDriveLocked;
-        break;
-    case KErrCorrupt:
-        state |= FmDriverInfo::EDriveCorrupted;
-        break;
-    case KErrInUse:
-        state |= FmDriverInfo::EDriveInUse;
-        break;
-    default: // other errors
-        state |= FmDriverInfo::EDriveNotPresent;
-        break;
-    }
-    QString logString ( "FmUtils::queryDriverInfo_" + driveName + 
-            "_volumeInfoErr:" + QString::number( volumeInfoErr ) +
-            "_driveInfoErr:" + QString::number( driveInfoErr ) +
-            "_errorCode:" + QString::number( errorCode ) + 
-            "_driveSatus:" + QString::number( state ) );
-    FM_LOG( logString );
-    return FmDriverInfo( volumeInfo.iSize, volumeInfo.iFree, driveName, volumeName, state );
-}
-
-/*!
-    remove drive password for \a driveName
-    \a Pwd is original password.
-*/
-int FmUtils::removeDrivePwd( const QString &driveName,  const QString &Pwd )
-{
-    if( driveName.isEmpty() || Pwd.length() > FmMaxLengthofDrivePassword ) {
-        return FmErrWrongParam;
-    }
-    QString logString = "Drive name:" + driveName;
-    FM_LOG( logString );
-    logString = "Password:" + Pwd;
-    FM_LOG( logString );
-
-    CCoeEnv *env = CCoeEnv::Static();
-	RFs& fs = env->FsSession();
-
-    TInt drive = 0;
-
-    drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
-
-    HBufC* password16 = XQConversions::qStringToS60Desc( Pwd );
-    TMediaPassword password;   
-    TPtr ptrPassword16( password16->Des() );  
-    FmS60Utils::ConvertCharsToPwd( ptrPassword16, password );
-
-    int err( fs.ClearPassword( drive, password ) );
-
-    logString = "Drive:" + QString::number( drive );
-    FM_LOG( logString );
-
-    logString = "Clear password error:" + QString::number( err );
-    FM_LOG( logString );
-
-    delete password16;
-
-    if( err == KErrNone ){
-        return FmErrNone;   
-    }
-    else if( err == KErrAccessDenied ){
-        return FmErrAccessDenied;
-    }
-    else{
-        return FmErrUnKnown;
-    }
-}
-
-/*!
-    Unlock drive \a driveName with provided password \a Pwd
-*/
-int FmUtils::unlockDrive( const QString &driveName,  const QString &Pwd )
-{
-    if( driveName.isEmpty() || Pwd.length() > FmMaxLengthofDrivePassword ) {
-        return FmErrWrongParam;
-    }
-    QString logString = "Drive name:" + driveName;
-    FM_LOG( logString );
-    logString = "Password:" + Pwd;
-    FM_LOG( logString );
-
-    CCoeEnv *env = CCoeEnv::Static();
-	RFs& fs = env->FsSession();
-
-    TInt drive = 0;
-	drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
-    
-    HBufC* password16 = XQConversions::qStringToS60Desc( Pwd );
-    TMediaPassword password;   
-    TPtr ptrPassword16( password16->Des() );  
-    FmS60Utils::ConvertCharsToPwd( ptrPassword16, password );
-
-    int err( fs.UnlockDrive( drive, password, ETrue) );
-
-    logString = "Drive:" + QString::number( drive );
-    FM_LOG( logString );
-    logString = "Unlock drive error:" + QString::number( err );
-    FM_LOG( logString );
-
-    delete password16;
-
-    if( err == KErrNone ){
-        return FmErrNone;   
-    }
-    else if( err == KErrAccessDenied ){
-        return FmErrAccessDenied;
-    }
-    else if( err == KErrAlreadyExists ){
-        return FmErrAlreadyExists;
-    }
-    else if( err == KErrNotSupported ){
-        return FmErrNotSupported;
-    }
-    else{
-        return FmErrUnKnown;
-    }
-}
-
-/*!
-    Check if \a pwd is the right password for drive \a driveName
-*/
-int FmUtils::checkDrivePwd( const QString &driveName, const QString &pwd )
-{
-    if( driveName.isEmpty() || pwd.length() > FmMaxLengthofDrivePassword ) {
-        return FmErrWrongParam;
-    }
-    QString logString = "checkDrivePwd Drive name:" + driveName;
-    logString += " password:" + pwd;
-    FM_LOG( logString );
-
-    return setDrivePwd( driveName, pwd, pwd );
-}
-
-/*!
-    Set new password \a newPwd for drive \a driveName. \a oldPwd is old password
-*/
-int FmUtils::setDrivePwd( const QString &driveName, const QString &oldPwd, const QString &newPwd)
-{
-    if( driveName.isEmpty() || 
-        oldPwd.length() > FmMaxLengthofDrivePassword || newPwd.length() > FmMaxLengthofDrivePassword  ) {
-        return FmErrWrongParam;
-    }
-    QString logString = "setDrivePwd Drive name:" + driveName ;
-    logString += " Old password:" + oldPwd;
-    logString += " New password:" + newPwd;
-    FM_LOG( logString );
-
-    CCoeEnv *env = CCoeEnv::Static();
-	RFs& fs = env->FsSession();
-
-    TInt drive = 0;
-	drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
-	
-    HBufC* newPassword16 = XQConversions::qStringToS60Desc( newPwd);
-    HBufC* oldPassword16 = XQConversions::qStringToS60Desc( oldPwd );
-
-    TMediaPassword oldPassword;
-    TMediaPassword newPassword;
-    
-    TPtr ptrNewPassword16( newPassword16->Des() );
-    TPtr ptrOldPassword16( oldPassword16->Des() );
-    
-    FmS60Utils::ConvertCharsToPwd( ptrNewPassword16, newPassword );
-    FmS60Utils::ConvertCharsToPwd( ptrOldPassword16, oldPassword );
-
-    int err( fs.LockDrive( drive, oldPassword, newPassword, ETrue ) );
-
-    logString = "Drive:" + QString::number( drive );
-    FM_LOG( logString );
-    logString = "Password set error:" + QString::number( err );
-    FM_LOG( logString );
-
-    delete newPassword16;
-    delete oldPassword16;
-    if( err == KErrNone ){
-        return FmErrNone;   
-    }
-    else if( err == KErrNotSupported ){
-        return FmErrNotSupported;
-    }
-    else{
-        return FmErrUnKnown;
-    }
-}
-
-/*!
-    Set \a pwd as empty password
-*/
-void FmUtils::emptyPwd( QString &pwd )
-{
-    TBuf< FmMaxLengthofDrivePassword > nullPwd;
-    nullPwd.FillZ( nullPwd.MaxLength() );
-    nullPwd.Zero();
-    pwd = XQConversions::s60DescToQString( nullPwd );
-}
-
-/*!
-    Set drive volume for drive \a driveName
-*/
-int FmUtils::renameDrive( const QString &driveName, const QString &newVolumeName)
-{
-    if( driveName.isEmpty() ) {
-        return FmErrWrongParam;
-    }
-    foreach( const QChar &ch, newVolumeName )
-    {
-        bool a = ch.isSpace();
-        bool b = ch.isLetterOrNumber();
-        // If not alphadigit or space, return error
-        if( !ch.isLetterOrNumber() && !ch.isSpace() )
-        {
-            return FmErrBadName;
-        }   
-    }
-        
-    CCoeEnv *env = CCoeEnv::Static();
-	RFs& fs = env->FsSession();
-
-    TInt drive = 0;
-	drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
-
-    TPtr newName ( ( XQConversions::qStringToS60Desc( newVolumeName ) )->Des() );
-
-    int err( fs.SetVolumeLabel( newName, drive ));
-    
-    QString logString = "Rename error:" + QString::number( err );
-    FM_LOG( logString );
-
-    if( err == KErrNone ){
-        return FmErrNone;   
-    }
-    else if( err == KErrNotReady ){
-        return FmErrNotReady;
-    }
-    else{
-        return FmErrUnKnown;
-    }
-}
-
-/*!
-    Eject drive \a driveName
-*/
-int FmUtils::ejectDrive( const QString &driveName )
-{
-    if( driveName.isEmpty() ) {
-        return FmErrWrongParam;
-    }
-    QString logString = "FmUtils::ejectDrive start";
-    FM_LOG( logString );
-
-    TInt drive = 0;
-	drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
-
-    const int KDriveShift = 16;
-
-    // Let SysAp handle eject
-    RProperty::Set(
-        KPSUidCoreApplicationUIs,
-        KCoreAppUIsMmcRemovedWithoutEject,
-        ECoreAppUIsEjectCommandUsedToDrive | ( drive << KDriveShift )
-        );
-    return FmErrNone;
-}
-
-/*!
-    Check if drive \a driveName is accessable for user
-*/
-bool FmUtils::checkDriveAccessFilter( const QString &driveName )
-{
-    if( driveName.isEmpty() ) {
-        return false;
-    }
-    FmDriverInfo driveInfo = queryDriverInfo( driveName );
-    if( ( driveInfo.driveState()& FmDriverInfo::EDriveRam ) ||
-        ( driveInfo.driveState()& FmDriverInfo::EDriveRom ) ) {
-        return false;
-    }
-    return true;
-}
-
-/*!
-    This function should be called to adjust path if user goto a drive.
-    data folder will be append to C:\ becuase user could only view C:\data instead C:\ 
-*/
-QString FmUtils::checkDriveToFolderFilter( const QString &path )
-{
-    QString checkedPath = fillPathWithSplash( path );
-    if( checkedPath.compare( Drive_C, Qt::CaseInsensitive ) == 0 ) {
-        checkedPath += QString( "data" ) + QDir::separator();
-        return checkedPath;
-    }
-    return path;
-
-}
-
-/*!
-    This function should be called to adjust path if user back to up level path.
-    If user is at C:\data then path level should be returned as C:\
-    Becuase C:\data is root path for C drive 
-*/
-QString FmUtils::checkFolderToDriveFilter( const QString &path )
-{
-    QString logString;
-    logString = QString( "checkFolderToDriveFilter: " ) + path;
-    FM_LOG( logString );
-    QString checkedPath = fillPathWithSplash( path );
-
-    logString = QString( "checkFolderToDriveFilter_fillPathWithSplash: " ) + checkedPath;
-    FM_LOG( logString );
-    
-    if( checkedPath.compare( Folder_C_Data, Qt::CaseInsensitive ) == 0 ) {
-        FM_LOG( QString( " change from c:/data/ to C:/" ) );
-        return Drive_C;
-    }
-    return path;
-
-}
-
-/*!
-    Check if \a path is accessable for user
-*/
-int FmUtils::isPathAccessabel( const QString &path )
-{
-    // Used to check if path is accessable, very important feature
-    // and will return filemanager error.
-    FM_LOG( QString( "isPathAccessabel:" ) + path );
-    if( path.isEmpty() ) {
-        return FmErrPathNotExist;
-    }
-
-    // used to filter locked/ejected/corrupted drive
-    // check if drive is available, no matter if it is a drive, a folder, or a file.
-    if( !isDriveAvailable( path ) ) {
-        FM_LOG( QString( "isPathAccessabel false: path is drive and not available" ) );
-        return FmErrDriveNotAvailable;
-    }
-
-    QFileInfo fileInfo( path );
-
-    if( fileInfo.absoluteFilePath().contains( Drive_C, Qt::CaseInsensitive ) &&
-        !fileInfo.absoluteFilePath().contains( Folder_C_Data, Qt::CaseInsensitive ) ) {
-        FM_LOG( QString( "isPathAccessabel false: path contain C and not in data folder" ) );
-        return FmErrPathDenied;
-    }
-    if( !checkDriveAccessFilter( FmUtils::getDriveNameFromPath( fileInfo.absoluteFilePath() ) ) ){
-        return FmErrDriveDenied;
-    }
-    if( !fileInfo.exists() ) {
-        FM_LOG( QString( "isPathAccessabel false: path not exist" ) );
-        return FmErrPathNotExist;
-    }
-    FM_LOG( QString( "isPathAccessabel FmErrNone" ) );
-    return FmErrNone;
-}
-
-/*!
-    Check if drive related to \a path is available.
-    This function should not check if path is available. Only responsible for checking drive  
-    When MMC is not inserted, also return false
-*/
-bool FmUtils::isDriveAvailable( const QString &path )
-{
-    FM_LOG( QString( "isDriveAvailable:" ) + path );
-    if( path.isEmpty() ) {
-        return false;
-    }
-    FmDriverInfo::DriveState driveState = queryDriverInfo( path ).driveState();
-    if( ( driveState & FmDriverInfo::EDriveAvailable ) ) {
-        FM_LOG( QString( "isDriveAvailable true" ) );
-        return true;
-    }
-    FM_LOG( QString( "isDriveAvailable false" ) );
-    return false;
-}
-
-/*!
-    Check if \a folderPath is default folder for system
-*/
-bool FmUtils::isDefaultFolder( const QString &folderPath  )
-{
-    HBufC *path = XQConversions::qStringToS60Desc( folderPath );
-    TPtrC desFolderPath( path->Des() );
-    
-    bool ret( true );
-    TInt pathType( PathInfo::PathType( desFolderPath ) );
-    switch( pathType ){
-       case PathInfo::ENotSystemPath:{
-           QString locString( localize( folderPath ) );
-            if ( locString.isEmpty() ){
-                ret = false;
-                break;
-            }
-            ret = true;
-            break;
-            }
-        case PathInfo::EPhoneMemoryRootPath: // FALL THROUGH
-        case PathInfo::EMemoryCardRootPath: // FALL THROUGH
-        case PathInfo::ERomRootPath:{
-            ret = false;
-            break;
-        }
-        // Accept other folders
-        default:{
-            ret = true;
-            break;
-        }
-    }
-    delete path;
-    return ret;
-}
-
-/*!
-    Create system default folders for drive \a driveName.
-    Default folders should be created after format a drive.
-*/
-void FmUtils::createDefaultFolders( const QString &driveName )
-{
-    if( driveName.isEmpty() ) {
-        return;
-    }
-    int err;
-    
-    TInt drive = 0;
-    drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
-    
-    RFs fs;
-    err = fs.Connect();
-    
-    if( err != KErrNone ){
-        return;
-    }
-    
-    quint32 drvStatus( 0 );
-    err = DriveInfo::GetDriveStatus( fs, drive, drvStatus );
-    if ( !( drvStatus & DriveInfo::EDriveUserVisible ) ||
-        ( drvStatus & ( DriveInfo::EDriveRemote |
-                        DriveInfo::EDriveReadOnly |
-                        DriveInfo::EDriveUsbMemory ) ) ){
-            return; 
-        }
-    
-    TEntry entry;
-    CDesCArray* array = PathInfo::GetListOfPathsLC( drive );
-    
-    TInt count( array->MdcaCount() );
-    for ( TInt i( 0 ); i < count; ++i )
-        {
-        TPtrC fullPath( array->MdcaPoint( i ) );
-        TBool allow( ETrue );
-
-        if ( drvStatus & DriveInfo::EDriveRemovable )
-            {
-            // Filter few folder types from physically removable memory cards
-            TInt pathType( PathInfo::PathType( fullPath ) );
-            switch( pathType )
-                {
-                case PathInfo::EGamesPath: // FALL THROUGH
-                case PathInfo::EInstallsPath: // FALL THROUGH
-                case PathInfo::EGsmPicturesPath: // FALL THROUGH
-                case PathInfo::EMmsBackgroundImagesPath: // FALL THROUGH
-                case PathInfo::EPresenceLogosPath:
-                    {
-                    allow = EFalse;
-                    }
-                default:
-                    {
-                    break;
-                    }
-                }
-            }
-
-        if ( allow ){
-            fs.MkDirAll( fullPath ); // Ignore error
-
-            if ( fs.Entry( fullPath, entry ) == KErrNone ){
-                if( entry.IsHidden() ){
-                // If setting fails, File Manager can still go on
-                    fs.SetEntry(
-                         fullPath, entry.iModified, 0, KEntryAttHidden );
-                }
-            }
-        }
-    }
-    CleanupStack::PopAndDestroy( array );
-}
-
-/*!
-    In Symbian system, default folders will be localized.
-    So localize is used to check if a path is a default folder
-    \sa isDefaultFolder
-*/
-QString FmUtils::localize( const QString &path )
-{
-    // HbDirectoryNameLocalizer can not recognize path with \ in the end
-    QString locPath( removePathSplash( path ) );
-    
-    HbDirectoryNameLocalizer localizer;
-    return localizer.translate( locPath );
-}
-
-/*!
-    set the \a desFile attributes as the same with \a srcFile
-*/
-int FmUtils::setFileAttributes( const QString &srcFile, const QString &desFile )
-{
-    RFs fsSession;
-    User::LeaveIfError( fsSession.Connect() ); 
-    CleanupClosePushL( fsSession );
-    RFile64 src;
-    RFile64 des;
-    HBufC *buf1 = XQConversions::qStringToS60Desc( removePathSplash( formatPath( srcFile ) ) );
-    HBufC *buf2 = XQConversions::qStringToS60Desc( removePathSplash( formatPath( desFile ) ) );
-    User::LeaveIfError( src.Open( fsSession, *buf1, EFileRead | EFileShareReadersOnly ) );
-    User::LeaveIfError( des.Open( fsSession, *buf2, EFileWrite | EFileShareExclusive ) );
-    TTime mod;
-    int err = src.Modified( mod );;
-    if ( err == FmErrNone ) {
-        err = des.SetModified( mod );    
-    }
-    TUint att( 0 );
-    if ( err == FmErrNone ) {
-        err = src.Att( att );        
-    }
-    if ( err == FmErrNone ) {
-        des.SetAtt( att, ( ~att ) & KEntryAttMaskSupported );
-    }    
-    src.Close();
-    des.Close();
-    fsSession.Close();
-    CleanupStack::PopAndDestroy(); // fsSession
-    return err;
-}
-
-/*!
-    judge whether there is enough space on \a targetDrive for \a size.
-    return true if has, false if not.
-*/
-bool FmUtils::hasEnoughSpace( const QString &targetDrive, qint64 size )
-{
-    RFs fsSession;
-    QT_TRAP_THROWING( fsSession.Connect() ); 
-    CleanupClosePushL( fsSession );
-    TInt dstDrv(0);
-    HBufC* hbuf = XQConversions::qStringToS60Desc( targetDrive );
-    QT_TRAP_THROWING( RFs::CharToDrive( hbuf->operator [](0), dstDrv ) );
-    bool ret = !SysUtil::DiskSpaceBelowCriticalLevelL( &fsSession,  size , dstDrv );
-    CleanupStack::PopAndDestroy(); // fsSession
-    return ret;
-    
-}
-
-/*!
-    move one file insice the same drive, from \a source to \a target.
-    return KErrNone if successful, otherwise one of the other system-wide error codes.
-*/
-int FmUtils::moveInsideDrive( const QString &source, const QString &target )
-{
-    RFs fsSession;
-    QT_TRAP_THROWING( fsSession.Connect() ); 
-    CleanupClosePushL( fsSession );
-    HBufC* oldName = XQConversions::qStringToS60Desc( source );
-    HBufC* newName = XQConversions::qStringToS60Desc( target );
-    int ret = fsSession.Rename( *oldName, *newName );
-    CleanupStack::PopAndDestroy(); // fsSession
-    return ret;    
-}
-
-/*!
-   Launch a file with associated application.
-*/
-int FmUtils::launchFile( const QString &filePath )
-
-{
-    QFile file( filePath );
-    if( !file.exists() ) {
-        return false;
-    }
-        
-    XQApplicationManager mAiwMgr;
-    XQAiwRequest *request = mAiwMgr.create(file);
-    if ( request == 0 ) {
-        // No handlers for the URI
-        return FmErrUnKnown;
-    }
-    
-    // Set function parameters
-    QList<QVariant> args;
-    args << file.fileName();
-    request->setArguments(args);
-    
-    // Send the request
-    bool res = request->send();
-    if  (!res) 
-    {
-       // Request failed. 
-      int error = request->lastError();
-      
-      delete request;
-      return FmErrUnKnown;
-    }
-    
-    delete request;
-    return FmErrNone;
-}
-
-/*!
-    Send files( \a filePathList ) with share ui.
-*/
-void FmUtils::sendFiles( QStringList &filePathList )
-{
-    ShareUi shareui;
-    shareui.send( filePathList, false );
-}
-
-/*!
-    return path for backup restore config file.
-    Currently \a appPath is not used.
-*/
-QString FmUtils::getBurConfigPath( QString appPath )
-{
-    Q_UNUSED( appPath );
-    QString path( BURCONFIGFILE );
-    return path;
-}
-
-/*!
-    return MetaData string for \a filePath
-*/
-QString FmUtils::getFileType( const QString &filePath  )
-{
-    RApaLsSession apaSession;
-    TDataType dataType;
-    TUid appUid;
-    
-    TBuf<128> mimeTypeBuf;
-        
-    int err = apaSession.Connect();
-    
-    if ( err == KErrNone ){   
-        err = apaSession.AppForDocument( XQConversions::qStringToS60Desc( filePath )->Des(), 
-                                         appUid, dataType );
-        
-        if( err == KErrNone ){
-            mimeTypeBuf.Copy(dataType.Des8());
-        }  
-    }
-    
-    apaSession.Close();
-    return XQConversions::s60DescToQString( mimeTypeBuf );
-}
-
-/*!
-    Check if drive \a driveName is drive C
-*/
-bool FmUtils::isDriveC( const QString &driveName )
-{
-    if( driveName.isEmpty() ) {
-        return false;
-    }
-    TInt drive = 0;
-    drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
-    if( drive == EDriveC ){
-        return true;
-    }
-    else{
-        return false;
-    }
-   
-}
-
-/*!
-    return max file name length
-*/
-int FmUtils::getMaxFileNameLength()
-{
-    return KMaxFileName;
-}
-
-/*!
-    Check if length of \a path is exceed max path length. 
-*/
-bool FmUtils::checkMaxPathLength( const QString& path )
-{
-    if( path.length() > KMaxPath ) {
-        return false;
-    }
-    return true;
-}