camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamPhotoSettingsList.cpp
branchRCL_3
changeset 17 8f559c47d7fd
parent 13 38fb6f7eacd5
child 19 e32fcfe0045f
--- a/camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamPhotoSettingsList.cpp	Tue May 25 12:22:04 2010 +0300
+++ b/camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamPhotoSettingsList.cpp	Wed Jun 09 09:21:41 2010 +0300
@@ -241,8 +241,51 @@
 		        {
                 iDrive = static_cast<TDriveNumber>(0); //Doesn't matter
 		        }
-		    TInt includedMedias = AknCommonDialogsDynMem::EMemoryTypeMMCExternal |
-                                 AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage;   
+		    TInt includedMedias(0);
+		    CGSCamcorderPlugin* parent = static_cast<CGSCamcorderPlugin*> 
+		                                ( AppUi->View( KGSCamcorderGSPluginUid ) );
+		    TInt driveCount(0);
+		    if( !parent->IntegerSettingValue(ECamSettingItemRemovePhoneMemoryUsage) )
+		        {
+                includedMedias |= AknCommonDialogsDynMem::EMemoryTypePhone;
+                driveCount++;
+		        }
+		    
+		    TInt drive(0);
+		    TUint driveStatus(0);    
+		    TInt err(0);
+		    err = DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, drive );
+		    if( err == KErrNone )
+		        {
+		        err = DriveInfo::GetDriveStatus( CCoeEnv::Static()->FsSession(), 
+		                                         drive, 
+		                                         driveStatus );
+		        if( err == KErrNone )
+		            {
+                    if( ( driveStatus & DriveInfo::EDrivePresent) ==  DriveInfo::EDrivePresent )
+                        {
+                        includedMedias |= AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage;
+                        driveCount++;
+                        }
+		            }
+                }
+		    
+		    err = DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRemovableMassStorage, drive );
+            if( err == KErrNone )
+                {
+                err = DriveInfo::GetDriveStatus( CCoeEnv::Static()->FsSession(), 
+                                                 drive,
+                                                 driveStatus );
+                if( err == KErrNone )
+                    {
+                    if( ( driveStatus & DriveInfo::EDrivePresent) ==  DriveInfo::EDrivePresent )
+                        {
+                        includedMedias |= AknCommonDialogsDynMem::EMemoryTypeMMCExternalInDevice;
+                        driveCount++;
+                        }
+                    }
+                }
+		    
 		    settingItem = new ( ELeave ) 
 		                  CAknMemorySelectionSettingItemMultiDrive(
 		                                                      aIdentifier,
@@ -250,7 +293,11 @@
                                                               );
 		    static_cast<CAknMemorySelectionSettingItemMultiDrive*>(settingItem)
 		                        ->SetIncludedMediasL(includedMedias);
-            }
+		    if( driveCount <= 1 )
+		        {
+                settingItem->SetHidden( ETrue );
+                }
+		    }
             break;
  
         case ECamSettingItemPhotoNameBaseType: