diff -r fc8c25e5a2e8 -r 7117cbf1600a commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp --- 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 ( 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 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 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" ); }