phonebookui/Phonebook2/USIMExtension/inc/CPsu2NameListViewBase.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/USIMExtension/inc/CPsu2NameListViewBase.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,172 @@
+/*
+* 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:  A base class for sim name list views
+*
+*/
+
+
+
+#ifndef CPSU2NAMELISTVIEWBASE_H
+#define CPSU2NAMELISTVIEWBASE_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <MPbk2UIExtensionView.h>
+#include <MPbk2ControlObserver.h>
+#include "TPsu2SimIconId.h"
+#include "Pbk2USimUI.hrh"
+#include <MPbk2MenuCommandObserver.h>
+
+// FORWARD DECLARATIONS
+
+class CEikImage;
+class CPsu2ViewManager;
+class CPbk2UIExtensionView;
+template<class Control> class CPbk2ControlContainer;
+class CPbk2NamesListControl;
+class MPbk2ContactUiControl;
+class MPbk2ContactNameFormatter;
+class CPbk2SortOrderManager;
+class MPbk2PointerEventInspector;
+
+// CLASS DECLARATION
+
+/**
+ *  A base class for SIM name list views
+ */
+class CPsu2NameListViewBase : 
+        public CBase,
+        public MPbk2UIExtensionView,
+        public MPbk2ControlObserver,
+        public MPbk2MenuCommandObserver
+    {
+    public:  // Constructors and destructor
+        /**
+        * Destructor.
+        */
+        ~CPsu2NameListViewBase();
+
+    public: // From MPbk2UIExtensionView
+        void HandleStatusPaneSizeChange();
+        CPbk2ViewState* ViewStateLC() const;
+        TBool HandleCommandKeyL(const TKeyEvent& aKeyEvent,
+            TEventCode aType);
+        void HandlePointerEventL(
+                const TPointerEvent& aPointerEvent );
+        TInt GetViewSpecificMenuFilteringFlagsL() const;
+        void DoActivateL(const TVwsViewId& aPrevViewId,
+            TUid aCustomMessageId, const TDesC8& aCustomMessage);
+        void DoDeactivate();
+        void HandleCommandL(TInt aCommand);
+        void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
+        void HandleLongTapEventL(
+                const TPoint& aPenEventLocation,
+                const TPoint& aPenEventScreenLocation);
+
+    public: // From MPbk2ControlObserver
+        void HandleControlEventL(MPbk2ContactUiControl& aControl,
+            const TPbk2ControlEvent& aEvent);
+
+    public: // From MPbk2MenuCommandObserver
+        void PreCommandExecutionL(
+                const MPbk2Command& aCommand );
+        void PostCommandExecutionL(
+                const MPbk2Command& aCommand );
+
+    protected:  // New functions
+        virtual void UpdateCbasL() { };
+
+    protected: // Construction
+        CPsu2NameListViewBase(
+                CPbk2UIExtensionView& aExtensionView,
+                CPsu2ViewManager& aViewManager );
+        virtual void UpdateListEmptyTextL(
+                TInt aListState );
+
+    private:  // Implementation
+        /// Sub class offers the resource id for the name list control
+        virtual TInt NameListControlResourceId() const = 0;
+        void CreateControlsL();
+        void StoreStateL();
+        void RestoreStateL();
+
+    protected:  // Data
+        /// Ref: The extension view instance
+        CPbk2UIExtensionView& iExtensionView;
+        /// Ref: The view manager of the extension
+        CPsu2ViewManager& iViewManager;
+        /// 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;
+        class TContextPaneIcon;
+        /// Own: ETrue, if any selection modifier key is depressed
+        TBool iSelectionModifierUsed;
+        /// Own: ETrue after PreCommandExecutionL() was called, and EFalse
+        /// after PostCommandExecutionL().
+        TBool iCommandBetweenPreAndPostExecution;
+
+    private:    // Data
+        /// Own: stored control state
+        CPbk2ViewState* iControlState;
+        /// Own: Own sort order manager for fdn
+        CPbk2SortOrderManager* iSortOrderManager;
+        /// Own: own formatter is needed for fdn
+        MPbk2ContactNameFormatter* iNameFormatter;
+        /// Own: Focus index
+        TInt iFocusIndex;
+    };
+
+/**
+ * Phonebook 2 USIM extension context pane icon.
+ * Responsible for loading  the application icon for the context pane.
+ */
+class CPsu2NameListViewBase::TContextPaneIcon
+    {
+    public: // Construction
+     
+        /**
+         * Constructor.
+         *
+         * @param aIconId       Icon id.
+         */
+        TContextPaneIcon(
+                TPsu2SimIconId aIconId );
+
+    public: // Interface
+
+        /**
+         * Creates a context pane icon.
+         *
+         * @return  Image for the context pane.
+         */
+        CEikImage* CreateLC();
+
+    private: // Implementation
+        void SetSize(
+                CFbsBitmap& aBitmap,
+                CFbsBitmap& aMask );
+
+    private: // Data
+        /// Own: Icon id
+        TPsu2SimIconId iIconId;
+    };
+
+#endif      // CPSU2NAMELISTVIEWBASE_H
+
+// End of File