epoc32/include/mw/aknmultilinequerycontrol.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
parent 1 666f914201fb
child 4 837f303aceeb
permissions -rw-r--r--
Final list of Symbian^2 public API header files
williamr@2
     1
/*
williamr@2
     2
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     3
* All rights reserved.
williamr@2
     4
* This component and the accompanying materials are made available
williamr@2
     5
* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2
     6
* which accompanies this distribution, and is available
williamr@2
     7
* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     8
*
williamr@2
     9
* Initial Contributors:
williamr@2
    10
* Nokia Corporation - initial contribution.
williamr@2
    11
*
williamr@2
    12
* Contributors:
williamr@2
    13
*
williamr@2
    14
* Description: 
williamr@2
    15
*   Implementation of the query control for multiline queries
williamr@2
    16
*
williamr@2
    17
*/
williamr@2
    18
williamr@2
    19
williamr@2
    20
  
williamr@2
    21
#ifndef __AKN_MULTILINE_QUERY_CONTROL_H
williamr@2
    22
#define __AKN_MULTILINE_QUERY_CONTROL_H 
williamr@2
    23
williamr@2
    24
//  INCLUDES
williamr@2
    25
#include <coecntrl.h>
williamr@2
    26
#include <aknquerycontrol.h>
williamr@2
    27
williamr@2
    28
enum TLinePosition  
williamr@2
    29
    {   
williamr@2
    30
    EFirstLine = 0, 
williamr@2
    31
    ESecondLine 
williamr@2
    32
    };  
williamr@2
    33
williamr@2
    34
class TAknWindowLineLayout;
williamr@2
    35
williamr@2
    36
/**
williamr@2
    37
 * Multiline query control class.
williamr@2
    38
 */
williamr@2
    39
class CAknMultilineQueryControl : public CAknQueryControl 
williamr@2
    40
    {
williamr@2
    41
    public: // Constructors and destructor
williamr@2
    42
        /**
williamr@2
    43
         * C++ Constructor.
williamr@2
    44
         */
williamr@2
    45
        IMPORT_C CAknMultilineQueryControl();
williamr@2
    46
williamr@2
    47
        /**
williamr@2
    48
         * C++ Destructor.
williamr@2
    49
         */
williamr@2
    50
        IMPORT_C virtual ~CAknMultilineQueryControl();
williamr@2
    51
williamr@2
    52
    public://new API functions
williamr@2
    53
        /**
williamr@2
    54
        * Set number of prompt lines to controls. 
williamr@2
    55
        * This have to call before setting sizs of the components
williamr@2
    56
        *
williamr@2
    57
        * @param aNbrOfPromptLinesFirstLine     Numbers of lines in first prompt text
williamr@2
    58
        * @param aNbrOfPromptLinesSecondLine    Numbers of lines in Second prompt text
williamr@2
    59
        */
williamr@2
    60
        IMPORT_C void SetNbrOfPromptLines(TInt aNbrOfPromptLinesFirstLine, TInt aNbrOfPromptLinesSecondLine);
williamr@2
    61
    
williamr@2
    62
        /**
williamr@2
    63
         * Return true if control is the first query in the dialog
williamr@2
    64
         */
williamr@2
    65
        IMPORT_C TBool IsFirst() const;
williamr@2
    66
williamr@2
    67
        /**
williamr@2
    68
         * Return true if control is the second query in the dialog
williamr@2
    69
         */
williamr@2
    70
        IMPORT_C TBool IsSecond() const;
williamr@2
    71
williamr@2
    72
    public: //Functions from CAknQueryControl
williamr@2
    73
williamr@2
    74
        /**
williamr@2
    75
        * Get pointer to query controls control (editor)
williamr@2
    76
        *
williamr@2
    77
        * @param aLayout    Controls layout (for multiline queries use
williamr@2
    78
        *                   EMultiDataFirstEdwin, EMultiDataSecondEdwin...)
williamr@2
    79
        * @return           Pointer to control, NULL if not found 
williamr@2
    80
        */
williamr@2
    81
        IMPORT_C virtual CCoeControl* ControlByLayoutOrNull(TInt aLayout);
williamr@2
    82
williamr@2
    83
    public: // Functions from CCoeControl
williamr@2
    84
williamr@2
    85
        /**
williamr@2
    86
        * From CCoeControl  Give the control a mimimum size. 
williamr@2
    87
        * 
williamr@2
    88
        * @return           The minimum size required by the control.
williamr@2
    89
        */
williamr@2
    90
        IMPORT_C TSize MinimumSize();
williamr@2
    91
williamr@2
    92
        /**
williamr@2
    93
        * From CCoeControl.     
williamr@2
    94
        * Handles pointer events
williamr@2
    95
        * @param aPointerEvent     The pointer event.
williamr@2
    96
        */
williamr@2
    97
    	IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
williamr@2
    98
    	
williamr@2
    99
	    
williamr@2
   100
	    IMPORT_C void HandleResourceChange(TInt aType); 
williamr@2
   101
williamr@2
   102
    public:
williamr@2
   103
        /**
williamr@2
   104
         * LAF indexing 
williamr@2
   105
         *
williamr@2
   106
         * Manage indexes into LAF tables
williamr@2
   107
         */
williamr@2
   108
        class TIndex 
williamr@2
   109
        {   
williamr@2
   110
        public: 
williamr@2
   111
            TIndex(const TLinePosition& aLinePos, TInt aFirstQueryPromptLines,TInt aSecondQueryPromptLines);
williamr@2
   112
        
williamr@2
   113
        public: 
williamr@2
   114
            TInt MainPanePQDCWindow() const;    
williamr@2
   115
            TInt CDCQPWindowLine1() const;  
williamr@2
   116
            TInt CDCQPWindowLine2() const;  
williamr@2
   117
            TInt CDCQPWindowLine3() const;  
williamr@2
   118
            TInt CDCQPWindowRectangles() const; 
williamr@2
   119
            TInt CDCQPWindowLine5() const;  
williamr@2
   120
williamr@2
   121
            TInt CDCQPWindowTextsLine1(TInt aLineNum) const;
williamr@2
   122
            TInt CDCQPWindowTextsLine2() const; 
williamr@2
   123
            TInt CDCQPWindowTextsLine3(TInt aLineNum) const;
williamr@2
   124
            TInt CDCQPWindowTextsLine4() const; 
williamr@2
   125
williamr@2
   126
            TInt CDCPQWindowGraphicsLine5() const;  
williamr@2
   127
williamr@2
   128
        public:
williamr@2
   129
            const TInt LinePos() const { return iLinePos; }
williamr@2
   130
        
williamr@2
   131
        private:    
williamr@2
   132
            TInt FirstQueryPromptLines() const;
williamr@2
   133
            TInt SecondQueryPromptLines() const;
williamr@2
   134
williamr@2
   135
            void SelfTest() const;
williamr@2
   136
    
williamr@2
   137
        private:
williamr@2
   138
            TLinePosition  iLinePos;    
williamr@2
   139
            TInt           iFirstQueryPromptLines;  
williamr@2
   140
            TInt           iSecondQueryPromptLines;
williamr@2
   141
        };
williamr@2
   142
        
williamr@2
   143
    protected: // From CAknQueryControl
williamr@2
   144
        /**
williamr@2
   145
        * Set line widths for query prompt
williamr@2
   146
        */
williamr@2
   147
        void SetLineWidthsL();
williamr@2
   148
williamr@2
   149
        /**
williamr@2
   150
        * Read the query data from resource file
williamr@2
   151
        */
williamr@2
   152
        void ConstructQueryL(TResourceReader& aRes);
williamr@2
   153
williamr@2
   154
        /**
williamr@2
   155
         * Layout rectangle (shift up and left by margins)
williamr@2
   156
         */
williamr@2
   157
        TRect LayoutRect();
williamr@2
   158
williamr@2
   159
    private://From CCoeControl
williamr@2
   160
        void SizeChanged();
williamr@2
   161
        void Draw(const TRect& aRect) const;
williamr@2
   162
    private:
williamr@2
   163
        /**
williamr@2
   164
        * From CAknControl
williamr@2
   165
        */
williamr@2
   166
        IMPORT_C void* ExtensionInterface( TUid aInterface );
williamr@2
   167
williamr@2
   168
    private:    //Layout methods
williamr@2
   169
        void LayoutPrompt(const TLayoutMethod& aLayoutM);
williamr@2
   170
        void LayoutSeparator(const TLayoutMethod& aLayoutM);
williamr@2
   171
        
williamr@2
   172
        void LayoutEditor(const TLayoutMethod& aLayoutM);
williamr@2
   173
        void LayoutEditorFrame(const TLayoutMethod& aLayoutM);
williamr@2
   174
        void LayoutEditorIndicator(const TLayoutMethod& aLayoutM);
williamr@2
   175
williamr@2
   176
        /**
williamr@2
   177
        * Return window layout depending on Layout 
williamr@2
   178
        * Window layout is done by the dialog
williamr@2
   179
        */
williamr@2
   180
        void WindowLayout( TAknWindowLineLayout& aLayout ) const;
williamr@2
   181
williamr@2
   182
    private: //Implementation methods
williamr@2
   183
        void   SetLinePosition();
williamr@2
   184
        TInt16 FirstLineHeight() const;
williamr@2
   185
        TInt16 SecondLineHeight() const;
williamr@2
   186
williamr@2
   187
    private:
williamr@2
   188
        TAknLayoutRect iLayoutLineBetweenEntryFields; /// Layout rect for line between two entry fields
williamr@2
   189
        TLinePosition  iLinePos;    
williamr@2
   190
        TInt           iFirstQueryPromptLines;  
williamr@2
   191
        TInt           iSecondQueryPromptLines; 
williamr@2
   192
    };
williamr@2
   193
williamr@2
   194
williamr@2
   195
williamr@2
   196
/**
williamr@2
   197
 * Derived Multiline query control class.
williamr@2
   198
 * 
williamr@2
   199
 * @since 2.1
williamr@2
   200
 */
williamr@2
   201
 class CAknExtMultilineQueryControl : public CAknExtQueryControl
williamr@2
   202
    {
williamr@2
   203
    public: // Constructors and destructor
williamr@2
   204
        /**
williamr@2
   205
         * C++ Constructor.
williamr@2
   206
         */
williamr@2
   207
        IMPORT_C CAknExtMultilineQueryControl();
williamr@2
   208
williamr@2
   209
        /**
williamr@2
   210
         * C++ Destructor.
williamr@2
   211
         */
williamr@2
   212
        IMPORT_C virtual ~CAknExtMultilineQueryControl();
williamr@2
   213
williamr@2
   214
    public://new API functions
williamr@2
   215
        /**
williamr@2
   216
        * Set number of prompt lines to controls. 
williamr@2
   217
        * This have to call before setting sizs of the components
williamr@2
   218
        *
williamr@2
   219
        * @param aNbrOfPromptLinesFirstLine     Numbers of lines in first prompt text
williamr@2
   220
        * @param aNbrOfPromptLinesSecondLine    Numbers of lines in Second prompt text
williamr@2
   221
        */
williamr@2
   222
        IMPORT_C void SetNbrOfPromptLines(TInt aNbrOfPromptLinesFirstLine, TInt aNbrOfPromptLinesSecondLine);
williamr@2
   223
    
williamr@2
   224
        /**
williamr@2
   225
         * Return true if control is the first query in the dialog
williamr@2
   226
         */
williamr@2
   227
        IMPORT_C TBool IsFirst() const;
williamr@2
   228
williamr@2
   229
        /**
williamr@2
   230
         * Return true if control is the second query in the dialog
williamr@2
   231
         */
williamr@2
   232
        IMPORT_C TBool IsSecond() const;
williamr@2
   233
williamr@2
   234
    public: //Functions from CAknQueryControl
williamr@2
   235
williamr@2
   236
        /**
williamr@2
   237
        * Get pointer to query controls control (editor)
williamr@2
   238
        *
williamr@2
   239
        * @param aLayout    Controls layout (for multiline queries use
williamr@2
   240
        *                   EMultiDataFirstIpEd, EMultiDataSecondIpEd...)
williamr@2
   241
        * @return           Pointer to control, NULL if not found 
williamr@2
   242
        */
williamr@2
   243
        IMPORT_C virtual CCoeControl* ControlByLayoutOrNull(TInt aLayout);
williamr@2
   244
williamr@2
   245
    public: // Functions from CCoeControl
williamr@2
   246
williamr@2
   247
        /**
williamr@2
   248
        * From CCoeControl  Give the control a mimimum size. 
williamr@2
   249
        * 
williamr@2
   250
        * @return           The minimum size required by the control.
williamr@2
   251
        */
williamr@2
   252
        IMPORT_C TSize MinimumSize();
williamr@2
   253
williamr@2
   254
        /**
williamr@2
   255
        * From CCoeControl.     
williamr@2
   256
        * Handles pointer events
williamr@2
   257
        * @param aPointerEvent     The pointer event.
williamr@2
   258
        */
williamr@2
   259
	    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
williamr@2
   260
	    
williamr@2
   261
	    IMPORT_C void HandleResourceChange(TInt aType);   
williamr@2
   262
williamr@2
   263
    public:
williamr@2
   264
        /**
williamr@2
   265
         * LAF indexing 
williamr@2
   266
         *
williamr@2
   267
         * Manage indexes into LAF tables
williamr@2
   268
         */
williamr@2
   269
        class TIndex 
williamr@2
   270
        {   
williamr@2
   271
        public: 
williamr@2
   272
            TIndex(const TLinePosition& aLinePos, TInt aFirstQueryPromptLines,TInt aSecondQueryPromptLines);
williamr@2
   273
        
williamr@2
   274
        public: 
williamr@2
   275
            TInt MainPanePQDCWindow() const;    
williamr@2
   276
            TInt CDCQPWindowLine1() const;  
williamr@2
   277
            TInt CDCQPWindowLine2() const;  
williamr@2
   278
            TInt CDCQPWindowLine3() const;  
williamr@2
   279
            TInt CDCQPWindowRectangles() const; 
williamr@2
   280
            TInt CDCQPWindowLine5() const;  
williamr@2
   281
williamr@2
   282
            TInt CDCQPWindowTextsLine1(TInt aLineNum) const;
williamr@2
   283
            TInt CDCQPWindowTextsLine2() const; 
williamr@2
   284
            TInt CDCQPWindowTextsLine3(TInt aLineNum) const;
williamr@2
   285
            TInt CDCQPWindowTextsLine4() const; 
williamr@2
   286
williamr@2
   287
            TInt CDCPQWindowGraphicsLine5() const;  
williamr@2
   288
williamr@2
   289
        public:
williamr@2
   290
            const TInt LinePos() const { return iLinePos; }
williamr@2
   291
        
williamr@2
   292
        private:    
williamr@2
   293
            TInt FirstQueryPromptLines() const;
williamr@2
   294
            TInt SecondQueryPromptLines() const;
williamr@2
   295
williamr@2
   296
            void SelfTest() const;
williamr@2
   297
    
williamr@2
   298
        private:
williamr@2
   299
            TLinePosition  iLinePos;    
williamr@2
   300
            TInt           iFirstQueryPromptLines;  
williamr@2
   301
            TInt           iSecondQueryPromptLines;
williamr@2
   302
        };
williamr@2
   303
        
williamr@2
   304
    protected: // From CAknQueryControl
williamr@2
   305
        /**
williamr@2
   306
        * Set line widths for query prompt
williamr@2
   307
        */
williamr@2
   308
        void SetLineWidthsL();
williamr@2
   309
williamr@2
   310
        /**
williamr@2
   311
        * Read the query data from resource file
williamr@2
   312
        */
williamr@2
   313
        void ConstructQueryL(TResourceReader& aRes);
williamr@2
   314
williamr@2
   315
        /**
williamr@2
   316
         * Layout rectangle (shift up and left by margins)
williamr@2
   317
         */
williamr@2
   318
        TRect LayoutRect();
williamr@2
   319
williamr@2
   320
    private://From CCoeControl
williamr@2
   321
        void SizeChanged();
williamr@2
   322
        void Draw(const TRect& aRect) const;
williamr@2
   323
    private:
williamr@2
   324
        /**
williamr@2
   325
        * From CAknControl
williamr@2
   326
        */
williamr@2
   327
        IMPORT_C void* ExtensionInterface( TUid aInterface );
williamr@2
   328
williamr@2
   329
    private:    //Layout methods
williamr@2
   330
        void LayoutPrompt(const TLayoutMethod& aLayoutM);
williamr@2
   331
        void LayoutSeparator(const TLayoutMethod& aLayoutM);
williamr@2
   332
        
williamr@2
   333
        void LayoutEditor(const TLayoutMethod& aLayoutM);
williamr@2
   334
        void LayoutEditorFrame(const TLayoutMethod& aLayoutM);
williamr@2
   335
        void LayoutEditorIndicator(const TLayoutMethod& aLayoutM);
williamr@2
   336
williamr@2
   337
        /**
williamr@2
   338
        * Return window layout depending on Layout 
williamr@2
   339
        * Window layout is done by the dialog
williamr@2
   340
        */
williamr@2
   341
        void WindowLayout( TAknWindowLineLayout& aLayout ) const;
williamr@2
   342
williamr@2
   343
    private: //Implementation methods
williamr@2
   344
        void   SetLinePosition();
williamr@2
   345
        TInt16 FirstLineHeight() const;
williamr@2
   346
		TInt16 SecondLineHeight() const;
williamr@2
   347
    private:
williamr@2
   348
        TAknLayoutRect iLayoutLineBetweenEntryFields; /// Layout rect for line between two entry fields
williamr@2
   349
        TLinePosition  iLinePos;    
williamr@2
   350
        TInt           iFirstQueryPromptLines;  
williamr@2
   351
        TInt           iSecondQueryPromptLines;
williamr@2
   352
        TAny*          iSpare_1;
williamr@2
   353
williamr@2
   354
williamr@2
   355
    };
williamr@2
   356
williamr@2
   357
#endif