--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuivoipextension/src/cphoneviewcustomizationvoip.cpp Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,178 @@
+/*
+* Copyright (c) 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: VoIP-specific view customization implementation.
+*
+*/
+
+#include <cconvergedserviceselector.h>
+#include "cphoneviewcustomizationvoip.h"
+#include "mphoneviewblockingdialogobserver.h"
+#include "phonestatedefinitionsvoip.h"
+#include "tphonecmdparamselector.h"
+#include "tphonecommandparam.h"
+#include "cphonelogger.h"
+#include "mphonecustomization.h"
+#include "phoneappvoipcommands.hrh"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CPhoneViewCustomizationVoip::CPhoneViewCustomizationVoip
+// C++ constructor.
+// ---------------------------------------------------------------------------
+//
+CPhoneViewCustomizationVoip::CPhoneViewCustomizationVoip(
+ MPhoneCustomization& aCustomization ) :
+ iPhoneCustomization( aCustomization )
+ {
+
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneViewCustomizationVoip::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CPhoneViewCustomizationVoip::ConstructL()
+ {
+ iServiceSelector = CConvergedServiceSelector::NewL();
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneViewCustomizationVoip::NewL
+// ---------------------------------------------------------------------------
+//
+CPhoneViewCustomizationVoip* CPhoneViewCustomizationVoip::NewL(
+ MPhoneCustomization& aCustomization )
+ {
+ CPhoneViewCustomizationVoip* self = CPhoneViewCustomizationVoip::NewLC(
+ aCustomization );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneViewCustomizationVoip::NewLC
+// ---------------------------------------------------------------------------
+//
+CPhoneViewCustomizationVoip* CPhoneViewCustomizationVoip::NewLC(
+ MPhoneCustomization& aCustomization )
+ {
+ CPhoneViewCustomizationVoip* self =
+ new( ELeave ) CPhoneViewCustomizationVoip( aCustomization );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneViewCustomizationVoip::~CPhoneViewCustomizationVoip
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CPhoneViewCustomizationVoip::~CPhoneViewCustomizationVoip()
+ {
+ delete iServiceSelector;
+ }
+
+
+// ---------------------------------------------------------------------------
+// From class MPhoneViewCustomization.
+// CPhoneViewCustomizationVoip::HandleCommandL
+// ---------------------------------------------------------------------------
+//
+TBool CPhoneViewCustomizationVoip::HandleCommandL(
+ MPhoneViewBlockingDialogObserver& aBlockingObserver,
+ TPhoneViewCommandId aCmdId,
+ TPhoneCommandParam* aCommandParam )
+ {
+ __LOGMETHODSTARTEND( PhoneUIVoIPExtension,
+ "CPhoneViewCustomizationVoip::HandleCommandL" );
+
+ TBool isCommandHandled( EFalse );
+
+ switch ( aCmdId )
+ {
+ case EPhoneViewServiceSelection:
+ {
+ isCommandHandled = SelectVoipService(
+ aBlockingObserver, aCommandParam );
+ }
+ break;
+ case EPhoneViewOpenCallHandling:
+ {
+ // Close transfer dialer
+ iPhoneCustomization.HandleCommandL(
+ EPhoneCmdTransferDialerExit );
+ isCommandHandled = ETrue;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return isCommandHandled;
+ }
+
+
+// ---------------------------------------------------------------------------
+// From class MPhoneViewCustomization.
+// CPhoneViewCustomizationVoip::RemoveDialog
+// ---------------------------------------------------------------------------
+//
+void CPhoneViewCustomizationVoip::RemoveDialog()
+ {
+ __LOGMETHODSTARTEND( PhoneUIVoIPExtension,
+ "CPhoneViewCustomizationVoip::RemoveDialog" );
+
+ // Dismiss service selector queries, if necessary
+ iServiceSelector->CancelSelection();
+ }
+
+
+// ---------------------------------------------------------------------------
+// CPhoneViewCustomizationVoip::SelectVoipService
+// ---------------------------------------------------------------------------
+//
+TBool CPhoneViewCustomizationVoip::SelectVoipService(
+ MPhoneViewBlockingDialogObserver& aBlockingObserver,
+ TPhoneCommandParam* aCommandParam )
+ {
+ __LOGMETHODSTARTEND( PhoneUIVoIPExtension,
+ "CPhoneViewCustomizationVoip::SelectVoipService" );
+
+ // Indicate that the service selection is blocking key events
+ // from the Phone.
+ aBlockingObserver.SetBlockingDialogIsDisplayed( ETrue );
+
+ CConvergedServiceSelector::TSsResult results;
+ TInt selectionResult = iServiceSelector->GetCallingServiceByCallType(
+ results, CConvergedServiceSelector::ESsVoipCall, 0, EFalse );
+
+ if ( KErrNone == selectionResult )
+ {
+ TPhoneCmdParamSelector* selectorContent =
+ static_cast<TPhoneCmdParamSelector*>( aCommandParam );
+ selectorContent->SetRegStatus( results.iServiceEnabled );
+ selectorContent->SetServiceId( results.iServiceId );
+ }
+
+ // Reset the flag
+ aBlockingObserver.SetBlockingDialogIsDisplayed( EFalse );
+
+ return ( KErrNone == selectionResult );
+ }