classicui_plat/input_frame_api/inc/akninfrm.h
author hgs
Wed, 29 Sep 2010 10:43:28 +0800
changeset 66 ed40dc1bd883
parent 45 667edd0b8678
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
// INCLUDES
hgs
parents:
diff changeset
    20
#ifndef __AKNINFRM_H__
hgs
parents:
diff changeset
    21
#define __AKNINFRM_H__
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
#include <eikdef.h>
hgs
parents:
diff changeset
    25
#include <eikbctrl.h>
hgs
parents:
diff changeset
    26
#include <gulicon.h>
hgs
parents:
diff changeset
    27
#include <eiklabel.h>
hgs
parents:
diff changeset
    28
#include <AknUtils.h>
hgs
parents:
diff changeset
    29
#include <avkon.rsg>
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
class CAknsFrameBackgroundControlContext;
hgs
parents:
diff changeset
    32
class CAknsBasicBackgroundControlContext;
hgs
parents:
diff changeset
    33
// CLASS DECLARATION
hgs
parents:
diff changeset
    34
/**
hgs
parents:
diff changeset
    35
* Implements an input frame which can contain any @c CCoeControl.
hgs
parents:
diff changeset
    36
* The input frame can have additional icon and/or info text.
hgs
parents:
diff changeset
    37
* @since Series60 0.9
hgs
parents:
diff changeset
    38
*/
hgs
parents:
diff changeset
    39
NONSHARABLE_CLASS(CAknInputFrame) : public CEikBorderedControl, public MCoeControlObserver
hgs
parents:
diff changeset
    40
    {
hgs
parents:
diff changeset
    41
public:
hgs
parents:
diff changeset
    42
    
hgs
parents:
diff changeset
    43
    /**
hgs
parents:
diff changeset
    44
    * Default C++ constructor.
hgs
parents:
diff changeset
    45
    */
hgs
parents:
diff changeset
    46
    CAknInputFrame();
hgs
parents:
diff changeset
    47
    
hgs
parents:
diff changeset
    48
    /**
hgs
parents:
diff changeset
    49
    * Destructor. Frees all resources owned by the object prior to its
hgs
parents:
diff changeset
    50
    * destruction.
hgs
parents:
diff changeset
    51
    */
hgs
parents:
diff changeset
    52
    IMPORT_C ~CAknInputFrame();
hgs
parents:
diff changeset
    53
        
hgs
parents:
diff changeset
    54
    /**
hgs
parents:
diff changeset
    55
    * Two-phased constructor.
hgs
parents:
diff changeset
    56
    * @param aField Control which will be located inside the input frame
hgs
parents:
diff changeset
    57
    * @param aComponentOwner Defines whether the ownership of the control will
hgs
parents:
diff changeset
    58
    * be transferred or not.
hgs
parents:
diff changeset
    59
    * @param aBitmapfile Bitmap file name and path.
hgs
parents:
diff changeset
    60
    * @param aBitmapId Bitmap Id.
hgs
parents:
diff changeset
    61
    * @param aMaskId Bitmap Mask Id.
hgs
parents:
diff changeset
    62
    * @param aFlags Flags.
hgs
parents:
diff changeset
    63
    * @return a Pointer to the new @c CAknInputFrame object.
hgs
parents:
diff changeset
    64
    */
hgs
parents:
diff changeset
    65
    IMPORT_C static CAknInputFrame* NewL(CCoeControl* aField,TBool aComponentOwner,
hgs
parents:
diff changeset
    66
                                         const TDesC& aBitmapfile, TInt aBitmapId, TInt aMaskId,
hgs
parents:
diff changeset
    67
                                         TUint32 aFlags = 0 );
hgs
parents:
diff changeset
    68
    /**
hgs
parents:
diff changeset
    69
    * Two-phased constructor.
hgs
parents:
diff changeset
    70
    * @param aField Control which will be located inside the input frame
hgs
parents:
diff changeset
    71
    * @param aComponentOwner Defines whether the ownership of the control is
hgs
parents:
diff changeset
    72
    * transferred or not.
hgs
parents:
diff changeset
    73
    * @param aIcon Bitmap file name and path.
hgs
parents:
diff changeset
    74
    * @param aFlags Flags.
hgs
parents:
diff changeset
    75
    * @return a Pointer to the new @c CAknInputFrame object.
hgs
parents:
diff changeset
    76
    */
hgs
parents:
diff changeset
    77
    IMPORT_C static CAknInputFrame* NewL(CCoeControl* aField,TBool aComponentOwner,
hgs
parents:
diff changeset
    78
                                         CGulIcon* aIcon, TUint32 aFlags = 0 );
hgs
parents:
diff changeset
    79
    /**
hgs
parents:
diff changeset
    80
    * Returns apointer to field.
hgs
parents:
diff changeset
    81
    * @return a Pointer to the control, which is located inside the input frame. 
hgs
parents:
diff changeset
    82
    */
hgs
parents:
diff changeset
    83
    IMPORT_C CCoeControl* Field() const;
hgs
parents:
diff changeset
    84
        
hgs
parents:
diff changeset
    85
    /**
hgs
parents:
diff changeset
    86
    * Sets additional info text to input frame.
hgs
parents:
diff changeset
    87
    * @param aText Info text to be added in the input frame.
hgs
parents:
diff changeset
    88
    * @deprecated
hgs
parents:
diff changeset
    89
    */
hgs
parents:
diff changeset
    90
    IMPORT_C void SetInfoTextL(const TDesC& aText);
hgs
parents:
diff changeset
    91
        
hgs
parents:
diff changeset
    92
    /**
hgs
parents:
diff changeset
    93
    * Sets the lines visible or invisible.
hgs
parents:
diff changeset
    94
    * @param aText @c ETrue to make the line visible, @c EFalse to make it
hgs
parents:
diff changeset
    95
    * invisible.
hgs
parents:
diff changeset
    96
    */
hgs
parents:
diff changeset
    97
    IMPORT_C void SetLineState(TBool aLineVisible);
hgs
parents:
diff changeset
    98
        
hgs
parents:
diff changeset
    99
    /**
hgs
parents:
diff changeset
   100
    * Sets new icon to input frame.
hgs
parents:
diff changeset
   101
    * @param aIcon a Pointer to the new icon. Ownership is transffered which 
hgs
parents:
diff changeset
   102
    * means that object is deleted in @c CAknInputFrame::~CAknInputFrame().
hgs
parents:
diff changeset
   103
    */
hgs
parents:
diff changeset
   104
    void SetIcon(CGulIcon* aIcon);
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
    /**
hgs
parents:
diff changeset
   107
     * Get flags of current input frame.
hgs
parents:
diff changeset
   108
     * @return flags.
hgs
parents:
diff changeset
   109
     * @since Series 60 5.0
hgs
parents:
diff changeset
   110
     */
hgs
parents:
diff changeset
   111
    TUint Flags() const;
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    /**
hgs
parents:
diff changeset
   114
     * Set new flags to current input frame.
hgs
parents:
diff changeset
   115
     * @param aNewFlags is new flag.
hgs
parents:
diff changeset
   116
     * @since Series 60 5.0
hgs
parents:
diff changeset
   117
     */
hgs
parents:
diff changeset
   118
    void SetFlags( TUint aNewFlags );
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
public: //from MCoeControlObserver
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
    /**
hgs
parents:
diff changeset
   123
    * Handles focus changes. This is called by the UI Control Framework to 
hgs
parents:
diff changeset
   124
    * notify that an event occured in observed input frame.
hgs
parents:
diff changeset
   125
    * @param aControl The control where event has happened.
hgs
parents:
diff changeset
   126
    * @param aEventType a Type of the event.
hgs
parents:
diff changeset
   127
    */
hgs
parents:
diff changeset
   128
    IMPORT_C void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
public: //from CCoeControl
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
    /**
hgs
parents:
diff changeset
   133
    * Handles key events.
hgs
parents:
diff changeset
   134
    * @param aKeyEvent The key event.
hgs
parents:
diff changeset
   135
    * @param aType The type of the event: @c EEventKey, @c EEventKeyUp or 
hgs
parents:
diff changeset
   136
    * @c EEventKeyDown.
hgs
parents:
diff changeset
   137
    * @return Indicates whether or not the key event was used by this control. 
hgs
parents:
diff changeset
   138
    */
hgs
parents:
diff changeset
   139
    IMPORT_C TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
hgs
parents:
diff changeset
   140
        
hgs
parents:
diff changeset
   141
    /**
hgs
parents:
diff changeset
   142
    * Tells the minimum size of the control.
hgs
parents:
diff changeset
   143
    * @return The minimum size of the control.
hgs
parents:
diff changeset
   144
    */
hgs
parents:
diff changeset
   145
    IMPORT_C TSize MinimumSize();
hgs
parents:
diff changeset
   146
        
hgs
parents:
diff changeset
   147
    /**
hgs
parents:
diff changeset
   148
    * The second phase constructor: constructs input frame from resources.
hgs
parents:
diff changeset
   149
    * @param The resource reader.
hgs
parents:
diff changeset
   150
    */
hgs
parents:
diff changeset
   151
    IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); 
hgs
parents:
diff changeset
   152
        
hgs
parents:
diff changeset
   153
    /**
hgs
parents:
diff changeset
   154
    * Sets the implementation of this control context in this input frame.
hgs
parents:
diff changeset
   155
    * It is a layout background of the frame item. 
hgs
parents:
diff changeset
   156
    * @since Series 60 2.1
hgs
parents:
diff changeset
   157
    * @param Pointer to the context.
hgs
parents:
diff changeset
   158
    */
hgs
parents:
diff changeset
   159
    IMPORT_C void SetInputContext(CAknsFrameBackgroundControlContext* aContext);
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
  	/**
hgs
parents:
diff changeset
   162
   	* From CCoeControl. Handles a change to the control's resources.
hgs
parents:
diff changeset
   163
   	* @param aType A message UID value.
hgs
parents:
diff changeset
   164
   	*/
hgs
parents:
diff changeset
   165
   	void HandleResourceChange( TInt aType );
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
private: // From CCoeControl
hgs
parents:
diff changeset
   168
    void SizeChanged();
hgs
parents:
diff changeset
   169
    void FocusChanged(TDrawNow aDrawNow); 
hgs
parents:
diff changeset
   170
    void Draw(const TRect& aRect) const;
hgs
parents:
diff changeset
   171
    void PrepareForFocusLossL();
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
private:
hgs
parents:
diff changeset
   174
    void BaseConstructL(CCoeControl* aField, TBool aOwner, TUint32 aFlags);
hgs
parents:
diff changeset
   175
    void ConstructL(CCoeControl* aField, TBool aOwner, const TDesC& aFileName, TInt aBitmapId, TInt aMaskId, TUint32 aFlags);
hgs
parents:
diff changeset
   176
    void ConstructL(CCoeControl* aField, TBool aOwner, CGulIcon* aIcon, TUint32 aFlags);
hgs
parents:
diff changeset
   177
    void CreateIconL();
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
public:
hgs
parents:
diff changeset
   180
    /** Enumeration flags for different layouts.        */
hgs
parents:
diff changeset
   181
    enum TInputFrameFlags
hgs
parents:
diff changeset
   182
        {
hgs
parents:
diff changeset
   183
        /** a Standard layout. */
hgs
parents:
diff changeset
   184
        EOwnsField=0x40,
hgs
parents:
diff changeset
   185
        /** a Popup layoyt. */
hgs
parents:
diff changeset
   186
        EPopupLayout=0x80,
hgs
parents:
diff changeset
   187
        /** a Pinboard layout. */
hgs
parents:
diff changeset
   188
        EPinbLayout=0x100,
hgs
parents:
diff changeset
   189
        /** a ClockAppLayout. */
hgs
parents:
diff changeset
   190
        EClockAppLayout=0x200,
hgs
parents:
diff changeset
   191
        /** a Layout without lines. */
hgs
parents:
diff changeset
   192
        EFixedFindWithoutLine   = 0x400,
hgs
parents:
diff changeset
   193
        /** a Layout that shows indicator.*/
hgs
parents:
diff changeset
   194
        EShowIndicators         = 0x800,
hgs
parents:
diff changeset
   195
        /** A layout used by list query. */
hgs
parents:
diff changeset
   196
        EPopupWindowLayout=0x1000,
hgs
parents:
diff changeset
   197
        /** A List query with embedded softkeys. */
hgs
parents:
diff changeset
   198
        EPopupWindowEmbeddedSoftkeys = 0x4000
hgs
parents:
diff changeset
   199
        };
hgs
parents:
diff changeset
   200
    
hgs
parents:
diff changeset
   201
private:
hgs
parents:
diff changeset
   202
    enum TInfrmPrivateFlags
hgs
parents:
diff changeset
   203
        {
hgs
parents:
diff changeset
   204
        EOwnsInputContext = 0x2000
hgs
parents:
diff changeset
   205
        };
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
    CGulIcon*               iIcon;
hgs
parents:
diff changeset
   208
    TUint32                 iFlags;
hgs
parents:
diff changeset
   209
    TAknLayoutRect          iMagnIconPos;  // position of the looking glass icon
hgs
parents:
diff changeset
   210
    // sizeof(Taknlayoutrect)=20 sizeof(TRect)=16 sizeof(CCoeControl*)=4 sizeof TAknsItemID=8 
hgs
parents:
diff changeset
   211
    TRect                   iOutlineRect; // was first 16 bytes of TAknLayoutRect  iOutlineRect;
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
    CCoeControl             *iField;                           // bytes 0..3   of TAknLayoutRect iUnused7;
hgs
parents:
diff changeset
   214
    CAknsFrameBackgroundControlContext *iPopupFindCC;          // bytes 4..7   of TAknLayoutRect iUnused7;
hgs
parents:
diff changeset
   215
    CAknsFrameBackgroundControlContext *iInputContext;         // bytes 8..11  of TAknLayoutRect iUnused7;
hgs
parents:
diff changeset
   216
    TAknsItemID             iIconSkinID;                       // bytes 12..19 of TAknLayoutRect iUnused7;
hgs
parents:
diff changeset
   217
    CAknsBasicBackgroundControlContext *iPopupListCC;          // was TAny*   iExtension; // not used
hgs
parents:
diff changeset
   218
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
    // these are unused
hgs
parents:
diff changeset
   221
    TAknLayoutRect          iUnUsed1;
hgs
parents:
diff changeset
   222
    TAknLayoutRect          iUnUsed2;
hgs
parents:
diff changeset
   223
    TAknLayoutRect          iUnused3;
hgs
parents:
diff changeset
   224
    TAknLayoutRect          iUnused4;
hgs
parents:
diff changeset
   225
    TAknLayoutRect          iUnused5;
hgs
parents:
diff changeset
   226
    TAknLayoutRect          iUnused6;
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
    TAny*                   iSpare;     // WAS CEikLabel* iInfoText;
hgs
parents:
diff changeset
   229
    TAny*                   iSpare2;    // was last 4 bytes of TAknLayoutRect  iOutlineRect;
hgs
parents:
diff changeset
   230
    
hgs
parents:
diff changeset
   231
    HBufC*		            iFileName; 
hgs
parents:
diff changeset
   232
    TInt                    iBitmapId;
hgs
parents:
diff changeset
   233
    TInt                    iMaskId;
hgs
parents:
diff changeset
   234
hgs
parents:
diff changeset
   235
    };
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
#endif
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241