phoneapp/phoneuivoipextension/src/cphoneviewcustomizationvoip.cpp
changeset 0 5f000ab63145
child 65 2a5d4ab426d3
--- /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 );
+    }