diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/USIMExtension/src/CPsu2ServiceDialingInfoView.cpp --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// System includes +#include +#include + +/// 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