diff -r 7165f928e888 -r 31c16e0c5e3e classicui_plat/queries_api/inc/AknMultilineQueryControl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/classicui_plat/queries_api/inc/AknMultilineQueryControl.h Wed Aug 18 10:02:14 2010 +0300 @@ -0,0 +1,357 @@ +/* +* 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: +* Implementation of the query control for multiline queries +* +*/ + + + +#ifndef __AKN_MULTILINE_QUERY_CONTROL_H +#define __AKN_MULTILINE_QUERY_CONTROL_H + +// INCLUDES +#include +#include + +enum TLinePosition + { + EFirstLine = 0, + ESecondLine + }; + +class TAknWindowLineLayout; + +/** + * Multiline query control class. + */ +class CAknMultilineQueryControl : public CAknQueryControl + { + public: // Constructors and destructor + /** + * C++ Constructor. + */ + IMPORT_C CAknMultilineQueryControl(); + + /** + * C++ Destructor. + */ + IMPORT_C virtual ~CAknMultilineQueryControl(); + + public://new API functions + /** + * Set number of prompt lines to controls. + * This have to call before setting sizs of the components + * + * @param aNbrOfPromptLinesFirstLine Numbers of lines in first prompt text + * @param aNbrOfPromptLinesSecondLine Numbers of lines in Second prompt text + */ + IMPORT_C void SetNbrOfPromptLines(TInt aNbrOfPromptLinesFirstLine, TInt aNbrOfPromptLinesSecondLine); + + /** + * Return true if control is the first query in the dialog + */ + IMPORT_C TBool IsFirst() const; + + /** + * Return true if control is the second query in the dialog + */ + IMPORT_C TBool IsSecond() const; + + public: //Functions from CAknQueryControl + + /** + * Get pointer to query controls control (editor) + * + * @param aLayout Controls layout (for multiline queries use + * EMultiDataFirstEdwin, EMultiDataSecondEdwin...) + * @return Pointer to control, NULL if not found + */ + IMPORT_C virtual CCoeControl* ControlByLayoutOrNull(TInt aLayout); + + public: // Functions from CCoeControl + + /** + * From CCoeControl Give the control a mimimum size. + * + * @return The minimum size required by the control. + */ + IMPORT_C TSize MinimumSize(); + + /** + * From CCoeControl. + * Handles pointer events + * @param aPointerEvent The pointer event. + */ + IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); + + + IMPORT_C void HandleResourceChange(TInt aType); + + public: + /** + * LAF indexing + * + * Manage indexes into LAF tables + */ + class TIndex + { + public: + TIndex(const TLinePosition& aLinePos, TInt aFirstQueryPromptLines,TInt aSecondQueryPromptLines); + + public: + TInt MainPanePQDCWindow() const; + TInt CDCQPWindowLine1() const; + TInt CDCQPWindowLine2() const; + TInt CDCQPWindowLine3() const; + TInt CDCQPWindowRectangles() const; + TInt CDCQPWindowLine5() const; + + TInt CDCQPWindowTextsLine1(TInt aLineNum) const; + TInt CDCQPWindowTextsLine2() const; + TInt CDCQPWindowTextsLine3(TInt aLineNum) const; + TInt CDCQPWindowTextsLine4() const; + + TInt CDCPQWindowGraphicsLine5() const; + + public: + const TInt LinePos() const { return iLinePos; } + + private: + TInt FirstQueryPromptLines() const; + TInt SecondQueryPromptLines() const; + + void SelfTest() const; + + private: + TLinePosition iLinePos; + TInt iFirstQueryPromptLines; + TInt iSecondQueryPromptLines; + }; + + protected: // From CAknQueryControl + /** + * Set line widths for query prompt + */ + void SetLineWidthsL(); + + /** + * Read the query data from resource file + */ + void ConstructQueryL(TResourceReader& aRes); + + /** + * Layout rectangle (shift up and left by margins) + */ + TRect LayoutRect(); + + private://From CCoeControl + void SizeChanged(); + void Draw(const TRect& aRect) const; + private: + /** + * From CAknControl + */ + IMPORT_C void* ExtensionInterface( TUid aInterface ); + + private: //Layout methods + void LayoutPrompt(const TLayoutMethod& aLayoutM); + void LayoutSeparator(const TLayoutMethod& aLayoutM); + + void LayoutEditor(const TLayoutMethod& aLayoutM); + void LayoutEditorFrame(const TLayoutMethod& aLayoutM); + void LayoutEditorIndicator(const TLayoutMethod& aLayoutM); + + /** + * Return window layout depending on Layout + * Window layout is done by the dialog + */ + void WindowLayout( TAknWindowLineLayout& aLayout ) const; + + private: //Implementation methods + void SetLinePosition(); + TInt16 FirstLineHeight() const; + TInt16 SecondLineHeight() const; + + private: + TAknLayoutRect iLayoutLineBetweenEntryFields; /// Layout rect for line between two entry fields + TLinePosition iLinePos; + TInt iFirstQueryPromptLines; + TInt iSecondQueryPromptLines; + }; + + + +/** + * Derived Multiline query control class. + * + * @since 2.1 + */ + class CAknExtMultilineQueryControl : public CAknExtQueryControl + { + public: // Constructors and destructor + /** + * C++ Constructor. + */ + IMPORT_C CAknExtMultilineQueryControl(); + + /** + * C++ Destructor. + */ + IMPORT_C virtual ~CAknExtMultilineQueryControl(); + + public://new API functions + /** + * Set number of prompt lines to controls. + * This have to call before setting sizs of the components + * + * @param aNbrOfPromptLinesFirstLine Numbers of lines in first prompt text + * @param aNbrOfPromptLinesSecondLine Numbers of lines in Second prompt text + */ + IMPORT_C void SetNbrOfPromptLines(TInt aNbrOfPromptLinesFirstLine, TInt aNbrOfPromptLinesSecondLine); + + /** + * Return true if control is the first query in the dialog + */ + IMPORT_C TBool IsFirst() const; + + /** + * Return true if control is the second query in the dialog + */ + IMPORT_C TBool IsSecond() const; + + public: //Functions from CAknQueryControl + + /** + * Get pointer to query controls control (editor) + * + * @param aLayout Controls layout (for multiline queries use + * EMultiDataFirstIpEd, EMultiDataSecondIpEd...) + * @return Pointer to control, NULL if not found + */ + IMPORT_C virtual CCoeControl* ControlByLayoutOrNull(TInt aLayout); + + public: // Functions from CCoeControl + + /** + * From CCoeControl Give the control a mimimum size. + * + * @return The minimum size required by the control. + */ + IMPORT_C TSize MinimumSize(); + + /** + * From CCoeControl. + * Handles pointer events + * @param aPointerEvent The pointer event. + */ + IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); + + IMPORT_C void HandleResourceChange(TInt aType); + + public: + /** + * LAF indexing + * + * Manage indexes into LAF tables + */ + class TIndex + { + public: + TIndex(const TLinePosition& aLinePos, TInt aFirstQueryPromptLines,TInt aSecondQueryPromptLines); + + public: + TInt MainPanePQDCWindow() const; + TInt CDCQPWindowLine1() const; + TInt CDCQPWindowLine2() const; + TInt CDCQPWindowLine3() const; + TInt CDCQPWindowRectangles() const; + TInt CDCQPWindowLine5() const; + + TInt CDCQPWindowTextsLine1(TInt aLineNum) const; + TInt CDCQPWindowTextsLine2() const; + TInt CDCQPWindowTextsLine3(TInt aLineNum) const; + TInt CDCQPWindowTextsLine4() const; + + TInt CDCPQWindowGraphicsLine5() const; + + public: + const TInt LinePos() const { return iLinePos; } + + private: + TInt FirstQueryPromptLines() const; + TInt SecondQueryPromptLines() const; + + void SelfTest() const; + + private: + TLinePosition iLinePos; + TInt iFirstQueryPromptLines; + TInt iSecondQueryPromptLines; + }; + + protected: // From CAknQueryControl + /** + * Set line widths for query prompt + */ + void SetLineWidthsL(); + + /** + * Read the query data from resource file + */ + void ConstructQueryL(TResourceReader& aRes); + + /** + * Layout rectangle (shift up and left by margins) + */ + TRect LayoutRect(); + + private://From CCoeControl + void SizeChanged(); + void Draw(const TRect& aRect) const; + private: + /** + * From CAknControl + */ + IMPORT_C void* ExtensionInterface( TUid aInterface ); + + private: //Layout methods + void LayoutPrompt(const TLayoutMethod& aLayoutM); + void LayoutSeparator(const TLayoutMethod& aLayoutM); + + void LayoutEditor(const TLayoutMethod& aLayoutM); + void LayoutEditorFrame(const TLayoutMethod& aLayoutM); + void LayoutEditorIndicator(const TLayoutMethod& aLayoutM); + + /** + * Return window layout depending on Layout + * Window layout is done by the dialog + */ + void WindowLayout( TAknWindowLineLayout& aLayout ) const; + + private: //Implementation methods + void SetLinePosition(); + TInt16 FirstLineHeight() const; + TInt16 SecondLineHeight() const; + private: + TAknLayoutRect iLayoutLineBetweenEntryFields; /// Layout rect for line between two entry fields + TLinePosition iLinePos; + TInt iFirstQueryPromptLines; + TInt iSecondQueryPromptLines; + TAny* iSpare_1; + + + }; + +#endif