filemanager/src/filemanager/src/operationservice/fmoperationformat_s60.cpp
changeset 46 d58987eac7e8
parent 37 15bc28c9dd51
--- a/filemanager/src/filemanager/src/operationservice/fmoperationformat_s60.cpp	Tue Aug 24 10:24:14 2010 +0800
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationformat_s60.cpp	Wed Sep 29 10:37:03 2010 +0800
@@ -19,8 +19,11 @@
 #include "fmcommon.h"
 #include "fmoperationbase.h"
 #include "fmutils.h"
+#include "fmviewmanager.h"
+#include "fmserviceutils.h"
 
 #include <QString>
+#include <QSettings>
 
 #include <f32file.h>
 #include <e32property.h>
@@ -71,6 +74,8 @@
         emit notifyError( FmErrWrongParam, QString() );
         return;
     }
+    FmViewManager::viewManager()->serviceUtils()->closeApps();
+    
     
     RFormat format;
     
@@ -84,7 +89,9 @@
 
     TInt drive = 0;
     drive = mDriverName[0].toUpper().toAscii() - 'A' + EDriveA;
-
+    // save volume name for MassStorage
+    storeVolumeName( drive );
+    
     TDriveName formatDriveName( TDriveUnit( drive ).Name() );
 
     int finalValue = 0;
@@ -196,18 +203,60 @@
         format.Close();        
         fs.Close();
         
+        // restore volume name for MassStorage
+        restoreVolumeName( drive );
         FmUtils::createDefaultFolders( mDriverName );
     }
 
+    FmViewManager::viewManager()->serviceUtils()->restartApps();
+    
+    // refresh drive space no care if cancel, error or finished.
+    // as filemanger cannot notify drive space changed
+    // do not refresh path as QFileSystemModel will do auto-refresh
+    emit driveSpaceChanged();   
     if( err == KErrNone ){
         emit notifyFinish();        
     }
     else{
         emit notifyError( FmErrTypeFormatFailed, QString() );
     }
-    // refresh drive space no care if cancel, error or finished.
-    // as filemanger cannot notify drive space changed
-    // do not refresh path as QFileSystemModel will do auto-refresh
-    emit driveSpaceChanged();    
+}
+
+void FmOperationFormat::storeVolumeName( int drive )
+{
+    FmDriverInfo driverInfo = FmUtils::queryDriverInfo( FmUtils::numberToDriveName( drive ) );
+    if ( driverInfo.driveType() == FmDriverInfo::EDriveTypeMassStorage )
+    {
+        QString volumeName( driverInfo.volumeName() );
+        QSettings settings( "Nokia", "FileManager" );
+        settings.beginGroup( "Settings" );
+        settings.setValue( "MassStorageDriveNumber", drive );
+        settings.setValue( "MassStorageVolumeName", volumeName );
+        settings.endGroup();
+    }
+}
+
+// -----------------------------------------------------------------------------
+// CFileManagerEngine::RestoreVolumeNameL()
+//
+// -----------------------------------------------------------------------------
+//  
+void FmOperationFormat::restoreVolumeName( int drive )
+{
+
+    FmDriverInfo driveInfo = FmUtils::queryDriverInfo( FmUtils::numberToDriveName( drive ));
+    if ( driveInfo.driveType() == FmDriverInfo::EDriveTypeMassStorage )
+    {
+        QSettings settings("Nokia", "FileManager");
+        settings.beginGroup("Settings");
+        int massStorageDriveNumber    = settings.value( "MassStorageDriveNumber", -1 ).toInt();
+        QString massStorageVolumeName = settings.value( "MassStorageVolumeName", QString() ).toString();
+        settings.endGroup();
     
+        if ( ( !massStorageVolumeName.isEmpty() ) &&
+                ( massStorageDriveNumber == drive ) )
+        {
+            FmUtils::renameDrive( FmUtils::numberToDriveName( drive ), massStorageVolumeName );
+        }
+    }
 }