emailuis/emailui/inc/ncspopuplistbox.h
branchRCL_3
changeset 73 c8382f7b54ef
parent 64 3533d4323edc
child 80 726fba06891a
--- a/emailuis/emailui/inc/ncspopuplistbox.h	Tue Sep 14 20:48:24 2010 +0300
+++ b/emailuis/emailui/inc/ncspopuplistbox.h	Wed Sep 15 11:52:37 2010 +0300
@@ -30,40 +30,66 @@
 class CAknsFrameBackgroundControlContext;
 class CFSEmailUiContactHandler;
 class CFSMailBox;
-class CNcsHeaderContainer;
 class CFSEmailUiLayoutHandler;
-class CFreestyleEmailUiAppUi; //<cmail>
+class CFreestyleEmailUiAppUi;
 
 // CLASS DECLARATION
 
 /**
+ * Observer interface to notify observer of item selection events and changes
+ * in popup's visibility.
+ */
+class MNcsPopupListBoxObserver
+    {
+public:
+
+    /**
+     * Visibility of component is changing.
+     * @param aVisible ETrue, if popup is coming visible.
+     * @return Observer should return ETrue, if visiblity change is allowed.
+     */
+    virtual TBool PopupVisibilityChangingL( TBool aVisible ) = 0;
+
+    /**
+     * Popup item is selected.
+     */
+    virtual void PopupItemSelectedL() = 0;
+
+    };
+
+
+/**
 *  CNcsPopupListBox
 */
 class CNcsPopupListBox : public CEikTextListBox, 
                          public MEikListBoxObserver,
                          public MFSEmailUiContactHandlerObserver
     {
-public: // Constructors and destructor
-
-		/*
-		* @param aMailBox reference to current mailbox item
-		*/
-    static CNcsPopupListBox* NewL( const CCoeControl* aParent, CFSMailBox& aMailBox, 
-                                   CNcsHeaderContainer& aHeaderContainer,
-                                   TBool aRemoteLookupSupported );
+public:
 
     /*
-    * @param aMailBox reference to current mailbox item
-    */
+     * @param aMailBox reference to current mailbox item
+     */
+    static CNcsPopupListBox* NewL( const CCoeControl* aParent,
+        CFSMailBox& aMailBox, MNcsPopupListBoxObserver& aObserver,
+        TBool aRemoteLookupSupported );
+
+    /*
+     * @param aMailBox reference to current mailbox item
+     */
     void ConstructL( const CCoeControl* aParent );
 
     /*
-    * 
-    *
-    * @param aText
-    */
+     * Initialises popup and begins the search.
+     * @param aText Search text.
+     */
     void InitAndSearchL( const TDesC& aText, TInt aMode = -1 );
-		
+
+    /** 
+     * Hides the popup window.
+     */
+    void ClosePopupL();
+
     // Destructor
     virtual ~CNcsPopupListBox();
 
@@ -149,7 +175,7 @@
  
     void SetScrollBarVisibilityL();
 
-    void SetRemoteLookupItemFirstToTheListL();
+    void SetRemoteLookupItemToTheListL( TInt aIndex );
 		
     enum TRemoteLookupItemMoveDirection
         {
@@ -163,13 +189,14 @@
 
 private:
 
-    CNcsPopupListBox( CNcsHeaderContainer& aHeaderContainer,
-        TBool aRemoteLookupSupported, CFSMailBox& aMailbox );
+    CNcsPopupListBox( CFSMailBox& aMailbox,
+        MNcsPopupListBoxObserver& aObserver,
+        TBool aRemoteLookupSupported );
 
     virtual void CreateItemDrawerL();
 
     void UpdateListL();
-
+    void UpdateVisibilityL( TBool aVisible );
     void UpdateTextColors();
 
     // From CCoeControl.
@@ -177,25 +204,28 @@
 
 private: // data
 
-    CNcsHeaderContainer&				iHeaderContainer;
-
+    // Background control context. Own.
     CAknsFrameBackgroundControlContext* iBackgroundContext;
-
-    RPointerArray<CFSEmailUiClsItem>	iMatchingItems;
-
-    CFSEmailUiContactHandler*			iContactHandler; // Owned
-    CFSMailBox& 						iMailBox;
+    // Items matching the current searh string. Own.
+    RPointerArray<CFSEmailUiClsItem>    iMatchingItems;
 
-    TRect								iPopupMaxRect;
-    
-    CDesCArray*							iItemTextsArray;
-    HBufC*								iCurrentSearchText;
-    TInt								iRemoteLookupItemPos;
-    
-    TBool 								iRemoteLookupSupported;
-    TBool 								iCachingInProgress;
-    
-    CFreestyleEmailUiAppUi*             iAppUi;  //<cmail>  not owned
+    // Contact handler.
+    CFSEmailUiContactHandler*           iContactHandler;
+    CFSMailBox&                         iMailBox;
+    // Observer for popup visibility changes.
+    MNcsPopupListBoxObserver&           iObserver;
+    TRect                               iPopupMaxRect;
+
+    CDesCArray*                         iItemTextsArray;
+    // Current search text. Own.
+    HBufC*                              iCurrentSearchText;
+    TInt                                iRemoteLookupItemPos;
+
+    TBool                               iRemoteLookupSupported;
+    TBool                               iCachingInProgress;
+
+    CFreestyleEmailUiAppUi*             iAppUi; // not owned
+
     };