diff -r 000000000000 -r a4daefaec16c commsconfig/cscsettingsui/src/cscsettingsuimaincontainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commsconfig/cscsettingsui/src/cscsettingsuimaincontainer.cpp Mon Jan 18 20:12:36 2010 +0200 @@ -0,0 +1,878 @@ +/* +* Copyright (c) 2007-2009 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 CSCSettingsUiMainContainer methods +* +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cscsettingsui.hrh" +#include "cscsettingsuimodel.h" +#include "cscsettingsuilogger.h" +#include "cscengservicehandler.h" +#include "cscsettingsuiconstants.h" +#include "cscengdestinationshandler.h" +#include "cipapputilsaddressresolver.h" +#include "cscsettingsuimaincontainer.h" + +// Format of the setting item. +_LIT( KCSCSettingsUiListItemTextFormat, "\t%S\t\t%S" ); + +_LIT( KDoubleBackSlash, "\\" ); +_LIT( KEmptyPassword, "*****" ); + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CCSCSettingsUiMainContainer::CCSCSettingsUiMainContainer( + CCSCSettingsUiModel& aModel ) + : iModel( aModel ) + { + } + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::ConstructL( + const TRect& aRect ) + { + CSCSETUIDEBUG( "CCSCSettingsUiMainContainer::ConstructL - begin" ); + + CreateWindowL(); + ConstructListBoxL(); + SetRect( aRect ); + ActivateL(); + + CSCSETUIDEBUG( "CCSCSettingsUiMainContainer::ConstructL - end" ); + } + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CCSCSettingsUiMainContainer::~CCSCSettingsUiMainContainer() + { + CSCSETUIDEBUG( + "CCSCSettingsUiMainContainer::~CCSCSettingsUiMainContainer - begin" ); + + iListBoxItemArray.Reset(); + iListBoxItemArray.Close(); + + if ( iCaption ) + { + delete iCaption; + } + + delete iListBox; + + CSCSETUIDEBUG( + "CCSCSettingsUiMainContainer::~CCSCSettingsUiMainContainer - end" ); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::UpdateContainerL +// Updates container and redraws listbox items. +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::UpdateContainerL() + { + CSCSETUIDEBUG( "CCSCSettingsUiMainContainer::UpdateContainerL - begin" ); + + // Get listbox items from model. + CTextListBoxModel* model = iListBox->Model(); + MDesCArray* textArray = model->ItemTextArray(); + CDesCArray* listBoxItems = static_cast( textArray ); + listBoxItems->Reset(); + iListBoxItemArray.Reset(); + + // Initialize setting items. + InitializeSettingItemsL(); + + CSCSETUIDEBUG( "CCSCSettingsUiMainContainer::UpdateContainerL - end" ); + } + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::HandoverNotificationToneQueryL +// Shows a query which changes handover notification tone setting for service. +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::HandoverNotificationToneQueryL() + { + CDesCArrayFlat* items = new ( ELeave ) CDesCArrayFlat( 2 ); + CleanupStack::PushL( items ); + + HBufC* onItem = StringLoader::LoadLC( + R_CSCSETTINGSUI_SETTING_HANDOVER_NOTIF_TONE_ON ); + items->AppendL( *onItem ); + CleanupStack::PopAndDestroy( onItem ); + + HBufC* offItem = StringLoader::LoadLC( + R_CSCSETTINGSUI_SETTING_HANDOVER_NOTIF_TONE_OFF ); + items->AppendL( *offItem ); + CleanupStack::PopAndDestroy( offItem ); + + TInt index( 0 ); + CAknListQueryDialog* dialog = + new ( ELeave ) CAknListQueryDialog( &index ); + + dialog->PrepareLC( R_CSCSETTINGSUI_HANDOVER_NOTIFICATION_TONE_QUERY ); + dialog->SetItemTextArray( items ); + dialog->SetOwnershipType( ELbmDoesNotOwnItemArray ); + + if ( dialog->RunLD() ) + { + // Update setting according user selection + if ( 0 == index ) + { + // Set handover notification tone setting value on + iModel.SettingsHandler().SetHandoverNotifTonePrefL( + iModel.CurrentSPEntryId(), EOn ); + } + else if ( 1 == index ) + { + // Set handover notification tone setting value off + iModel.SettingsHandler().SetHandoverNotifTonePrefL( + iModel.CurrentSPEntryId(), EOff ); + } + else + { + // invalid index + User::Leave( KErrGeneral ); + } + } + else + { + // cancelled + } + + CleanupStack::PopAndDestroy( items ); + UpdateContainerL(); + } + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::PresenceReqPrefQueryL +// Shows a query which changes presence request preference for service. +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::PresenceReqPrefQueryL() + { + CDesCArrayFlat* items = new ( ELeave ) CDesCArrayFlat( 2 ); + CleanupStack::PushL( items ); + + HBufC* alwaysAskItem = StringLoader::LoadLC( + R_CSCSETTINGSUI_PRES_PREF_ALWAYS_ASK ); + items->AppendL( *alwaysAskItem ); + CleanupStack::PopAndDestroy( alwaysAskItem ); + + HBufC* autoAcceptItem = StringLoader::LoadLC( + R_CSCSETTINGSUI_PRES_PREF_ACCEPT_AUTOMATICALLY ); + items->AppendL( *autoAcceptItem ); + CleanupStack::PopAndDestroy( autoAcceptItem ); + + TInt index( 0 ); + CAknListQueryDialog* dialog = + new ( ELeave ) CAknListQueryDialog( &index ); + + dialog->PrepareLC( R_CSCSETTINGSUI_PRESENCE_REQUEST_PREF_QUERY ); + dialog->SetItemTextArray( items ); + dialog->SetOwnershipType( ELbmDoesNotOwnItemArray ); + + if ( dialog->RunLD() ) + { + // Update setting according user selection + if ( 0 == index ) + { + // Set presence request preference setting value + iModel.SettingsHandler().SetPresenceReqPrefL( + iModel.CurrentSPEntryId(), EOff ); + } + else if ( 1 == index ) + { + // Set presence request preference setting value + iModel.SettingsHandler().SetPresenceReqPrefL( + iModel.CurrentSPEntryId(), EOn ); + } + else + { + // invalid index + User::Leave( KErrGeneral ); + } + } + else + { + // canceled + } + + CleanupStack::PopAndDestroy( items ); + UpdateContainerL(); + } + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::SaveImTonePathL +// Saves Im tone path to permanent storage. +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::SaveImTonePathL( const TDesC& aTonePath ) + { + MVIMPSTSettingsStore* settings = CVIMPSTSettingsStore::NewLC(); + + User::LeaveIfError( settings->SetL( + iModel.CurrentSPEntryId(), EServiceToneFileName, aTonePath ) ); + + CleanupStack::PopAndDestroy(); + } + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::ListBox +// Returns handle to the listbox. +// --------------------------------------------------------------------------- +// +CAknSettingStyleListBox* CCSCSettingsUiMainContainer::ListBox() + { + return iListBox; + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::CurrentItemIndex +// Returns index of selected listbox item. +// --------------------------------------------------------------------------- +// +TMainListBoxItem CCSCSettingsUiMainContainer::CurrentItem() const + { + TInt currentItemIndex( iListBox->CurrentItemIndex() ); + return iListBoxItemArray[ currentItemIndex ]; + } + + +// --------------------------------------------------------------------------- +// From class CoeControl +// CCSCSettingsUiMainContainer::ComponentControl +// --------------------------------------------------------------------------- +// +CCoeControl* CCSCSettingsUiMainContainer::ComponentControl( + TInt /*aIndex*/ ) const + { + return iListBox; + } + + +// ----------------------------------------------------------------------------- +// From class CoeControl +// For getting help context +// ----------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::GetHelpContext( + TCoeHelpContext& aContext ) const + { + aContext.iMajor = KUidCscSettingsUiHelp; + aContext.iContext = KSERVTAB_HLP_SETTINGS; + } + +// --------------------------------------------------------------------------- +// From class CoeControl +// CCSCSettingsUiMainContainer::OfferKeyEventL +// --------------------------------------------------------------------------- +// +TKeyResponse CCSCSettingsUiMainContainer::OfferKeyEventL( + const TKeyEvent& aKeyEvent, TEventCode aType ) + { + TKeyResponse response = EKeyWasNotConsumed; + response = iListBox->OfferKeyEventL( aKeyEvent, aType ); + + if ( EKeyUpArrow == aKeyEvent.iCode || + EKeyDownArrow == aKeyEvent.iCode ) + { + iModel.UpdateSoftkeys(); + } + + return response; + } + + +// --------------------------------------------------------------------------- +// From class CoeControl +// CCSCSettingsUiMainContainer::HandleResourceChange +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::HandleResourceChange( TInt aType ) + { + if( aType == KAknsMessageSkinChange || + aType == KEikDynamicLayoutVariantSwitch ) + { + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, + mainPaneRect ); + SetRect( mainPaneRect ); + DrawNow(); + } + + CCoeControl::HandleResourceChange( aType ); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::ConstructListBoxL +// Creates listbox item for setting items. +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::ConstructListBoxL() + { + CSCSETUIDEBUG( "CCSCSettingsUiMainContainer::ConstructListBoxL - begin" ); + + // Create listbox and array for listbox items. + iListBox = new( ELeave ) CAknSettingStyleListBox; + iListBox->ConstructL( this, EAknListBoxSelectionList ); + iListBox->CreateScrollBarFrameL( ETrue ); + iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( + CEikScrollBarFrame::EOff, + CEikScrollBarFrame::EAuto ); + iListBox->Model()->SetOwnershipType( ELbmOwnsItemArray ); + CDesCArrayFlat* itemsArray = + new ( ELeave ) CDesCArrayFlat( KCSCSettingsUiArrayGranularity ); + iListBox->Model()->SetItemTextArray( itemsArray ); + + // Initialize setting items. + InitializeSettingItemsL(); + + CSCSETUIDEBUG( "CCSCSettingsUiMainContainer::ConstructListBoxL - end" ); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::InitializeSettingItemsL +// Draws setting items at the first time after the initialization is completed +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::InitializeSettingItemsL() + { + CSCSETUIDEBUG( + "CCSCSettingsUiMainContainer::InitializeSettingItemsL - begin" ); + + // Get supported subservices + TSupportedSubServices supSubServices; + iModel.CCHHandler().SupportedSubServicesL( + iModel.CurrentSPEntryId(), supSubServices ); + + // Make username setting + MakeSettingItemL ( TMainListBoxItem::EUsername ); + + // Make password setting + MakeSettingItemL ( TMainListBoxItem::EPassword ); + + // Make preferred service setting item if voip subservice is supported + if ( supSubServices.iVoIP ) + { + TBool isSipVoip( EFalse ); + TRAPD( err, isSipVoip = iModel.SettingsHandler().IsSipVoIPL( + iModel.CurrentSPEntryId() ) ); + + if ( !err ) + { + if ( isSipVoip && iModel.SettingsHandler().IsVccSupportedL( + iModel.CurrentSPEntryId() ) ) + { + // If VCC is supported make vcc preferred setting item + // and handover notification tone setting item + MakeSettingItemL ( TMainListBoxItem::EVccPreferredService ); + MakeSettingItemL ( TMainListBoxItem::EHandoverNotifTone ); + } + else + { + // If VCC is not supported make just preferred service setting + MakeSettingItemL ( TMainListBoxItem::EPreferredService ); + } + } + } + + // Make setting item if IM is supported by service + if ( supSubServices.iIm ) + { + // IM tone setting. + MakeSettingItemL( TMainListBoxItem::EImTone ); + } + + // Make setting item if presence is supported by service + if ( supSubServices.iPresence ) + { + // Presence request preference + MakeSettingItemL( TMainListBoxItem::EAutoacceptInv ); + } + + // Connectivity setting (cannot be changed) + MakeSettingItemL( TMainListBoxItem::EServiceConn ); + + + CSCSETUIDEBUG( + "CCSCSettingsUiMainContainer::InitializeSettingItemsL - end" ); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::MakeSettingItemL +// Constructs setting list items. +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::MakeSettingItemL( + TMainListBoxItem::TSettingItems aItem ) + { + CSCSETUIDEBUG( + "CCSCSettingsUiMainContainer::MakeSettingItemL - begin" ); + + // Get listbox items from model. + CTextListBoxModel* model = iListBox->Model(); + MDesCArray* textArray = model->ItemTextArray(); + CDesCArray* listBoxItems = static_cast( textArray ); + + TBuf listBoxItemText ( KNullDesC ); + + TMainListBoxItem listBoxItem; + listBoxItem.iItem = aItem; + + RBuf value; + CleanupClosePushL( value ); + + value.CreateL( 1 ); + value.Copy( KNullDesC ); + + switch ( aItem ) + { + case TMainListBoxItem::EUsername: + { + GetUsernameL( value ); + break; + } + case TMainListBoxItem::EPassword: + { + value.ReAllocL( KEmptyPassword().Length() ); + value.Copy( KEmptyPassword ); + break; + } + case TMainListBoxItem::EPreferredService: + { + GetPreferredServiceSettingL( value ); + break; + } + case TMainListBoxItem::EVccPreferredService: + { + GetVccPreferredServiceSettingL( value ); + break; + } + case TMainListBoxItem::EHandoverNotifTone: + { + GetHandoverNotificationTonePrefL( value ); + break; + } + case TMainListBoxItem::EImTone: + { + GetImToneSettingL( value ); + break; + } + case TMainListBoxItem::EAutoacceptInv: + { + GetPresencePrefSettingL( value ); + break; + } + case TMainListBoxItem::EServiceConn: + { + TRAP_IGNORE( GetSnapSettingL( value ) ); + break; + } + default: + User::Leave( KErrArgument ); + break; + } + + listBoxItemText.Format( + KCSCSettingsUiListItemTextFormat, + GetCaptionL( aItem ), + &value ); + + CleanupStack::PopAndDestroy( &value ); + + // Add to listbox + iListBoxItemArray.Append( listBoxItem ); + listBoxItems->AppendL( listBoxItemText ); + iListBox->HandleItemAdditionL(); + + CSCSETUIDEBUG( + "CCSCSettingsUiMainContainer::MakeSettingItemL - end" ); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::GetCaptionL +// Constructs setting list items. +// --------------------------------------------------------------------------- +// +HBufC* CCSCSettingsUiMainContainer::GetCaptionL( + TMainListBoxItem::TSettingItems aItem ) + { + if( iCaption != NULL ) + { + delete iCaption; + iCaption = NULL; + } + + switch ( aItem ) + { + case TMainListBoxItem::EUsername: + { + iCaption = StringLoader::LoadL( + R_CSCSETTINGSUI_SETTING_USERNAME_TITLE ); + break; + } + case TMainListBoxItem::EPassword: + { + iCaption = StringLoader::LoadL( + R_CSCSETTINGSUI_SETTING_PASSWORD_TITLE ); + break; + } + case TMainListBoxItem::EPreferredService: + { + iCaption = StringLoader::LoadL( + R_CSCSETTINGSUI_SETTING_PREFERRED_SERVICE_TITLE ); + break; + } + case TMainListBoxItem::EVccPreferredService: + { + iCaption = StringLoader::LoadL( + R_CSCSETTINGSUI_SETTING_VCC_PREFERRED_SERVICE_TITLE ); + break; + } + case TMainListBoxItem::EHandoverNotifTone: + { + iCaption = StringLoader::LoadL( + R_CSCSETTINGSUI_SETTING_HANDOVER_NOTIF_TONE_TITLE ); + break; + } + case TMainListBoxItem::EImTone: + { + iCaption = StringLoader::LoadL( + R_CSCSETTINGSUI_SETTING_IM_TONE_TITLE ); + break; + } + case TMainListBoxItem::EAutoacceptInv: + { + iCaption = StringLoader::LoadL( + R_CSCSETTINGSUI_PRESENCE_REQUEST_PREF_TEXT ); + break; + } + case TMainListBoxItem::EServiceConn: + { + iCaption = StringLoader::LoadL( + R_CSCSETTINGSUI_SERVICE_CONNECTIVITY_TEXT ); + break; + } + default: + User::Leave( KErrArgument ); + break; + } + + return iCaption; + } + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::GetUsername +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::GetUsernameL( RBuf& aUsername ) + { + aUsername.ReAllocL( KCCHMaxUsernameLength ); + User::LeaveIfError( iModel.CCHHandler().GetConnectionParameter( + iModel.CurrentSPEntryId(), ECchUsername, aUsername ) ); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::GetPresencePrefSettingL +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::GetPreferredServiceSettingL( RBuf& aValue ) + { + // Select text resource for the current pref telephony value + TInt resource = ( iModel.SettingsHandler().IsPreferredTelephonyVoip() && + iModel.SettingsHandler().IsPreferredService( + iModel.CurrentSPEntryId() ) ) ? + R_CSCSETTINGSUI_SETTING_PREFERRED_SERVICE_ON : + R_CSCSETTINGSUI_SETTING_PREFERRED_SERVICE_OFF; + + HBufC* value = StringLoader::LoadLC( resource ); + aValue.ReAllocL( value->Length() ); + aValue.Copy( value->Des() ); + CleanupStack::PopAndDestroy( value ); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::GetVccPreferredServiceSettingL +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::GetVccPreferredServiceSettingL( RBuf& aValue ) + { + // Select text resource for the current pref telephony value + TInt resource = ( iModel.SettingsHandler().IsPreferredTelephonyVoip() && + iModel.SettingsHandler().IsPreferredService( + iModel.CurrentSPEntryId() ) ) ? + R_CSCSETTINGSUI_SETTING_VCC_PREFERRED_SERVICE_ON : + R_CSCSETTINGSUI_SETTING_VCC_PREFERRED_SERVICE_OFF; + + HBufC* value = StringLoader::LoadLC( resource ); + aValue.ReAllocL( value->Length() ); + aValue.Copy( value->Des() ); + CleanupStack::PopAndDestroy( value ); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::GetHandoverNotificationToneL +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::GetHandoverNotificationTonePrefL( + RBuf& aValue ) + { + HBufC* value = NULL; + TOnOff onOff = EOff; + + TRAPD( err, onOff = iModel.SettingsHandler().HandoverNotifTonePrefL( + iModel.CurrentSPEntryId() ) ); + + if ( KErrNotFound == err ) + { + iModel.SettingsHandler().SetHandoverNotifTonePrefL( + iModel.CurrentSPEntryId(), EOff ); + } + else if ( err ) + { + User::Leave( err ); + } + else + { + // nothing to do + } + + if ( EOff == onOff ) + { + value = StringLoader::LoadLC( + R_CSCSETTINGSUI_SETTING_HANDOVER_NOTIF_TONE_OFF ); + } + else if ( EOn == onOff) + { + value = StringLoader::LoadLC( + R_CSCSETTINGSUI_SETTING_HANDOVER_NOTIF_TONE_ON ); + } + else if ( EOONotSet == onOff ) + { + iModel.SettingsHandler().SetHandoverNotifTonePrefL( + iModel.CurrentSPEntryId(), EOff ); + + value = StringLoader::LoadLC( + R_CSCSETTINGSUI_SETTING_HANDOVER_NOTIF_TONE_OFF ); + } + else + { + User::Leave( KErrGeneral ); + } + + aValue.ReAllocL( value->Length() ); + aValue.Copy( value->Des() ); + + CleanupStack::PopAndDestroy( value ); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::GetImToneSettingL +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::GetImToneSettingL( RBuf& aValue ) + { + aValue.ReAllocL( KCSCMaxImToneLength ); + + MVIMPSTSettingsStore* settings = CVIMPSTSettingsStore::NewLC(); + + TInt err = settings->GetL( + iModel.CurrentSPEntryId(), EServiceToneFileName, aValue ); + + // If tone path is not found from settings, set Off text + if ( KErrNotFound == err || aValue.Length() < 2 ) + { + HBufC* noToneSelected = StringLoader::LoadLC( + R_CSCSETTINGSUI_IM_TONE_OFF ); + + User::LeaveIfError( settings->SetL( + iModel.CurrentSPEntryId(), EServiceToneFileName, *noToneSelected ) ); + + // Get tone. + User::LeaveIfError( settings->GetL( + iModel.CurrentSPEntryId(), EServiceToneFileName, aValue ) ); + + CleanupStack::PopAndDestroy( noToneSelected ); + } + else if ( err ) + { + User::Leave( err ); + } + else + { + // KErrNone -> do nothing + } + + TInt pos( 0 ); + while ( KErrNotFound != pos ) + { + pos = aValue.Find( KDoubleBackSlash ); + aValue.Delete( 0, pos+1 ); + } + + CleanupStack::PopAndDestroy(); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::GetPresencePrefSettingL +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::GetPresencePrefSettingL( RBuf& aValue ) + { + HBufC* value = NULL; + TOnOff onOff = EOff; + + TRAPD( err, onOff = iModel.SettingsHandler().PresenceReqPrefL( + iModel.CurrentSPEntryId() ) ); + + if ( KErrNotFound == err ) + { + iModel.SettingsHandler().SetPresenceReqPrefL( + iModel.CurrentSPEntryId(), EOff ); + } + else if ( err ) + { + User::Leave( err ); + } + else + { + // nothing to do + } + + if ( EOff == onOff ) + { + value = StringLoader::LoadLC( + R_CSCSETTINGSUI_PRES_PREF_ALWAYS_ASK ); + } + else if ( EOn == onOff) + { + value = StringLoader::LoadLC( + R_CSCSETTINGSUI_PRES_PREF_ACCEPT_AUTOMATICALLY ); + } + else if ( EOONotSet == onOff ) + { + // Set presence request preference setting default value "off" + iModel.SettingsHandler().SetPresenceReqPrefL( + iModel.CurrentSPEntryId(), EOff ); + + value = StringLoader::LoadLC( + R_CSCSETTINGSUI_PRES_PREF_ALWAYS_ASK ); + } + else + { + User::Leave( KErrGeneral ); + } + + aValue.ReAllocL( value->Length() ); + aValue.Copy( value->Des() ); + + CleanupStack::PopAndDestroy( value ); + } + + +// --------------------------------------------------------------------------- +// CCSCSettingsUiMainContainer::GetSnapSettingL +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::GetSnapSettingL( RBuf& aValue ) + { + // Get Snap name + HBufC* snapName = NULL; + TInt snapId( 0 ); + TInt err = iModel.CCHHandler().GetConnectionParameter( + iModel.CurrentSPEntryId(), ECchSnapId, snapId ); + + // If no error, try to get snap name. + if ( KErrNone == err ) + { + snapName = iModel.DestinationsHandler().SnapNameL( snapId ); + + if ( snapName ) + { + CleanupStack::PushL( snapName ); + aValue.ReAllocL( snapName->Length() ); + aValue.Copy( snapName->Des() ); + CleanupStack::PopAndDestroy( snapName ); + } + } + } + + +// --------------------------------------------------------------------------- +// From class CoeControl +// CCSCSettingsUiMainContainer::CountComponentControls +// --------------------------------------------------------------------------- +// +TInt CCSCSettingsUiMainContainer::CountComponentControls() const + { + return 1; + } + + +// --------------------------------------------------------------------------- +// From class CoeControl +// CCSCSettingsUiMainContainer::SizeChanged +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::SizeChanged() + { + iListBox->SetRect( Rect() ); + } + + +// --------------------------------------------------------------------------- +// From class CoeControl +// CCSCSettingsUiMainContainer::FocusChanged +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiMainContainer::FocusChanged( + TDrawNow aDrawNow ) + { + CCoeControl::FocusChanged( aDrawNow ); + + if( iListBox ) + { + iListBox->SetFocus( IsFocused() ); + } + }