diff -r 2669f8761a99 -r fbd2e7cec7ef presencesettingsui/src/psuisipxdmsettingitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presencesettingsui/src/psuisipxdmsettingitem.cpp Wed Sep 01 12:23:14 2010 +0100 @@ -0,0 +1,193 @@ +/* +* Copyright (c) 2006 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: Setting item for SIP / XDM settings +* +*/ + + + + +// INCLUDE FILES +#include +#include +#include +#include "psuigspluginmodel.h" +#include "psuisipxdmsettingitem.h" + +// ========================= MEMBER FUNCTIONS ================================ + +// --------------------------------------------------------------------------- +// CPSUISipXdmSettingItem::CPSUISipXdmSettingItem() +// Default constructor. +// --------------------------------------------------------------------------- +// +CPSUISipXdmSettingItem::CPSUISipXdmSettingItem( + TInt aIdentifier, TInt& aId, CPSUIGSPluginModel* aPSModel ): + CAknSettingItem( aIdentifier ), + iExtChosenSettingID ( aId ), + iPSModel ( aPSModel ) + { + } + +// --------------------------------------------------------------------------- +// CPSUISipXdmSettingItem::~CPSUISipXdmSettingItem() +// Destructor +// --------------------------------------------------------------------------- +// +CPSUISipXdmSettingItem::~CPSUISipXdmSettingItem() + { + // iPSModel deleted elsewhere + delete iPSUIInternalText; + } + +// --------------------------------------------------------------------------- +// CPSUISipXdmSettingItem::LoadL() +// See header for details. +// --------------------------------------------------------------------------- +// +void CPSUISipXdmSettingItem::LoadL() + { + delete iPSUIInternalText; + iPSUIInternalText = 0; + + TInt id = Identifier(); + if ( id == EPSUISIPProfileId ) + {// SIP + iPSUIInternalText = iPSModel->SipProfileNameL( iExtChosenSettingID ); + } + else if ( id == EPSUIXDMSettingsId ) + {// XDM + iPSUIInternalText = iPSModel->XdmCollectionNameL( iExtChosenSettingID ); + } + else + { + __ASSERT_DEBUG( 0,User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound )); + } + + iIntChosenSettingID = iExtChosenSettingID; + } + +// --------------------------------------------------------------------------- +// CPSUISipXdmSettingItem::StoreL() +// See header for details. +// --------------------------------------------------------------------------- +// +void CPSUISipXdmSettingItem::StoreL() + { + iExtChosenSettingID = iIntChosenSettingID; + } + +// --------------------------------------------------------------------------- +// CPSUISipXdmSettingItem::SettingTextL() +// See header for details. +// --------------------------------------------------------------------------- +// +const TDesC& CPSUISipXdmSettingItem::SettingTextL() + { + if ( iPSUIInternalText->Length() > 0 ) + return *iPSUIInternalText; + else + return EmptyItemText(); + } + +// --------------------------------------------------------------------------- +// CPSUISipXdmSettingItem::EditItemL() +// See header for details. +// --------------------------------------------------------------------------- +// +void CPSUISipXdmSettingItem::EditItemL( TBool /*aCalledFromMenu*/ ) + { + TInt id = Identifier(); + if ( id == EPSUISIPProfileId ) + {// SIP + EditSipItemL(); + } + else if ( id == EPSUIXDMSettingsId ) + {// XDM + EditXdmItemL(); + } + else + { + __ASSERT_DEBUG( 0,User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound )); + } + } + +// --------------------------------------------------------------------------- +// CPSUISipXdmSettingItem::EditSipItemL() +// See header for details. +// --------------------------------------------------------------------------- +// +void CPSUISipXdmSettingItem::EditSipItemL() + { + CDesCArray* array = iPSModel->SipProfilesLC(); + TInt index = iPSModel->SipProfileIndex( iIntChosenSettingID ); + LaunchSettingDlgL( index, array ); + CleanupStack::PopAndDestroy( array ); // array + + if ( index != KErrNotFound ) + {// update only if index available + iIntChosenSettingID = iPSModel->SipProfileId( index ); + + delete iPSUIInternalText; + iPSUIInternalText = 0; + iPSUIInternalText = iPSModel->SipProfileNameL( iIntChosenSettingID ); + + UpdateListBoxTextL(); + } + } + +// --------------------------------------------------------------------------- +// CPSUISipXdmSettingItem::EditXdmItemL() +// See header for details. +// --------------------------------------------------------------------------- +// +void CPSUISipXdmSettingItem::EditXdmItemL() + { + CDesCArray* array = iPSModel->XdmCollectionNamesL();// array not owned + TInt index = iPSModel->XdmSettingIndex( iIntChosenSettingID ); + LaunchSettingDlgL( index, array ); + + if ( index != KErrNotFound ) + {// update only if index available + iIntChosenSettingID = iPSModel->XdmSettingId( index ); + + delete iPSUIInternalText; + iPSUIInternalText = 0; + iPSUIInternalText = iPSModel->XdmCollectionNameL( iIntChosenSettingID ); + + UpdateListBoxTextL(); + } + } + +// --------------------------------------------------------------------------- +// CPSUISipXdmSettingItem::LaunchSettingDlgL() +// See header for details. +// --------------------------------------------------------------------------- +// +void CPSUISipXdmSettingItem::LaunchSettingDlgL( TInt& aIndex, CDesCArray* aArray ) + { + CAknRadioButtonSettingPage* dlg = new (ELeave ) CAknRadioButtonSettingPage( + R_RADIOBUTTON_SETTING_PAGE, + aIndex, + aArray ); + CleanupStack::PushL( dlg ); + dlg->SetSettingTextL( SettingName() ); + SetSettingPage( dlg ); + SettingPage()->SetSettingPageObserver( this ); + CleanupStack::Pop( dlg ); // dlg + SettingPage()->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ); + SetSettingPage( 0 ); // dlg deleted + } + +// End of File