--- a/gssettingsuis/Gs/GSCallPlugin/src/GSCallPlugin.cpp Thu Aug 19 10:12:30 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2177 +0,0 @@
-/*
-* Copyright (c) 2002-2007 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: Call submenu in General Settings.
-*
-*/
-
-
-// INCLUDE FILES
-#include "GSCallPlugin.h" //for CGSCallPlugin
-#include "GSCallPluginContainer.h" //for CGSCallPluginContainer
-#include "GsLogger.h"
-#include "GSCallPlugin.h" //for pluginUID
-#include <akntitle.h> // for title pane
-#include <coeaui.h>
-#include <hlplch.h> // For HlpLauncher
-#include <aknnotewrappers.h> //for Note Wrappers
-#include <aknradiobuttonsettingpage.h> //for Radiobutton pages
-#include <akntextsettingpage.h> //for TextSettings pages
-#include <aknmessagequerydialog.h> //for Message Query Dialog
-#include <aknViewAppUi.h>
-#include <aknnotedialog.h>
-#include <AknWaitDialog.h>
-#include <gscommon.hrh>
-
-// headers for still image
-#include <imageconversion.h>
-#include <MGFetch.h> // Image selection
-#include <DRMCommon.h>
-
-#include <eikmenup.h> //for menu bar
-#include <PsetContainer.h> //for container
-#include <PsuiContainer.h> //for CPsuiContainer
-#include <featmgr.h>
-#include <secuisecurityhandler.h> //for PIN2 query
-#include <secui.h> //for TSecUi
-#include <secuisecuritysettings.h> //for CSecuritySettings
-#include <gscallpluginrsc.rsg> //for resource IDs
-#include <gscallplugin.mbg>
-#include <gsfwviewuids.h>
-#include <gslistbox.h> //for CGSListBoxItemTextArray
-
-#include <settingsinternalcrkeys.h>
-#include <ctsydomainpskeys.h>
-#include <gsprivatepluginproviderids.h>
-
-// LOCAL CONSTANTS
-_LIT( KGSNameOfClass, "GSCallPlugin" );
-_LIT( KGSVTStillImgPath, "" );
-//Use default values for external calls.
-const TInt KGSUseDefault = 0;
-//Call Prefix setting page items
-const TInt KGSSettingItemOff = 1;
-const TInt KGSSettingItemOn = 0;
-//Lines in setting page.
-const TInt KGSFirstLine = 0;
-const TInt KGSSecondLine = 1;
-// Middle Softkey control ID.
-const TInt KGSMSKControlID = 3;
-
-// VT still image values. Basically everything above 0 should be considered as
-// 'On' value so do not compare with 1
-const TInt KGSVTStillImageOff = 0;
-
-
-// ========================= MEMBER FUNCTIONS ================================
-// ---------------------------------------------------------------------------
-//
-// Constructor.
-//
-// ---------------------------------------------------------------------------
-CGSCallPlugin::CGSCallPlugin()
- :iMskCommandFlag( ETrue )
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// Symbian OS two-phased constructor (second phase)
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::ConstructL()
- {
- __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::ConstructL");
- OpenLocalizedResourceFileL( KGSCallPluginResourceFileName,
- iResourceLoader );
-
- BaseConstructL( R_GS_CALL_VIEW );
-
- iModel = CGSCallPluginModel::NewL();
- iRestrictedClir = iModel->RestrictedSendCallerIdSupportedL();
- iSecureClir = iModel->SecureSendCallerIdSupportedL();
- __GSLOGSTRING("[GSCallPlugin]--> ConstructL - Model created");
- iSettings = CPsetContainer::NewL();
- __GSLOGSTRING("[GSCallPlugin]--> ConstructL - PSetContainer created");
- iObsContainer = CPsuiContainer::NewL();
- __GSLOGSTRING("[GSCallPlugin]--> ConstructL - PsuiContainer created");
- iCwObserver = iObsContainer->CreateCWObsL();
- __GSLOGSTRING("[GSCallPlugin]--> ConstructL - CreateCWObsL done");
- iWaiting = iSettings->CreateCWObjectL( *iCwObserver );
- __GSLOGSTRING("[GSCallPlugin]--> ConstructL - CreateCWObjectL done");
- iSsSettings = new (ELeave) RSSSettings;
- __GSLOGSTRING("[GSCallPlugin]--> ConstructL - SSSettings created");
-
- User::LeaveIfError( iSsSettings->Open() );
- User::LeaveIfError( iSsSettings->RegisterAll( *this ) );
- __GSLOGSTRING("[GSCallPlugin]--> ConstructL - SSSettings opening successful");
-
-#ifndef __WINS__
- iSsSettings->Get( ESSSettingsAls, iAls );
- iSsSettings->Get( ESSSettingsAlsBlocking, iAlsBlock );
-#endif //__WINS__
-
- iVTImageSelectionOngoing = EFalse;
-
- __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::ConstructL");
- }
-
-// ---------------------------------------------------------------------------
-//
-// Symbian OS two-phased constructor (first phase)
-//
-// ---------------------------------------------------------------------------
-CGSCallPlugin* CGSCallPlugin::NewLC()
- {
- CGSCallPlugin* self = new ( ELeave ) CGSCallPlugin;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::NewL()
-// Static constructor
-//
-// ---------------------------------------------------------------------------
-//
-CGSCallPlugin* CGSCallPlugin::NewL( TAny* /*aInitParams*/ )
- {
- CGSCallPlugin* self = new(ELeave) CGSCallPlugin();
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// Destructor
-//
-// ---------------------------------------------------------------------------
-CGSCallPlugin::~CGSCallPlugin()
- {
- __GSLOGSTRING("[GSCallPlugin] ~CGSCallPlugin()|->");
-
- delete iObsContainer;
- delete iCwObserver;
- if ( iWaiting )
- {
- delete iWaiting;
- }
- delete iSettings;
-
- if ( iSsSettings )
- {
- iSsSettings->CancelAll( *this );
- iSsSettings->Close();
- delete iSsSettings;
- }
-
- if( iModel )
- {
- delete iModel;
- }
-
- if( iImageHandler )
- {
- delete iImageHandler;
- }
-
- __GSLOGSTRING("[GSCallPlugin] ~CGSCallPlugin()-|");
- }
-
-// ---------------------------------------------------------------------------
-//
-// Returns Id of the Call submenu
-//
-// ---------------------------------------------------------------------------
-TUid CGSCallPlugin::Id() const
- {
- return KCallPluginUID;
- }
-
-// ---------------------------------------------------------------------------
-//
-// Handles user inputs in Options menu
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::HandleCommandL( TInt aCommand )
- {
- __GSLOGSTRING1("[GSCallPlugin] HandleCommandL(%d)|->", aCommand );
- switch ( aCommand )
- {
- case EGSMSKCmdAppChange:
- HandleListBoxSelectionL();
- break;
- // Command Obtained from Context Options
- // set in ProcessCommandL()
- case ECFCmdActivate:
- case EGSCmdCallWaitActivate:
- iWaiting->SetCallWaitingL( MPsetCallWaiting::EActivateCallWaiting,
- EAllTeleAndBearer );
- break;
- // Command Obtained from Context Options
- // set in ProcessCommandL()
- case ECFCmdCheckStatus:
- case EGSCmdCallWaitInquiry:
- iWaiting->GetCallWaitingStatusL();
- break;
- // Command Obtained from Context Options
- // set in ProcessCommandL()
- case ECFCmdCancel:
- case EGSCmdCallWaitDeactivate:
- iWaiting->SetCallWaitingL( MPsetCallWaiting::EDeactivateCallWaiting,
- EAllTeleAndBearer );
- break;
- case EAppCmdCreatePopupList:
- {
- const TInt currentFeatureId = Container()->CurrentFeatureId();
- HandleCreatePopupL( currentFeatureId );
- }
- break;
- case EAknSoftkeyBack:
- iAppUi->ActivateLocalViewL( KGSTelPluginUid );
- break;
- case EAknCmdHelp:
- {
- if( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- HlpLauncher::LaunchHelpApplicationL(
- iEikonEnv->WsSession(), iAppUi->AppHelpContextL() );
- }
- break;
- }
- default:
- iAppUi->HandleCommandL( aCommand );
- break;
- }
- __GSLOGSTRING("[CGSCallPlugin] HandleCommandL()-|");
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// Handles user inputs in Options menu
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::ProcessCommandL( TInt aCommand )
- {
- MenuBar()->SetContextMenuTitleResourceId( R_CALL_DIVERT_MSK_CONTEXTMENUBAR );
- // Call base class
- CAknView::ProcessCommandL( aCommand );
- }
-// ---------------------------------------------------------------------------
-//
-// Activates the view
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::DoActivateL( const TVwsViewId& aPrevViewId ,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage )
- {
- __GSLOGSTRING( "[GSCallPlugin] DoActivateL()|->" );
- CGSBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
- Container()->SetMiddleSoftkeyObserver( this );
- SetMiddleSoftKeyLabelL( R_CALL_MSK_CHANGE, EGSMSKCmdAppChange );
- // This way we set which command is set for MSK
- iMskCommandFlag = ETrue;
-// iContainer->iListBox->SetTopItemIndex( iTopItemIndex );
-
-// if ( iCurrentItem >= 0 &&
-// iCurrentItem < iContainer->iListBox->Model()->NumberOfItems() )
-// {
-// iContainer->iListBox->SetCurrentItemIndexAndDraw( iCurrentItem );
-// }
- CheckMiddleSoftkeyLabelL();
-
- // If AppUid is different or placeholderview is used, this view has been launched from outside GS
- if ( iPrevViewId.iAppUid != KUidGS || iPrevViewId.iViewUid == TUid::Uid(0x0DEADBED ) )
- {
- CEikButtonGroupContainer* cbaGroup = Cba();
- if( cbaGroup )
- {
- HBufC* rightSKText = StringLoader::LoadLC ( R_GS_CBA_EXIT );
- TPtr rskPtr = rightSKText->Des();
- cbaGroup->SetCommandL( 2, EAknSoftkeyExit, *rightSKText );
- CleanupStack::PopAndDestroy( rightSKText );
- }
- }
-
- __GSLOGSTRING( "[GSCallPlugin] DoActivateL()-|" );
- }
-
-// ---------------------------------------------------------------------------
-//
-// Deactivates the view
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::DoDeactivate()
- {
- __GSLOGSTRING("[GSCallPlugin]--> DoDeactivate");
- if ( iContainer )
- {
- if ( iContainer->iListBox && iContainer->iListBox->View() )
- {
- iTopItemIndex = iContainer->iListBox->TopItemIndex();
- iCurrentItem = iContainer->iListBox->CurrentItemIndex();
- }
- CGSBaseView::DoDeactivate();
- }
- __GSLOGSTRING("[GSCallPlugin] <--DoDeactivate");
- }
-
-
-
-// ---------------------------------------------------------------------------
-//
-// Handle status pane size changed
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::HandleStatusPaneSizeChange()
- {
- if ( Container() )
- Container()->SetRect( ClientRect());
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// Shows setting page - for ON/OFF setting items
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::ShowSettingPageL( TGSCallItemIds aPage )
- {
- __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::ShowSettingPageL");
-
- CDesCArrayFlat* items =
- new ( ELeave ) CDesCArrayFlat( KGSCallPopupMenuItems );
- CleanupStack::PushL( items );
-
- TInt titleID = 0;
- TInt currentSettingItem = KErrNone;
- TCallSettId keyName = EGSNotSet;
-
- switch ( aPage )
- {
- case EGSOpeningSlideAnswerCallItemId:
- keyName = EGSOpeningSlideAnswerCall;
- titleID = R_CP_SETTING_TITLE_OPENING_SLIDE;
- AppendItemL( *items, R_CP_SETTING_OPENING_SLIDE_ANSWER );
- AppendItemL( *items, R_CP_SETTING_OPENING_SLIDE_NOT_ANSWER );
- break;
- case EGSClosingSlideEndCallItemId:
- keyName = EGSClosingSlideEndCall;
- titleID = R_CP_SETTING_TITLE_CLOSING_SLIDE;
- AppendItemL( *items, R_CP_SETTING_CLOSING_SLIDE_END );
- AppendItemL( *items, R_CP_SETTING_CLOSING_SLIDE_NOT_END );
- break;
- case EGSICSendIntCallIdItemId:
- titleID = R_SET_IC_CLIR;
- AppendItemL( *items, R_SET_IC_CLIR_ON );
- AppendItemL( *items, R_SET_IC_CLIR_OFF );
- break;
- case EGSICWaitingItemId:
- titleID = R_SET_IC_WAITING;
- AppendItemL( *items, R_SET_IC_WAITING_ACTIVE );
- AppendItemL( *items, R_SET_IC_WAITING_NOT_ACTIVE );
- break;
- case EGSICPreferredTelephonyId:
- titleID = R_SET_IC_PREFERRED_TELEPHONE;
- AppendItemL( *items, R_SET_IC_PREFERRED_TELEPHONE_CS );
- AppendItemL( *items, R_SET_IC_PREFERRED_TELEPHONE_PS );
- break;
- case EGSDndItemId:
- titleID = R_SET_IC_DND;
- AppendItemL( *items, R_SET_IC_DND_ACTIVE );
- AppendItemL( *items, R_SET_IC_DND_NOT_ACTIVE );
- break;
- case EGSCliItemId:
- titleID = R_OWN_NUMBER_SENDING_HEADING;
-
- // Restrict the default option if necessary
- if ( !iRestrictedClir )
- {
- AppendItemL( *items, R_CLI_SENDING_DEFAULT );
- }
-
- AppendItemL( *items, R_CLI_SENDING_ON );
- AppendItemL( *items, R_CLI_SENDING_OFF );
- break;
- case EGSSummaryAfterCallItemId:
- keyName = EGSSummaryAfterCall;
- titleID = R_CTERM_SETTING;
- AppendItemL( *items, R_CALL_TERMINATION_NOTE_ON );
- AppendItemL( *items, R_CALL_TERMINATION_NOTE_OFF );
- break;
- default:
- Panic( KGSNameOfClass, EInvalidIndex );
- break;
- }
-
- if ( aPage == EGSICSendIntCallIdItemId ||
- aPage == EGSICWaitingItemId ||
- aPage == EGSICPreferredTelephonyId ||
- aPage == EGSDndItemId )
- {
- currentSettingItem = GetLineForSelectedVoipSetting( aPage );
- }
- // CLI item does not have a keyName and/or literal, hence
- // this additional checking for CLI item.
- else if ( aPage != EGSCliItemId && keyName != EGSNotSet )
- {
- iModel->GetCallSettingValue( keyName, currentSettingItem );
- __GSLOGSTRING1("[GSCallPlugin] ShowSettingPageL: currentSettingItem: %d", currentSettingItem);
- // switch value to settings page value
- SwitchValue( currentSettingItem );
- }
- else
- {
- TInt err = iSsSettings->Get( ESSSettingsClir, currentSettingItem );
- __GSLOGSTRING1("[GSCallPlugin] ShowSettingPageL: currentSettingItem1: %d", currentSettingItem);
- if ( err == KErrNone )
- {
- CliConvertValue( currentSettingItem );
-
- if ( iRestrictedClir )
- {
- // For indexing listbox which does not include KGSCliDefault
- currentSettingItem--;
- }
- }
- }
-
- HBufC* buffer = NULL;
-
- buffer = HBufC::NewLC( KGSMaxStringLength );
- TPtr str = buffer->Des();
- StringLoader::Load( str, titleID );
-
- TPtr string = buffer->Des();
- const TInt oldSettingItem = currentSettingItem;
- CAknRadioButtonSettingPage* dlg = new ( ELeave )
- CAknRadioButtonSettingPage(
- &string,
- EAknSettingPageNoOrdinalDisplayed,
- KGSUseDefault,
- KGSUseDefault,
- R_SETTING_PAGE,
- currentSettingItem,
- items );
-
- if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
- {
- const TBool settingItemChanged = oldSettingItem != currentSettingItem;
-
- if ( aPage == EGSICSendIntCallIdItemId ||
- aPage == EGSICWaitingItemId ||
- aPage == EGSICPreferredTelephonyId ||
- aPage == EGSDndItemId )
- {
- // Change new VoIP setting based selected line.
- SetVoipSettingBasedSelectedLine( aPage, currentSettingItem );
- }
- else
- {
- if ( aPage != EGSCliItemId && keyName != EGSNotSet )
- {
- // switch settings page value to shared data value
- SwitchValue( currentSettingItem );
- iModel->SetCallSettingValue( keyName, currentSettingItem );
- __GSLOGSTRING1("[GSCallPlugin] ShowSettingPageL: currentSettingItem2: %d", currentSettingItem);
- }
- else
- {
- if ( iRestrictedClir )
- {
- // For indexing listbox which does not include KGSCliDefault
- currentSettingItem++;
- }
-
- CliConvertValue( currentSettingItem );
-
- // Secure setting of Send Caller Id if required
- if ( !iSecureClir )
- {
- iSsSettings->Set( ESSSettingsClir, currentSettingItem );
- }
- else
- {
- if ( settingItemChanged && MakeSecCodeQueryL() )
- {
- iSsSettings->Set( ESSSettingsClir, currentSettingItem );
- }
- }
- __GSLOGSTRING1("[GSCallPlugin] ShowSettingPageL: currentSettingItem3: %d", currentSettingItem);
- }
- }
-
- UpdateListBoxL( aPage, currentSettingItem );
- }
-
- CleanupStack::PopAndDestroy( buffer );
- CleanupStack::PopAndDestroy( items );
- __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::ShowSettingPageL");
- }
-
-// ---------------------------------------------------------------------------
-//
-// Shows ALS setting page - either line blocking or line selected
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::ShowAlsSettingPageL( TGSCallItemIds aPage )
- {
- __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::ShowAlsSettingPageL");
- CDesCArrayFlat* items = new ( ELeave ) CDesCArrayFlat( KGSCallPopupMenuItems );
- CleanupStack::PushL( items );
-
- TInt currentItem = 0;
-
- switch ( aPage )
- {
- case EGSLineChangeItemId:
- //causes PIN2 query to launch, if necessary
- if ( iAlsBlock == ESSSettingsAlsBlockingOn )
- {
- TInt pin = MakePin2QueryL();
- if ( pin != KGSPinQueryOk )
- {
- CleanupStack::PopAndDestroy( items );
- return; //User failed in Pin2 Query
- }
- }
- AppendItemL( *items, R_ALS_LINE1 );
- AppendItemL( *items, R_ALS_LINE2 );
- currentItem = iAls - 1;
- break;
- case EGSALSBlockItemId:
- {
- TInt pin = MakePin2QueryL();
- if ( pin != KGSPinQueryOk )
- {
- CleanupStack::PopAndDestroy( items );
- return; //User failed in Pin2 Query
- }
- AppendItemL( *items, R_ALS_LINE_BLOCKING_ON );
- AppendItemL( *items, R_ALS_LINE_BLOCKING_OFF );
- if ( iAlsBlock == ESSSettingsAlsBlockingOn )
- {
- currentItem = KGSAlsBlockOn;
- }
- else
- {
- currentItem = KGSAlsBlockOff;
- }
- break;
- }
- default:
- Panic( KGSNameOfClass, EInvalidIndex );
- break;
- }
- HBufC* buffer =
- HBufC::NewLC( KGSMaxStringLength );
- TPtr string( buffer->Des() );
- StringLoader::Load(
- string,
- ( aPage == EGSLineChangeItemId ) ?
- R_ALS_LINE_SELECTION_MODE :
- R_ALS_PHONELINE_BLOCK_MODE );
-
- CAknRadioButtonSettingPage* dlg = new ( ELeave )
- CAknRadioButtonSettingPage(
- &string,
- EAknSettingPageNoOrdinalDisplayed,
- KGSUseDefault,
- KGSUseDefault,
- R_SETTING_PAGE,
- currentItem,
- items );
-
- // handle als and blocking separately...
- if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
- {
- if ( aPage == EGSALSBlockItemId )
- {
- AlsBlockConvertValue( currentItem );
- iSsSettings->Set( ESSSettingsAlsBlocking, iAlsBlock );
- }
- else if ( aPage == EGSLineChangeItemId )
- {
- iAls = currentItem + 1;
- iSsSettings->Set( ESSSettingsAls, iAls );
- }
- }
- CleanupStack::PopAndDestroy( 2 ); // items, string
- __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::ShowAlsSettingPageL");
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// Changes value from 0 to 1 and vice versa
-// Used when Central Repository is enabled
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::SwitchOnOffSetting( TCallSettId aSetting )
- {
- TInt value = KGSSettingOff;
- // Reads a value and switches value (0 -> 1, 1 -> 0).
- iModel->GetCallSettingValue( aSetting, value );
- SwitchValue( value );
- iModel->SetCallSettingValue( aSetting, value );
- }
-
-// ---------------------------------------------------------------------------
-//
-// Appends given item to given list
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::AppendItemL( CDesCArrayFlat& aList, TInt aItem )
- {
- HBufC* string = StringLoader::LoadLC( aItem );
- aList.AppendL( *string );
- CleanupStack::PopAndDestroy( string );
- }
-
-// ---------------------------------------------------------------------------
-//
-// Selects what kind of menu is created
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::HandleCreatePopupL( TInt aIndex )
- {
- __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::HandleCreatePopupL");
- switch ( aIndex )
- {
- case EGSCallWaitingItemId:
- break;
- case EGSLineChangeItemId:
- ShowAlsSettingPageL( EGSLineChangeItemId );
- break;
- case EGSALSBlockItemId:
- ShowAlsSettingPageL( EGSALSBlockItemId );
- break;
- case EGSSoftRejectTextItemId:
- ShowSoftRejectSettingPageL();
- UpdateListBoxL( EGSSoftRejectTextItemId, KGSNotUsed );
- break;
- case EGSStillImageItemId:
- if ( FeatureManager::FeatureSupported(
- KFeatureIdCsVideoTelephony ) )
- {
- ShowVTStillImageSettingPageL();
- }
- break;
- case EGSOwnImageVtCallItemId:
- if ( FeatureManager::FeatureSupported(
- KFeatureIdCsVideoTelephony ) )
- {
- ShowOwnImageVtCallSettingPageL();
- }
- break;
- case EGSReplacePrefixItemId:
- if ( FeatureManager::FeatureSupported( KFeatureIdJapanPrefixChange ) )
- {
- ChangePrefixSettingL( ETrue );
- UpdateListBoxL( EGSReplacePrefixItemId, KGSNotUsed );
- }
- break;
- case EGSShowCallDurationItemId:
- ChangeCallDurationSettingL( ETrue );
- UpdateListBoxL( EGSShowCallDurationItemId, KGSNotUsed );
- break;
- case EGSLongPressCallKeyItemId:
- #ifdef RD_VT_LONG_SEND_KEY
- ChangeLongPressCallKeySettingL( ETrue );
- #endif
- break;
- default:
- ShowSettingPageL( static_cast<TGSCallItemIds> ( aIndex ) );
- break;
- }
- __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::HandleCreatePopupL");
- }
-
-// ---------------------------------------------------------------------------
-//
-// Sets title text to a setting page
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::SetTitleToSettingL( CAknRadioButtonSettingPage& aDlg,
- TInt aTitleID )
- {
- HBufC* title = StringLoader::LoadLC ( aTitleID );
- aDlg.SetSettingTextL( *title );
- CleanupStack::PopAndDestroy( title );
- }
-
-
-/*// ---------------------------------------------------------------------------
-//
-// Sets title text to a status pane
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::SetTitleL( TInt aTitleID )
- {
- CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
- CleanupStack::PushL(statusPane);
- CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(
- EEikStatusPaneUidTitle));
- CleanupStack::PushL( titlePane );
-
- TResourceReader reader;
- iCoeEnv->CreateResourceReaderLC( reader, aTitleID );
- titlePane->SetFromResourceL( reader );
-
- CleanupStack::PopAndDestroy();//reader
-
- CleanupStack::Pop(titlePane);
- CleanupStack::Pop(statusPane);
- }
-*/
-
-// ---------------------------------------------------------------------------
-//
-// Switches value between setting page and shared data.
-// Values in shared data do not map nicely to values in setting menu,
-// therefore sharedData:SettingOn(1) => settingPage:IndexOn(0).
-// ---------------------------------------------------------------------------
-TInt CGSCallPlugin::SwitchValue( TInt& aValue )
- {
- if ( aValue == KGSSettingOn )
- {
- aValue = KGSIndexOn;
- }
- else if ( aValue == KGSSettingOff )
- {
- aValue = KGSIndexOff;
- }
- return aValue;
- }
-
-// ---------------------------------------------------------------------------
-//
-// Observes changes to ALS, ALS Block and CLIR values.
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::PhoneSettingChanged( TSSSettingsSetting aSetting,
- TInt aNewValue )
- {
- __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::PhoneSettingChanged");
- TInt updateMe = KErrNone;
- switch( aSetting )
- {
- case ESSSettingsClir:
- iClir = aNewValue;
- updateMe = EGSCliItemId;
- break;
- case ESSSettingsAls:
- iAls = aNewValue;
- updateMe = EGSLineChangeItemId;
- break;
- case ESSSettingsAlsBlocking:
- iAlsBlock = aNewValue;
- updateMe = EGSALSBlockItemId;
- TRAP_IGNORE( ShowAlsBlockNoteL() );
- break;
- default:
- break;
- }
- __GSLOGSTRING1("[GSCallPlugin] PhoneSettingChanged: aNewValue: %d", aNewValue);
- if ( ( iContainer ) && ( updateMe != KErrNone ) )
- {
- TRAP_IGNORE( UpdateListBoxL( updateMe, aNewValue ) );
- }
- __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::PhoneSettingChanged");
- }
-
-// ---------------------------------------------------------------------------
-//
-// Shows notes when Als Block value has been changed.
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::ShowAlsBlockNoteL()
- {
- TInt noteText;
- if ( iAlsBlock == ESSSettingsAlsBlockingOn )
- {
- noteText = R_ALS_LINE_BLOCKING_ON_SEL;
- }
- else
- {
- noteText = R_ALS_LINE_BLOCKING_OFF_SEL;
- }
-
- HBufC* string = StringLoader::LoadLC( noteText );
- CAknInformationNote* note = new ( ELeave ) CAknInformationNote();
- note->ExecuteLD( *string );
- CleanupStack::PopAndDestroy( string );
- }
-
-// ---------------------------------------------------------------------------
-//
-// Creates new iContainer.
-//
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::NewContainerL()
- {
- __GSLOGSTRING("[GSCallPlugin]--> NewContainerL");
- iContainer = new (ELeave) CGSCallPluginContainer;
- __GSLOGSTRING("[GSCallPlugin] <--NewContainerL");
- }
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::HandleListBoxSelectionL
-//
-// Handle user selection in the listbox to perform an associated action
-// ---------------------------------------------------------------------------
-void CGSCallPlugin::HandleListBoxSelectionL()
- {
- TBool updateValue = EFalse;
- TInt value( KErrNone );
- CEikMenuBar* menuBar = this->MenuBar();
-
- const TInt currentFeatureId = Container()->CurrentFeatureId();
-
- TBool featureVoipSupported = iModel->VoIPSupported();
-
- switch ( currentFeatureId )
- {
- case EGSOpeningSlideAnswerCallItemId:
- SwitchOnOffSetting( EGSOpeningSlideAnswerCall );
- updateValue = ETrue;
- break;
- case EGSClosingSlideEndCallItemId:
- SwitchOnOffSetting( EGSClosingSlideEndCall );
- updateValue = ETrue;
- break;
- case EGSCliItemId:
- ShowSettingPageL( EGSCliItemId );
- break;
- case EGSCallWaitingItemId:
- iRockerPress = ETrue;
- menuBar->SetMenuType(CEikMenuBar::EMenuContext);
- menuBar->TryDisplayMenuBarL();
- menuBar->SetMenuType(CEikMenuBar::EMenuOptions);
- iRockerPress = EFalse;
- break;
- case EGSICSendIntCallIdItemId: // Send my Internet call id.
- if ( featureVoipSupported )
- {
- iModel->GetVoIPCallSettingValue( EGSVoIPSendIntCallId, value );
-
- if ( value == EGSSendIntCallIdOff )
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPSendIntCallId, EGSSendIntCallIdOn );
- }
- else
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPSendIntCallId, EGSSendIntCallIdOff );
-
- TInt status( KErrNone );
- iModel->GetSCCPStatus( status );
-
- if ( status == 1 )
- {
- HBufC* prompt = StringLoader::
- LoadLC( R_QTN_VOIP_SCCP_NO_CLIR );
- CAknInformationNote* note =
- new(ELeave) CAknInformationNote( ETrue );
- note->ExecuteLD( *prompt );
- CleanupStack::PopAndDestroy( prompt );
- }
- }
- updateValue = ETrue;
- }
- break;
- case EGSICWaitingItemId: // Internet call waiting item.
- if ( featureVoipSupported )
- {
- iModel->GetVoIPCallSettingValue( EGSVoIPCW, value );
-
- if ( value == EGSCSCallWaitingOff )
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPCW, EGSCSCallWaitingOn );
- }
- else
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPCW, EGSCSCallWaitingOff );
- }
- updateValue = ETrue;
- }
- break;
- case EGSICPreferredTelephonyId: // Preferred call type.
- if ( featureVoipSupported )
- {
- iModel->GetVoIPCallSettingValue( EGSVoIPPreType, value );
-
- if ( value == EGSPreferredCS )
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPPreType, EGSPreferredPS );
-
- // Show message query dialog if preferred call
- // setting was changed to the Int. Telephone.
- ShowPreferredTelephonyNoteL();
- }
- else
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPPreType, EGSPreferredCS );
- }
- updateValue = ETrue;
- }
- break;
- case EGSDndItemId: // Do not disturb.
- if ( featureVoipSupported )
- {
- iModel->GetVoIPCallSettingValue( EGSVoIPDnd, value );
-
- if ( value == EGSCSCallDndOff )
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPDnd, EGSCSCallDndOn );
- }
- else
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPDnd, EGSCSCallDndOff );
- }
- updateValue = ETrue;
- }
- break;
- case EGSSoftRejectTextItemId:
- ShowSoftRejectSettingPageL();
- updateValue = ETrue;
- break;
- case EGSSummaryAfterCallItemId:
- SwitchOnOffSetting( EGSSummaryAfterCall );
- updateValue = ETrue;
- break;
- case EGSLineChangeItemId:
- SwitchAlsSettingL();
- break;
- case EGSALSBlockItemId:
- ShowAlsSettingPageL( EGSALSBlockItemId );
- break;
- //Still image listbox creating
- case EGSStillImageItemId:
- if ( FeatureManager::FeatureSupported(
- KFeatureIdCsVideoTelephony ) &&
- !iVTImageSelectionOngoing )
- {
- //Locking listbox selection so user cannot click
- //VT still image item twice
- iVTImageSelectionOngoing = ETrue;
-
- //This takes some time
- ShowVTStillImageSettingPageL();
-
- //Releasing lock
- iVTImageSelectionOngoing = EFalse;
- }
- break;
- case EGSOwnImageVtCallItemId:
- if ( FeatureManager::FeatureSupported(
- KFeatureIdCsVideoTelephony ) )
- {
- ShowOwnImageVtCallSettingPageL();
- }
- break;
- case EGSReplacePrefixItemId:
- if ( FeatureManager::FeatureSupported( KFeatureIdJapanPrefixChange ) )
- {
- ChangePrefixSettingL( EFalse );
- updateValue = ETrue;
- }
- break;
- case EGSShowCallDurationItemId:
- ChangeCallDurationSettingL( EFalse );
- updateValue = ETrue;
- break;
- case EGSLongPressCallKeyItemId:
- #ifdef RD_VT_LONG_SEND_KEY
- ChangeLongPressCallKeySettingL( EFalse );
- #endif
- break;
- default:
- break;
- }
- if ( updateValue )
- {
- UpdateListBoxL( currentFeatureId, KGSNotUsed );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// Converts value from setting page to SsSettings:
-// settin page: line change disabled(0) => ESSSettingsAlsBlockingOn(2)
-// settin page: line change enabled(1) => ESSSettingsAlsBlockingOff(1)
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::AlsBlockConvertValue( TInt& aValue )
- {
- __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::AlsBlockConvertValue");
- __GSLOGSTRING1("[GSCallPlugin] AlsBlockConvertValue: aValue: %d", aValue);
- if ( aValue == KGSAlsBlockOn )
- {
- iAlsBlock = ESSSettingsAlsBlockingOn;
- }
- else
- {
- iAlsBlock = ESSSettingsAlsBlockingOff;
- }
- __GSLOGSTRING1("[GSCallPlugin] AlsBlockConvertValue: aValue: %d", aValue);
- __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::AlsBlockConvertValue");
- }
-
-// ---------------------------------------------------------------------------
-//
-// Converts value from setting page to SsSettings:
-// settin page: own number sending default(0) =>
-// SsSettings: ESSSettingsClirNetworkDefault(0)
-// settin page: own number sending on (1) =>
-// SsSettings: ESSSettingsClirExplicitSuppress(2)
-// settin page: own number sending off (2) =>
-// SsSettings: ESSSettingsClirExplicitInvoke(1)
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::CliConvertValue( TInt& aValue )
- {
- switch ( aValue )
- {
- case KGSCliDefault:
- aValue = ESSSettingsClirNetworkDefault;
- break;
- case KGSCliOn:
- aValue = ESSSettingsClirExplicitSuppress;
- break;
- case KGSCliOff:
- aValue = ESSSettingsClirExplicitInvoke;
- break;
- default:
- //error, return to-be converted value w/o changes
- break;
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// Updates specific value to container.
-//
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::UpdateListBoxL( const TInt& aListItem,
- TInt aNewValue )
- {
- /*if ( aListItem == EGSStillImageItemId )
- {
- TRAP_IGNORE( iAvkonAppUi->StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL ) );
- SetTitleL( R_GS_CALL_VIEW_TITLE );
- TRAP_IGNORE( iAvkonAppUi->StatusPane()->DrawNow() );
- }*/
- if ( Container() )
- {
- Container()->UpdateListBoxL( aListItem, aNewValue );
- }
- CheckMiddleSoftkeyLabelL();
- }
-
-// ---------------------------------------------------------------------------
-//
-// Before showing a options menu
-//
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::DynInitMenuPaneL( TInt aResourceId,
- CEikMenuPane* aMenuPane )
- {
- __GSLOGSTRING("[GSCallPlugin]--> DynInitMenuPaneL");
- const TInt currentFeatureId = Container()->CurrentFeatureId();
- CEikMenuBar* menuBar = this->MenuBar();
- if ( aResourceId == R_GS_CALL_VIEW_MENU )
- {
- if ( currentFeatureId == EGSCallWaitingItemId )
- {
- //add CW menu
- if (MenuBar()->ItemSpecificCommandsEnabled() || MenuBar()->GetMenuType() == CEikMenuBar::EMenuContext)
- {
- aMenuPane->AddMenuItemsL( R_GS_CALL_WAIT_VIEW_MENU,EAppCmdCreatePopupList );
- }
-
- //hide Change if call waiting is selected
- aMenuPane->SetItemDimmed( EAppCmdCreatePopupList, ETrue );
-
- if ( iRockerPress )
- {
- aMenuPane->SetItemDimmed( EAknCmdExit, ETrue );
- }
-
- if ( FeatureManager::FeatureSupported( KFeatureIdHelp )
- && !iRockerPress )
- {
- aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse );
- }
- else
- {
- aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
- }
- }
- else
- {
- //for other items than call waiting
- if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse );
- }
- else
- {
- aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
- }
- }
- }
-
- __GSLOGSTRING("[GSCallPlugin] <--DynInitMenuPaneL");
- }
-
-// ---------------------------------------------------------------------------
-//
-// Requests user to enter PIN2
-//
-// ---------------------------------------------------------------------------
-//
-TInt CGSCallPlugin::MakePin2QueryL()
- {
- TInt retValue = KErrNone;
- TSecUi::InitializeLibL();
-
- CSecuritySettings* settings = CSecuritySettings::NewL();
- CleanupStack::PushL( settings );
-
- if ( settings->AskPin2L() )
- {
- retValue = KGSPinQueryOk;
- }
-
- CleanupStack::PopAndDestroy( settings );
- TSecUi::UnInitializeLib();
-
- return retValue;
- }
-
-// ---------------------------------------------------------------------------
-//
-// Requests user to enter security code
-//
-// ---------------------------------------------------------------------------
-//
-TInt CGSCallPlugin::MakeSecCodeQueryL()
- {
- TBool retValue = EFalse;
- TSecUi::InitializeLibL();
-
- CSecuritySettings* settings = CSecuritySettings::NewL();
- CleanupStack::PushL( settings );
-
- retValue = settings->AskSecCodeL();
-
- CleanupStack::PopAndDestroy( settings );
- TSecUi::UnInitializeLib();
-
- return retValue;
- }
-
-// ---------------------------------------------------------------------------
-//
-// Changes value in shared data for Als
-//
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::SwitchAlsSettingL()
- {
- __GSLOGSTRING("[GSCallPlugin]--> CGSCallPlugin::SwitchAlsSettingL");
- //causes PIN2 query to launch, if necessary
- if ( iAlsBlock == ESSSettingsAlsBlockingOn )
- {
- TInt pin = MakePin2QueryL();
- if ( pin != KGSPinQueryOk )
- {
- __GSLOGSTRING("[GSCallPlugin] SwitchAlsSettingL: User failed in Pin2 Query");
- return; //User failed in Pin2 Query
- }
- }
- iSsSettings->Get( ESSSettingsAls, iAls );
- if ( iAls == ESSSettingsAlsPrimary )
- {
- iAls = ESSSettingsAlsAlternate;
- }
- else
- {
- iAls = ESSSettingsAlsPrimary;
- }
- iSsSettings->Set( ESSSettingsAls, iAls );
- __GSLOGSTRING("[GSCallPlugin] <--CGSCallPlugin::SwitchAlsSettingL");
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// Show Soft Reject Text setting page
-//
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::ShowSoftRejectSettingPageL()
- {
- __GSLOGSTRING("[GSCallPlugin]--> ShowSoftRejectSettingPageL");
- HBufC* dynamicText = HBufC::NewLC( KGSSMSTxtEditorLength );
- TPtr string( dynamicText->Des() );
-
- Container()->GetSoftRejectTextL( string );
-
- HBufC* title = Container()->ReadFromResourceL( R_SOFT_REJECT_TXT_TITLE );
- CleanupStack::PushL( title );
-
- // Open resource file, to get the resource texts for setting page.
- // Find the resource file
- RConeResourceLoader loader( *iCoeEnv );
- TParse parse;
- parse.Set( KGSSoftRejectResource, &KDC_RESOURCE_FILES_DIR, NULL );
- TFileName fileName( parse.FullName() );
-
- // Get language of resource file
- BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName );
-
- // Open resource file
- TInt err = loader.Open( fileName );
- if ( err == KErrNotFound )
- {
- User::Leave( KErrGeneral );
- }
- CleanupClosePushL( loader );
-
- CAknSettingPage* dlg = new( ELeave )CAknTextSettingPage(
- title,
- EAknSettingPageNoOrdinalDisplayed,
- KGSUseDefault,
- KGSUseDefault,
- R_TEXT_SETTING_PAGE,
- string,
- CAknTextSettingPage::EZeroLengthAllowed |
- CAknTextSettingPage::EPredictiveTextEntryPermitted );
-
- if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
- {
- TInt value = KGSSettingOn;
- iModel->SetCallSettingValue( EGSSoftRejectDefault, value );
- AknTextUtils::StripCharacters( string, KAknStripTabs );
- iModel->SetSoftRejectText( string );
- }
-
- CleanupStack::PopAndDestroy( 3 ); //title, dynamicText, loader
- __GSLOGSTRING("[GSCallPlugin] <--ShowSoftRejectSettingPageL");
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// Show Replace Prefix setting page
-//
-// ---------------------------------------------------------------------------
-//
-TBool CGSCallPlugin::ShowPrefixSettingPageL( TInt& aCurrentValue )
- {
- __GSLOGSTRING("[GSCallPlugin]--> ShowPrefixSettingPageL");
- CDesCArrayFlat* items =
- iCoeEnv->ReadDesC16ArrayResourceL( R_GS_REPLACE_PREFIX_SETTING_PAGE_LBX );
- CleanupStack::PushL( items );
-
- CAknRadioButtonSettingPage* dlg =
- new (ELeave) CAknRadioButtonSettingPage( R_GS_REPLACE_PREFIX_SETTING_PAGE,
- aCurrentValue, items );
-
- TBool ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
- CleanupStack::PopAndDestroy( items );
-
- __GSLOGSTRING1("[GSCallPlugin] ShowPrefixSettingPageL: aCurrentValue: %d", aCurrentValue);
- __GSLOGSTRING("[GSCallPlugin] <--ShowPrefixSettingPageL");
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::ChangePrefixSettingL
-//
-// Change replace prefix setting.
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::ChangePrefixSettingL( TBool aSettingPage )
- {
- __GSLOGSTRING("[GSCallPlugin]--> ChangePrefixSettingL");
-
- TInt changeMode = iModel->PrefixChangeModeL();
- TInt prevChangeMode = changeMode;
- TBool updateValue = ETrue;
- TBool rockerPress = EFalse;
-
- __GSLOGSTRING1("[GSCallPlugin] ChangePrefixSettingL: prevChangeMode: %d", prevChangeMode);
- if ( aSettingPage )
- {
- updateValue = ShowPrefixSettingPageL( changeMode );
- }
- else
- {
- rockerPress = ETrue;
- if( changeMode == KGSSettingItemOff )
- {
- changeMode = KGSSettingItemOn;
- }
- else
- {
- changeMode = KGSSettingItemOff;
- }
- }
-
- __GSLOGSTRING1("[GSCallPlugin] ChangePrefixSettingL: changeMode: %d", changeMode);
- if ( updateValue )
- {
- //if the value is changed and is set to ON, display the query dialog
- if ( changeMode == KGSSettingItemOn )
- {
- HBufC* replacePrefix = HBufC::NewLC( KGSReplacePrefixTextLength );
- TPtr string( replacePrefix->Des() );
- string.Zero();
-
- iModel->PrefixChangeDataL( string );
-
- CAknTextQueryDialog* dlg = new( ELeave ) CAknTextQueryDialog( string );
-
- TBool ret = dlg->ExecuteLD( R_REPLACE_PREFIX_DATA_QUERY );
- if( ret )
- {
- rockerPress = ETrue;
- iModel->SetPrefixChangeDataL( string );
- }
- else
- {
- rockerPress = EFalse;
- }
- CleanupStack::PopAndDestroy( replacePrefix );
-
- }
- else
- {
- rockerPress = ETrue;
- }
- }
-
- if ( prevChangeMode != changeMode && rockerPress )
- {
- iModel->SetPrefixChangeModeL( changeMode );
- }
-
- __GSLOGSTRING("[GSCallPlugin] <--ChangePrefixSettingL");
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::SetVoipSettingBasedSelectedLine
-//
-// Set the new changes to VOIP variables.
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::SetVoipSettingBasedSelectedLine(
- const TGSCallItemIds aPage, TInt aCurrentSetting )
- {
- switch ( aPage )
- {
- case EGSICSendIntCallIdItemId:
- if ( aCurrentSetting == KGSFirstLine )
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPSendIntCallId, EGSSendIntCallIdOn );
- }
- else
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPSendIntCallId, EGSSendIntCallIdOff );
- }
- break;
- case EGSICWaitingItemId:
- if ( aCurrentSetting == KGSFirstLine )
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPCW, EGSCSCallWaitingOn );
- }
- else
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPCW, EGSCSCallWaitingOff );
- }
- break;
- case EGSICPreferredTelephonyId:
- if ( aCurrentSetting == KGSFirstLine )
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPPreType, EGSPreferredCS );
- }
- else
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPPreType, EGSPreferredPS );
-
- // Show message query dialog if preferred call
- // setting was changed to the Int. Telephone.
- TRAP_IGNORE( ShowPreferredTelephonyNoteL() );
- }
- break;
- case EGSDndItemId:
- if ( aCurrentSetting == KGSFirstLine )
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPDnd, EGSCSCallDndOn );
- }
- else
- {
- iModel->SetVoIPCallSettingValue(
- EGSVoIPDnd, EGSCSCallDndOff );
- }
- break;
- default:
- break;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::Container
-//
-// Returns call container item
-// ---------------------------------------------------------------------------
-//
-CGSCallPluginContainer* CGSCallPlugin::Container()
- {
- return static_cast <CGSCallPluginContainer*> ( iContainer );
- }
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::GetLineForSelectedVoipSetting
-//
-// Returns selected line based on setting value.
-// ---------------------------------------------------------------------------
-//
-TInt CGSCallPlugin::GetLineForSelectedVoipSetting(
- const TGSCallItemIds aPage )
- {
- if ( !iModel->VoIPSupported() )
- {
- return KErrNone;
- }
-
- TInt value( KErrNone );
-
- // Get value based from setting page.
- switch ( aPage )
- {
- case EGSICSendIntCallIdItemId: // No swap.
- iModel->GetVoIPCallSettingValue( EGSVoIPSendIntCallId, value );
- break;
- case EGSICWaitingItemId:
- iModel->GetVoIPCallSettingValue( EGSVoIPCW, value );
- break;
- case EGSICPreferredTelephonyId: // No swap.
- iModel->GetVoIPCallSettingValue( EGSVoIPPreType, value );
- break;
- case EGSDndItemId:
- iModel->GetVoIPCallSettingValue( EGSVoIPDnd, value );
- break;
- default:
- break;
- }
-
- // Swap items.
- if ( aPage != EGSICPreferredTelephonyId &&
- aPage != EGSICSendIntCallIdItemId )
- {
- if ( value == KGSSecondLine )
- {
- value = KGSFirstLine;
- }
- else
- {
- value = KGSSecondLine;
- }
- }
-
- return value;
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::ShowVTStillImageSettingPageL
-//
-// Display Video Telephony Still Image setting page.
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::ShowVTStillImageSettingPageL()
- {
- iVtStillImage = iModel->VTStillImageL();
- // Store previous in case something goes wrong.
- iPreviousVtStillImage = iVtStillImage;
-
- CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
- R_GS_STILL_IMAGE_SETTING_PAGE_LBX );
- CleanupStack::PushL( items );
-
- // Map CenRep value to lbx items:
- TInt dialogSelection = EGSVtStillImageNotInUse;
- if ( iVtStillImage != KGSVTStillImageOff ) dialogSelection = EGSVtStillImageInUse;
-
- CAknRadioButtonSettingPage* dlg =
- new( ELeave ) CAknRadioButtonSettingPage( R_GS_STILL_IMAGE_SETTING_PAGE,
- dialogSelection, items );
-
- TBool ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
-
- if ( ret )
- {
- if ( dialogSelection == EGSVtStillImageNotInUse )
- {
- // Still image not used
- iModel->SetVTStillImageL( KGSVTStillImageOff );
- }
- else
- {
- // User decided to update still image
- ShowStillImageListL();
- }
-
- // Update VT item in CGSCallPlugin listbox. iVtStillImage value is
- // irrelevant as UpdateListBoxL actually reads the new value from
- // CenRep and converts it to lbx item value correctly (Off/On).
- UpdateListBoxL( EGSStillImageItemId, iVtStillImage );
- }
- CleanupStack::PopAndDestroy( items );
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::ShowStillImageListL()
-//
-// Display background image list from media gallery.
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::ShowStillImageListL()
- {
- CDesCArray* selectedFiles = new ( ELeave ) CDesCArrayFlat( 1 );
- CleanupStack::PushL( selectedFiles );
-
- TBool ret = MGFetch::RunL( *selectedFiles, EImageFile, EFalse, this );
-
- if ( ret && selectedFiles->MdcaCount() == 1 )
- {
- iImageHandler = CGSAsyncImageHandling::NewL( iCoeEnv->FsSession(),
- this, KGSVTStillImgPath );
-
- TPtrC imagePath = selectedFiles->MdcaPoint( 0 );
-
- TRAPD( error, iModel->iBackgroundApi->SetVTStillImagePathL( imagePath,
- *iImageHandler ) );
- if ( error == KErrNone )
- {
- // Show wait note
- ShowImageLoadWaitNoteL();
- }
- else
- {
- HandleImageErrorsL( error );
- }
- }
- CleanupStack::PopAndDestroy( selectedFiles );
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::ImageHandlingComplete()
-//
-// Method derived from MGSSyncImageHandlingObserver
-// Run when the asynchronous image converting is complete
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::ImageHandlingCompleteL( TInt aError )
- {
- if ( aError != KErrNone )
- {
- HandleImageErrorsL( aError );
- }
- else
- {
- // Needs to increment iVtStillImage value so CenRep will send
- // notificatios to VT (only changing value will fire notification).
- iModel->SetVTStillImageL( ++iVtStillImage );
- UpdateListBoxL( EGSStillImageItemId, EGSVtStillImageInUse );
- }
-
- HideImageLoadWaitNoteL();
-
- delete iImageHandler;
- iImageHandler = NULL;
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::ShowImageLoadWaitNoteL()
-//
-// Display image load wait note dialog.
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::ShowImageLoadWaitNoteL()
- {
- if ( !iWaitDialog )
- {
- iWaitDialog = new( ELeave ) CAknWaitDialog(
- ( REINTERPRET_CAST(CEikDialog**,
- &iWaitDialog ) ), ETrue );
-
- iWaitDialog->ExecuteDlgLD( CAknNoteDialog::ENoTone,
- R_IMAGE_LOAD_WAIT_NOTE );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::HideImageLoadWaitNoteL()
-//
-// Hide image load wait note dialog.
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::HideImageLoadWaitNoteL()
- {
- if ( iWaitDialog )
- {
- iWaitDialog->ProcessFinishedL(); // deletes the dialog
- iWaitDialog = NULL;
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::HandleImageErrorsL
-//
-// Prompt image related errors to the user
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::HandleImageErrorsL( TInt aError )
- {
- TInt resourceId;
- switch( aError )
- {
- case KErrNotSupported:
- case KErrUnderflow:
- // Image is corrupted or in wrong format
- resourceId = R_GS_IMAGE_CORRUPTED;
- break;
- case KErrDiskFull:
- case KErrNoMemory:
- // Image is too large
- resourceId = R_GS_IMAGE_TOO_LARGE;
- break;
- default:
- // Better to give some error message than result in CONE5 panic:
- resourceId = R_GS_IMAGE_CORRUPTED;
- break;
- }
- // Show information note
- HBufC* prompt = iCoeEnv->AllocReadResourceLC( resourceId );
- CAknInformationNote* note = new( ELeave ) CAknInformationNote( ETrue );
- note->ExecuteLD( *prompt );
-
- // Setting previous VT still image value (rollback)
- iModel->SetVTStillImageL( iPreviousVtStillImage );
- UpdateListBoxL( EGSStillImageItemId, iPreviousVtStillImage );
- CleanupStack::PopAndDestroy( prompt );
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::VerifySelectionL()
-//
-// An overloaded method from MMGFetchVerifier interface class
-// ---------------------------------------------------------------------------
-//
-TBool CGSCallPlugin::VerifySelectionL( const MDesCArray* aSelectedFiles )
- {
- const TBool KGSDrmProtectedContent = ETrue;
-
- TBool ret = ETrue;
- //
- if ( aSelectedFiles->MdcaCount() == 1 )
- {
- const TPtrC fileName( aSelectedFiles->MdcaPoint( 0 ) );
-
- // First, check if the selected file is DRM protected
- if ( ret && CheckDRMProtectionL( fileName ) ==
- KGSDrmProtectedContent )
- {
- // display the note to user
- // Show information note
- HBufC* prompt = iCoeEnv->AllocReadResourceLC(
- R_GS_DRM_NOT_ALLOWED );
-
- CAknInformationNote* note =
- new( ELeave ) CAknInformationNote( ETrue );
- note->ExecuteLD( *prompt );
-
- CleanupStack::PopAndDestroy( prompt );
- ret = EFalse;
- }
-
- // Next, check whether the image header is valid
- if ( ret )
- {
- CImageDecoder* imageDecoder = NULL;
- TRAPD( err, imageDecoder = CImageDecoder::FileNewL(
- iCoeEnv->FsSession(), fileName, ContentAccess::EPeek ) );
-
- if ( err != KErrNone )
- {
- // Show information note
- HBufC* prompt = iCoeEnv->AllocReadResourceLC(
- R_GS_IMAGE_CORRUPTED );
- CAknInformationNote* note =
- new( ELeave ) CAknInformationNote( ETrue );
- note->ExecuteLD(*prompt);
- CleanupStack::PopAndDestroy( prompt );
-
- ret = EFalse;
- }
- delete imageDecoder;
- }
- }
-
- return ret;
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::CheckDRMProtectionL
-//
-// Check if the selected image file is DRM protected.
-// ---------------------------------------------------------------------------
-//
-TBool CGSCallPlugin::CheckDRMProtectionL( const TDesC& aOriginalFileName )
- {
- TBool isProtected( EFalse );
- DRMCommon* drmClient = DRMCommon::NewL();
- CleanupStack::PushL( drmClient );
- TInt error = drmClient->Connect();
- if ( error != DRMCommon::EOk )
- {
- User::Leave( KErrCorrupt );
- }
-
- if ( aOriginalFileName != KNullDesC )
- {
- error = drmClient->IsProtectedFile( aOriginalFileName, isProtected );
- if ( error != DRMCommon::EOk )
- {
- User::Leave( KErrCorrupt );
- }
- }
-
- CleanupStack::PopAndDestroy( drmClient );
- return isProtected;
- }
-
-// ---------------------------------------------------------------------------
-//
-// Show Call Duration setting page
-//
-// ---------------------------------------------------------------------------
-//
-TBool CGSCallPlugin::ShowCallDurationSettingPageL( TInt& aCurrentValue )
- {
- __GSLOGSTRING("[GSCallPlugin]--> ShowCallDurationSettingPageL");
- CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
- R_GS_SHOW_CALL_DURATION_SETTING_PAGE_LBX );
- CleanupStack::PushL( items );
-
- CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
- R_GS_SHOW_CALL_DURATION_SETTING_PAGE,
- aCurrentValue, items );
-
- TBool ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
- CleanupStack::PopAndDestroy( items );
-
- __GSLOGSTRING("[GSCallPlugin] <--ShowCallDurationSettingPageL");
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::ChangeCallDurationSettingL
-//
-// Change Call Duration setting.
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::ChangeCallDurationSettingL( TBool aSettingPage )
- {
- __GSLOGSTRING("[GSCallPlugin]--> ChangeCallDurationSettingL");
-
- TInt callState = CheckCallStateL();
-
- // Get information of whether there are open connections or not
- if ( callState != EPSCTsyCallStateUninitialized &&
- callState != EPSCTsyCallStateNone )
- {
- HBufC* prompt = iCoeEnv->AllocReadResourceLC( R_TEXT_ACTIVE_CALL );
-
- CAknInformationNote* note =
- new( ELeave ) CAknInformationNote( ETrue );
-
- note->ExecuteLD( *prompt );
-
- CleanupStack::PopAndDestroy( prompt );
-
- return;
- }
-
- TInt duration = iModel->CallDurationL();
- TBool updateValue = ETrue;
-
- if ( aSettingPage )
- {
- updateValue = ShowCallDurationSettingPageL( duration );
- }
- else
- {
- if( duration == KGSSettingItemOff )
- {
- duration = KGSSettingItemOn;
- }
- else
- {
- duration = KGSSettingItemOff;
- }
- }
-
- if ( updateValue )
- {
- iModel->SetCallDurationL( duration );
- UpdateListBoxL( EGSShowCallDurationItemId, KGSNotUsed );
- }
-
- __GSLOGSTRING("[GSCallPlugin] <--ChangePrefixSettingL");
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::CheckCallStateL
-//
-// Check call state using PubSub or SA
-// ---------------------------------------------------------------------------
-//
-TInt CGSCallPlugin::CheckCallStateL()
- {
- TInt callState = KErrNone;
- //here are open connections or not
- RProperty::Get( KPSUidCtsyCallInformation,
- KCTsyCallState,
- callState );
- return callState;
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::ShowPreferredTelephonyNoteL
-//
-// Shows note if preferred call setting was changed to the Int. Telephone.
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::ShowPreferredTelephonyNoteL()
- {
- // Create message query dialog.
- HBufC* text = StringLoader::LoadLC( R_IC_PREFERRED_TELEPHONE_QUERY_TEXT );
- CAknMessageQueryDialog* query = CAknMessageQueryDialog::NewL( *text );
- query->SetMessageTextL( text->Des() );
-
- // Show message query dialog.
- query->ExecuteLD( R_IC_PREFERRED_TELEPHONE_QUERY );
-
- CleanupStack::PopAndDestroy( text );
- }
-
-
-// -----------------------------------------------------------------------------
-// When this method is called, view checks based on highlight focus, if the MSK
-// label is correct.
-// -----------------------------------------------------------------------------
-//
-void CGSCallPlugin::CheckMiddleSoftkeyLabelL()
- {
- const TInt currentFeatureId = Container()->CurrentFeatureId();
- RemoveCommandFromMSK( iMskCommandFlag );
- if ( currentFeatureId == EGSCallWaitingItemId )
- {
- // First remove any prevous commands.
- SetMiddleSoftKeyLabelL( R_CALL_SOFTKEY_OPTION,
- EAknSoftkeyContextOptions );
- // This way we set which command is set for MSK
- iMskCommandFlag = EFalse;
- }
- else
- {
- //Set middle softkey as Change.
- SetMiddleSoftKeyLabelL( R_CALL_MSK_CHANGE,
- EGSMSKCmdAppChange );
- // This way we set which command is set for MSK
- iMskCommandFlag = ETrue;
- }
- }
-
-// -----------------------------------------------------------------------------
-// Remove unnecessary commands from Middle softkey.
-// @flag = ETrue means presently MSK value is "Change" so we remove that
-// @flag = EFalse means presently MSK value is "Context Options" so we remove that
-// -----------------------------------------------------------------------------
-//
-void CGSCallPlugin::RemoveCommandFromMSK(const TBool flag )
- {
- CEikButtonGroupContainer* cbaGroup = Cba();
- if ( cbaGroup )
- {
- if ( flag )
- {
- cbaGroup->RemoveCommandFromStack(
- KGSMSKControlID, EGSMSKCmdAppChange );
- }
- else
- {
- cbaGroup->RemoveCommandFromStack(
- KGSMSKControlID, EAknSoftkeyContextOptions );
- }
- }
- }
-// ---------------------------------------------------------------------------
-// Sets middle softkey label.
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::SetMiddleSoftKeyLabelL(
- const TInt aResourceId, const TInt aCommandId )
- {
- CEikButtonGroupContainer* cbaGroup = Cba();
- if ( cbaGroup )
- {
- HBufC* middleSKText = StringLoader::LoadLC( aResourceId );
- TPtr mskPtr = middleSKText->Des();
- cbaGroup->AddCommandToStackL(
- KGSMSKControlID,
- aCommandId,
- mskPtr );
- CleanupStack::PopAndDestroy( middleSKText );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CGSCallPlugin::HandleClientRectChange
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CGSCallPlugin::HandleClientRectChange()
- {
- if ( iContainer )
- {
- iContainer->SetRect( ClientRect() );
- }
- }
-
-// ========================= From CGSPluginInterface ==================
-
-// -----------------------------------------------------------------------------
-// CGSCallPlugin::GetCaptionL
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CGSCallPlugin::GetCaptionL( TDes& aCaption ) const
- {
- HBufC* result = StringLoader::LoadL( R_GS_CALL_PLUGIN_CAPTION );
- aCaption.Copy( *result );
- delete result;
- }
-
-
-// -----------------------------------------------------------------------------
-// CGSCallPlugin::PluginProviderCategory
-//
-//
-// -----------------------------------------------------------------------------
-//
-TInt CGSCallPlugin::PluginProviderCategory() const
- {
- //This plugin is created by 3rd party.
- return KGSPluginProviderInternal;
- }
-
-
-// -----------------------------------------------------------------------------
-// CGSCallPlugin::CreateIconL()
-//
-//
-// -----------------------------------------------------------------------------
-//
-CGulIcon* CGSCallPlugin::CreateIconL( const TUid aIconType )
- {
- //EMbm<Mbm_file_name><Bitmap_name>
- CGulIcon* icon;
- TParse* fp = new( ELeave ) TParse();
- CleanupStack::PushL( fp );
- fp->Set( KGSCallPluginIconDirAndName, &KDC_BITMAP_DIR, NULL );
-
- if( aIconType == KGSIconTypeLbxItem )
- {
- icon = AknsUtils::CreateGulIconL(
- AknsUtils::SkinInstance(),
- KAknsIIDQgnPropSetCallSub,
- fp->FullName(),
- EMbmGscallpluginQgn_prop_set_call_sub,
- EMbmGscallpluginQgn_prop_set_call_sub_mask );
- }
- else
- {
- icon = CGSPluginInterface::CreateIconL( aIconType );
- }
-
- CleanupStack::PopAndDestroy( fp );
-
- return icon;
- }
-
-
-// ---------------------------------------------------------------------------
-// CGSCallPlugin::ChangeLongPressCallKeySettingL
-//
-// Change Long Press Call Key setting.
-// values: 0,1 --> Inactive (Default Value is 1 and when RFS default value is 0)
-// 2 --> Video call
-// ---------------------------------------------------------------------------
-//
-void CGSCallPlugin::ChangeLongPressCallKeySettingL( const TBool aShowSettingPage )
- {
- __GSLOGSTRING("[GSCallPlugin]--> ChangeLongPressCallKeySettingL");
- TInt statusLongPressCallKey = iModel->LongPressCallKeyL();
- TBool updateValue = ETrue;
-
- if ( aShowSettingPage )
- {
- // If the status of Long Key is not active then we decrement to
- // the value of statusLongPressCallKey so that the values are
- // then tuned to launch the setting page normally with two setting
- // items InActive and Video Call
- // Refer to GSCallPlugin.hrh file for more info for the description
- iModel->MapLongPressKeyCallKeyValue( statusLongPressCallKey );
- updateValue = ShowLongPressCallKeySettingPageL(
- statusLongPressCallKey );
-
- // Here if the selected index is 1 it means Video Call from the setting page
- // we then again map this value back to 2 which is EGSLongPressCallKeyVideoCall
- // Refer to GSCallPlugin.hrh for more details
- if ( statusLongPressCallKey == EGSLongPressCallKeyVoiceCall )
- {
- statusLongPressCallKey = EGSLongPressCallKeyVideoCall;
- }
- else // If selected index in setting page is InActive ( 0) we map
- // this to EGSLongPressCallKeyVoiceCall which is 1
- {
- statusLongPressCallKey = EGSLongPressCallKeyVoiceCall;
- }
- }
- else // switch the value
- {
- if ( statusLongPressCallKey == EGSLongPressCallKeyNotSet ||
- statusLongPressCallKey == EGSLongPressCallKeyVoiceCall )
- {
- statusLongPressCallKey = EGSLongPressCallKeyVideoCall;
- }
- else
- {
- statusLongPressCallKey = EGSLongPressCallKeyVoiceCall;
- }
- }
- if ( updateValue )
- {
- iModel->SetLongPressCallKeyL( statusLongPressCallKey );
- UpdateListBoxL( EGSLongPressCallKeyItemId, KGSNotUsed );
- }
-
- __GSLOGSTRING("[GSCallPlugin] <--ChangeLongPressCallKeySettingL");
- }
-
-// ---------------------------------------------------------------------------
-//
-// Launching Long Press Key setting page
-//
-// ---------------------------------------------------------------------------
-//
-TBool CGSCallPlugin::ShowLongPressCallKeySettingPageL( TInt& aCurrentValue )
- {
- __GSLOGSTRING("[GSCallPlugin]--> ShowLongPressCallKeySettingPageL");
- CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
- R_GS_LONG_PRESS_CALL_SETTING_PAGE_LBX );
- CleanupStack::PushL( items );
-
- CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
- R_GS_LONG_PRESS_CALL_SETTING_PAGE,
- aCurrentValue, items );
-
- TBool ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
- CleanupStack::PopAndDestroy( items );
-
- __GSLOGSTRING("[GSCallPlugin] <--ShowLongPressCallKeySettingPageL");
- return ret;
- }
-
-
-// ----------------------------------------------------------------------------
-// CGSCallPlugin::ShowOwnImageVtCallSettingPageL
-//
-// Displaying settings page for Own Image during video call setting
-// ----------------------------------------------------------------------------
-//
-void CGSCallPlugin::ShowOwnImageVtCallSettingPageL()
- {
- __GSLOGSTRING("[GSCallPlugin]--> ShowOwnImageVtCallSettingPageL");
- TInt currentValue = iModel->OwnImageVtCallStatusL();
- CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
- R_GS_OWN_IMAGE_VT_CALL_SETTING_PAGE_LBX );
- CleanupStack::PushL( items );
-
- CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
- R_GS_OWN_IMAGE_VT_CALL_SETTING_PAGE,
- currentValue, items );
-
- TBool ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
-
- if( ret )
- {
- iModel->SetOwnImageVtCallStatusL( currentValue );
- UpdateListBoxL( EGSOwnImageVtCallItemId, currentValue );
- }
-
- CleanupStack::PopAndDestroy( items );
-
- __GSLOGSTRING("[GSCallPlugin] <--ShowOwnImageVtCallSettingPageL");
- }
-
-//End of File