diff -r 65a3ef1d5bd0 -r f742655b05bf commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp --- a/commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp Thu Aug 19 09:45:22 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1007 +0,0 @@ -/* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implements CSCSettingsUiMainView methods -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "cscconstants.h" -#include "cscsettingsui.hrh" -#include "cscsettingsuimodel.h" -#include "cscsettingsuilogger.h" -#include "cscengservicehandler.h" -#include "cscengbrandinghandler.h" -#include "cscsettingsuimainview.h" -#include "cscsettingsuiconstants.h" -#include "cscengservicepluginhandler.h" -#include "cscappui.h" - - -#define AppUi() (static_cast(iAvkonAppUi) ) - -// Preferred service not set -const TInt KPrefServiceNotSet = 0; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -CCSCSettingsUiMainView::CCSCSettingsUiMainView( - CCSCSettingsUiModel& aModel ) - : iModel( aModel ) - { - } - - -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::ConstructL() - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::ConstructL - begin" ); - - BaseConstructL( R_CSCSETTINGSUI_MAINVIEW ); - - // Get handle to titlepane - CEikStatusPane* statusPane = StatusPane(); - iTitlePane = static_cast - ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - - iImToneSelectionListOpen = EFalse; - iSnapListOpen = EFalse; - CSCSETUIDEBUG( "CCSCSettingsUiMainView::ConstructL - end" ); - } - - -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -CCSCSettingsUiMainView* CCSCSettingsUiMainView::NewL( - CCSCSettingsUiModel& aModel ) - { - CCSCSettingsUiMainView* self = CCSCSettingsUiMainView::NewLC( aModel ); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -CCSCSettingsUiMainView* CCSCSettingsUiMainView::NewLC( - CCSCSettingsUiModel& aModel ) - { - CCSCSettingsUiMainView* self = - new ( ELeave ) CCSCSettingsUiMainView( aModel ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - - -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -CCSCSettingsUiMainView::~CCSCSettingsUiMainView() - { - CSCSETUIDEBUG( - "CCSCSettingsUiMainView::~CCSCSettingsUiMainView - begin" ); - - // Delete container when view is deactivated. - if ( iContainer ) - { - AppUi()->RemoveFromViewStack( *this, iContainer ); - delete iContainer; - } - - delete iNaviDecorator; - - CSCSETUIDEBUG( "CCSCSettingsUiMainView::~CCSCSettingsUiMainView - end" ); - } - - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::UpdateSoftkeysL -// Processes situation when it�s notified that softkeys need to be changed. -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::UpdateSoftkeysL( ) - { - // not used - } - - -// --------------------------------------------------------------------------- -// From CAknView. -// CCSCSettingsUiMainView::Id -// --------------------------------------------------------------------------- -// -TUid CCSCSettingsUiMainView::Id() const - { - return KCSCSettingsUiMainViewId; - } - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::SetTitleTextL -// Changes given service name to title pane. -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::SetTitleTextL() - { - // Create text and set it to titlepane. - TBuf titleText ( KNullDesC ); - TUint entryId = iModel.CurrentSPEntryId(); - titleText = iModel.SettingsHandler().ServiceNameL( entryId ); - HBufC* text = StringLoader::LoadLC( - R_CSCSETTINGSUI_MAINVIEW_TITLE, - titleText ); - iTitlePane->SetTextL( *text ); - CleanupStack::PopAndDestroy( text ); - } - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::IsEditPreferredServiceSettingAllowedL -// For checking if editing of preferred service setting is allowed -// --------------------------------------------------------------------------- -// -TBool CCSCSettingsUiMainView::IsEditPreferredServiceSettingAllowedL() - { - TBool allowed( EFalse ); - TInt value( KErrNotFound ); - - User::LeaveIfError( - RProperty::Get( - KPSUidCtsyCallInformation, - KCTsyCallState, - value ) ); - - // Editing is allowed if no ongoing call. - if ( EPSCTsyCallStateNone == value ) - { - allowed = ETrue; - } - else - { - // Show unable to change settings note - HBufC* string = NULL; - string = StringLoader::LoadL( - R_CSCSETTINGSUI_UNABLE_TO_EDIT_SETTING_NOTE ); - - if ( string ) - { - // Set text and show note. - CleanupStack::PushL( string ); - CAknInformationNote* note = - new ( ELeave ) CAknInformationNote( ETrue ); - note->ExecuteLD( *string ); - CleanupStack::PopAndDestroy( string ); - } - } - - return allowed; - } - -// --------------------------------------------------------------------------- -// From CEikAppUi -// CCSCSettingsUiMainView::HandleCommandL -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::HandleCommandL( TInt aCommand ) - { - CSCSETUIDEBUG2( "CCSCSettingsUiMainView::HandleCommandL: command=%d", - aCommand ); - - TMainListBoxItem listBoxItem = iContainer->CurrentItem(); - - switch ( aCommand ) - { - case ECSCMSKSettingsUiChange: - { - HandleMskChangeSelectionL( listBoxItem ); - break; - } - case ECSCSettingsUiOpen: - case ECSCSettingsUiChange: - { - HandleListBoxSelectionL(); - break; - } - case EAknCmdHelp: - { - if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - CArrayFix* buf = AppUi()->AppHelpContextL(); - HlpLauncher::LaunchHelpApplicationL( - iEikonEnv->WsSession(), buf ); - } - break; - } - case EAknSoftkeyBack: - { - HandleReturnToPreviousViewL(); - break; - } - case ECSCSettingsUiDelete: - { - CSCSETUIDEBUG( " HandleCommandL - delete service" ); - iDeleted = iContainer->DeleteServiceL(); - HandleReturnToPreviousViewL( EFalse ); - break; - } - case EEikCmdExit: - case EAknSoftkeyExit: - { - HandleSettingsUiExitL(); - break; - } - default: - { - AppUi()->HandleCommandL( aCommand ); - break; - } - } - } - - -// --------------------------------------------------------------------------- -// From CAknView -// CCSCSettingsUiMainView::DoActivateL -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::DoActivateL( - const TVwsViewId& /*aPrevViewId*/, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::DoActivateL - begin" ); - - // Create container when view is activated. - if ( !iContainer ) - { - iContainer = new ( ELeave ) CCSCSettingsUiMainContainer( iModel ); - iContainer->SetMopParent( this ); - iContainer->ConstructL( ClientRect() ); - AppUi()->AddToStackL( *this, iContainer ); - iContainer->ListBox()->SetListBoxObserver( this ); - } - - SetTitleTextL(); - UpdateSoftkeysL(); - iContainer->UpdateContainerL(); - - if ( !iNaviPane ) - { - iNaviPane = static_cast( - iAvkonAppUi->StatusPane()->ControlL( - TUid::Uid(EEikStatusPaneUidNavi))); - } - - if ( !iNaviDecorator ) - { - iNaviDecorator = iNaviPane->CreateNavigationLabelL(); - iNaviPane->PushL( *iNaviDecorator ); - } - - CSCSETUIDEBUG( "CCSCSettingsUiMainView::DoActivateL - end" ); - } - - -// --------------------------------------------------------------------------- -// From CAknView -// CCSCSettingsUiMainView::DoDeactivate() -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::DoDeactivate() - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::DoDeactivate - begin" ); - - if ( iNaviPane && iNaviDecorator ) - { - iNaviPane->Pop( iNaviDecorator ); - } - delete iNaviDecorator; - iNaviDecorator = NULL; - - // Delete container when view is deactivated. - if ( iContainer ) - { - AppUi()->RemoveFromViewStack( *this, iContainer ); - delete iContainer; - iContainer = NULL; - } - - CSCSETUIDEBUG( "CCSCSettingsUiMainView::DoDeactivate - end" ); - } - - -// --------------------------------------------------------------------------- -// From MEikListBoxObserver -// CSCSettingsUiMainView::HandleListBoxEventL -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::HandleListBoxEventL( - CEikListBox* /*aListBox*/, TListBoxEvent aEventType ) - { - TMainListBoxItem listBoxItem = iContainer->CurrentItem(); - - switch ( aEventType ) - { - case EEventEnterKeyPressed: - case EEventItemSingleClicked: - { - if ( TMainListBoxItem::EPreferredService == listBoxItem.iItem || - TMainListBoxItem::EVccPreferredService == listBoxItem.iItem || - TMainListBoxItem::EHandoverNotifTone == listBoxItem.iItem ) - { - HandleCommandL( ECSCMSKSettingsUiChange ); - } - else - { - HandleListBoxSelectionL(); - } - break; - } - - default: - break; - } - } - - -// --------------------------------------------------------------------------- -// From MEikListBoxObserver -// CCSCSettingsUiMainView::HandleListBoxSelectionL -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::HandleListBoxSelectionL() - { - TMainListBoxItem listBoxItem = iContainer->CurrentItem(); - - switch( listBoxItem.iItem ) - { - case TMainListBoxItem::EUsername: - ShowUsernameSettingPageL(); - break; - case TMainListBoxItem::EPassword: - ShowPasswordSettingPageL(); - break; - case TMainListBoxItem::EPreferredService: - ShowPrefServiceSettingPageL(); - break; - case TMainListBoxItem::EVccPreferredService: - ShowVccPrefServiceSettingPageL(); - break; - case TMainListBoxItem::EHandoverNotifTone: - iContainer->HandoverNotificationToneQueryL(); - break; - case TMainListBoxItem::EImTone: - ShowImToneSelectionListL(); - break; - case TMainListBoxItem::EAutoacceptInv: - iContainer->PresenceReqPrefQueryL(); - break; - case TMainListBoxItem::EServiceConn: - LaunchCMSettingsUiL(); - break; - default: - User::Leave( KErrNotSupported ); - break; - } - } - - -// --------------------------------------------------------------------------- -// From MEikListBoxObserver -// CCSCSettingsUiMainView::DynInitMenuPaneL -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::DynInitMenuPaneL( - TInt aResourceId, CEikMenuPane* aMenuPane ) - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::DynInitMenuPaneL - begin" ); - - if ( aMenuPane && R_CSCSETTINGSUI_MAINVIEW_MENU == aResourceId ) - { - TMainListBoxItem listBoxItem = iContainer->CurrentItem(); - - switch ( listBoxItem.iItem ) - { - // Hide "Change" and show "Open" - case TMainListBoxItem::EServiceConn: - aMenuPane->SetItemDimmed( ECSCSettingsUiChange, ETrue ); - aMenuPane->SetItemDimmed( ECSCSettingsUiOpen, EFalse ); - break; - // Show "Change" and hide "Open" - case TMainListBoxItem::EUsername: - case TMainListBoxItem::EPassword: - case TMainListBoxItem::EPreferredService: - case TMainListBoxItem::EVccPreferredService: - case TMainListBoxItem::EHandoverNotifTone: - case TMainListBoxItem::EAutoacceptInv: - case TMainListBoxItem::EImTone: - aMenuPane->SetItemDimmed( ECSCSettingsUiChange, EFalse ); - aMenuPane->SetItemDimmed( ECSCSettingsUiOpen, ETrue ); - break; - // Hide both of options. Case should not be possible. - default: - aMenuPane->SetItemDimmed( ECSCSettingsUiChange, ETrue ); - aMenuPane->SetItemDimmed( ECSCSettingsUiOpen, ETrue ); - break; - } - if ( !(iModel.CCHHandler().IsServiceDisabled( - iModel.CurrentSPEntryId() ) ) ) - { - aMenuPane->SetItemDimmed( ECSCSettingsUiDelete, ETrue ); - } - } - - CSCSETUIDEBUG( "CCSCSettingsUiMainView::DynInitMenuPaneL - end" ); - } - - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::ShowUsernameSettingPageL() -// Shows username setting page - for username input. -// --------------------------------------------------------------------------- -void CCSCSettingsUiMainView::ShowUsernameSettingPageL() - { - // Editing is allowed if service is disabled. - if ( iModel.CCHHandler().IsServiceDisabled( iModel.CurrentSPEntryId() ) ) - { - RBuf username; - CleanupClosePushL( username ); - username.CreateL( KCCHMaxUsernameLength ); - - User::LeaveIfError( - iModel.CCHHandler().GetConnectionParameter( - iModel.CurrentSPEntryId(), ECchUsername, username ) ); - - CAknTextSettingPage* dlg = - new(ELeave) CAknTextSettingPage( - R_CSCSETTINGSUI_USERNAME_SETTING_PAGE, username ); - - if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) ) - { - // Set username - User::LeaveIfError( - iModel.CCHHandler().SetConnectionParameter( - iModel.CurrentSPEntryId(), ECchUsername, username ) ); - } - - CleanupStack::PopAndDestroy( &username ); - - iContainer->UpdateContainerL(); - } - else - { - // Show unable to change settings note - HBufC* string = NULL; - string = StringLoader::LoadL( - R_CSCSETTINGSUI_UNABLE_TO_EDIT_WHILE_ONLINE ); - - if ( string ) - { - // Set text and show note. - CleanupStack::PushL( string ); - CAknInformationNote* note = - new ( ELeave ) CAknInformationNote( ETrue ); - note->ExecuteLD( *string ); - CleanupStack::PopAndDestroy( string ); - } - } - } - - - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::ShowPasswordSettingPageL() -// Shows password setting page - for password input. -// --------------------------------------------------------------------------- -void CCSCSettingsUiMainView::ShowPasswordSettingPageL() - { - // Editing is allowed if service is disabled. - if ( iModel.CCHHandler().IsServiceDisabled( iModel.CurrentSPEntryId() ) ) - { - RBuf password; - CleanupClosePushL( password ); - password.CreateL( KCCHMaxPasswordLength ); - - CAknAlphaPasswordSettingPage* dlg = - new ( ELeave ) CAknAlphaPasswordSettingPage( - R_CSCSETTINGSUI_PASSWORD_SETTING_PAGE, - password, - KNullDesC ); - - if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) ) - { - // Set password - User::LeaveIfError( - iModel.CCHHandler().SetConnectionParameter( - iModel.CurrentSPEntryId(), ECchPassword, password ) ); - } - - CleanupStack::PopAndDestroy( &password ); - - iContainer->UpdateContainerL(); - } - else - { - // Show unable to change settings note - HBufC* string = NULL; - string = StringLoader::LoadL( - R_CSCSETTINGSUI_UNABLE_TO_EDIT_WHILE_ONLINE ); - - if ( string ) - { - // Set text and show note. - CleanupStack::PushL( string ); - CAknInformationNote* note = - new ( ELeave ) CAknInformationNote( ETrue ); - note->ExecuteLD( *string ); - CleanupStack::PopAndDestroy( string ); - } - } - } - - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::ShowPrefServiceSettingPageL() -// Shows Internet call preferred setting page - for ON/OFF setting items -// --------------------------------------------------------------------------- -void CCSCSettingsUiMainView::ShowPrefServiceSettingPageL() - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::ShowPrefServiceSettingPageL" ); - - if ( IsEditPreferredServiceSettingAllowedL() ) - { - CDesCArrayFlat* items = - new ( ELeave ) CDesCArrayFlat( 2 ); - CleanupStack::PushL( items ); - - AppendItemL( *items, R_CSCSETTINGSUI_SETTING_PREFERRED_SERVICE_ON ); - AppendItemL( *items, R_CSCSETTINGSUI_SETTING_PREFERRED_SERVICE_OFF ); - - // Get current value of the setting - TInt value( iModel.SettingsHandler().IsPreferredTelephonyVoip() && - iModel.SettingsHandler().IsPreferredService( - iModel.CurrentSPEntryId() ) ? - ECSCSettingsPrefServiceOn : - ECSCSettingsPrefServiceOff); - - CAknRadioButtonSettingPage* dlg = new( ELeave ) - CAknRadioButtonSettingPage( - R_CSCSETTINGSUI_PREF_SERVICE_SETTING_PAGE, - value, items ); - - if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) ) - { - // Change value of the preferred telephony setting and set - // current preferred service id. If preferred telephony value - // is changed as voip then we set this service as preferred - // service. Otherwise we set preferred service as not set (=0) - TUint serviceId( value == ECSCSettingsPrefServiceOn ? - iModel.CurrentSPEntryId() : - KPrefServiceNotSet ); - - iModel.SettingsHandler().SetVoipAsPrefTelephony( - value == ECSCSettingsPrefServiceOn, - serviceId ); - } - - CleanupStack::PopAndDestroy( items ); - iContainer->UpdateContainerL(); - } - } - - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::ShowVccPrefServiceSettingPageL() -// Shows Internet call preferred setting page - for ON/OFF setting items -// when VCC is supported -// --------------------------------------------------------------------------- -void CCSCSettingsUiMainView::ShowVccPrefServiceSettingPageL() - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::ShowVccPrefServiceSettingPageL" ); - - if ( IsEditPreferredServiceSettingAllowedL() ) - { - CDesCArrayFlat* items = - new ( ELeave ) CDesCArrayFlat( 2 ); - CleanupStack::PushL( items ); - - AppendItemL( *items, R_CSCSETTINGSUI_SETTING_VCC_PREFERRED_SERVICE_ON ); - AppendItemL( *items, R_CSCSETTINGSUI_SETTING_VCC_PREFERRED_SERVICE_OFF ); - - // Get current value of the setting - TInt value( iModel.SettingsHandler().IsPreferredTelephonyVoip() && - iModel.SettingsHandler().IsPreferredService( - iModel.CurrentSPEntryId() ) ? - ECSCSettingsPrefServiceOn : - ECSCSettingsPrefServiceOff); - - CAknRadioButtonSettingPage* dlg = new( ELeave ) - CAknRadioButtonSettingPage( - R_CSCSETTINGSUI_VCC_PREF_SERVICE_SETTING_PAGE, - value, items ); - - if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) ) - { - // Change value of the preferred telephony setting and set - // current preferred service id. If preferred telephony value - // is changed as voip then we set this service as preferred - // service. Otherwise we set preferred service as not set (=0) - TUint serviceId( value == ECSCSettingsPrefServiceOn ? - iModel.CurrentSPEntryId() : - KPrefServiceNotSet ); - - iModel.SettingsHandler().SetVoipAsPrefTelephony( - value == ECSCSettingsPrefServiceOn, - serviceId ); - } - - CleanupStack::PopAndDestroy( items ); - iContainer->UpdateContainerL(); - } - } - - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::ShowImToneSelectionListL() -// --------------------------------------------------------------------------- -void CCSCSettingsUiMainView::ShowImToneSelectionListL() - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::ShowImToneSelectionListL - begin" ); - - if ( !iImToneSelectionListOpen ) - { - 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; - } - - CSCSETUIDEBUG( "CCSCSettingsUiMainView::ShowImToneSelectionListL - end" ); - } - - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::HandleMskChangeSelectionL() -// Handles 'change' middle softkey selection. -// --------------------------------------------------------------------------- -void CCSCSettingsUiMainView::HandleMskChangeSelectionL( - TMainListBoxItem aListBoxItem ) - { - switch ( aListBoxItem.iItem ) - { - case TMainListBoxItem::EPreferredService: - case TMainListBoxItem::EVccPreferredService: - { - ChangePrefTelephonyValueL(); - } - break; - case TMainListBoxItem::EHandoverNotifTone: - { - ChangeHandoverNotifToneValueL(); - } - break; - default: - { - User::Leave( KErrArgument ); - } - break; - } - } - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::ChangePrefTelephonyValueL() -// Changes the value of the preferred telephony setting -// --------------------------------------------------------------------------- -void CCSCSettingsUiMainView::ChangePrefTelephonyValueL() - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::ChangePrefTelephonyValueL" ); - - if ( IsEditPreferredServiceSettingAllowedL() ) - { - // Check is this service preferred service - TBool prefService( - iModel.SettingsHandler().IsPreferredTelephonyVoip() && - iModel.SettingsHandler().IsPreferredService( - iModel.CurrentSPEntryId() )); - - // Set preferred service id as not set (=0) if preferred telephony - // setting is changed as CS. - TUint serviceId( prefService ? KPrefServiceNotSet : - iModel.CurrentSPEntryId() ); - - // Set preferred telephony setting value and current preferred - // service id - iModel.SettingsHandler().SetVoipAsPrefTelephony( - !prefService, - serviceId ); - - iContainer->UpdateContainerL(); - } - } - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::ChangeHandoverNotifToneValueL() -// Changes the value of the handover notify tone setting. -// --------------------------------------------------------------------------- -void CCSCSettingsUiMainView::ChangeHandoverNotifToneValueL() - { - TOnOff onOff = iModel.SettingsHandler().HandoverNotifTonePrefL( - iModel.CurrentSPEntryId() ); - - if ( EOn == onOff ) - { - iModel.SettingsHandler().SetHandoverNotifTonePrefL( - iModel.CurrentSPEntryId(), EOff ); - } - else - { - iModel.SettingsHandler().SetHandoverNotifTonePrefL( - iModel.CurrentSPEntryId(), EOn ); - } - - iContainer->UpdateContainerL(); - } - -// ----------------------------------------------------------------------------- -// CCSCSettingsUiMainView::AppendItemL -// Appends resource texts to the des array. -// ----------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::AppendItemL( - CDesCArrayFlat& aList, TInt aItem ) - { - HBufC* string = StringLoader::LoadLC( aItem ); - aList.AppendL( *string ); - CleanupStack::PopAndDestroy( string ); - } - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::LaunchCMSettingsUiL -// Launches Connection Method Settings Ui for editing destinations. -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::LaunchCMSettingsUiL() - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::LaunchCMSettingsUiL" ); - if ( iSnapListOpen ) - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::LaunchCMSettingsUiL end" ); - return; - } - - // Launch Connection Method Settings Ui. - CCmSettingsUi* cmSettingsUi = CCmSettingsUi::NewL(); - CleanupStack::PushL( cmSettingsUi ); - iSnapListOpen = ETrue; - if ( CCmSettingsUi::EExit == cmSettingsUi->RunSettingsL() ) - { - HandleCommandL( EEikCmdExit ); - } - CleanupStack::PopAndDestroy( cmSettingsUi ); - iSnapListOpen = EFalse; - ResetViewL(); - CSCSETUIDEBUG( "CCSCSettingsUiMainView::LaunchCMSettingsUiL end" ); - } - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::HandleReturnToPreviousViewL -// Handles returning to previous view where settingsui was launced. -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::HandleReturnToPreviousViewL( TBool aViewBack ) - { - CSCSETUIDEBUG( - "CCSCSettingsUiMainView::HandleReturnToPreviousViewL - IN" ); - - if ( iModel.ReturnViewId() != KNullUid ) - { - TUid tabview( KNullUid ); - - // Error code not needed. - TRAP_IGNORE( - tabview.iUid = iModel.SettingsHandler().ServiceTabViewIdL( - iModel.CurrentSPEntryId() ) ) - - // Launched from phonebookview. - // Press Back button, return PhoneBookTabView. - if ( aViewBack && tabview.iUid == iModel.ReturnViewId().iUid ) - { - RxSPViewServices viewServices; - TInt err = viewServices.Activate( - KPhoneBookTabUid.iUid, - iModel.ReturnViewId().iUid ); - - CSCSETUIDEBUG2( " --> ACTIVATE ERR=%d", err ); - - AppUi()->HandleCommandL( EEikCmdExit ); - } - - if ( iDeleted && KCSCServiceViewId != iModel.ReturnViewId() ) - { - // Launched from phonebookview. - // Press Ok button, return homescreen. - TVwsViewId idleId; - AknDef::GetPhoneIdleViewId( idleId ); - ActivateViewL( idleId ); - AppUi()->HandleCommandL( EEikCmdExit ); - } - else if( !iDeleted && KCSCServiceViewId != iModel.ReturnViewId() ) - { - // Launched from phonebookview. - // Press cancel button, return current view. - TUid curview = Id(); - AppUi()->ActivateLocalViewL( curview ); - } - else if( !aViewBack && !iDeleted && KCSCServiceViewId == iModel.ReturnViewId() ) - { - // Launched from service view. - // Press cancel button, return current view. - TUid curview = Id(); - AppUi()->ActivateLocalViewL( curview ); - } - else - { - // Launched from service view. - // Press Back button or Press Delete button, activate previous view. - AppUi()->ActivateLocalViewL( iModel.ReturnViewId() ); - } - } - - CSCSETUIDEBUG( - "CCSCSettingsUiMainView::HandleReturnToPreviousViewL - OUT" ); - } - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::HandleSettingsUiExitL -// Handles exist from settingsui. -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::HandleSettingsUiExitL() - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::HandleSettingsUiExitL - IN" ); - - if ( iModel.ReturnViewId() != KNullUid ) - { - TUid tabview( KNullUid ); - TRAPD( err, tabview.iUid = iModel.SettingsHandler().ServiceTabViewIdL( - iModel.CurrentSPEntryId() ) ) - - if ( tabview.iUid == iModel.ReturnViewId().iUid && !err ) - { - // Launched from service tab, go back there - RxSPViewServices viewServices; - viewServices.Activate( - KPhoneBookTabUid.iUid, - iModel.ReturnViewId().iUid ); - - AppUi()->HandleCommandL( EEikCmdExit ); - } - else - { - // Not launched from service tab, just exit - AppUi()->HandleCommandL( EEikCmdExit ); - } - } - - CSCSETUIDEBUG( "CCSCSettingsUiMainView::HandleSettingsUiExitL - OUT" ); - } - -// --------------------------------------------------------------------------- -// CCSCSettingsUiMainView::ResetViewL -// Resets service settings when switching services -// --------------------------------------------------------------------------- -// -void CCSCSettingsUiMainView::ResetViewL() - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::ResetViewL - IN" ); - - // Do not update view if SNAP list is open because in some cases - // there will be problems with title and status bar. - if ( iSnapListOpen ) - { - CSCSETUIDEBUG( "CCSCSettingsUiMainView::ResetViewL - OUT" ); - return; - } - // Create container when view is activated. - if ( !iContainer ) - { - iContainer = new (ELeave) CCSCSettingsUiMainContainer( iModel ); - iContainer->SetMopParent( this ); - iContainer->ConstructL( ClientRect() ); - AppUi()->AddToStackL( *this, iContainer ); - iContainer->ListBox()->SetListBoxObserver( this ); - } - - SetTitleTextL(); - UpdateSoftkeysL(); - iContainer->UpdateContainerL(); - - CSCSETUIDEBUG( "CCSCSettingsUiMainView::ResetViewL - OUT" ); - } - -// End of file. -