commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp
branchRCL_3
changeset 8 7117cbf1600a
parent 0 a4daefaec16c
child 9 bddb6d4447db
--- a/commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -81,6 +81,7 @@
     iTitlePane = static_cast<CAknTitlePane*> 
         ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
         
+    iImToneSelectionListOpen = EFalse;
     CSCSETUIDEBUG( "CCSCSettingsUiMainView::ConstructL - end" );
     }
 
@@ -670,51 +671,60 @@
 // ---------------------------------------------------------------------------
 void CCSCSettingsUiMainView::ShowImToneSelectionListL()
     {    
-    CMediaFileList* list = CMediaFileList::NewL();
-    CleanupStack::PushL( list );
-
-    HBufC* popupTitle = StringLoader::LoadLC( 
-        R_CSCSETTINGSUI_IM_TONE_POPUP_HEADING );
-    
-    HBufC* noTone = StringLoader::LoadLC( 
-        R_CSCSETTINGSUI_NO_IM_TONE_TEXT );
-        
-    list->SetAttrL( 
-        CMediaFileList::EAttrAutomatedType,
-        CDRMHelper::EAutomatedTypeIMAlert );
-        
-    list->SetNullItemL( 
-        *noTone,
-        KNullDesC, 
-        CMediaFileList::EMediaFileTypeAudio,
-        CMediaFileList::ENullItemIconOff );
+    CSCSETUIDEBUG( "CCSCSettingsUiMainView::ShowImToneSelectionListL - begin" );
     
-    list->SetAttrL( CMediaFileList::EAttrTitle, *popupTitle );
-
-    TBuf<KCSCMaxImToneLength> toneName;
-    TInt nullItem = KErrNotFound;    
-    
-    TBool result = list->ShowMediaFileListL(
-        &toneName, &nullItem , NULL, NULL );
-  
-    CleanupStack::PopAndDestroy( noTone );
-    CleanupStack::PopAndDestroy( popupTitle );
-    CleanupStack::PopAndDestroy( list );
-    
-    if ( result )
+    if ( !iImToneSelectionListOpen )
         {
-        iContainer->SaveImTonePathL( toneName );
-        }
-    else if( KErrNotFound != nullItem )
-        {
-        iContainer->SaveImTonePathL( KNullDesC );
-        }
-    else
-        {
-        // do nothing
+        iImToneSelectionListOpen = ETrue;
+        CMediaFileList* list = CMediaFileList::NewL();
+        CleanupStack::PushL( list );
+      
+        HBufC* popupTitle = StringLoader::LoadLC( 
+            R_CSCSETTINGSUI_IM_TONE_POPUP_HEADING );
+        
+        HBufC* noTone = StringLoader::LoadLC( 
+            R_CSCSETTINGSUI_NO_IM_TONE_TEXT );
+        
+        list->SetAttrL( 
+            CMediaFileList::EAttrAutomatedType,
+            CDRMHelper::EAutomatedTypeIMAlert );
+        
+        list->SetNullItemL( 
+            *noTone,
+            KNullDesC, 
+            CMediaFileList::EMediaFileTypeAudio,
+            CMediaFileList::ENullItemIconOff );
+        
+        list->SetAttrL( CMediaFileList::EAttrTitle, *popupTitle );
+        
+        TBuf<KCSCMaxImToneLength> toneName;
+        TInt nullItem = KErrNotFound;    
+        
+        TBool result = list->ShowMediaFileListL(
+            &toneName, &nullItem , NULL, NULL );
+       
+        CleanupStack::PopAndDestroy( noTone );
+        CleanupStack::PopAndDestroy( popupTitle );
+        CleanupStack::PopAndDestroy( list );
+        
+        if ( result )
+            {
+            iContainer->SaveImTonePathL( toneName );
+            }
+        else if( KErrNotFound != nullItem )
+            {
+            iContainer->SaveImTonePathL( KNullDesC );
+            }
+        else
+            {
+            // do nothing
+            }
+        
+        iContainer->UpdateContainerL();
+        iImToneSelectionListOpen = EFalse;
         }
     
-    iContainer->UpdateContainerL();
+    CSCSETUIDEBUG( "CCSCSettingsUiMainView::ShowImToneSelectionListL - end" );
     }