diff -r 000000000000 -r ff3acec5bc43 mpxplugins/viewplugins/views/commoncontainer/inc/mpxcommoncontainersearchfield.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpxplugins/viewplugins/views/commoncontainer/inc/mpxcommoncontainersearchfield.h Thu Dec 17 08:45:05 2009 +0200 @@ -0,0 +1,375 @@ +/* +* Copyright (c) 2008 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: Class that implements Search Field feature. +* +*/ + + +#ifndef CMPXCOMMONCONTAINERSEARCHFIELD_H +#define CMPXCOMMONCONTAINERSEARCHFIELD_H + +// INCLUDE FILES +#include +#include +#include + +// FORWARD DECLARATION +class CAknInputFrame; +class CMPXCommonContainerSearchField; +class CMPXCommonContainerSearchFieldWrapper; + +// CLASS DECLARATION + +/** + * Class for handling key events. Has higher priority than FEP, + * to be able to catch up/down key event and forward them to Search + * Field's editor. + */ +NONSHARABLE_CLASS( CMPXCommonContainerSearchFieldKeyHandler ) : + public CCoeControl, + public MEikEdwinObserver + { + public: + + /** + * public constructor. + * + * @param aSearchField Reference to Search Field that key events are controlled. + */ + CMPXCommonContainerSearchFieldKeyHandler( CMPXCommonContainerSearchField& aSearchField ); + + /** + * Catches key events before FEP could do it. + * + * @param aKeyEvent Key event. + * @param aType Key event type. + * @return Response whether key was handled or not. + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * Catches EEventTextUpdate event. + * + * @param aEdwin Pointer to editor. + * @param aEventType Editor event type. + */ + void HandleEdwinEventL( CEikEdwin* aEdwin, TEdwinEvent aEventType ); + + /** + * Put control to control stack or remove it from there. + * + * @param aEnable ETrue puts control to the control stack with higher + * priority than FEP has. EFalse removes control from the stack. + */ + void EnableL( TBool aEnable ); + + /** + * Resets key handling situation by setting iFirstKeyEvent to ETrue. + */ + void Reset(); + + /** + * Get LeftRightEvent. + */ + TBool IsLeftRightEvent(); + + /** + * SetFirstKey. + */ + void SetFirstKeyEvent( TBool aFirstKeyEvent ); + + protected: + + /** + * Key event catching enable flag. + */ + TBool iEnabled; + + /** + * Only first key event is catched. + */ + TBool iFirstKeyEvent; + + /** + * Flag for LeftRightEvent. + */ + TBool iLeftRightEvent; + + /** + * Search Field control of which key events are catched. + */ + CMPXCommonContainerSearchField& iSearchField; + }; + +/** + * Search Field class for component. + * + */ +NONSHARABLE_CLASS( CMPXCommonContainerSearchField ) : public CCoeControl, + public MCoeControlObserver, + public MCoeFepObserver + { + public: + + /** + * Two-phased constructor. Leaves on failure. + * + * @param aParent Parent control. + * @param aFindKeywordMode ETrue if the pane is a find keyword pane. + * @return The constructed Search Field control. + */ + static CMPXCommonContainerSearchField* NewL( CMPXCommonContainerSearchFieldWrapper* aParent, + TBool aFindKeywordMode = ETrue ); + + /** + * Destructor. + */ + virtual ~CMPXCommonContainerSearchField(); + + /** + * Shows or hides to Search Field. + * + * @param ETrue to set visible + */ + void MakeVisibleL( TBool aVisible ); + + /** + * Non-leaving version of MakeVisibleL. + * + * @param ETrue to set visible + */ + void MakeVisible( TBool aVisible ); + + /** + * Called to handle change in Search Field size. + */ + void HandleFindSizeChanged(); + + /** + * Enable key event handler. + * + * @param aEnable ETrue to enable. + */ + void EnableKeyEventHandlerL( TBool aEnable ); + + public: // From MCoeControlObserver + + /** + * Handle control event. + * + * @param aControl The control. + * @param aEventType Event type. + */ + void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); + + public: // From CCoeControl + + /** + * Handles key event. + * + * @param aKeyEvent The key event. + * @param aType Key event type. + * @return Response whether event was consumed. + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * HandlePointerEventL, from CCoeControl. + * + * @param aPointerEvent Pointer event. + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /** + * Count component controls. + * + * @return Number of component controls + */ + TInt CountComponentControls() const; + + /** + * Get a component control by index. + * + * @param aIndex Index of component control to be returned + * @return Component control or NULL + */ + CCoeControl* ComponentControl( TInt aIndex ) const; + + /** + * Sets the OrdinalPosition of Search Field. + * + * @param aPos The OrdinalPosition + */ + void SetOrdinalPosition( TInt aPos ); + + public: // Text manipulation. + + /** + * Lengt of the text in the editor. + * + * @return The text length + */ + TInt TextLength() const; + + /** + * Get text from the editor. + * + * @return text from the editor + */ + HBufC* GetTextLC() const; + + /** + * Set text. + * + * @param aTxt Text to set, appended if needed. + */ + void SetTextL( const TDesC& aTxt ); + + /** + * Selects all text in the editor, see CEikEdwin's SelectAllL(). + */ + void SelectAllL(); + + /** + * Set info text. + * + * @param aText Text to be displayed as info + */ + void SetInfoTextL( const TDesC& aText ); + + /** + * Perform clipboard functionality. + * + * @param aClipboardFunc Function to perform. + */ + void ClipboardL( CEikEdwin::TClipboardFunc aClipboardFunc ); + + /** + * Returns editor control of Search Field. + * + * @return Editor control. + */ + CEikEdwin* Editor() const; + + /** + * Checks if client's keyword needs updating, and updates if needed. + */ + void UpdateFindKeywordL(); + + public: // Observer support. + + /** + * Handles resource change. + * + * @param aType Type of resource change. + */ + void HandleResourceChange( TInt aType ); + + /** + * Handles the completion of a FEP transaction. + */ + void HandleCompletionOfTransactionL(); + + /** + * Handles the start of a FEP transaction. + */ + void HandleStartOfTransactionL(); + + protected: // Construction. + + /** + * Constructor. + * + * @param aFindKeywordMode ETrue if the pane is a find keyword pane. + */ + CMPXCommonContainerSearchField( TBool aFindKeywordMode ); + + /** + * Second-phase constructor. Leaves on failure. + * + * @param aParent Parent control. + */ + void ConstructL( CMPXCommonContainerSearchFieldWrapper* aParent ); + + protected: // From CCoeControl. + + /** + * Handle size change, layout and draw components. + */ + void SizeChanged(); + + /** + * Handle focus change. + * + * @param aDrawNow ETrue if immediate draw is needed. + */ + void FocusChanged( TDrawNow aDrawNow ); + + private: + + /** + * Set the text and redraw. + * + * @param aTxt Text to set. + */ + void DoSetTextL( const TDesC& aTxt ); + + /** + * Activates virtual keyboard. + */ + void ActivateVkbL(); + + protected: // Data. + + /** + * Pointer to parent (control). + * Not own. + */ + CMPXCommonContainerSearchFieldWrapper* iParent; + + /** + * If the control is in find keyword pane mode. + */ + TBool iFindKeywordMode; + + /** + * HandleFEPFind. + */ + TBool iHandleFEPFind; + + /** + * The previously typed text into iEditor. + */ + HBufC* iPrevKeyword; + + /** + * Editor. + * Own. + */ + CEikEdwin* iEditor; + + /** + * Input frame. + * Own. + */ + CAknInputFrame* iInputFrame; + + /** + * Key handler. + * Own. + */ + CMPXCommonContainerSearchFieldKeyHandler *iSearchFieldKeyHandler; + }; + +#endif // CMPXCOMMONCONTAINERSEARCHFIELD_H