classicui_pub/searchfield_api/inc/aknsfld.h
changeset 0 2f259fa3e83a
child 10 3d340a0166ff
--- /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 <AknControl.h>
+#include <gulicon.h>
+#include <eikgted.h>
+#include <aknappui.h>
+#include <e32property.h>  // 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
+
+