phonebookui/Phonebook2/USIMExtension/src/CPsu2ServiceDialingInfoView.cpp
changeset 0 e686773b3f54
child 68 9da50d567e3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/USIMExtension/src/CPsu2ServiceDialingInfoView.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,281 @@
+/*
+* Copyright (c) 2005-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:  Phonebook 2 USIM UI Extension service dialing info view.
+*
+*/
+
+
+#include "CPsu2ServiceDialingInfoView.h"
+
+// Phonebook 2
+#include <CPbk2UIExtensionView.h>
+#include <MPbk2ViewActivationTransaction.h>
+#include <CPbk2AppUiBase.h>
+#include <MPbk2ViewExplorer.h>
+#include <Pbk2USimUIRes.rsg>
+#include <Pbk2UIControls.rsg>
+#include <MPbk2ContactUiControl.h>
+#include <TPbk2StoreContactAnalyzer.h>
+#include <Pbk2Commands.hrh>
+#include <MPbk2ApplicationServices.h>
+#include <MPbk2PointerEventInspector.h>
+
+// System includes
+#include <AknUtils.h>
+#include <eikmenub.h>
+
+/// Unnamed namespace for local definitions
+namespace {
+
+#ifdef _DEBUG
+
+enum TPanicCode
+    {
+    EPanicLogic_HasContactPhoneNumberL = 1
+    };
+
+void Panic( TPanicCode aPanic )
+    {
+    _LIT( KPanicCat, "CPsu2ServiceDialingInfoView" );
+    User::Panic( KPanicCat, aPanic );
+    }
+
+#endif // _DEBUG
+
+} /// namespace
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::CPsu2ServiceDialingInfoView
+// --------------------------------------------------------------------------
+//
+CPsu2ServiceDialingInfoView::CPsu2ServiceDialingInfoView
+        ( CPbk2UIExtensionView& aExtensionView,
+          CPsu2ViewManager& aViewManager ):
+            CPsu2InfoViewBase( aExtensionView, aViewManager )
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::~CPsu2ServiceDialingInfoView
+// --------------------------------------------------------------------------
+//
+CPsu2ServiceDialingInfoView::~CPsu2ServiceDialingInfoView()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::NewL
+// --------------------------------------------------------------------------
+//
+CPsu2ServiceDialingInfoView* CPsu2ServiceDialingInfoView::NewL
+        ( CPbk2UIExtensionView& aExtensionView,
+          CPsu2ViewManager& aViewManager )
+    {
+    CPsu2ServiceDialingInfoView* self =
+        new( ELeave ) CPsu2ServiceDialingInfoView
+            ( aExtensionView, aViewManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::ConstructL
+// --------------------------------------------------------------------------
+//
+void CPsu2ServiceDialingInfoView::ConstructL()
+    {
+    BaseConstructL();
+    }
+
+// -----------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::HandleCommandKeyL
+// -----------------------------------------------------------------------------
+//
+TBool CPsu2ServiceDialingInfoView::HandleCommandKeyL
+        ( const TKeyEvent& aKeyEvent, TEventCode aType )
+    {
+    TBool ret = EFalse;
+
+    if ( aKeyEvent.iCode == EKeyPhoneSend && aType == EEventKey )
+        {
+        HandleCommandL( EPbk2CmdCall );
+        ret = ETrue;
+        }
+    else if ( aKeyEvent.iCode == EKeyOK && aType == EEventKey )
+        {
+        iExtensionView.LaunchPopupMenuL
+            ( R_PSU2_SERVICE_DIALING_INFO_CONTEXT_MENUBAR );
+        ret = ETrue;
+        }
+    else
+        {
+        ret = CPsu2InfoViewBase::HandleCommandKeyL( aKeyEvent, aType );
+        }
+
+    return ret;
+    }
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::DoActivateL
+// --------------------------------------------------------------------------
+//
+void CPsu2ServiceDialingInfoView::DoActivateL( const TVwsViewId& aPrevViewId,
+        TUid aCustomMessageId, const TDesC8& aCustomMessage )
+    {
+    delete iViewActivationTransaction;
+    iViewActivationTransaction = NULL;
+    iViewActivationTransaction =
+        Phonebook2::Pbk2AppUi()->Pbk2ViewExplorer()->HandleViewActivationLC
+            ( iExtensionView.Id(), aPrevViewId, NULL, NULL,
+              Phonebook2::EUpdateNaviPane );
+    CleanupStack::Pop(); // iViewActivationTransaction
+
+    // Call base class constructor
+    CPsu2InfoViewBase::DoActivateL(
+        aPrevViewId, aCustomMessageId, aCustomMessage);
+    }
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::DoDeactivate
+// --------------------------------------------------------------------------
+//
+void CPsu2ServiceDialingInfoView::DoDeactivate()
+    {
+    CPsu2InfoViewBase::DoDeactivate();
+    }
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::HandleCommandL
+// --------------------------------------------------------------------------
+//
+void CPsu2ServiceDialingInfoView::HandleCommandL( TInt aCommand )
+    {
+    CPsu2InfoViewBase::HandleCommandL( aCommand );
+    UpdateCbasL();
+    }
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::DynInitMenuPaneL
+// --------------------------------------------------------------------------
+//
+void CPsu2ServiceDialingInfoView::DynInitMenuPaneL(TInt aResourceId,
+        CEikMenuPane* aMenuPane)
+    {
+    switch( aResourceId )
+        {
+        case R_PSU2_SERVICE_DIALING_INFO_VIEW_COPY_MENUPANE:
+            {
+            // Do nothing
+            break;
+            }
+        default:
+            {
+            CPsu2InfoViewBase::DynInitMenuPaneL( aResourceId, aMenuPane );
+            break;
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::NameListControlResourceId
+// --------------------------------------------------------------------------
+//
+TInt CPsu2ServiceDialingInfoView::NameListControlResourceId() const
+    {
+    return 0;
+    }
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::NaviPaneLabelL
+// --------------------------------------------------------------------------
+//
+HBufC* CPsu2ServiceDialingInfoView::NaviPaneLabelL() const
+    {
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::UpdateCbasL
+// -----------------------------------------------------------------------------
+//
+void CPsu2ServiceDialingInfoView::UpdateCbasL()
+    {
+    TInt resId( KErrNotFound );
+    if ( ContactHasPhoneNumberL( iControl->FocusedStoreContact() ) )
+        {
+        resId = R_PBK2_SOFTKEYS_OPTIONS_BACK_CONTEXT;
+        }
+    else
+        {
+        resId = R_PBK2_SOFTKEYS_OPTIONS_BACK_EMPTY;
+        }
+    // Set cba command set "Options - Context Menu - Back"
+    iExtensionView.Cba()->SetCommandSetL( resId );
+    iExtensionView.Cba()->DrawDeferred();
+    // Set context menu
+    iExtensionView.MenuBar()->SetContextMenuTitleResourceId
+        ( R_PSU2_SERVICE_DIALING_INFO_CONTEXT_MENUBAR );
+    }
+
+// -----------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::ContactHasPhoneNumberL
+// -----------------------------------------------------------------------------
+//
+TBool CPsu2ServiceDialingInfoView::ContactHasPhoneNumberL
+        ( const MVPbkStoreContact* aContact )
+    {
+    __ASSERT_DEBUG( aContact, Panic( EPanicLogic_HasContactPhoneNumberL ) );
+
+    TBool result = EFalse;
+
+    TPbk2StoreContactAnalyzer analyzer
+        ( Phonebook2::Pbk2AppUi()->ApplicationServices().
+            ContactManager(), aContact );
+    if ( analyzer.HasFieldL
+            ( R_PHONEBOOK2_PHONENUMBER_SELECTOR ) != KErrNotFound )
+        {
+        result = ETrue;
+        }
+
+    return result;
+    }
+
+// --------------------------------------------------------------------------
+// CPsu2ServiceDialingInfoView::HandleControlEventL
+// --------------------------------------------------------------------------
+//    
+void CPsu2ServiceDialingInfoView::HandleControlEventL(
+        MPbk2ContactUiControl& aControl,
+        const TPbk2ControlEvent& aEvent )
+    {
+    switch ( aEvent.iEventType )
+        {
+        case TPbk2ControlEvent::EContactDoubleTapped:
+            {
+            // launch context menu if user tapped a focused detail
+            iExtensionView.LaunchPopupMenuL
+                ( R_PSU2_SERVICE_DIALING_INFO_CONTEXT_MENUBAR );
+            break;
+            }
+            
+        default:
+            {
+            CPsu2InfoViewBase::HandleControlEventL( aControl, aEvent );
+            break;
+            }
+        }
+    }
+//  End of File