diff -r 000000000000 -r 2f259fa3e83a classicui_pub/searchfield_api/inc/aknsfld.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/classicui_pub/searchfield_api/inc/aknsfld.h Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,441 @@ +/* +* 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 "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: +* Search Field support. +* +* +*/ + + +#ifndef __AKNSFLD_H__ +#define __AKNSFLD_H__ + +// INCLUDES +#include +#include +#include +#include +#include // for subscriber/publisher + +// FORWARD DECLARATIONS +class CEikEdwin; +class CGlobalText; +class CAknInputFrame; +class CAknSearchFieldIndicator; +class CAknsListBoxBackgroundControlContext; +class CAknsFrameBackgroundControlContext; +class CEikListBox; +class CAknAdaptiveSearch; +class MAdaptiveSearchTextObserver; +class CAknSearchField; +class CHwKbSubscriber; + +/** + * Adaptive search text observer will be notified when adaptive search + * text/language are changed. Notify about text changing when adaptive search + * grid is opened for the first time (empty search text is generated) or when + * user taps the grid so that new character is inputted. Notify about language + * chnging when got information from CenRep. + * + * @since 5.0 + */ +class MAdaptiveSearchTextObserver + { + public: + /** + * Notification and handling of an adaptive search text change. + * + * @param aSearchField The source search field of this message. + */ + virtual void AdaptiveSearchTextChanged( CAknSearchField* aSearchField ) = 0; + }; + + +// CLASS DECLARATION + +/** + * The CAknSearchField class implements a Search field control. There are + * different styles for the search field defined by a TSearchFieldStyle. + * + * @since Series 60 0.9 + */ +NONSHARABLE_CLASS(CAknSearchField) : public CAknControl, + public MCoeControlObserver, + public MEikCommandObserver +{ +public: + /** + * Search field style. + */ + enum TSearchFieldStyle + { + /** Use only ESearch in Series 60 */ + ESearch, + /** (Not used) */ + EInput, + /** (Not used) */ + EUrl, + /** (Not used) */ + EPhone, + /** (Not used) */ + EPlain, + /** Use as popup search field. */ + EPopup, + /** Use as pinb search field. */ + EPinb, + /** For Clock application/list_single_heading_pane. */ + EClockApp, + /** Same as ESearch, but using CreateWindowL(). */ + EFixed, + /** Layout where no line is used. */ + ESearchWithoutLine, + /** Popup window layout. */ + EPopupWindow, + /** For adaptive search grid */ + /** @since 5.0 */ + EAdaptiveSearch, + /** For adaptive search grid */ + /** Same as EAdaptiveSearch, but using CreateWindowL(). */ + /** @since 5.0 */ + EAdaptive, + /** For adaptive search grid */ + /** Same as EAdaptiveSearch, but using popup find pane. */ + /** @since 5.0 */ + EPopupAdaptiveSearch, + /** For adaptive search grid */ + /** Popup window layout */ + /** @since 5.0 */ + EPopupAdaptiveSearchWindow + }; + +public: + + /** + * Destructor. + */ + IMPORT_C ~CAknSearchField(); + + /** + * Two-phased constructor. + * @param aParent Reference to parent control. + * @param aFieldStyle Defines the UI style. + * @param aIcon A pointer to the icon to be shown in the search box frame. + * Takes ownerships. Can be @c NULL. + * @param aTextLimit Defines the maximum text length. + * @return A pointer to contructed @c CAknSearchField object. + */ + IMPORT_C static CAknSearchField* NewL( const CCoeControl& aParent, TSearchFieldStyle aFieldStyle, CGulIcon* aIcon, TInt aTextLimit ); + +public: // for search string manipulation + /** + * Returns the length of search text. + * @return The length of search text. + */ + IMPORT_C TInt TextLength() const; + + /** + * Returns the text of search field by writing it into the + * buffer aSearchTxt. + * @param aSearchTxt Reference to the text buffer. Buffer size must be same + * or greater than maximum text length, which is given in + * constructor. + */ + IMPORT_C void GetSearchText( TDes& aSearchTxt ) const; + + /** + * Sets text into search field. + * @param aSearchTxt Reference to the text buffer. + */ + IMPORT_C void SetSearchTextL( const TDesC& aSearchTxt ); + + /** + * Selects the whole search text. + */ + IMPORT_C void SelectSearchTextL(); + + /** + * Clears text in the search field. + */ + IMPORT_C void ResetL(); + + /** + * Sets additional info text to the search field. + * @param aText Reference to the text buffer. + */ + IMPORT_C void SetInfoTextL( const TDesC& aText ); + + /** + * Calls editor's @c ClipboardL() function. + * @param aClipboardFunc Clipboard function. + */ + IMPORT_C void ClipboardL( CEikEdwin::TClipboardFunc aClipboardFunc ); + + /** + * Return search field style + * @since 5.0 + * @return style of search field + */ + IMPORT_C CAknSearchField::TSearchFieldStyle SearchFieldStyle() const; + +public: // new methods for Avkon Skins support + + /** + * Sets whether skins are enabled on this control. The default value is + * determined from global setting from @c CAknAppUi. + * @since Series 60 2.0 + * @param aEnabled @c ETrue if skins are enabled, @c EFalse if not. + */ + IMPORT_C void SetSkinEnabledL( const TBool aEnabled ); + +public: // from MCoeControlObserver + + /** + * From @c MCoeControlObserver, Acts upon changes in the hosted control's state. + * This class's implementation is trivial and should be able to be safely + * re-implemented in directly client-derived classes. For non-base setting + * page classes, a call to the base class should be made. + * @param aControl Control that caused the event. (not used in default implementation) + * @param aEventType Type of the event. + */ + void HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType ); + +public: // From CCoeControl + + /** + * From @c CCoeControl, Handles key event. + * @param aKeyEvent The key event. + * @param aType The type of the event. + * @return Indicates whether the key event was used by this control or not. + */ + IMPORT_C TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType ); + + /** + * From @c CCoeControl, Handles pointer event. + * @since 5.0 + * @param aPointerEvent The pointer event. + * Invert adaptive search grid by tapping search field. + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /** + * From @c CCoeControl, Returns minimum size. Minimum size depends on + * zoom factor. + * @return Minimum size. + */ + IMPORT_C TSize MinimumSize(); + + /** + * Sets this control as visible or invisible. + * + * @since S60 3.2 + * @param aVisible ETrue to make the control visible, EFalse to make + * it invisible. + */ + IMPORT_C void MakeVisible( TBool aVisible ); + + /** + * From @c CCoeControl, Resource change handling. + * + * @param aType Message type. + */ + void HandleResourceChange( TInt aType ); + +public: + + /** + * Sets position of the line on main pane. + * @since Series 60 2.0 + * @param aLinePos The position as defined in @c TAknSeparatorLinePos + */ + IMPORT_C void SetLinePos( TInt aLinePos ); + + /** + * Access to the edwin owned by the search field. + * @since Series 60 2.6 + * @return Reference to the edwin owned by the search field. + */ + IMPORT_C CEikEdwin& Editor() const; + + /** + * Set adaptive search grid characters. + * @since 5.0 + * @param aGridChars The characters for adaptive search grid. + */ + IMPORT_C void SetAdaptiveGridChars( const TDesC& aGridChars ) const; + + /** + * Show adaptive search grid. + * Application can activate adaptive search grid from the option menu. + * @since 5.0 + */ + IMPORT_C void ShowAdaptiveSearchGrid() const; + + /** + * Set column filter flag for adaptive search grid + * @since 5.0 + * @param aFlag The bit flag shows which columns take into account + * during filtering. + */ + IMPORT_C void SetListColumnFilterFlags( const TBitFlags32 aFlag ); + + /** + * Send column filter flag for adaptive search grid + * @since 5.0 + * @return aFlag The bit flag shows which columns take into account + * during filtering. + */ + IMPORT_C TBitFlags32 ListColumnFilterFlags() const; + + /** + * Adds an adaptive search text observer. Duplicates are not checked + * (i.e. adding the same observer multiple times is not prevented). + * @since 5.0 + * @param aObserver Must be non-NULL. + */ + IMPORT_C void AddAdaptiveSearchTextObserverL( MAdaptiveSearchTextObserver* aObserver ); + + /** + * Removes an adaptive search text observer. + * @since 5.0 + * @param aObserver The observer to be removed. + * @return ETrue if removal ok, EFalse if observer was not removed (not + * found from the list of observers). + */ + IMPORT_C TBool RemoveAdaptiveSearchTextObserver( MAdaptiveSearchTextObserver* aObserver ); + + /** + * Returns information whether adaptive search is enabled or not + * @since 5.0 + * @return ETrue if adaptive search is enabled, EFalse otherwise. + */ + IMPORT_C TBool AdaptiveSearchEnabled(); + + /** + * Notify client if input language changed in settings, for adaptive search + * @since 5.0 + * @return ETrue if language has changed, EFalse otherwise. + */ + IMPORT_C TBool LanguageChanged() const; + +private: // from MObjectProvider + TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); +private: + TInt CountComponentControls() const; + CCoeControl* ComponentControl( TInt aIndex ) const; + void SizeChanged(); + void FocusChanged( TDrawNow aDrawNow ); +private: + void ConstructL( const CCoeControl& aParent, TSearchFieldStyle aFieldStyle, CGulIcon* aIcon, TInt aTextLimit ); + CAknSearchField(); +private: + void ZoomEditorL(); +private: // from MEikCommandObserver + IMPORT_C void ProcessCommandL( TInt aCommandId ); +private: + void UpdatePopupCBAL(); + void RestorePopupCBA(); + void SetupSkinContextL(); +public: + + /** + * Sets a list box for this control. + * @since Series 60 2.6 + * @param aListBox A pointer to a list box object. + */ + void SetListbox( CEikListBox* aListBox ); + + /** + * Sets the parent control for this control. + * @since Series 60 2.6 + * @param aParent A pointer to the parent control. + */ + void SetParentCtrl( CCoeControl* aParent ); + + /** + * Indicates that is the control popup or not. + * @since Series 60 2.6 + * @return @c ETrue if it is a popup, @c EFalse if not. + */ + TBool IsPopup(); + + /** + * Sets index, where listbox focus should return when popup findbox is + * canceled. + * @since Series 60 3.1 + * @internal + */ + void SetOldItemIndex( TInt aOldItemIndex ); + + /** + * Returns index, where listbox focus should return when popup findbox is + * canceled + * @since Series 60 3.1 + * @internal + */ + TInt OldItemIndex(); + + /** + * Set the language changed flag, for adaptive search + * @since 5.0 + * @param aLanguageChanged ETrue if language has changed, EFalse otherwise. + */ + void SetLanguageChangedFlag( TBool aLanguageChanged ); + + /** + * Handle HW keyboard active/deactive event. + * @since 5.0 + */ + void HandleHWKeyboardModeChangeL(); + + /** + * A helper methord used in ContructL(). + * Get Adaptive Search setting and subscribe hardware + * keyboard layout changing. + * + * @param aShowIndicator, ETrue if indicator need be shown + * @return ETrue if Adaptive is enabled in cenrep/ + * @since 5.0 + */ + TBool GetASStatusAndSubKbLayoutL( TBool& aShowIndicator ); + +private: + // The bit flag shows which collumns take into account during filltering + TBitFlags32 iColumnFlag; + CEikEdwin* iEditor; + CGlobalText* iGlobalText; + CAknInputFrame* iInputFrame; + CAknSearchFieldIndicator* iIndicator; + CAknsListBoxBackgroundControlContext* iSkinContext; + TInt iFlags; + TInt iLinePos; + CAknsFrameBackgroundControlContext* iInputContext; + TBool iIsPopup; + TBool iCBAObserverUpdated; + CEikListBox *iListBox; // not owned + CCoeControl *iParent; // not owned + CEikButtonGroupContainer *iCba; // this is only for checking whether cba changed + TInt iOldItemIndex; + CAknAppUi* iBackedAppUi; + CAknAdaptiveSearch* iAdaptiveSearch; + TSearchFieldStyle iStyle; + TBool iLanguageChanged; // flag shows was input language changed or not + + // For hybird keyborad + RProperty iHwKeyboardPro; + CHwKbSubscriber* iHwKbSub; + }; + +#endif + +