diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/USIMExtension/src/CPsu2OwnNumbersView.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/USIMExtension/src/CPsu2OwnNumbersView.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,292 @@ +/* +* 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: Phonebook 2 USIM Own Numbers view. +* +*/ + + +#include "CPsu2OwnNumbersView.h" + +// Phonebook 2 +#include "CPsu2OwnNumberControl.h" +#include "CPsu2ViewManager.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Virtual Phonebook +#include +#include +#include +#include +#include +#include + +// System includes +#include +#include +#include +#include +#include + + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::CPsu2OwnNumbersView +// -------------------------------------------------------------------------- +// +CPsu2OwnNumbersView::CPsu2OwnNumbersView + ( CPbk2UIExtensionView& aExtensionView, + CPsu2ViewManager& aViewManager ): + iExtensionView( aExtensionView ), + iViewManager( aViewManager ) + { + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::~CPsu2OwnNumbersView +// -------------------------------------------------------------------------- +// +CPsu2OwnNumbersView::~CPsu2OwnNumbersView() + { + delete iContainer; + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::NewL +// -------------------------------------------------------------------------- +// +CPsu2OwnNumbersView* CPsu2OwnNumbersView::NewL + ( CPbk2UIExtensionView& aExtensionView, + CPsu2ViewManager& aViewManager ) + { + CPsu2OwnNumbersView* self = + new( ELeave ) CPsu2OwnNumbersView( aExtensionView, aViewManager ); + return self; + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::DoActivateL +// -------------------------------------------------------------------------- +// +void CPsu2OwnNumbersView::DoActivateL(const TVwsViewId& aPrevViewId, + TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/) + { + // Load FDN title + HBufC* title = StringLoader::LoadLC( R_TEXT_OWN_NUMBER_LIST ); + + MPbk2ViewActivationTransaction* viewActivationTransaction = + Phonebook2::Pbk2AppUi()->Pbk2ViewExplorer()->HandleViewActivationLC + ( iExtensionView.Id(), aPrevViewId, title, NULL, + Phonebook2::EUpdateNaviPane | Phonebook2::EUpdateTitlePane ); + + CreateControlsL(); + iContainer->ActivateL(); + + viewActivationTransaction->Commit(); + CleanupStack::PopAndDestroy(2 , title); // viewActivationTransaction + UpdateCbasL(); + + iViewManager.RegisterStoreAndView(); + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::DoDeactivate +// -------------------------------------------------------------------------- +// +void CPsu2OwnNumbersView::DoDeactivate() + { + if (iContainer) + { + CCoeEnv::Static()->AppUi()->RemoveFromStack(iContainer); + // Store current state, safe to ignore. There's no real harm, + // if theres no stored state when activating this view again + delete iContainer; + iContainer = NULL; + // iControl is owned by iContainer and it is deleted too + iControl = NULL; + } + + iViewManager.DeregisterStoreAndView(); + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::NameListControlResourceId +// -------------------------------------------------------------------------- +// +TInt CPsu2OwnNumbersView::NameListControlResourceId() const + { + return R_PSU2_OWN_NUMBER_NAME_LIST_CONTROL; + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::HandleStatusPaneSizeChange +// -------------------------------------------------------------------------- +// +void CPsu2OwnNumbersView::HandleStatusPaneSizeChange() + { + // Resize the container to fill the client rectangle + if (iContainer) + { + iContainer->SetRect(iExtensionView.ClientRect()); + } + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::ViewStateLC +// -------------------------------------------------------------------------- +// +CPbk2ViewState* CPsu2OwnNumbersView::ViewStateLC() const + { + CPbk2ViewState* state = NULL; + if ( iControl ) + { + iControl->ControlStateL(); + } + CleanupStack::PushL( state ); + return state; + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::HandleCommandKeyL +// -------------------------------------------------------------------------- +// +TBool CPsu2OwnNumbersView::HandleCommandKeyL( + const TKeyEvent& aKeyEvent, + TEventCode aType ) + { + TBool result( EFalse ); + if( aKeyEvent.iCode == EKeyPhoneSend && aType == EEventKey ) + { + if ( iControl->NumberOfContacts() > 0 ) + { + HandleCommandL(EPbk2CmdCall); + } + result = ETrue; + } + return result; + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::HandlePointerEventL +// -------------------------------------------------------------------------- +// +void CPsu2OwnNumbersView::HandlePointerEventL( + const TPointerEvent& /*aPointerEvent*/ ) + { + // Do nothing + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::GetViewSpecificMenuFilteringFlagsL +// -------------------------------------------------------------------------- +// +TInt CPsu2OwnNumbersView::GetViewSpecificMenuFilteringFlagsL() const + { + return KPbk2MenuFilteringFlagsNone; + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::HandleCommandL +// -------------------------------------------------------------------------- +// +void CPsu2OwnNumbersView::HandleCommandL(TInt aCommand) + { + if ( iControl ) + { + // No command handling in this class, forward to Commands + if ( !Phonebook2::Pbk2AppUi()->ApplicationServices(). + CommandHandlerL()->HandleCommandL + (aCommand, *iControl, &iExtensionView)) + { + iControl->ProcessCommandL(aCommand); + Phonebook2::Pbk2AppUi()->HandleCommandL(aCommand); + // Update cbas, if command handler is consuming the command + // postcommandexecution is updating cbas + UpdateCbasL(); + } + } + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::DynInitMenuPaneL +// -------------------------------------------------------------------------- +// +void CPsu2OwnNumbersView::DynInitMenuPaneL(TInt /*aResourceId*/, + CEikMenuPane* /*aMenuPane*/ ) + { + // no filtering here + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::HandleLongTapEventL +// -------------------------------------------------------------------------- +// +void CPsu2OwnNumbersView::HandleLongTapEventL( + const TPoint& /*aPenEventLocation*/, + const TPoint& /*aPenEventScreenLocation*/) + { + // Do nothing + } + +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::CreateControlsL +// -------------------------------------------------------------------------- +// +void CPsu2OwnNumbersView::CreateControlsL() + { + if ( !iContainer ) + { + // Create the container and control + CContainer* container = CContainer::NewLC + ( &iExtensionView, &iExtensionView, iExtensionView ); + + container->SetHelpContext( + TCoeHelpContext( iExtensionView.ApplicationUid(), + KPHOB_HLP_MY_NUMBERS )); + + CPsu2OwnNumberControl* control = CPsu2OwnNumberControl::NewL + ( iViewManager.CurrentSimView(), container ); + CleanupStack::PushL(control); + + // takes ownership of the control + container->SetControl( control, iExtensionView.ClientRect() ); + CleanupStack::Pop(control); + + CCoeEnv::Static()->AppUi()->AddToStackL(iExtensionView, container); + CleanupStack::Pop(container); + iContainer = container; + iControl = control; + } + + } +// -------------------------------------------------------------------------- +// CPsu2OwnNumbersView::UpdateCbasL +// -------------------------------------------------------------------------- +// +void CPsu2OwnNumbersView::UpdateCbasL() + { + // Set middle softkey as empty + iExtensionView.Cba()->SetCommandSetL + ( R_PSU_OWN_SOFTKEYS_OPTIONS_BACK_EMPTY ); + iExtensionView.Cba()->DrawDeferred(); + } + +/// End of File