commonuis/CommonDialogs/src/caknmemoryselectionsettingitemmultidrive.cpp
branchRCL_3
changeset 55 aecbbf00d063
parent 10 9f56a4e1b8ab
child 56 d48ab3b357f1
--- a/commonuis/CommonDialogs/src/caknmemoryselectionsettingitemmultidrive.cpp	Thu Aug 19 10:11:06 2010 +0300
+++ b/commonuis/CommonDialogs/src/caknmemoryselectionsettingitemmultidrive.cpp	Tue Aug 31 15:28:30 2010 +0300
@@ -26,45 +26,26 @@
 #include "MAknCFDFileSystemObserver.h"
 
 
-NONSHARABLE_CLASS(CAknMemorySelectionSettingItemExtension)
-    : public CBase,
-      public MAknCFDFileSystemObserver
+NONSHARABLE_CLASS(CAknMemorySelectionSettingItemExtension) : public CBase,
+                                                             public MAknCFDFileSystemObserver
     {
 
 public:
-    CAknMemorySelectionSettingItemExtension(
-        CAknMemorySelectionSettingItemMultiDrive* aSettingItem );
+    CAknMemorySelectionSettingItemExtension(CAknMemorySelectionSettingItemMultiDrive* aSettingItem);
     ~CAknMemorySelectionSettingItemExtension();
 
-    /**
-     * second phase construct
-     *
-     * @param aIncludedMedias bit flag definition of which medias are
-     *        included in the dialog. See AknCommonDialogsDynMem::TMemoryTypes.
-     */
-    void ConstructL( TInt aIncludedMedias );
+    // second phase construct
+    void ConstructL();
     
     /**
      * Static constructor.
      *
      * @since S60 5.0
      * @param aSettingItem defines a pointer to the setting item. 
-     * @param aIncludedMedias bit flag definition of which medias are
-     *        included in the dialog. See AknCommonDialogsDynMem::TMemoryTypes.
-     *        if not set, use dialog default value.
      * @return Returns a pointer to an instance of itself.
      */
-    static CAknMemorySelectionSettingItemExtension* NewL(
-        CAknMemorySelectionSettingItemMultiDrive* aSettingItem,
-        TInt aIncludedMedias = -1 );
+    static CAknMemorySelectionSettingItemExtension* NewL(CAknMemorySelectionSettingItemMultiDrive* aSettingItem);
     
-    /**
-     * Construct memory selection dialog
-     *
-     * @param aIncludedMedias bit flag definition of which medias are
-     *        included in the dialog. See AknCommonDialogsDynMem::TMemoryTypes.
-     */
-    void ConstructDialogL( TInt aIncludedMedias );
     
     // Functions from base interface MAknCFDFileSystemObserver
     /**
@@ -80,9 +61,6 @@
     
     // Own: The extension of setting item
     CAknCFDFileSystemEvent* iFSEvent;
-    
-    // Own: Indicate which media types of drives could be visible.
-    TInt iIncludedMedias;
     };
 
 // ======== MEMBER FUNCTIONS ========
@@ -116,10 +94,7 @@
 //
 EXPORT_C void CAknMemorySelectionSettingItemMultiDrive::CompleteConstructionL()
     {
-    if ( !iExtension )
-        {
-        iExtension = CAknMemorySelectionSettingItemExtension::NewL( this );
-        }
+    iExtension = CAknMemorySelectionSettingItemExtension::NewL(this);
     }
 
 
@@ -144,30 +119,28 @@
     else
         {
         // Changed with selection key
-        if( ( iExtension->iDialog->NumberOfItems() == 2 ) )
+        if( ( iExtension->iDialog->NumberOfItems() == 2 ) &&
+                ( !iExtension->iDialog->HasUnavailbleMMC() ) )
             {
             // Two items in list, function as binary pop-up setting page
             TInt selectedIndex =
-                iExtension->iDialog->FindIndexByDrive( iInternalData );
+                iExtension->iDialog->FindIndexByDrive(
+                    iInternalData );
 	          if ( selectedIndex == KErrNotFound )
 	              {
 	              selectedIndex = 0;
 	              }
 	          else
 	              {
-                  TDriveNumber driveNum =
-                      iExtension->iDialog->FindDriveByIndex( 1 - selectedIndex );
-                  if ( AknCFDUtility::DriveStatusL( driveNum ) == EDriveOK )
-                      {
-                      selectedIndex = 1 - selectedIndex; // switch to another one.
-                      }
+	              selectedIndex = 1 - selectedIndex; // switch to another one.
 	              }
             iInternalData =
                 iExtension->iDialog->FindDriveByIndex( selectedIndex );
             }
         else
             {
-            iExtension->iDialog->ExecuteL( iInternalData, NULL, NULL );
+            iExtension->iDialog->ExecuteL(
+                iInternalData, NULL, NULL );
             }
         }
 
@@ -209,46 +182,25 @@
         CompleteConstructionL();
         }
 
-    TInt memoryIndex = iExtension->iDialog->FindIndexByDrive( iInternalData );
-    if ( AknCFDUtility::DriveStatusL( iInternalData ) != EDriveOK )
+    TInt memoryIndex = iExtension->iDialog->FindIndexByDrive(
+                            iInternalData );
+    if ( AknCFDUtility::DriveStatusL( iInternalData )
+         != EDriveOK )
         {
-        // Find the first proper drive in the dialog list.
-        memoryIndex = 0;
-        while ( memoryIndex < iExtension->iDialog->NumberOfItems() )
-            {
-            iInternalData = iExtension->iDialog->FindDriveByIndex( memoryIndex );
-            if ( AknCFDUtility::DriveStatusL( iInternalData ) == EDriveOK )
-                {
-                break;
-                }
-            memoryIndex++;
-            }
-        // Not find the proper drive.
-        if ( memoryIndex == iExtension->iDialog->NumberOfItems() )
-            {
-            iInternalData = EDriveC;
-            memoryIndex = KErrNotFound;
-            }
+        TInt drive;
+        User::LeaveIfError( DriveInfo::GetDefaultDrive(
+            DriveInfo::EDefaultSystem, drive ) );
+        memoryIndex = iExtension->iDialog->FindIndexByDrive(
+                            TDriveNumber( drive ) );
         }
-
-    if ( memoryIndex == KErrNotFound )
-        {
-        return KNullDesC;
-        }
-
     if( !iSettingText )
         iSettingText = HBufC::NewL( KMaxName );
     TPtr ptrSettingText( iSettingText->Des() );
     iExtension->iDialog->GetItem( memoryIndex, ptrSettingText );
-
     return *iSettingText;
     }
 
 
-// ---------------------------------------------------------------------------
-// CAknMemorySelectionSettingItemMultiDrive::UpdateSettingItemContentL
-// ---------------------------------------------------------------------------
-//
 void CAknMemorySelectionSettingItemMultiDrive::UpdateSettingItemContentL()
     {
     if ( iExtension->iDialog != NULL )
@@ -258,37 +210,22 @@
 
         // Update setting item value.
         TInt selectedIndex = iExtension->iDialog->
-            FindIndexByDrive( iInternalData );
+            FindIndexByDrive(iInternalData);
 
-        if ( selectedIndex == KErrNotFound )
+        if (selectedIndex == KErrNotFound)
             {
-            // If the selected index is not found, set it to the first one
-            selectedIndex = 0;
+            iInternalData = EDriveC;
             }
-        iInternalData = iExtension->iDialog->FindDriveByIndex( selectedIndex );
+        else
+            {
+            iInternalData = iExtension->iDialog->
+                FindDriveByIndex(selectedIndex);
+            }
 
         UpdateListBoxTextL();
         }
     }
 
-// ---------------------------------------------------------------------------
-// CAknMemorySelectionSettingItemMultiDrive::SetIncludedMediasL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknMemorySelectionSettingItemMultiDrive::SetIncludedMediasL(
-    TInt aIncludedMedias )
-    {
-    if ( !iExtension )
-        {
-        iExtension = CAknMemorySelectionSettingItemExtension::NewL(
-            this, aIncludedMedias );
-        }
-    else if ( iExtension->iIncludedMedias != aIncludedMedias )
-        {
-        iExtension->ConstructDialogL( aIncludedMedias );
-        }
-    }
-
 
 // ---------------------------------------------------------------------------
 // CAknMemorySelectionSettingItemExtension
@@ -296,8 +233,7 @@
 // ---------------------------------------------------------------------------
 //
 CAknMemorySelectionSettingItemExtension::
-    CAknMemorySelectionSettingItemExtension(
-        CAknMemorySelectionSettingItemMultiDrive* aSettingItem )
+        CAknMemorySelectionSettingItemExtension(CAknMemorySelectionSettingItemMultiDrive* aSettingItem)
         : iSettingItem( aSettingItem )
     {
     }
@@ -340,43 +276,16 @@
 
 // ---------------------------------------------------------------------------
 // CAknMemorySelectionSettingItemExtension
-// ConstructDialogL
-// ---------------------------------------------------------------------------
-//
-void CAknMemorySelectionSettingItemExtension::ConstructDialogL(
-    TInt aIncludedMedias )
-    {
-    if ( iDialog )
-        {
-        delete iDialog;
-        iDialog = NULL;
-        }
-    
-    iIncludedMedias = aIncludedMedias;
-    
-    if ( aIncludedMedias == -1 )
-        {
-        iDialog = CAknMemorySelectionDialogMultiDrive::NewL(
-            ECFDDialogTypeNormal, ETrue );
-        }
-    else
-        {
-        iDialog = CAknMemorySelectionDialogMultiDrive::NewL( 
-            ECFDDialogTypeNormal, 0, ETrue, aIncludedMedias );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CAknMemorySelectionSettingItemExtension
 // ConstructL
 // ---------------------------------------------------------------------------
 //
-void CAknMemorySelectionSettingItemExtension::ConstructL( TInt aIncludedMedias )
+void CAknMemorySelectionSettingItemExtension::ConstructL()
     {
-    ConstructDialogL( aIncludedMedias );
     
-    iFSEvent = CAknCFDFileSystemEvent::NewL(
-        CCoeEnv::Static()->FsSession(), *this, ENotifyDisk );
+    iDialog = CAknMemorySelectionDialogMultiDrive::NewL(
+            ECFDDialogTypeNormal, ETrue);
+    
+    iFSEvent = CAknCFDFileSystemEvent::NewL(CCoeEnv::Static()->FsSession(), *this, ENotifyDisk);
     }
 
 // ---------------------------------------------------------------------------
@@ -384,16 +293,13 @@
 // NewL
 // ---------------------------------------------------------------------------
 //
-CAknMemorySelectionSettingItemExtension*
-    CAknMemorySelectionSettingItemExtension::NewL(
-        CAknMemorySelectionSettingItemMultiDrive* aSettingItem,
-        TInt aIncludedMedias )
+CAknMemorySelectionSettingItemExtension*  CAknMemorySelectionSettingItemExtension::NewL(CAknMemorySelectionSettingItemMultiDrive* aSettingItem)
     {
     CAknMemorySelectionSettingItemExtension* self =
-        new( ELeave ) CAknMemorySelectionSettingItemExtension( aSettingItem );
+        new( ELeave ) CAknMemorySelectionSettingItemExtension(aSettingItem);
 
     CleanupStack::PushL( self );
-    self->ConstructL( aIncludedMedias );
+    self->ConstructL();
     CleanupStack::Pop( self );
 
     return self;