epoc32/include/mw/aknpopup.h
branchSymbian2
changeset 2 2fe1408b6811
parent 1 666f914201fb
child 4 837f303aceeb
--- a/epoc32/include/mw/aknpopup.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/mw/aknpopup.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,388 @@
-aknpopup.h
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Support for Avkon Popped-up lists
+*
+*
+*/
+
+
+#if !defined(__AKNPOPUP_H__)
+#define __AKNPOPUP_H__
+
+#include <coecntrl.h>
+#include <eikcmobs.h>
+#include <eiklbx.h>
+#include <aknpopuplayout.h>
+#include <aknintermediate.h>
+#include <aknpopupfader.h>
+
+class CAknPopupHeadingPane;
+class CEikButtonGroupContainer;
+class CEikListBox;
+class CAknSearchField;
+class CAknPopupListExtension;
+
+/** Used to popup a list or grid. Takes an existing listbox control and
+ *  puts it into a popup frame together with an optional title.
+ *
+ * @c CAknPopupList is not a dialog!
+ *
+ * There are two standard usages of @c CAknPopupList:
+ *
+ * @code 
+ *  CAknPopupList *plist = CAknPopupList::NewL(...);
+ *  CleanupStack::PushL(plist);
+ *  ...
+ *  TInt popupOk = plist->ExecuteLD(...);
+ *  // No leaving functions allowed between ExecuteLD and
+ *  // CleanupStack::Pop().
+ *  CleanupStack::Pop(); // plist
+ *  if (popupOk) { ... } else { ... } 
+ * @endcode
+ *
+ * And then another way:
+ * @code
+ *  iPList = CAknPopupList::NewL(...);
+ *  ...
+ *  TInt popupOk = iPlist->ExecuteLD(...);
+ *  // No leaving functions allowed between ExecuteLD and iPlist=NULL;
+ *  iPlist = NULL;
+ *  if (popupOk) {... } else {... }
+ *  // note, destructor deletes the iPlist instance.
+ * @endcode
+ * 
+ * Both these work corretly and leave-safe way. Notice this usage is pretty
+ * different of how dialogs work. With dialogs you _always_ want to do 
+ * @c CleanupStack::Pop() before calling @c ExecuteLD().
+ */
+class CAknPopupList : public CEikBorderedControl,
+                      public MEikCommandObserver,
+                      public MEikListBoxObserver,
+                      public MCoeControlObserver,
+                      public MAknIntermediateState,
+                      public MAknFadedComponent
+    {
+public:	// enums 
+
+    DECLARE_TYPE_ID(0x20018439)
+
+public:
+
+    /**
+     * Two-phased constructor.
+     *
+     * Creates the pop-up list.
+     *
+     * @param aListBox Pre-existing listbox-derived class.
+     * @param aCbaResource Softkey pane to display while pop-up is active.
+     * @param aType The layout used.
+     * @return A pointer to a pop-up list object.
+     */
+    IMPORT_C static CAknPopupList* NewL( 
+       CEikListBox* aListBox, 
+       TInt aCbaResource,
+       AknPopupLayouts::TAknPopupLayouts aType = AknPopupLayouts::EMenuWindow);
+
+    /**
+     * Executes the pop-up selection list. Function returns when the user have
+     * accepted or cancelled the pop-up.
+     *
+     * @return @c ETrue if the popup was accepted. @c EFalse if 
+     *            the popup was cancelled.
+     */
+	IMPORT_C TBool ExecuteLD();
+
+    /**
+     * Sets the title for the selection list.
+     *
+     * @param aTitle Title to be displayed.
+     */
+    IMPORT_C void SetTitleL(const TDesC& aTitle);
+
+    /**
+     * Cancels the current popup. The popup @c ExecuteLD will return with 
+     * @c EFalse.
+     */
+	IMPORT_C void CancelPopup();
+public: // Access methods
+
+    /**
+     * Gets a button group container.
+     *
+     * @return The button group.
+     */
+	IMPORT_C CEikButtonGroupContainer* ButtonGroupContainer();
+    /**
+     * Gets the popup header.
+     *
+     * @return Header properties of the pop-up menu.
+     */
+	IMPORT_C CAknPopupHeadingPane* Heading();
+
+    /**
+     * Gets the popup header.
+     *
+     * @return Header properties of the pop-up menu.
+     */
+	IMPORT_C CAknPopupHeadingPane* Heading() const;
+
+    /**
+     * Gets the list box.
+     *
+     * @return The list box.
+     */
+	IMPORT_C CEikListBox* ListBox();
+	
+    /**
+     * Sets the maximum height for the popup frame.
+     *
+     * @param aItems The maximum height.
+     */
+	IMPORT_C void SetMaximumHeight(TInt aItems);
+
+    /**
+     * Enables the findbox of the popup list.
+     *
+     * @param aEnable Enables (default) or disables the findbox.
+     * @return @c ETrue if enabling/disabling was successfull.
+     */
+    IMPORT_C TBool EnableFind(TBool aEnable=ETrue);
+
+    /**
+     * Enables the findbox with adaptive search of the popup list.
+     *
+     * @since 5.0
+     * @param aEnable Enables (default) or disables the adaptive findbox.
+     * @return @c ETrue if enabling/disabling was successfull.
+     */
+    IMPORT_C TBool EnableAdaptiveFind(TBool aEnable=ETrue);
+
+    /**
+     * Gets the search field control.
+     *
+     * @return Search field control.
+     */
+    IMPORT_C CAknSearchField* FindBox() const;
+public:
+    /**
+     * From @c CCoeControl.
+     * 
+     * Handles pointer events of popups.
+     *
+     * @param aPointerEvent Pointer event to be handled.
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+protected:
+    /**
+     * From @c MEikCommandObserver.
+     *
+     * Processes events from the softkeys. Responds to @c EAknSoftkeyOk and 
+     * @c EAknSoftkeyBack to accept or cancel the pop-up.
+     *
+     * @param aCommandId Event Id from the soft-key.
+     */
+    IMPORT_C void ProcessCommandL(TInt aCommandId);
+
+    /**
+     * From @c MEikListBoxObserver.
+     *
+     * Processes key events from the listbox. Responds to 
+     * @c EEventEnterKeyPressed to accept the pop-up.
+     *
+     * @param aListBox Listbox being observed.
+     * @param aEventType Event being observed.
+     */
+    IMPORT_C void HandleListBoxEventL(CEikListBox* aListBox, 
+                                      TListBoxEvent aEventType);
+    /**
+     * From @c MCoeControlObserver.
+     *
+     * Handles an event from an observed control.
+     *
+     * @param aControl Control being observed.
+     * @param aEventType Event observed.
+     */
+    IMPORT_C void HandleControlEventL(CCoeControl* aControl,
+                                      TCoeEvent aEventType);
+protected:
+
+    /**
+     * C++ default constructor.
+     */
+    IMPORT_C CAknPopupList();
+
+    /**
+     * Destructor.
+     */
+    IMPORT_C ~CAknPopupList();
+
+    /**
+     * Handles 2nd phase construction.
+     * 
+     * @param aListBox Pre-existing listbox-derived class.
+     * @param aCbaResource Softkey pane to display while pop-up is active.
+     * @param aType The layout used.
+     */
+    IMPORT_C void ConstructL(CEikListBox* aListBox, 
+                             TInt aCbaResource,
+                             AknPopupLayouts::TAknPopupLayouts aType );
+
+    /**
+     * Called when the user accepts or cancels the listbox.
+     *
+     * @param aAccept @c ETrue if the user has accepted, @c EFalse if the user 
+     *                   has cancelled the listbox.
+     */
+    IMPORT_C virtual void AttemptExitL(TBool aAccept);
+
+    /**
+     * Setup the whole window layout; window position, grid and heading 
+     * position, shadow for the window.
+     *
+     * @param aType A choice of layout.  
+     */
+    IMPORT_C virtual void SetupWindowLayout(
+                                     AknPopupLayouts::TAknPopupLayouts aType);
+
+    /** 
+     * Returns the listbox being used.
+     *
+     * @return Listbox contained in the pop-up.
+     */
+    IMPORT_C CEikListBox* ListBox() const;
+
+    /**
+     * Gets the layout definitions for the popup list.
+     *
+     * @return Collects all LAF specification lines that are needed for popup 
+     *         windows.
+     */
+    IMPORT_C const TAknPopupWindowLayoutDef& Layout() const;
+
+    /**
+     * Gets the layout definitions for the popup list.
+     *
+     * @return Collects all LAF specification lines that are needed for popup 
+     *         windows.
+     */
+    IMPORT_C TAknPopupWindowLayoutDef& Layout();
+
+protected:
+
+    /**
+     * From @c MopSupplyObject.
+     *
+     * Retrieves an object of the same type as that encapsulated in @c aId.
+     *
+     * @param aId Encapsulated object type ID.
+     * @return Encapsulates the pointer to the object provided.
+     *         Note that the encapsulated pointer may be NULL.
+     */
+    IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
+
+protected:
+
+    /**
+     * From @c CCoeControl.
+     *
+     * Handles a change to the control's resources.
+     *
+     * @param aType A message UID value.
+     */
+    IMPORT_C void HandleResourceChange(TInt aType);
+
+protected:
+	IMPORT_C void FadeBehindPopup(TBool aFade);
+
+
+
+private:
+	// the following needs to be imported, because they need to be
+	// used in virtual table of any derived class.
+	IMPORT_C TSize MinimumSize();
+	IMPORT_C CCoeControl* ComponentControl(TInt aIndex) const;
+	IMPORT_C TInt CountComponentControls() const;
+	IMPORT_C void Draw(const TRect& aRect) const;
+	IMPORT_C TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,
+	                                     TEventCode aType);
+	IMPORT_C void FocusChanged(TDrawNow aDrawNow);
+
+	IMPORT_C void CloseState();
+	// From MAknFadedComponent
+	IMPORT_C virtual TInt CountFadedComponents();
+	IMPORT_C virtual CCoeControl* FadedComponent(TInt aIndex);
+
+private:
+    /**
+    * From CAknControl
+    */
+    IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+private:
+	void RemoveFindFiltering();
+
+protected: // these are protected to allow overriding virtual functions.
+	CEikListBox*				iListBox;
+    
+    /**
+     * A button group container - a wrapper around the different button 
+     * arrays.
+     */
+    CEikButtonGroupContainer* iPopoutCba;
+    
+    /** 
+     * Header control for queries. Defines properties of the header of the 
+     * pop-up menu.
+     */
+    CAknPopupHeadingPane* iTitle;
+    
+    /** The address to hold the return value from the popup */
+    TBool* iReturn;
+    
+    /**  */
+    TBool iMarkable;
+    
+    /**  */
+    TInt iCurrentResource;
+    
+    /** Popup layout type. */
+	AknPopupLayouts::TAknPopupLayouts iWindowType;
+    
+    /**
+     * collects all LAF specification lines that are needed for popup window.
+     */
+    TAknPopupWindowLayoutDef iLayout;
+
+
+    /**  */
+    TBool iAppBroughtForwards;
+    
+    /**  */
+    TAknPopupFader iPopupFader;
+    
+    /**  */
+    CIdle *iIdle;
+
+
+    /**  */
+	CActiveSchedulerWait iWait;		// owned, safe to use as direct member data.
+private:
+    CAknPopupListExtension* iPopupListExtension;    // owned
+	};
+
+#endif
+
+
+