diff -r 000000000000 -r 2f259fa3e83a uifw/AvKon/inc/AknAdaptiveSearchGrid.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AvKon/inc/AknAdaptiveSearchGrid.h Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,437 @@ +/* +* Copyright (c) 2005 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: Popup adaptive search grid component +* +*/ + + +#ifndef __AKNADAPTIVESEARCHGRID_H__ +#define __AKNADAPTIVESEARCHGRID_H__ + +// INCLUDES +#include // CCoeControl +#include // CAknbutton +#include +#include "AknAdaptiveSearchGridObserver.h" +#include + +// FORWARD DECLARATIONS +class CAknsBasicBackgroundControlContext; +class CAknsFrameBackgroundControlContext; +class CAknsListBoxBackgroundControlContext; +class CAknInputFrame; +class CEikEdwin; + +// CLASS DECLARATION +/** + * The class to provide adaptive search grid for the application + * + * @lib avkon.lib + * @since Series 60 5.0 + */ + +class CAknAdaptiveSearchGrid : public CAknControl, + public MCoeControlObserver, + public MCoeControlBackground, + public MAknWsEventObserver + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * + * @param aTextLimit text limit for the findpane. + * @param aFieldStyle The same flag as search field + * @return Pointer to the created adaptive search grid object + */ + static CAknAdaptiveSearchGrid* NewL( const TInt aTextLimit, + TInt aFieldStyle ); + + /** + * Two-phased constructor. + * + * @param aTextLimit text limit for the findpane. + * @param aFieldStyle The same flag as search field + * @return Pointer to the created adaptive search grid object + */ + static CAknAdaptiveSearchGrid* NewLC( const TInt aTextLimit, + TInt aFieldStyle ); + + /** + * Destructor. + */ + ~CAknAdaptiveSearchGrid(); + + public: // From base classes + + /** + * From CCoeControl. + * Gets the number of controls contained in a compound control. + * + * @return The number of component controls contained by this control. + */ + TInt CountComponentControls() const; + + /** + * From CCoeControl. + * Gets the specified component of a compound control. + * + * @param aIndex The index of the control to get + * @return The component control with an index of aIndex. + */ + CCoeControl* ComponentControl( TInt aIndex ) const ; + + /** + * From CCoeControl. + * Handles a change to the control's resources. + * + * @param aType A message UID value. + */ + void HandleResourceChange( TInt aType ); + + /** + * From CCoeControl. + * Retrieves an object of the same type as that encapsulated in aId. + * + * @param aId An encapsulated object type ID. + * @return Encapsulated pointer to the object provided. + * Note that the encapsulated pointer may be NULL. + */ + TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); + + /** + * From MCoeControlObserver. + * Handles an event from an observed adaptive search grid item. + * + * @param aControl The control which sent the event + * @param aEventType The event type + */ + void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); + + /** + * From CCoeControl + * + * @param aRect the rectangle of this view that needs updating + */ + void Draw( const TRect& aRect ) const; + + /** + * From CCoeControl. + * This function is called whenever a control gains or loses focus. + * + * @param aDrawNow Contains the value that was passed to it by SetFocus(). + */ + void FocusChanged( TDrawNow aDrawNow ); + + /** + * From MAknWsEventObserver. Handles window server events. + * + * @param The event that occurred. + * @param The control that the event occurred in. + */ + void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination ); + + /** + * From MCoeControlBackground. + * Draw the background for a given control. + * The text drawer that shall be used to draw text on the specific + * background can be fetched through the GetTextDrawer() method. + * + * @param aGc Graphics context used for drawing. + * @param aControl The control being drawn (may be a child of the drawer). + * @param aRect The area to be redrawn. + */ + void Draw( CWindowGc& aGc, const CCoeControl& aControl, const TRect& aRect ) const; + + public: // New functions + + /** + * Sets the observer for the adaptive search grid. + * + * @param aObserver A pointer to the observer. Ownership is not changed. + */ + void SetAdaptiveSearchGridObserver( MAknAdaptiveSearchGridObserver* aObserver ); + + /** + * Returns a pointer to the adaptive search grid observer. + * + * @return Pointer to the adaptive search grid observer. + */ + MAknAdaptiveSearchGridObserver* AdaptiveSearchGridObserver(); + + /** + * Shows or hides adaptive search grid. + * Position of the top left corner should be set in advance. + * Adaptive search grid set visible with this method is by default focusing. + * Does nothing if adaptive search grid is disabled. + * + * @param aVisible ETrue to show it, EFalse to hide it. + * @param aSelectAll ETrue to highlight all content of editor. + */ + void SetVisibilityL( TBool aVisible, TBool aSelectAll ); + + /** + * Show adaptive search grid button. + */ + void ShowL(); + + /** + * Returns adaptive search grid visibility at this moment + * + * @return ETrue, if adaptive search grid is shown. + */ + TBool IsShown() const; + + /** + * Set chars to button array + * + * @param aGridChars are the characters for adaptive search grid. + */ + void SetButtonGridChars( const TDesC& aGridChars ); + + /** + * Sets text into search field. + * + * @param const aSearchTxt Reference to the text buffer. + */ + void SetSearchTextToFindPane( const TDesC& aSearchTxt ); + + /** + * Initiates buttons for adaptive search grid + */ + void InitGridButtons(); + + /** + * Initiates position for buttons of grid + */ + void GridButtonsPositions(); + + /** + * Main function for initiation adaptive search grid + */ + void InitGrid(); + + /** + * Show controls backspase, close, prev, next buttons and find pane + */ + void ShowControls(); + + /** + * Hides adaptive search grid. + */ + void HideL(); + + static const TInt EDeleteLastCharPressed = -1; + static const TInt ECloseGridPressed = -2; + + public: + + /** + * When the rect of find pane is set, this functions will be notified + * to record the size of it. + */ + void SaveFindPaneRect( const TRect &aRect ); + + protected: // From base class + + /** + * From CCoeControl. + * Responds to size changes to sets the size and position of + * the contents of this control. + */ + void SizeChanged(); + + private: // Constructors + + /** + * C++ default constructor. + * + * @param aTextLimit text limit for the findpane. + */ + CAknAdaptiveSearchGrid( const TInt aTextLimit ); + + /** + * Symbian 2nd phase constructor. + * @param aFieldStyle The same flag as search field + */ + void ConstructL( TInt aFieldStyle ); + + + private: // New functions + + /** + * Update page indicator. + */ + void UpdatePageIndicatorL(); + + /** + * Sets the flag to be on or off and also calls + * CCoeControl::MakeVisible(). + * + * @param aShown is True, if adaptive search grid is shown. + */ + void SetShown( const TBool aShown ); + + /** + * Create and add button controlto adaptive search grid. + * + * @param aText text for button grid + */ + CAknButton* CreateButtonL(); + + /** + * Show next page + */ + void NextPage(); + + /** + * Show previous page + */ + void PrevPage(); + + /** + * Initiate controls + * Create control buttons: close, backspase, next, previous. + * @param aFieldStyle The same flag as search field + */ + void InitControlsL( TInt aFieldStyle); + + /** + * Initiate position for controls + */ + void ControlsPositions(); + + /** + * Gets rect from layout data + */ + TRect RectFromLayout( const TRect& aParent, + const TAknWindowComponentLayout& aComponentLayout ) const; + + /** + * Update visibility of buttons from grid + */ + void UpdateVisibleButtonsL(); + + /** + * Update layout option accoding to current amount of rows + */ + void UpdatePageAndRowCount(); + + /** + * Update icon's color accoding to current theme + */ + CGulIcon* GetColorIconL( TInt aIndex ); + /** + * Update layout variant + */ + void UpdateLayoutVariant(); + + /** + * Update adaptive search grid skin. + */ + void UpdateSkinL(); + + + private: // Member variables + + // array for adaptive search grid buttons + RPointerArray iButtonArray; + + // control buttons + CAknButton* iCloseButton; + CAknButton* iDeleteButton; + CAknButton* iPrevButton; + CAknButton* iNextButton; + CAknButton* iLastFocusedButton; + + // page indicator if several pages + CEikLabel* iPageIndicator; + + // find pane for AS + CAknInputFrame* iInputFrame; + CEikEdwin* iEditor; + TInt iTextLimit; + + // skin context for find pane + CAknsListBoxBackgroundControlContext* iSkinContextOfFindPane; + CAknsFrameBackgroundControlContext* iBgContextOfFindPane; + + // contex for control pane + CAknsBasicBackgroundControlContext* iBgContextOfControlPane; + + // whether adaptive search grid is shown right now + // IsVisible() is not safe enough because can be + // changed from outside with MakeVisible() + TBool iShown; + + // number of grid rows and cols + TInt iNumOfRows; + TInt iNumOfCols; + + // number of grid pages + TInt iNumOfPages; + + // current page which shown on screen + TInt iCurrentPage; + + // current amount of total grid button + TInt iTotalGridButtons; + + // max amount of total grid button + TInt iMaxAmountOfButtons; + + // current button icon size + TSize iButtonIconSize; + + // chars of grid + HBufC* iGridChars; + + // region which AS cover currently + RRegion iCurrentRegion; + + // current layout option + // 0 portrait with pages + // 1 landscape with pages + // 2 portrait with no pages + // 3 landscape with no pages + TInt iLayoutOption; + + TBool iToolbarShown; + + // not owned + CAknAppUi* iAppUi; + + // observer to report adaptive search grid item events + // not owned + MAknAdaptiveSearchGridObserver* iAdaptiveSearchGridObserver; + + //Reset grids position when layout is changed. + TBool iLayoutChanged; + + + // For ELJG-7VC8Q2: popup find pane overlap with Adaptive Search grid + TBool iPopupFindpane; + // The length of overlap section + TInt iOverlapLength; + + TRect iFindpaneRect; + + TBool iFindPaneSizeChanged; + + }; + +#endif // __AKNADAPTIVESEARCHGRID_H__ + +// End of File +