filemanager/src/filemanager/src/fmdriverlistwidget.cpp
changeset 27 df183af6b92f
parent 25 b7bfdea70ca2
child 32 39cf9ced4cc4
--- a/filemanager/src/filemanager/src/fmdriverlistwidget.cpp	Fri Jun 25 17:08:34 2010 +0800
+++ b/filemanager/src/filemanager/src/fmdriverlistwidget.cpp	Fri Jul 09 11:17:55 2010 +0800
@@ -257,13 +257,21 @@
         return;
         }
 
-    QString title( hbTrId( "Drive name ") );  
-    QString volumeName = driverInfo.volumeName();
-
+    QString title( hbTrId( "Drive name ") );
+    //save the volume status, empty or set
+    bool needToSetVolume = false;
+    QString volumeName = FmUtils::getVolumeNameWithDefaultNameIfNull( diskName, needToSetVolume );    
+    QString oldVolumeName( volumeName );
     QString associatedDrives( FmUtils::getDriveLetterFromPath( diskName ) );
-    while( FmDlgUtils::showTextQuery( title, volumeName, false, FmMaxLengthofDriveName, associatedDrives ) ){
+    //use isReturnFalseWhenNoTextChanged = false in order that FmUtils::renameDrive( driveName, volumeName ) will
+    //be excuted at lease once to set the volume name.
+    while( FmDlgUtils::showTextQuery( title, volumeName, QStringList(), FmMaxLengthofDriveName, associatedDrives, false ) ){
+        //if volume is not set or oldVolumeName != volumeName , FmUtils::renameDrive will be called
+        if ( oldVolumeName == volumeName && !needToSetVolume ) {
+            break;
+        }
         int err = FmUtils::renameDrive( diskName, volumeName );
-        if ( err == FmErrNone ){
+        if ( err == FmErrNone ) {
             FmDlgUtils::information( hbTrId( "The name has been changed!" ) );
             mModel->refresh();
             break;