filemanager/src/inc/fmutils_s60.cpp
author hgs
Tue, 24 Aug 2010 10:24:14 +0800
changeset 37 15bc28c9dd51
parent 16 ada7962b4308
child 46 d58987eac7e8
permissions -rw-r--r--
201033
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*     Zhiqiang Yang <zhiqiang.yang@nokia.com>
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* 
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
* Description:
37
hgs
parents: 16
diff changeset
    16
*     The source file of the file manager utilities on Symbian
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
*/
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
#include "fmutils.h"
37
hgs
parents: 16
diff changeset
    21
#include "fmcommon.h"
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include "fms60utils.h"
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
37
hgs
parents: 16
diff changeset
    24
#include <apgcli.h>
hgs
parents: 16
diff changeset
    25
#include <sysutil.h>
hgs
parents: 16
diff changeset
    26
#include <f32file.h>
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include <coemain.h>
37
hgs
parents: 16
diff changeset
    28
#include <pathinfo.h>
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include <driveinfo.h>
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include <e32property.h>
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include <coreapplicationuisdomainpskeys.h>
37
hgs
parents: 16
diff changeset
    32
hgs
parents: 16
diff changeset
    33
#include <QDir>
hgs
parents: 16
diff changeset
    34
#include <QFile>
hgs
parents: 16
diff changeset
    35
#include <QRegExp>
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
#include <QStringList>
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
#include <QFileInfoList>
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
37
hgs
parents: 16
diff changeset
    39
#include <xqappmgr.h>
hgs
parents: 16
diff changeset
    40
#include <XQConversions>
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
#include <xqaiwrequest.h>
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
37
hgs
parents: 16
diff changeset
    43
#include <shareui.h>
hgs
parents: 16
diff changeset
    44
#include <hbglobal.h>
hgs
parents: 16
diff changeset
    45
#include <hbdirectorynamelocalizer.h>
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
#define BURCONFIGFILE  "z:/private/2002BCC0/burconfig.xml"
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
37
hgs
parents: 16
diff changeset
    49
/*!
hgs
parents: 16
diff changeset
    50
    query drive info and status for \a driveName
hgs
parents: 16
diff changeset
    51
    return \a FmDriverInfo
hgs
parents: 16
diff changeset
    52
*/
hgs
parents: 16
diff changeset
    53
FmDriverInfo FmUtils::queryDriverInfo( const QString &driveName )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
{
37
hgs
parents: 16
diff changeset
    55
    if( driveName.isEmpty() ) {
hgs
parents: 16
diff changeset
    56
        return FmDriverInfo( 0, 0, driveName, QString(), FmDriverInfo::EDriveNotPresent );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
    }
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    58
    CCoeEnv *env = CCoeEnv::Static();
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    59
    RFs& fs = env->FsSession();
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    60
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    61
    TVolumeInfo volumeInfo;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    62
    TInt drive = 0;
37
hgs
parents: 16
diff changeset
    63
    drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    64
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    65
    quint32 state( 0 );
37
hgs
parents: 16
diff changeset
    66
    
hgs
parents: 16
diff changeset
    67
    int volumeInfoErr( KErrNone );
hgs
parents: 16
diff changeset
    68
    int driveInfoErr( KErrNone );
hgs
parents: 16
diff changeset
    69
    int errorCode( KErrNone );
hgs
parents: 16
diff changeset
    70
    volumeInfoErr = fs.Volume( volumeInfo, drive );
hgs
parents: 16
diff changeset
    71
    errorCode = volumeInfoErr;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    72
    QString volumeName( (QChar*)( volumeInfo.iName.Des().Ptr() ), volumeInfo.iName.Length() );
37
hgs
parents: 16
diff changeset
    73
    
hgs
parents: 16
diff changeset
    74
    TDriveInfo driveInfo;
hgs
parents: 16
diff changeset
    75
    if( volumeInfoErr == KErrNone ) {
hgs
parents: 16
diff changeset
    76
        driveInfo = volumeInfo.iDrive;
hgs
parents: 16
diff changeset
    77
    } else {
hgs
parents: 16
diff changeset
    78
        driveInfoErr = fs.Drive( driveInfo, drive );
hgs
parents: 16
diff changeset
    79
        if( driveInfoErr != KErrNone ) {
hgs
parents: 16
diff changeset
    80
            errorCode = driveInfoErr;
hgs
parents: 16
diff changeset
    81
        }
hgs
parents: 16
diff changeset
    82
    }
hgs
parents: 16
diff changeset
    83
    
hgs
parents: 16
diff changeset
    84
    if( volumeInfoErr == KErrNone || driveInfoErr == KErrNone ) {
hgs
parents: 16
diff changeset
    85
        //TDriveInfo driveInfo = volumeInfo.iDrive;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    86
    
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    87
        quint32 drvStatus( 0 );
37
hgs
parents: 16
diff changeset
    88
        int err = DriveInfo::GetDriveStatus( fs, drive, drvStatus );
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    89
        if( err == KErrNone ) {
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    90
            
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    91
            if ( ( drvStatus & DriveInfo::EDriveInternal ) &&
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    92
                 ( drvStatus & DriveInfo::EDriveExternallyMountable ) ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    93
                // Handle mass storage bits here
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    94
                state |= FmDriverInfo::EDriveMassStorage | FmDriverInfo::EDriveRemovable;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    95
            }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
    96
        
37
hgs
parents: 16
diff changeset
    97
            if ( drvStatus & DriveInfo::EDriveUsbMemory )
hgs
parents: 16
diff changeset
    98
                {
hgs
parents: 16
diff changeset
    99
                state |= FmDriverInfo::EDriveUsbMemory;
hgs
parents: 16
diff changeset
   100
                }
hgs
parents: 16
diff changeset
   101
            
hgs
parents: 16
diff changeset
   102
            if ( drvStatus & DriveInfo::EDriveRemote )
hgs
parents: 16
diff changeset
   103
                {
hgs
parents: 16
diff changeset
   104
                state |= FmDriverInfo::EDriveRemote;
hgs
parents: 16
diff changeset
   105
                }
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   106
            
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   107
            if ( drvStatus & DriveInfo::EDriveRom ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   108
                state |= FmDriverInfo::EDriveRom;  
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   109
            }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   110
            
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   111
            if ( drvStatus & DriveInfo::EDriveRam ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   112
                state |= FmDriverInfo::EDriveRam;  
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   113
            }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   114
        
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   115
            if ( driveInfo.iMediaAtt & KMediaAttFormattable ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   116
                state |= FmDriverInfo::EDriveFormattable;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   117
            }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   118
            if ( driveInfo.iMediaAtt & KMediaAttWriteProtected ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   119
                state |= FmDriverInfo::EDriveWriteProtected;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   120
            }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   121
            if ( driveInfo.iMediaAtt & KMediaAttHasPassword ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   122
                state |= FmDriverInfo::EDrivePasswordProtected;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   123
            }    
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   124
            if ( driveInfo.iMediaAtt & KMediaAttLocked ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   125
                state |= FmDriverInfo::EDriveLocked;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   126
            }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   127
        
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   128
            if ( driveInfo.iDriveAtt & KDriveAttRemovable ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   129
                state |= FmDriverInfo::EDriveRemovable;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   130
        
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   131
                if ( drvStatus & DriveInfo::EDriveSwEjectable ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   132
                    state |= FmDriverInfo::EDriveEjectable;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   133
                }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   134
            }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   135
            
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   136
            if( driveInfo.iType == EMediaNotPresent ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   137
                state |= FmDriverInfo::EDriveNotPresent;    
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   138
            }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   139
        }
37
hgs
parents: 16
diff changeset
   140
        // If memory card is not ready but type is present,
hgs
parents: 16
diff changeset
   141
        // then check if it is reserved.
hgs
parents: 16
diff changeset
   142
        if( err == KErrNone && volumeInfoErr == KErrNotReady &&
hgs
parents: 16
diff changeset
   143
            driveInfo.iType != EMediaNotPresent )
hgs
parents: 16
diff changeset
   144
            {
hgs
parents: 16
diff changeset
   145
            // Check USB file transfer state
hgs
parents: 16
diff changeset
   146
            TInt prop( ECoreAppUIsUSBFileTransferUninitialized );
hgs
parents: 16
diff changeset
   147
            RProperty::Get(
hgs
parents: 16
diff changeset
   148
                KPSUidCoreApplicationUIs,
hgs
parents: 16
diff changeset
   149
                KCoreAppUIsUSBFileTransfer, prop );
hgs
parents: 16
diff changeset
   150
            if ( prop == ECoreAppUIsUSBFileTransferActive )
hgs
parents: 16
diff changeset
   151
                {
hgs
parents: 16
diff changeset
   152
                errorCode = KErrInUse; // Reserved for file transfer
hgs
parents: 16
diff changeset
   153
                }
hgs
parents: 16
diff changeset
   154
            }
hgs
parents: 16
diff changeset
   155
        if( err!= KErrNone )
hgs
parents: 16
diff changeset
   156
            {
hgs
parents: 16
diff changeset
   157
            errorCode = err;
hgs
parents: 16
diff changeset
   158
            }
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   159
    }
37
hgs
parents: 16
diff changeset
   160
hgs
parents: 16
diff changeset
   161
    // handle error code
hgs
parents: 16
diff changeset
   162
    // volumeInfoErr will occur while drive is lock,corrupted...
hgs
parents: 16
diff changeset
   163
    // driveInfoErr can not be promoted for locked, corrupted drive.
hgs
parents: 16
diff changeset
   164
    // so we can not use driveInfoErr to justify EDriveAvailable
hgs
parents: 16
diff changeset
   165
    switch( errorCode )
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   166
    {
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   167
    case KErrNone:
37
hgs
parents: 16
diff changeset
   168
        // this drive could be used as it is not be locked, or corrupt.
hgs
parents: 16
diff changeset
   169
        state |= FmDriverInfo::EDriveAvailable; 
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   170
        break;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   171
    case KErrLocked:
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   172
        state |= FmDriverInfo::EDriveLocked;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   173
        break;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   174
    case KErrCorrupt:
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   175
        state |= FmDriverInfo::EDriveCorrupted;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   176
        break;
37
hgs
parents: 16
diff changeset
   177
    case KErrInUse:
hgs
parents: 16
diff changeset
   178
        state |= FmDriverInfo::EDriveInUse;
hgs
parents: 16
diff changeset
   179
        break;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   180
    default: // other errors
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   181
        state |= FmDriverInfo::EDriveNotPresent;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   182
        break;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   183
    }
37
hgs
parents: 16
diff changeset
   184
    QString logString ( "FmUtils::queryDriverInfo_" + driveName + 
hgs
parents: 16
diff changeset
   185
            "_volumeInfoErr:" + QString::number( volumeInfoErr ) +
hgs
parents: 16
diff changeset
   186
            "_driveInfoErr:" + QString::number( driveInfoErr ) +
hgs
parents: 16
diff changeset
   187
            "_errorCode:" + QString::number( errorCode ) + 
hgs
parents: 16
diff changeset
   188
            "_driveSatus:" + QString::number( state ) );
hgs
parents: 16
diff changeset
   189
    FM_LOG( logString );
hgs
parents: 16
diff changeset
   190
    return FmDriverInfo( volumeInfo.iSize, volumeInfo.iFree, driveName, volumeName, state );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
37
hgs
parents: 16
diff changeset
   193
/*!
hgs
parents: 16
diff changeset
   194
    remove drive password for \a driveName
hgs
parents: 16
diff changeset
   195
    \a Pwd is original password.
hgs
parents: 16
diff changeset
   196
*/
hgs
parents: 16
diff changeset
   197
int FmUtils::removeDrivePwd( const QString &driveName,  const QString &Pwd )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
{
37
hgs
parents: 16
diff changeset
   199
    if( driveName.isEmpty() || Pwd.length() > FmMaxLengthofDrivePassword ) {
hgs
parents: 16
diff changeset
   200
        return FmErrWrongParam;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
    }
37
hgs
parents: 16
diff changeset
   202
    QString logString = "Drive name:" + driveName;
hgs
parents: 16
diff changeset
   203
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
    logString = "Password:" + Pwd;
37
hgs
parents: 16
diff changeset
   205
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
    CCoeEnv *env = CCoeEnv::Static();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
	RFs& fs = env->FsSession();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
    TInt drive = 0;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
37
hgs
parents: 16
diff changeset
   212
    drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
    HBufC* password16 = XQConversions::qStringToS60Desc( Pwd );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
    TMediaPassword password;   
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
    TPtr ptrPassword16( password16->Des() );  
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
    FmS60Utils::ConvertCharsToPwd( ptrPassword16, password );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   219
    int err( fs.ClearPassword( drive, password ) );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
    logString = "Drive:" + QString::number( drive );
37
hgs
parents: 16
diff changeset
   222
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
    logString = "Clear password error:" + QString::number( err );
37
hgs
parents: 16
diff changeset
   225
    FM_LOG( logString );
hgs
parents: 16
diff changeset
   226
hgs
parents: 16
diff changeset
   227
    delete password16;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   229
    if( err == KErrNone ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   230
        return FmErrNone;   
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   231
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   232
    else if( err == KErrAccessDenied ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   233
        return FmErrAccessDenied;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   234
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   235
    else{
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   236
        return FmErrUnKnown;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   237
    }
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
37
hgs
parents: 16
diff changeset
   240
/*!
hgs
parents: 16
diff changeset
   241
    Unlock drive \a driveName with provided password \a Pwd
hgs
parents: 16
diff changeset
   242
*/
hgs
parents: 16
diff changeset
   243
int FmUtils::unlockDrive( const QString &driveName,  const QString &Pwd )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
{
37
hgs
parents: 16
diff changeset
   245
    if( driveName.isEmpty() || Pwd.length() > FmMaxLengthofDrivePassword ) {
hgs
parents: 16
diff changeset
   246
        return FmErrWrongParam;
hgs
parents: 16
diff changeset
   247
    }
hgs
parents: 16
diff changeset
   248
    QString logString = "Drive name:" + driveName;
hgs
parents: 16
diff changeset
   249
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
    logString = "Password:" + Pwd;
37
hgs
parents: 16
diff changeset
   251
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
    CCoeEnv *env = CCoeEnv::Static();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   254
	RFs& fs = env->FsSession();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
    TInt drive = 0;
37
hgs
parents: 16
diff changeset
   257
	drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
    HBufC* password16 = XQConversions::qStringToS60Desc( Pwd );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
    TMediaPassword password;   
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
    TPtr ptrPassword16( password16->Des() );  
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
    FmS60Utils::ConvertCharsToPwd( ptrPassword16, password );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
    int err( fs.UnlockDrive( drive, password, ETrue) );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
    logString = "Drive:" + QString::number( drive );
37
hgs
parents: 16
diff changeset
   267
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
    logString = "Unlock drive error:" + QString::number( err );
37
hgs
parents: 16
diff changeset
   269
    FM_LOG( logString );
hgs
parents: 16
diff changeset
   270
hgs
parents: 16
diff changeset
   271
    delete password16;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   273
    if( err == KErrNone ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   274
        return FmErrNone;   
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   275
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   276
    else if( err == KErrAccessDenied ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   277
        return FmErrAccessDenied;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   278
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   279
    else if( err == KErrAlreadyExists ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   280
        return FmErrAlreadyExists;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   281
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   282
    else if( err == KErrNotSupported ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   283
        return FmErrNotSupported;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   284
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   285
    else{
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   286
        return FmErrUnKnown;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   287
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   288
}
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   289
37
hgs
parents: 16
diff changeset
   290
/*!
hgs
parents: 16
diff changeset
   291
    Check if \a pwd is the right password for drive \a driveName
hgs
parents: 16
diff changeset
   292
*/
hgs
parents: 16
diff changeset
   293
int FmUtils::checkDrivePwd( const QString &driveName, const QString &pwd )
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   294
{
37
hgs
parents: 16
diff changeset
   295
    if( driveName.isEmpty() || pwd.length() > FmMaxLengthofDrivePassword ) {
hgs
parents: 16
diff changeset
   296
        return FmErrWrongParam;
hgs
parents: 16
diff changeset
   297
    }
hgs
parents: 16
diff changeset
   298
    QString logString = "checkDrivePwd Drive name:" + driveName;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   299
    logString += " password:" + pwd;
37
hgs
parents: 16
diff changeset
   300
    FM_LOG( logString );
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   301
37
hgs
parents: 16
diff changeset
   302
    return setDrivePwd( driveName, pwd, pwd );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   304
37
hgs
parents: 16
diff changeset
   305
/*!
hgs
parents: 16
diff changeset
   306
    Set new password \a newPwd for drive \a driveName. \a oldPwd is old password
hgs
parents: 16
diff changeset
   307
*/
hgs
parents: 16
diff changeset
   308
int FmUtils::setDrivePwd( const QString &driveName, const QString &oldPwd, const QString &newPwd)
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   309
{
37
hgs
parents: 16
diff changeset
   310
    if( driveName.isEmpty() || 
hgs
parents: 16
diff changeset
   311
        oldPwd.length() > FmMaxLengthofDrivePassword || newPwd.length() > FmMaxLengthofDrivePassword  ) {
hgs
parents: 16
diff changeset
   312
        return FmErrWrongParam;
hgs
parents: 16
diff changeset
   313
    }
hgs
parents: 16
diff changeset
   314
    QString logString = "setDrivePwd Drive name:" + driveName ;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   315
    logString += " Old password:" + oldPwd;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   316
    logString += " New password:" + newPwd;
37
hgs
parents: 16
diff changeset
   317
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
    CCoeEnv *env = CCoeEnv::Static();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
	RFs& fs = env->FsSession();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
    TInt drive = 0;
37
hgs
parents: 16
diff changeset
   323
	drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   324
	
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   325
    HBufC* newPassword16 = XQConversions::qStringToS60Desc( newPwd);
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   326
    HBufC* oldPassword16 = XQConversions::qStringToS60Desc( oldPwd );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   327
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   328
    TMediaPassword oldPassword;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   329
    TMediaPassword newPassword;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   330
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   331
    TPtr ptrNewPassword16( newPassword16->Des() );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   332
    TPtr ptrOldPassword16( oldPassword16->Des() );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   333
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
    FmS60Utils::ConvertCharsToPwd( ptrNewPassword16, newPassword );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   335
    FmS60Utils::ConvertCharsToPwd( ptrOldPassword16, oldPassword );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   337
    int err( fs.LockDrive( drive, oldPassword, newPassword, ETrue ) );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   338
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   339
    logString = "Drive:" + QString::number( drive );
37
hgs
parents: 16
diff changeset
   340
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
    logString = "Password set error:" + QString::number( err );
37
hgs
parents: 16
diff changeset
   342
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   343
37
hgs
parents: 16
diff changeset
   344
    delete newPassword16;
hgs
parents: 16
diff changeset
   345
    delete oldPassword16;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   346
    if( err == KErrNone ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   347
        return FmErrNone;   
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   348
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   349
    else if( err == KErrNotSupported ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   350
        return FmErrNotSupported;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   351
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   352
    else{
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   353
        return FmErrUnKnown;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   354
    }
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   355
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   356
37
hgs
parents: 16
diff changeset
   357
/*!
hgs
parents: 16
diff changeset
   358
    Set \a pwd as empty password
hgs
parents: 16
diff changeset
   359
*/
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   360
void FmUtils::emptyPwd( QString &pwd )
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   361
{
37
hgs
parents: 16
diff changeset
   362
    TBuf< FmMaxLengthofDrivePassword > nullPwd;
hgs
parents: 16
diff changeset
   363
    nullPwd.FillZ( nullPwd.MaxLength() );
hgs
parents: 16
diff changeset
   364
    nullPwd.Zero();
hgs
parents: 16
diff changeset
   365
    pwd = XQConversions::s60DescToQString( nullPwd );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   367
37
hgs
parents: 16
diff changeset
   368
/*!
hgs
parents: 16
diff changeset
   369
    Set drive volume for drive \a driveName
hgs
parents: 16
diff changeset
   370
*/
hgs
parents: 16
diff changeset
   371
int FmUtils::renameDrive( const QString &driveName, const QString &newVolumeName)
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   372
{
37
hgs
parents: 16
diff changeset
   373
    if( driveName.isEmpty() ) {
hgs
parents: 16
diff changeset
   374
        return FmErrWrongParam;
hgs
parents: 16
diff changeset
   375
    }
hgs
parents: 16
diff changeset
   376
    foreach( const QChar &ch, newVolumeName )
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   377
    {
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   378
        bool a = ch.isSpace();
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   379
        bool b = ch.isLetterOrNumber();
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   380
        // If not alphadigit or space, return error
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   381
        if( !ch.isLetterOrNumber() && !ch.isSpace() )
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   382
        {
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   383
            return FmErrBadName;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   384
        }   
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   385
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   386
        
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
    CCoeEnv *env = CCoeEnv::Static();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   388
	RFs& fs = env->FsSession();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   389
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
    TInt drive = 0;
37
hgs
parents: 16
diff changeset
   391
	drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   392
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
    TPtr newName ( ( XQConversions::qStringToS60Desc( newVolumeName ) )->Des() );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   395
    int err( fs.SetVolumeLabel( newName, drive ));
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
    QString logString = "Rename error:" + QString::number( err );
37
hgs
parents: 16
diff changeset
   398
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   399
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   400
    if( err == KErrNone ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   401
        return FmErrNone;   
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   402
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   403
    else if( err == KErrNotReady ){
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   404
        return FmErrNotReady;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   405
    }
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   406
    else{
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   407
        return FmErrUnKnown;
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   408
    }
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   409
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
37
hgs
parents: 16
diff changeset
   411
/*!
hgs
parents: 16
diff changeset
   412
    Eject drive \a driveName
hgs
parents: 16
diff changeset
   413
*/
hgs
parents: 16
diff changeset
   414
int FmUtils::ejectDrive( const QString &driveName )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
{
37
hgs
parents: 16
diff changeset
   416
    if( driveName.isEmpty() ) {
hgs
parents: 16
diff changeset
   417
        return FmErrWrongParam;
hgs
parents: 16
diff changeset
   418
    }
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   419
    QString logString = "FmUtils::ejectDrive start";
37
hgs
parents: 16
diff changeset
   420
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   422
    TInt drive = 0;
37
hgs
parents: 16
diff changeset
   423
	drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   424
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
    const int KDriveShift = 16;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   427
    // Let SysAp handle eject
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
    RProperty::Set(
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
        KPSUidCoreApplicationUIs,
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
        KCoreAppUIsMmcRemovedWithoutEject,
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
        ECoreAppUIsEjectCommandUsedToDrive | ( drive << KDriveShift )
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
        );
37
hgs
parents: 16
diff changeset
   433
    return FmErrNone;
hgs
parents: 16
diff changeset
   434
}
hgs
parents: 16
diff changeset
   435
hgs
parents: 16
diff changeset
   436
/*!
hgs
parents: 16
diff changeset
   437
    Check if drive \a driveName is accessable for user
hgs
parents: 16
diff changeset
   438
*/
hgs
parents: 16
diff changeset
   439
bool FmUtils::checkDriveAccessFilter( const QString &driveName )
hgs
parents: 16
diff changeset
   440
{
hgs
parents: 16
diff changeset
   441
    if( driveName.isEmpty() ) {
hgs
parents: 16
diff changeset
   442
        return false;
hgs
parents: 16
diff changeset
   443
    }
hgs
parents: 16
diff changeset
   444
    FmDriverInfo driveInfo = queryDriverInfo( driveName );
hgs
parents: 16
diff changeset
   445
    if( ( driveInfo.driveState()& FmDriverInfo::EDriveRam ) ||
hgs
parents: 16
diff changeset
   446
        ( driveInfo.driveState()& FmDriverInfo::EDriveRom ) ) {
hgs
parents: 16
diff changeset
   447
        return false;
hgs
parents: 16
diff changeset
   448
    }
hgs
parents: 16
diff changeset
   449
    return true;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   450
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
37
hgs
parents: 16
diff changeset
   452
/*!
hgs
parents: 16
diff changeset
   453
    This function should be called to adjust path if user goto a drive.
hgs
parents: 16
diff changeset
   454
    data folder will be append to C:\ becuase user could only view C:\data instead C:\ 
hgs
parents: 16
diff changeset
   455
*/
hgs
parents: 16
diff changeset
   456
QString FmUtils::checkDriveToFolderFilter( const QString &path )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   457
{
37
hgs
parents: 16
diff changeset
   458
    QString checkedPath = fillPathWithSplash( path );
hgs
parents: 16
diff changeset
   459
    if( checkedPath.compare( Drive_C, Qt::CaseInsensitive ) == 0 ) {
hgs
parents: 16
diff changeset
   460
        checkedPath += QString( "data" ) + QDir::separator();
hgs
parents: 16
diff changeset
   461
        return checkedPath;
hgs
parents: 16
diff changeset
   462
    }
hgs
parents: 16
diff changeset
   463
    return path;
hgs
parents: 16
diff changeset
   464
hgs
parents: 16
diff changeset
   465
}
hgs
parents: 16
diff changeset
   466
hgs
parents: 16
diff changeset
   467
/*!
hgs
parents: 16
diff changeset
   468
    This function should be called to adjust path if user back to up level path.
hgs
parents: 16
diff changeset
   469
    If user is at C:\data then path level should be returned as C:\
hgs
parents: 16
diff changeset
   470
    Becuase C:\data is root path for C drive 
hgs
parents: 16
diff changeset
   471
*/
hgs
parents: 16
diff changeset
   472
QString FmUtils::checkFolderToDriveFilter( const QString &path )
hgs
parents: 16
diff changeset
   473
{
hgs
parents: 16
diff changeset
   474
    QString logString;
hgs
parents: 16
diff changeset
   475
    logString = QString( "checkFolderToDriveFilter: " ) + path;
hgs
parents: 16
diff changeset
   476
    FM_LOG( logString );
hgs
parents: 16
diff changeset
   477
    QString checkedPath = fillPathWithSplash( path );
hgs
parents: 16
diff changeset
   478
hgs
parents: 16
diff changeset
   479
    logString = QString( "checkFolderToDriveFilter_fillPathWithSplash: " ) + checkedPath;
hgs
parents: 16
diff changeset
   480
    FM_LOG( logString );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   481
    
37
hgs
parents: 16
diff changeset
   482
    if( checkedPath.compare( Folder_C_Data, Qt::CaseInsensitive ) == 0 ) {
hgs
parents: 16
diff changeset
   483
        FM_LOG( QString( " change from c:/data/ to C:/" ) );
hgs
parents: 16
diff changeset
   484
        return Drive_C;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   485
    }
37
hgs
parents: 16
diff changeset
   486
    return path;
hgs
parents: 16
diff changeset
   487
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
37
hgs
parents: 16
diff changeset
   490
/*!
hgs
parents: 16
diff changeset
   491
    Check if \a path is accessable for user
hgs
parents: 16
diff changeset
   492
*/
hgs
parents: 16
diff changeset
   493
int FmUtils::isPathAccessabel( const QString &path )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
{
37
hgs
parents: 16
diff changeset
   495
    // Used to check if path is accessable, very important feature
hgs
parents: 16
diff changeset
   496
    // and will return filemanager error.
hgs
parents: 16
diff changeset
   497
    FM_LOG( QString( "isPathAccessabel:" ) + path );
hgs
parents: 16
diff changeset
   498
    if( path.isEmpty() ) {
hgs
parents: 16
diff changeset
   499
        return FmErrPathNotExist;
hgs
parents: 16
diff changeset
   500
    }
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   501
37
hgs
parents: 16
diff changeset
   502
    // used to filter locked/ejected/corrupted drive
hgs
parents: 16
diff changeset
   503
    // check if drive is available, no matter if it is a drive, a folder, or a file.
hgs
parents: 16
diff changeset
   504
    if( !isDriveAvailable( path ) ) {
hgs
parents: 16
diff changeset
   505
        FM_LOG( QString( "isPathAccessabel false: path is drive and not available" ) );
hgs
parents: 16
diff changeset
   506
        return FmErrDriveNotAvailable;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
    }
37
hgs
parents: 16
diff changeset
   508
hgs
parents: 16
diff changeset
   509
    QFileInfo fileInfo( path );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   510
37
hgs
parents: 16
diff changeset
   511
    if( fileInfo.absoluteFilePath().contains( Drive_C, Qt::CaseInsensitive ) &&
hgs
parents: 16
diff changeset
   512
        !fileInfo.absoluteFilePath().contains( Folder_C_Data, Qt::CaseInsensitive ) ) {
hgs
parents: 16
diff changeset
   513
        FM_LOG( QString( "isPathAccessabel false: path contain C and not in data folder" ) );
hgs
parents: 16
diff changeset
   514
        return FmErrPathDenied;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
    }
37
hgs
parents: 16
diff changeset
   516
    if( !checkDriveAccessFilter( FmUtils::getDriveNameFromPath( fileInfo.absoluteFilePath() ) ) ){
hgs
parents: 16
diff changeset
   517
        return FmErrDriveDenied;
hgs
parents: 16
diff changeset
   518
    }
hgs
parents: 16
diff changeset
   519
    if( !fileInfo.exists() ) {
hgs
parents: 16
diff changeset
   520
        FM_LOG( QString( "isPathAccessabel false: path not exist" ) );
hgs
parents: 16
diff changeset
   521
        return FmErrPathNotExist;
hgs
parents: 16
diff changeset
   522
    }
hgs
parents: 16
diff changeset
   523
    FM_LOG( QString( "isPathAccessabel FmErrNone" ) );
hgs
parents: 16
diff changeset
   524
    return FmErrNone;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   525
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   526
37
hgs
parents: 16
diff changeset
   527
/*!
hgs
parents: 16
diff changeset
   528
    Check if drive related to \a path is available.
hgs
parents: 16
diff changeset
   529
    This function should not check if path is available. Only responsible for checking drive  
hgs
parents: 16
diff changeset
   530
    When MMC is not inserted, also return false
hgs
parents: 16
diff changeset
   531
*/
hgs
parents: 16
diff changeset
   532
bool FmUtils::isDriveAvailable( const QString &path )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
{
37
hgs
parents: 16
diff changeset
   534
    FM_LOG( QString( "isDriveAvailable:" ) + path );
hgs
parents: 16
diff changeset
   535
    if( path.isEmpty() ) {
hgs
parents: 16
diff changeset
   536
        return false;
hgs
parents: 16
diff changeset
   537
    }
hgs
parents: 16
diff changeset
   538
    FmDriverInfo::DriveState driveState = queryDriverInfo( path ).driveState();
hgs
parents: 16
diff changeset
   539
    if( ( driveState & FmDriverInfo::EDriveAvailable ) ) {
hgs
parents: 16
diff changeset
   540
        FM_LOG( QString( "isDriveAvailable true" ) );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   541
        return true;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   542
    }
37
hgs
parents: 16
diff changeset
   543
    FM_LOG( QString( "isDriveAvailable false" ) );
hgs
parents: 16
diff changeset
   544
    return false;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   545
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
37
hgs
parents: 16
diff changeset
   547
/*!
hgs
parents: 16
diff changeset
   548
    Check if \a folderPath is default folder for system
hgs
parents: 16
diff changeset
   549
*/
hgs
parents: 16
diff changeset
   550
bool FmUtils::isDefaultFolder( const QString &folderPath  )
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   551
{
37
hgs
parents: 16
diff changeset
   552
    HBufC *path = XQConversions::qStringToS60Desc( folderPath );
hgs
parents: 16
diff changeset
   553
    TPtrC desFolderPath( path->Des() );
hgs
parents: 16
diff changeset
   554
    
hgs
parents: 16
diff changeset
   555
    bool ret( true );
hgs
parents: 16
diff changeset
   556
    TInt pathType( PathInfo::PathType( desFolderPath ) );
hgs
parents: 16
diff changeset
   557
    switch( pathType ){
hgs
parents: 16
diff changeset
   558
       case PathInfo::ENotSystemPath:{
hgs
parents: 16
diff changeset
   559
           QString locString( localize( folderPath ) );
hgs
parents: 16
diff changeset
   560
            if ( locString.isEmpty() ){
hgs
parents: 16
diff changeset
   561
                ret = false;
hgs
parents: 16
diff changeset
   562
                break;
hgs
parents: 16
diff changeset
   563
            }
hgs
parents: 16
diff changeset
   564
            ret = true;
hgs
parents: 16
diff changeset
   565
            break;
hgs
parents: 16
diff changeset
   566
            }
hgs
parents: 16
diff changeset
   567
        case PathInfo::EPhoneMemoryRootPath: // FALL THROUGH
hgs
parents: 16
diff changeset
   568
        case PathInfo::EMemoryCardRootPath: // FALL THROUGH
hgs
parents: 16
diff changeset
   569
        case PathInfo::ERomRootPath:{
hgs
parents: 16
diff changeset
   570
            ret = false;
hgs
parents: 16
diff changeset
   571
            break;
hgs
parents: 16
diff changeset
   572
        }
hgs
parents: 16
diff changeset
   573
        // Accept other folders
hgs
parents: 16
diff changeset
   574
        default:{
hgs
parents: 16
diff changeset
   575
            ret = true;
hgs
parents: 16
diff changeset
   576
            break;
hgs
parents: 16
diff changeset
   577
        }
hgs
parents: 16
diff changeset
   578
    }
hgs
parents: 16
diff changeset
   579
    delete path;
hgs
parents: 16
diff changeset
   580
    return ret;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   581
}
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   582
37
hgs
parents: 16
diff changeset
   583
/*!
hgs
parents: 16
diff changeset
   584
    Create system default folders for drive \a driveName.
hgs
parents: 16
diff changeset
   585
    Default folders should be created after format a drive.
hgs
parents: 16
diff changeset
   586
*/
hgs
parents: 16
diff changeset
   587
void FmUtils::createDefaultFolders( const QString &driveName )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   588
{
37
hgs
parents: 16
diff changeset
   589
    if( driveName.isEmpty() ) {
hgs
parents: 16
diff changeset
   590
        return;
hgs
parents: 16
diff changeset
   591
    }
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   592
    int err;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   593
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   594
    TInt drive = 0;
37
hgs
parents: 16
diff changeset
   595
    drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   596
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   597
    RFs fs;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   598
    err = fs.Connect();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   599
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   600
    if( err != KErrNone ){
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   601
        return;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   602
    }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   603
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   604
    quint32 drvStatus( 0 );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   605
    err = DriveInfo::GetDriveStatus( fs, drive, drvStatus );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   606
    if ( !( drvStatus & DriveInfo::EDriveUserVisible ) ||
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   607
        ( drvStatus & ( DriveInfo::EDriveRemote |
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   608
                        DriveInfo::EDriveReadOnly |
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   609
                        DriveInfo::EDriveUsbMemory ) ) ){
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   610
            return; 
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   611
        }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   612
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   613
    TEntry entry;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   614
    CDesCArray* array = PathInfo::GetListOfPathsLC( drive );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   615
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   616
    TInt count( array->MdcaCount() );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   617
    for ( TInt i( 0 ); i < count; ++i )
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   618
        {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   619
        TPtrC fullPath( array->MdcaPoint( i ) );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   620
        TBool allow( ETrue );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   621
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   622
        if ( drvStatus & DriveInfo::EDriveRemovable )
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   623
            {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   624
            // Filter few folder types from physically removable memory cards
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   625
            TInt pathType( PathInfo::PathType( fullPath ) );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   626
            switch( pathType )
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   627
                {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   628
                case PathInfo::EGamesPath: // FALL THROUGH
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   629
                case PathInfo::EInstallsPath: // FALL THROUGH
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   630
                case PathInfo::EGsmPicturesPath: // FALL THROUGH
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   631
                case PathInfo::EMmsBackgroundImagesPath: // FALL THROUGH
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   632
                case PathInfo::EPresenceLogosPath:
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   633
                    {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   634
                    allow = EFalse;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   635
                    }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   636
                default:
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   637
                    {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   638
                    break;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   639
                    }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   640
                }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   641
            }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   642
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   643
        if ( allow ){
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   644
            fs.MkDirAll( fullPath ); // Ignore error
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   645
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   646
            if ( fs.Entry( fullPath, entry ) == KErrNone ){
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   647
                if( entry.IsHidden() ){
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   648
                // If setting fails, File Manager can still go on
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   649
                    fs.SetEntry(
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   650
                         fullPath, entry.iModified, 0, KEntryAttHidden );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   651
                }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   652
            }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   653
        }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   654
    }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   655
    CleanupStack::PopAndDestroy( array );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   656
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   657
37
hgs
parents: 16
diff changeset
   658
/*!
hgs
parents: 16
diff changeset
   659
    In Symbian system, default folders will be localized.
hgs
parents: 16
diff changeset
   660
    So localize is used to check if a path is a default folder
hgs
parents: 16
diff changeset
   661
    \sa isDefaultFolder
hgs
parents: 16
diff changeset
   662
*/
hgs
parents: 16
diff changeset
   663
QString FmUtils::localize( const QString &path )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   664
{
37
hgs
parents: 16
diff changeset
   665
    // HbDirectoryNameLocalizer can not recognize path with \ in the end
hgs
parents: 16
diff changeset
   666
    QString locPath( removePathSplash( path ) );
hgs
parents: 16
diff changeset
   667
    
hgs
parents: 16
diff changeset
   668
    HbDirectoryNameLocalizer localizer;
hgs
parents: 16
diff changeset
   669
    return localizer.translate( locPath );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   670
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   671
37
hgs
parents: 16
diff changeset
   672
/*!
hgs
parents: 16
diff changeset
   673
    set the \a desFile attributes as the same with \a srcFile
hgs
parents: 16
diff changeset
   674
*/
hgs
parents: 16
diff changeset
   675
int FmUtils::setFileAttributes( const QString &srcFile, const QString &desFile )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   676
{
37
hgs
parents: 16
diff changeset
   677
    RFs fsSession;
hgs
parents: 16
diff changeset
   678
    User::LeaveIfError( fsSession.Connect() ); 
hgs
parents: 16
diff changeset
   679
    CleanupClosePushL( fsSession );
hgs
parents: 16
diff changeset
   680
    RFile64 src;
hgs
parents: 16
diff changeset
   681
    RFile64 des;
hgs
parents: 16
diff changeset
   682
    HBufC *buf1 = XQConversions::qStringToS60Desc( removePathSplash( formatPath( srcFile ) ) );
hgs
parents: 16
diff changeset
   683
    HBufC *buf2 = XQConversions::qStringToS60Desc( removePathSplash( formatPath( desFile ) ) );
hgs
parents: 16
diff changeset
   684
    User::LeaveIfError( src.Open( fsSession, *buf1, EFileRead | EFileShareReadersOnly ) );
hgs
parents: 16
diff changeset
   685
    User::LeaveIfError( des.Open( fsSession, *buf2, EFileWrite | EFileShareExclusive ) );
hgs
parents: 16
diff changeset
   686
    TTime mod;
hgs
parents: 16
diff changeset
   687
    int err = src.Modified( mod );;
hgs
parents: 16
diff changeset
   688
    if ( err == FmErrNone ) {
hgs
parents: 16
diff changeset
   689
        err = des.SetModified( mod );    
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   690
    }
37
hgs
parents: 16
diff changeset
   691
    TUint att( 0 );
hgs
parents: 16
diff changeset
   692
    if ( err == FmErrNone ) {
hgs
parents: 16
diff changeset
   693
        err = src.Att( att );        
hgs
parents: 16
diff changeset
   694
    }
hgs
parents: 16
diff changeset
   695
    if ( err == FmErrNone ) {
hgs
parents: 16
diff changeset
   696
        des.SetAtt( att, ( ~att ) & KEntryAttMaskSupported );
hgs
parents: 16
diff changeset
   697
    }    
hgs
parents: 16
diff changeset
   698
    src.Close();
hgs
parents: 16
diff changeset
   699
    des.Close();
hgs
parents: 16
diff changeset
   700
    fsSession.Close();
hgs
parents: 16
diff changeset
   701
    CleanupStack::PopAndDestroy(); // fsSession
hgs
parents: 16
diff changeset
   702
    return err;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   703
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   704
37
hgs
parents: 16
diff changeset
   705
/*!
hgs
parents: 16
diff changeset
   706
    judge whether there is enough space on \a targetDrive for \a size.
hgs
parents: 16
diff changeset
   707
    return true if has, false if not.
hgs
parents: 16
diff changeset
   708
*/
hgs
parents: 16
diff changeset
   709
bool FmUtils::hasEnoughSpace( const QString &targetDrive, qint64 size )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   710
{
37
hgs
parents: 16
diff changeset
   711
    RFs fsSession;
hgs
parents: 16
diff changeset
   712
    QT_TRAP_THROWING( fsSession.Connect() ); 
hgs
parents: 16
diff changeset
   713
    CleanupClosePushL( fsSession );
hgs
parents: 16
diff changeset
   714
    TInt dstDrv(0);
hgs
parents: 16
diff changeset
   715
    HBufC* hbuf = XQConversions::qStringToS60Desc( targetDrive );
hgs
parents: 16
diff changeset
   716
    QT_TRAP_THROWING( RFs::CharToDrive( hbuf->operator [](0), dstDrv ) );
hgs
parents: 16
diff changeset
   717
    bool ret = !SysUtil::DiskSpaceBelowCriticalLevelL( &fsSession,  size , dstDrv );
hgs
parents: 16
diff changeset
   718
    CleanupStack::PopAndDestroy(); // fsSession
hgs
parents: 16
diff changeset
   719
    return ret;
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   720
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   721
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   722
37
hgs
parents: 16
diff changeset
   723
/*!
hgs
parents: 16
diff changeset
   724
    move one file insice the same drive, from \a source to \a target.
hgs
parents: 16
diff changeset
   725
    return KErrNone if successful, otherwise one of the other system-wide error codes.
hgs
parents: 16
diff changeset
   726
*/
hgs
parents: 16
diff changeset
   727
int FmUtils::moveInsideDrive( const QString &source, const QString &target )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   728
{
37
hgs
parents: 16
diff changeset
   729
    RFs fsSession;
hgs
parents: 16
diff changeset
   730
    QT_TRAP_THROWING( fsSession.Connect() ); 
hgs
parents: 16
diff changeset
   731
    CleanupClosePushL( fsSession );
hgs
parents: 16
diff changeset
   732
    HBufC* oldName = XQConversions::qStringToS60Desc( source );
hgs
parents: 16
diff changeset
   733
    HBufC* newName = XQConversions::qStringToS60Desc( target );
hgs
parents: 16
diff changeset
   734
    int ret = fsSession.Rename( *oldName, *newName );
hgs
parents: 16
diff changeset
   735
    CleanupStack::PopAndDestroy(); // fsSession
hgs
parents: 16
diff changeset
   736
    return ret;    
hgs
parents: 16
diff changeset
   737
}
hgs
parents: 16
diff changeset
   738
hgs
parents: 16
diff changeset
   739
/*!
hgs
parents: 16
diff changeset
   740
   Launch a file with associated application.
hgs
parents: 16
diff changeset
   741
*/
hgs
parents: 16
diff changeset
   742
int FmUtils::launchFile( const QString &filePath )
hgs
parents: 16
diff changeset
   743
hgs
parents: 16
diff changeset
   744
{
hgs
parents: 16
diff changeset
   745
    QFile file( filePath );
hgs
parents: 16
diff changeset
   746
    if( !file.exists() ) {
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   747
        return false;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   748
    }
37
hgs
parents: 16
diff changeset
   749
        
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   750
    XQApplicationManager mAiwMgr;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   751
    XQAiwRequest *request = mAiwMgr.create(file);
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   752
    if ( request == 0 ) {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   753
        // No handlers for the URI
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   754
        return FmErrUnKnown;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   755
    }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   756
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   757
    // Set function parameters
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   758
    QList<QVariant> args;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   759
    args << file.fileName();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   760
    request->setArguments(args);
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   761
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   762
    // Send the request
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   763
    bool res = request->send();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   764
    if  (!res) 
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   765
    {
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   766
       // Request failed. 
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   767
      int error = request->lastError();
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   768
      
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   769
      delete request;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   770
      return FmErrUnKnown;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   771
    }
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   772
    
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   773
    delete request;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   774
    return FmErrNone;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   775
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   776
37
hgs
parents: 16
diff changeset
   777
/*!
hgs
parents: 16
diff changeset
   778
    Send files( \a filePathList ) with share ui.
hgs
parents: 16
diff changeset
   779
*/
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   780
void FmUtils::sendFiles( QStringList &filePathList )
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   781
{
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   782
    ShareUi shareui;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   783
    shareui.send( filePathList, false );
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   784
}
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   785
37
hgs
parents: 16
diff changeset
   786
/*!
hgs
parents: 16
diff changeset
   787
    return path for backup restore config file.
hgs
parents: 16
diff changeset
   788
    Currently \a appPath is not used.
hgs
parents: 16
diff changeset
   789
*/
14
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   790
QString FmUtils::getBurConfigPath( QString appPath )
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   791
{
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   792
    Q_UNUSED( appPath );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   793
    QString path( BURCONFIGFILE );
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   794
    return path;
1957042d8c7e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   795
}
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   796
37
hgs
parents: 16
diff changeset
   797
/*!
hgs
parents: 16
diff changeset
   798
    return MetaData string for \a filePath
hgs
parents: 16
diff changeset
   799
*/
hgs
parents: 16
diff changeset
   800
QString FmUtils::getFileType( const QString &filePath  )
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   801
{
37
hgs
parents: 16
diff changeset
   802
    RApaLsSession apaSession;
hgs
parents: 16
diff changeset
   803
    TDataType dataType;
hgs
parents: 16
diff changeset
   804
    TUid appUid;
hgs
parents: 16
diff changeset
   805
    
hgs
parents: 16
diff changeset
   806
    TBuf<128> mimeTypeBuf;
hgs
parents: 16
diff changeset
   807
        
hgs
parents: 16
diff changeset
   808
    int err = apaSession.Connect();
hgs
parents: 16
diff changeset
   809
    
hgs
parents: 16
diff changeset
   810
    if ( err == KErrNone ){   
hgs
parents: 16
diff changeset
   811
        err = apaSession.AppForDocument( XQConversions::qStringToS60Desc( filePath )->Des(), 
hgs
parents: 16
diff changeset
   812
                                         appUid, dataType );
hgs
parents: 16
diff changeset
   813
        
hgs
parents: 16
diff changeset
   814
        if( err == KErrNone ){
hgs
parents: 16
diff changeset
   815
            mimeTypeBuf.Copy(dataType.Des8());
hgs
parents: 16
diff changeset
   816
        }  
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   817
    }
37
hgs
parents: 16
diff changeset
   818
    
hgs
parents: 16
diff changeset
   819
    apaSession.Close();
hgs
parents: 16
diff changeset
   820
    return XQConversions::s60DescToQString( mimeTypeBuf );
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   821
}
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   822
37
hgs
parents: 16
diff changeset
   823
/*!
hgs
parents: 16
diff changeset
   824
    Check if drive \a driveName is drive C
hgs
parents: 16
diff changeset
   825
*/
hgs
parents: 16
diff changeset
   826
bool FmUtils::isDriveC( const QString &driveName )
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   827
{
37
hgs
parents: 16
diff changeset
   828
    if( driveName.isEmpty() ) {
hgs
parents: 16
diff changeset
   829
        return false;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   830
    }
37
hgs
parents: 16
diff changeset
   831
    TInt drive = 0;
hgs
parents: 16
diff changeset
   832
    drive = driveName[0].toUpper().toAscii() - 'A' + EDriveA;
hgs
parents: 16
diff changeset
   833
    if( drive == EDriveC ){
hgs
parents: 16
diff changeset
   834
        return true;
hgs
parents: 16
diff changeset
   835
    }
hgs
parents: 16
diff changeset
   836
    else{
hgs
parents: 16
diff changeset
   837
        return false;
hgs
parents: 16
diff changeset
   838
    }
hgs
parents: 16
diff changeset
   839
   
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   840
}
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   841
37
hgs
parents: 16
diff changeset
   842
/*!
hgs
parents: 16
diff changeset
   843
    return max file name length
hgs
parents: 16
diff changeset
   844
*/
hgs
parents: 16
diff changeset
   845
int FmUtils::getMaxFileNameLength()
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   846
{
37
hgs
parents: 16
diff changeset
   847
    return KMaxFileName;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   848
}
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   849
37
hgs
parents: 16
diff changeset
   850
/*!
hgs
parents: 16
diff changeset
   851
    Check if length of \a path is exceed max path length. 
hgs
parents: 16
diff changeset
   852
*/
hgs
parents: 16
diff changeset
   853
bool FmUtils::checkMaxPathLength( const QString& path )
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   854
{
37
hgs
parents: 16
diff changeset
   855
    if( path.length() > KMaxPath ) {
hgs
parents: 16
diff changeset
   856
        return false;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   857
    }
37
hgs
parents: 16
diff changeset
   858
    return true;
16
ada7962b4308 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 14
diff changeset
   859
}