mpxplugins/viewplugins/views/commoncontainer/inc/mpxcommoncontainersearchfield.h
changeset 0 ff3acec5bc43
--- /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 <coecntrl.h>
+#include <eikedwin.h>
+#include <Avkon.mbg>
+
+// 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