phonebookui/Phonebook2/NamesListExtension/inc/Pbk2NamesListExView.h
changeset 0 e686773b3f54
child 3 04ab22b956c2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/NamesListExtension/inc/Pbk2NamesListExView.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,270 @@
+/*
+* 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 names list application view.
+*
+*/
+
+
+#ifndef CPBK2NAMESLISTEXVIEW_H
+#define CPBK2NAMESLISTEXVIEW_H
+
+// INCLUDES
+#include <e32base.h>
+#include <coecobs.h>
+#include <MPbk2UIExtensionView.h>
+#include <MPbk2ControlObserver.h>
+#include <MPbk2StoreConfigurationObserver.h>
+#include <MPbk2MenuCommandObserver.h>
+#include <akntoolbarobserver.h>
+#include <eiklbo.h>
+#include <coemain.h>
+
+#include <Pbk2Commands.hrh> 
+
+// FORWARD DECLARATIONS
+template<class ControlType> class CPbk2ControlContainer;
+class CPbk2UIExtensionView;
+class MPbk2ContactUiControl;
+class CPbk2NamesListControl;
+class MVPbkContactViewBase;
+class MPbk2ContactNameFormatter;
+class MPbk2CommandHandler;
+class CPbk2ViewState;
+class MPbk2PointerEventInspector;
+class CPbk2IconInfoContainer;
+class CVPbkContactManager;
+class CPbk2StoreConfiguration;
+class MCCAParameter;
+class MCCAConnection;
+class CPbk2ContactUiControlProxy;
+class CAknStylusPopUpMenu;
+class CPbk2MyCard;
+class CPbk2ThumbnailManager;
+class CSpbContentProvider;
+class CPbk2ContextLaunch;
+
+// CLASS DECLARATION
+
+/**
+ * Phonebook 2 names list application view.
+ * Responsible for implementing Phonebook application view
+ * interface for names list view.
+ */
+class CPbk2NamesListExView : public CBase,
+                             public MPbk2UIExtensionView,
+                             public MPbk2ControlObserver,
+                             public MPbk2StoreConfigurationObserver,
+                             public MPbk2MenuCommandObserver,
+                             public MAknToolbarObserver,
+                             public MCoeControlObserver,
+                             public MEikListBoxObserver,
+                             private MCoeForegroundObserver
+    {
+    public: // Construction and destruction
+
+        /**
+         * Creates a new instance of this class.
+         *
+         * @param 
+         * @return  A new instance of this class.
+         */
+        static CPbk2NamesListExView* NewL(
+                CPbk2UIExtensionView& aView,
+                CSpbContentProvider& aStatusProvider,
+                MCCAConnection*& aCCAConnection );
+
+        /**
+         * Destructor.
+         */
+        ~CPbk2NamesListExView();
+
+    private: // From MPbk2UIExtensionView
+        void HandleCommandL(
+                TInt aCommand );
+        TUid Id() const;
+        void HandleStatusPaneSizeChange();
+        void DoActivateL(
+                const TVwsViewId& aPrevViewId,
+                TUid aCustomMessageId,
+                const TDesC8& aCustomMessage );
+        void DoDeactivate();
+        void DynInitMenuPaneL(
+                TInt aResourceId,
+                CEikMenuPane* aMenuPane );
+        void HandleForegroundEventL(
+                TBool aForeground );
+        CPbk2ViewState* ViewStateLC() const;
+        TBool HandleCommandKeyL(
+                const TKeyEvent& aKeyEvent,
+                TEventCode aType );
+        void HandlePointerEventL(
+                const TPointerEvent& aPointerEvent );
+        TInt GetViewSpecificMenuFilteringFlagsL() const;
+        void HandleLongTapEventL(
+                const TPoint& aPenEventLocation,
+                const TPoint& aPenEventScreenLocation);
+
+    protected: 
+        // from MEikListBoxObserver
+        void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType );
+
+
+
+
+    private: // From MPbk2ControlObserver
+        void HandleControlEventL(
+                MPbk2ContactUiControl& aControl,
+                const TPbk2ControlEvent& aEvent );
+
+    public: // From MPbk2StoreConfigurationObserver
+        void ConfigurationChanged();
+        void ConfigurationChangedComplete();
+
+    public: // From MPbk2MenuCommandObserver
+        void PreCommandExecutionL(
+                const MPbk2Command& aCommand );
+        void PostCommandExecutionL(
+                const MPbk2Command& aCommand );
+
+    public:		
+        TBool IsRclOnL();
+        
+        /**
+         * Getter for MyCard instance which can be NULL. 
+         * Ownership NOT transferred to callee.
+         * 
+         * @return Mycard object 
+         */
+         CPbk2MyCard* MyCard() const;
+
+    private: // From MAknToolbarObserver
+        void DynInitToolbarL(
+                TInt aResourceId,
+                CAknToolbar* aToolbar );
+        void OfferToolbarEventL(
+                TInt aCommand );
+
+    private: // From MCoeControlObserver
+        void HandleControlEventL(
+                CCoeControl* aControl,
+                TCoeEvent aEventType );
+
+    private: // Implementation
+        CPbk2NamesListExView( 
+            CPbk2UIExtensionView& aView,
+            CSpbContentProvider& aStatusProvider,
+            MCCAConnection*& aCCAConnection );
+        void ConstructL();
+        void ConstructToolbarL();
+        void CreateControlsL();
+        void StoreStateL();
+        void RestoreStateL();
+        void UpdateCbasL();
+        static TInt IdleSaveToolbarStateL(
+                TAny* aSelf );
+        void AttachAIWProvidersL();
+        void UpdateListEmptyTextL(
+                TInt aListState );
+        void Reset();
+        void ShowToolbarOnViewActivation(TBool aShown);        
+        static TInt IdleSetEmptyTextL(
+                TAny* aSelf );
+        void DimItem( CEikMenuPane* aMenuPane, TInt aCmd );
+        void ShowContextMenuL();
+        void AddCommandItemsToContainerL();
+        TBool NeedToHideToolbar(TInt aCurrentCommand);
+        TBool IsPhoneMemoryUsedL() const;
+        
+    private: // From MCoeForegroundObserver
+        void HandleGainingForeground();
+        void HandleLosingForeground();
+
+    private: // Data
+        CPbk2UIExtensionView& iView;
+        /// This view's control container type
+        typedef CPbk2ControlContainer<CPbk2NamesListControl> CContainer;
+        /// Own: This view's control container
+        CContainer* iContainer;
+        /// Ref: This view's control
+        CPbk2NamesListControl* iControl;
+        /// Ref: Pointer event inspector
+        MPbk2PointerEventInspector* iPointerEventInspector;
+        /// Ref: Virtual Phonebook contact manager
+        CVPbkContactManager* iContactManager;
+        /// Ref: Reference to the name formatter
+        MPbk2ContactNameFormatter* iNameFormatter;
+        /// Ref: Command handler
+        MPbk2CommandHandler* iCommandHandler;
+        /// Own: Stored control state
+        CPbk2ViewState* iControlState;
+        /// Own: Control state passed as parameter
+        CPbk2ViewState* iParamState;
+        /// Ref: Toolbar
+        CAknToolbar* iToolbar;
+        /// Own: Toolbar state indicator
+        TBool iToolbarVisible;
+        /// Own: Toolbar state is saved with the help of an idle object
+        CIdle* iIdleToolbarWarden;
+        /// Own: Stylus popup menu state indicator
+        TBool iStylusPopupMenuLaunched;
+        /// Own: Toolbar icon container
+        CPbk2IconInfoContainer* iToolbarIcons;
+        /// Own: ETrue, if any selection modifier key is depressed
+        TBool iSelectionModifierUsed;
+        /// Ref: Phonebook store configuration
+        CPbk2StoreConfiguration* iStoreConfiguration;
+        /// Own: Idle empty text setter
+        CIdle* iIdleTexter;
+        /// Own: List state
+        TInt iListState;
+        /// Own: Command state, indicates one command is alerady in execution.
+        TBool iCommandState;
+        /// Own: Proxy between commands and contact ui control
+        CPbk2ContactUiControlProxy* iControlProxy;
+        /// Own: contains current command id, if under execution. 
+        /// Value is -1 if no command is executing
+        TInt iCurrentCommandId;
+        /// Own: control visible state, indicates if the control is visible before
+        /// hide in background.
+        TBool iCtrlVisibleStateBeforeLosingForground;
+        /// Own: indicates whether the names list view is first time activated
+        TBool iFirstTimeActivated;
+        /// Ref: Popup menu
+        CAknStylusPopUpMenu* iPopupMenu;
+        
+        /// Own:
+        CPbk2MyCard* iMyCard;
+        // If the application is brought to the foreground too fast after being set to the
+        // backgroung the find box is not initialized properly by Avkon. 
+        // In practise this means tapping the appshell icon for this application BEFORE 
+        // the application has completed losing foreground actions. What happens in the
+        // background is that the find box setfocus is called when the phonebook appui is 
+        // still in the background. 
+        // This flag is used to force the find box focus to be re-initialized when the 
+        // application is back in the foreground.
+        TBool iNeedSetFocus;
+        
+        // Own: thumnail manager for social phonebook 
+        CPbk2ThumbnailManager* iThumbManager;
+        // REF: content provider
+        CSpbContentProvider&  iContentProvider;
+        // Not own. CCA launcher connection
+        MCCAConnection*& iCCAConnection;
+        /// Own: Context launcher
+        CPbk2ContextLaunch* iContextLauncher;
+    };
+
+#endif // CPBK2NAMESLISTEXVIEW_H
+
+// End of File