phonebookui/Phonebook2/USIMExtension/src/CPsu2OwnNumbersView.cpp
changeset 0 e686773b3f54
child 21 9da50d567e3c
--- /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 <CPbk2UIExtensionView.h>
+#include <MPbk2ViewActivationTransaction.h>
+#include <CPbk2AppUiBase.h>
+#include <MPbk2ViewExplorer.h>
+#include <Pbk2USimUIRes.rsg>
+#include <CPbk2ControlContainer.h>
+#include <Pbk2MenuFilteringFlags.hrh>
+#include <CPbk2ContactUiControlSubstitute.h>
+#include <MPbk2CommandHandler.h>
+#include <MPbk2ApplicationServices.h>
+
+// Virtual Phonebook
+#include <MVPbkContactStore.h>
+#include <MVPbkContactStoreInfo.h>
+#include <CVPbkContactManager.h>
+#include <MVPbkContactStoreList.h>
+#include <VPbkContactStoreUris.h>
+#include <MVPbkContactViewBase.h>
+
+// System includes
+#include <csxhelp/phob.hlp.hrh>
+#include <StringLoader.h>
+#include <eikbtgpc.h>
+#include <avkon.rsg>
+#include <AknUtils.h>
+
+
+// --------------------------------------------------------------------------
+// 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