epoc32/include/mw/eikseced.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
parent 1 666f914201fb
child 4 837f303aceeb
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
williamr@2
     1
/*
williamr@2
     2
* Copyright (c) 1997-1999 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
*
williamr@2
    16
*/
williamr@2
    17
williamr@2
    18
williamr@2
    19
#if !defined(__EIKSECED_H__)
williamr@2
    20
#define __EIKSECED_H__
williamr@2
    21
williamr@2
    22
#if !defined(__EIKDEF_H__)
williamr@2
    23
#include <eikdef.h>
williamr@2
    24
#endif
williamr@2
    25
williamr@2
    26
#if !defined(__EIKBCTRL_H__)
williamr@2
    27
#include <eikbctrl.h>
williamr@2
    28
#endif
williamr@2
    29
williamr@2
    30
#include <fepbase.h>
williamr@2
    31
williamr@2
    32
// FORWARD DECLARATIONS
williamr@2
    33
class TResourceReader;
williamr@2
    34
class CEikSecretEditorExtension;
williamr@2
    35
class MAknsControlContext;
williamr@2
    36
williamr@2
    37
/**
williamr@2
    38
 * A single line text editor which displays an asterisk for every
williamr@2
    39
 * character entered. 
williamr@2
    40
 * 
williamr@2
    41
 * The editor is suitable for editing confidential information such as
williamr@2
    42
 * a password. You can paste to the editor but no other clipboard
williamr@2
    43
 * functions are available.
williamr@2
    44
 * 
williamr@2
    45
 * The editor has an associated resource struct SECRETED and control
williamr@2
    46
 * factory identifier EEikCtSecretEd.
williamr@2
    47
 */
williamr@2
    48
class CEikSecretEditor : public CEikBorderedControl, public MCoeFepAwareTextEditor, public MCoeFepAwareTextEditor_Extension1
williamr@2
    49
	{
williamr@2
    50
public:
williamr@2
    51
    enum { 
williamr@2
    52
        /**
williamr@2
    53
         * The maximum number of characters in the displayed
williamr@2
    54
         * text buffer.
williamr@2
    55
         */
williamr@2
    56
        EMaxSecEdBufLength = 32,
williamr@2
    57
        /**
williamr@2
    58
         * Indicates the maximum number of characters which may be entered into
williamr@2
    59
         * the editor. 
williamr@2
    60
         * 
williamr@2
    61
         * Editors additionally have a maximum length, see SetMaxLength(),
williamr@2
    62
         * which must not exceed this value.
williamr@2
    63
         */
williamr@2
    64
        EMaxSecEdSecArrayLength = 255
williamr@2
    65
        };
williamr@2
    66
            
williamr@2
    67
    /**
williamr@2
    68
     * Settable features for Secret Editor. See SetFeature().
williamr@2
    69
     *
williamr@2
    70
     * @since S60 5.0
williamr@2
    71
     */
williamr@2
    72
    enum TFeatureId
williamr@2
    73
        {
williamr@2
    74
        /** Disables VKB. Non-zero (or ETrue) parameter disables VKB, 
williamr@2
    75
            0 (or EFalse) enables VKB. When disabled, 
williamr@2
    76
            editor doesn't request PenInputServer to start VKB */ 
williamr@2
    77
        EDisablePenInput
williamr@2
    78
        };    
williamr@2
    79
        
williamr@2
    80
        
williamr@2
    81
public:
williamr@2
    82
    /**
williamr@2
    83
     * Default constructor.
williamr@2
    84
     * 
williamr@2
    85
     * This constructs a editor with a border type of
williamr@2
    86
     * TGulBorder::ESingleGray.
williamr@2
    87
     * 
williamr@2
    88
     * This function should be used as the first stage in two stage
williamr@2
    89
     * construction, followed by a call to either ConstructFromResourceL() or
williamr@2
    90
     * SetMaxLength().
williamr@2
    91
     */
williamr@2
    92
    IMPORT_C CEikSecretEditor();
williamr@2
    93
williamr@2
    94
    /**
williamr@2
    95
     * Destructor.
williamr@2
    96
     */
williamr@2
    97
    IMPORT_C ~CEikSecretEditor();
williamr@2
    98
    
williamr@2
    99
public:    // from CCoeControl
williamr@2
   100
    /**
williamr@2
   101
     * Second-phase construction from a resource file. 
williamr@2
   102
     * 
williamr@2
   103
     * This function reads the number of characters which may be entered by
williamr@2
   104
     * the user into the editor from a SECRETED resource. You should call
williamr@2
   105
     * either this function or SetMaxLength() before drawing the editor and
williamr@2
   106
     * offering key events, otherwise the editor will not accept text input.
williamr@2
   107
     * 
williamr@2
   108
     * @param aReader A resource file reader.
williamr@2
   109
     * @panic EIKCTL 13  If the value read from resource is greater than
williamr@2
   110
     * EMaxSecEdLength.
williamr@2
   111
     */
williamr@2
   112
    IMPORT_C virtual void ConstructFromResourceL(TResourceReader& aReader);
williamr@2
   113
    
williamr@2
   114
    /**
williamr@2
   115
     * Gets the editor's minimum size in pixels.
williamr@2
   116
     * 
williamr@2
   117
     * Overrides CCoeControl::MinimumSize().
williamr@2
   118
     * 
williamr@2
   119
     * @return The editor's minimum size in pixels.
williamr@2
   120
     */
williamr@2
   121
    IMPORT_C virtual TSize MinimumSize();
williamr@2
   122
    
williamr@2
   123
    /**
williamr@2
   124
     * Responds to key presses.
williamr@2
   125
     * 
williamr@2
   126
     * Overrides CCoeControl::OfferKeyEventL().
williamr@2
   127
     * 
williamr@2
   128
     * @param aKeyEvent The key event.
williamr@2
   129
     * @param aType Not used.
williamr@2
   130
     * @return Indicates whether or not the key event was consumed.
williamr@2
   131
     */
williamr@2
   132
    IMPORT_C virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
williamr@2
   133
    
williamr@2
   134
    /**
williamr@2
   135
     * Gets the list of logical colours used to draw the editor.
williamr@2
   136
     * 
williamr@2
   137
     * Overrides CCoeControl::GetColorUseListL().
williamr@2
   138
     * 
williamr@2
   139
     * @param aColorUseList On return, the colour list.
williamr@2
   140
     */
williamr@2
   141
    IMPORT_C virtual void GetColorUseListL(CArrayFix<TCoeColorUse>& aColorUseList) const; // not available before Release 005u
williamr@2
   142
    
williamr@2
   143
    /**
williamr@2
   144
     * Handles a change to the editor's resources. 
williamr@2
   145
     * 
williamr@2
   146
     * The types of resources handled are those which are shared across the
williamr@2
   147
     * environment, e.g. colours or fonts.
williamr@2
   148
     * 
williamr@2
   149
     * Calls CEikBorderedControl::HandleResourceChange().
williamr@2
   150
     * 
williamr@2
   151
     * @param aType A message UID value.
williamr@2
   152
     */
williamr@2
   153
    IMPORT_C virtual void HandleResourceChange(TInt aType);    // not available before Release 005u
williamr@2
   154
williamr@2
   155
    /**
williamr@2
   156
     * Gets the editor's input capabilities.
williamr@2
   157
     * 
williamr@2
   158
     * Overrides CCoeControl::InputCapabilities().
williamr@2
   159
     * 
williamr@2
   160
     * If this function is overrided in a subclass, the subclass should
williamr@2
   161
     * obtain this class' InputCapabilities' object provider through
williamr@2
   162
     * TCoeInputCapabilities::ObjectProvider() and set that as a part of
williamr@2
   163
     * the subclass' InputCapabilities object provider chain to ensure
williamr@2
   164
     * maximum functionality.
williamr@2
   165
     * 
williamr@2
   166
     * @return The editor's input capabilities. The ESecretText and
williamr@2
   167
     * ENavigation flags are set.
williamr@2
   168
     */
williamr@2
   169
    IMPORT_C virtual TCoeInputCapabilities InputCapabilities() const;
williamr@2
   170
williamr@2
   171
    /**
williamr@2
   172
     * From @c CCoeControl.
williamr@2
   173
     * 
williamr@2
   174
     * Handles pointer events.
williamr@2
   175
     *
williamr@2
   176
     * @param aPointerEvent The pointer event.
williamr@2
   177
     */
williamr@2
   178
    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
williamr@2
   179
    
williamr@2
   180
    IMPORT_C void FocusChanged( TDrawNow aDrawNow );
williamr@2
   181
    
williamr@2
   182
public:    // specific
williamr@2
   183
    /**
williamr@2
   184
     * Gets the editor's text string.
williamr@2
   185
     * 
williamr@2
   186
     * This may be called from the container class when the model data
williamr@2
   187
     * should be updated according to the text contained in the editor.
williamr@2
   188
     * 
williamr@2
   189
     * @param aText On return, the editor's text. This is what is stored in
williamr@2
   190
     * memory, not what is displayed. This descriptor must be capable of
williamr@2
   191
     * holding the maxlength of the internal buffer.
williamr@2
   192
     * 
williamr@2
   193
     */
williamr@2
   194
    IMPORT_C void GetText(TDes& aText) const;
williamr@2
   195
williamr@2
   196
    /**
williamr@2
   197
     * Set the contents of the character buffer.
williamr@2
   198
     *
williamr@2
   199
     * @param aText The text to be set as the contents of the character buffer.
williamr@2
   200
     */
williamr@2
   201
    IMPORT_C virtual void SetText(const TDesC& aText);
williamr@2
   202
    
williamr@2
   203
    /**
williamr@2
   204
     * Set the initial display of the secret editor.
williamr@2
   205
     * Calling this routine doesn't affect the actual character buffer.
williamr@2
   206
     * 
williamr@2
   207
     * @param aNumberOfCharacters Must be >=0 and <= EMaxSecEdBufLength.
williamr@2
   208
     */
williamr@2
   209
    IMPORT_C virtual void InitializeDisplay(TInt aNumberOfChars);
williamr@2
   210
    
williamr@2
   211
    /**
williamr@2
   212
     * Clears the editor's text string removing any trace of it from memory.
williamr@2
   213
     */
williamr@2
   214
    IMPORT_C void Reset();
williamr@2
   215
williamr@2
   216
    /**
williamr@2
   217
     * Set the maximum length of the editor.
williamr@2
   218
     * 
williamr@2
   219
     * This is the maximum number of characters which may be entered by the
williamr@2
   220
     * user into the editor.
williamr@2
   221
     * 
williamr@2
   222
     * @param aMaxLength The maximum number of characters which may be
williamr@2
   223
     * entered.
williamr@2
   224
     * @panic EIKCTL 13 If aMaxLength is greater than EMaxSecEdLength.
williamr@2
   225
     * 
williamr@2
   226
     */
williamr@2
   227
    IMPORT_C void SetMaxLength(TInt aMaxLength);
williamr@2
   228
williamr@2
   229
    /**
williamr@2
   230
     * Sets the font that is used to draw the text in this editor.
williamr@2
   231
     * 
williamr@2
   232
     * @param aFont A pointer to a CFont object that is used to draw the
williamr@2
   233
     * text in this editor.
williamr@2
   234
     */
williamr@2
   235
    IMPORT_C void AknSetFont(const CFont &aFont);
williamr@2
   236
williamr@2
   237
    /**
williamr@2
   238
     * Sets the alignment of the editor.
williamr@2
   239
     *
williamr@2
   240
     * @param aAlign The editor's alignment.
williamr@2
   241
     */
williamr@2
   242
    IMPORT_C void AknSetAlignment(const CGraphicsContext::TTextAlign &aAlign);
williamr@2
   243
williamr@2
   244
    /**
williamr@2
   245
     * Changes default and current input mode of a secret editor. By default
williamr@2
   246
     * input mode in the secret editor is alpha input mode 
williamr@2
   247
     * (EAknEditorSecretAlphaInputMode). By using this method the default input
williamr@2
   248
     * mode can be changed to numeric input mode (EAknEditorNumericInputMode).
williamr@2
   249
     *
williamr@2
   250
     * @since 2.1
williamr@2
   251
     * @param aInputMode Default input mode in the secret editor.  
williamr@2
   252
     *   Only EAknEditorNumericInputMode and EAknEditorSecretAlphaInputMode
williamr@2
   253
     *   are supported.
williamr@2
   254
     */
williamr@2
   255
    IMPORT_C void SetDefaultInputMode(TInt aInputMode);
williamr@2
   256
williamr@2
   257
    /**
williamr@2
   258
     * Returns the current maximum length of the internal buffer.
williamr@2
   259
     *
williamr@2
   260
     * @return the current maximum length of the internal buffer.
williamr@2
   261
     */
williamr@2
   262
    IMPORT_C TInt MaxLength() const;
williamr@2
   263
williamr@2
   264
    /**
williamr@2
   265
     * Access method for getting at the buffer without copying out from it.
williamr@2
   266
     *
williamr@2
   267
     * @return Non-modifiable descriptor reference to the contained buffer.
williamr@2
   268
     */
williamr@2
   269
    IMPORT_C const TDesC& Buffer() const;
williamr@2
   270
williamr@2
   271
    /**
williamr@2
   272
     * Method to reveal (or hide) the currently input editor contents.
williamr@2
   273
     *
williamr@2
   274
     * @param aReveal - if ETrue, reveals the contents; if EFalse hides them.
williamr@2
   275
     */
williamr@2
   276
    IMPORT_C void RevealSecretText( TBool aReveal );
williamr@2
   277
williamr@2
   278
    /**
williamr@2
   279
     * Method for enabling/disabling special character table from 
williamr@2
   280
     * the secret editor. By default the SCT is enabled in the secret
williamr@2
   281
     * editors.
williamr@2
   282
     * ConstructFromResourceL need to be called before this method.
williamr@2
   283
     * 
williamr@2
   284
     * @since 3.2
williamr@2
   285
     *
williamr@2
   286
     * @param aEnable Boolean value for enabling or disabling the special
williamr@2
   287
     *   character table.
williamr@2
   288
     */
williamr@2
   289
    IMPORT_C void EnableSCT( TBool aEnable = ETrue );
williamr@2
   290
williamr@2
   291
    /**
williamr@2
   292
     * Set the skin control context to be used with this secret editor. If this
williamr@2
   293
     * method is not called, the control context available through MOP (if any)
williamr@2
   294
     * is used. If @c NULL control context is specified, no control context is
williamr@2
   295
     * used at all.
williamr@2
   296
     *
williamr@2
   297
     * @since 2.0
williamr@2
   298
     *
williamr@2
   299
     * @param aContext The background control context used to draw the
williamr@2
   300
     *   background of this editor or @c NULL. Ownership is not transferred.
williamr@2
   301
     */
williamr@2
   302
    IMPORT_C void SetSkinBackgroundControlContextL( MAknsControlContext* aContext );
williamr@2
   303
    
williamr@2
   304
    // for cursor support
williamr@2
   305
    TPoint CursorPos();
williamr@2
   306
    void EnableCursor( TBool aEnable );    
williamr@2
   307
williamr@2
   308
protected:    // inherited
williamr@2
   309
    // methods to enable CAknNumericSecretEditor to inherit from CEikSecretEditor
williamr@2
   310
    /**
williamr@2
   311
     * Appends a character to the editor.
williamr@2
   312
     *
williamr@2
   313
     * @param aKeyCode The character to append.
williamr@2
   314
     */
williamr@2
   315
    IMPORT_C virtual void AppendCharacterL( TInt aKeyCode );
williamr@2
   316
    
williamr@2
   317
    /**
williamr@2
   318
     * Updates and redraws the editor.
williamr@2
   319
     */
williamr@2
   320
    IMPORT_C virtual void Update();
williamr@2
   321
    
williamr@2
   322
    void InsertSecretChar();
williamr@2
   323
    
williamr@2
   324
    /**
williamr@2
   325
     * Responds to changes to the size and position of
williamr@2
   326
     * the contents of this control.
williamr@2
   327
     * 
williamr@2
   328
     * Overrides CCoeControl::SizeChanged().
williamr@2
   329
     */
williamr@2
   330
    IMPORT_C void SizeChanged();
williamr@2
   331
    
williamr@2
   332
private: // virtual
williamr@2
   333
    IMPORT_C virtual void Draw(const TRect& aRect) const;
williamr@2
   334
williamr@2
   335
private: // from MCoeFepAwareTextEditor
williamr@2
   336
    IMPORT_C void StartFepInlineEditL(const TDesC& aInitialInlineText, TInt aPositionOfInsertionPointInInlineText, TBool aCursorVisibility, const MFormCustomDraw* aCustomDraw, MFepInlineTextFormatRetriever& aInlineTextFormatRetriever, MFepPointerEventHandlerDuringInlineEdit& aPointerEventHandlerDuringInlineEdit);
williamr@2
   337
    IMPORT_C void UpdateFepInlineTextL(const TDesC& aNewInlineText, TInt aPositionOfInsertionPointInInlineText);
williamr@2
   338
    IMPORT_C void SetInlineEditingCursorVisibilityL(TBool aCursorVisibility);
williamr@2
   339
    IMPORT_C void CancelFepInlineEdit();
williamr@2
   340
    IMPORT_C TInt DocumentLengthForFep() const;
williamr@2
   341
    IMPORT_C TInt DocumentMaximumLengthForFep() const;
williamr@2
   342
    IMPORT_C void SetCursorSelectionForFepL(const TCursorSelection& aCursorSelection);
williamr@2
   343
    IMPORT_C void GetCursorSelectionForFep(TCursorSelection& aCursorSelection) const;
williamr@2
   344
    IMPORT_C void GetEditorContentForFep(TDes& aEditorContent, TInt aDocumentPosition, TInt aLengthToRetrieve) const;
williamr@2
   345
    IMPORT_C void GetFormatForFep(TCharFormat& aFormat, TInt aDocumentPosition) const;
williamr@2
   346
    IMPORT_C void GetScreenCoordinatesForFepL(TPoint& aLeftSideOfBaseLine, TInt& aHeight, TInt& aAscent, TInt aDocumentPosition) const;
williamr@2
   347
    IMPORT_C void DoCommitFepInlineEditL();
williamr@2
   348
    IMPORT_C MCoeFepAwareTextEditor_Extension1* Extension1(TBool& aSetToTrue);
williamr@2
   349
    IMPORT_C void SetStateTransferingOwnershipL(CState* aState, TUid aTypeSafetyUid);
williamr@2
   350
    IMPORT_C CState* State(TUid aTypeSafetyUid); // this function does *not* transfer ownership
williamr@2
   351
williamr@2
   352
private:
williamr@2
   353
    void OverflowAlert();
williamr@2
   354
williamr@2
   355
private: // from CCoeControl
williamr@2
   356
    IMPORT_C void Reserved_1();
williamr@2
   357
    IMPORT_C void Reserved_2();
williamr@2
   358
private:
williamr@2
   359
    /**
williamr@2
   360
    * From CAknControl
williamr@2
   361
    */
williamr@2
   362
    IMPORT_C void* ExtensionInterface( TUid aInterface );
williamr@2
   363
private: // from MCoeFepAwareTextEditor
williamr@2
   364
    IMPORT_C void MCoeFepAwareTextEditor_Reserved_2();
williamr@2
   365
private:  // from MCoeFepAwareTextEditor_Extension1
williamr@2
   366
    IMPORT_C virtual void MCoeFepAwareTextEditor_Extension1_Reserved_2();
williamr@2
   367
    IMPORT_C virtual void MCoeFepAwareTextEditor_Extension1_Reserved_3();
williamr@2
   368
    IMPORT_C virtual void MCoeFepAwareTextEditor_Extension1_Reserved_4();
williamr@2
   369
williamr@2
   370
private: // specific
williamr@2
   371
    void InsertChar();
williamr@2
   372
    TInt CharsFitOnEditor() const;
williamr@2
   373
    IMPORT_C virtual MCoeFepAwareTextEditor_Extension1::CState* CreateFepStateL();
williamr@2
   374
    void CalculateAscent();
williamr@2
   375
    void ReportUpdate();
williamr@2
   376
    
williamr@2
   377
    // for cursor support    
williamr@2
   378
    void SetCursorFormat();    
williamr@2
   379
    void UpdateCursor();
williamr@2
   380
    void InitCRedirectionListenerL();
williamr@2
   381
    
williamr@2
   382
private:
williamr@2
   383
    typedef TBuf<EMaxSecEdBufLength> TSecEdBuf;
williamr@2
   384
protected:
williamr@2
   385
    HBufC* iSecCharArr;
williamr@2
   386
    TInt iSecPos;
williamr@2
   387
    TSecEdBuf iBuf;
williamr@2
   388
    TInt iMaxLen;
williamr@2
   389
    TInt iCharWidth;
williamr@2
   390
    TInt iAscent;
williamr@2
   391
    TBool iBufferFull;
williamr@2
   392
williamr@2
   393
public: // timer methods
williamr@2
   394
    void StartTimer();
williamr@2
   395
private:
williamr@2
   396
    static TInt TimerCallback(TAny* aThis);
williamr@2
   397
private:
williamr@2
   398
    CPeriodic* iTimer;
williamr@2
   399
    const CFont *iFont;
williamr@2
   400
    CGraphicsContext::TTextAlign iAlign;
williamr@2
   401
    TBool iRevealSecretText; // holds the state of whether text is shown or not
williamr@2
   402
    CEikSecretEditorExtension* iExtension;
williamr@2
   403
    CState* iFepState;
williamr@2
   404
    HBufC* iInlineEditText;
williamr@2
   405
williamr@2
   406
public:
williamr@2
   407
    /**
williamr@2
   408
     * Sets the colors for text and background as skin IDs.
williamr@2
   409
     * 
williamr@2
   410
     * @since 3.0
williamr@2
   411
     * @param aAknSkinIDForTextColor ID for text color.
williamr@2
   412
     * @param aAknSkinIDForBgColor ID for background color.
williamr@2
   413
     */
williamr@2
   414
    IMPORT_C void SetSkinTextColorL(TInt aAknSkinIDForTextColor, TInt aAknSkinIdForBgColor=KErrNotFound);
williamr@2
   415
    
williamr@2
   416
    /**
williamr@2
   417
     * Used for setting various flag-like features to the editor.
williamr@2
   418
     *
williamr@2
   419
     * @param aFeatureId The feature id, see TFeatureId
williamr@2
   420
     * @param aFeatureParam The feature parameter. This is usually
williamr@2
   421
     *                      enabled or disabled. For more info, see
williamr@2
   422
     *                      the feature documentation in TFeatureId.
williamr@2
   423
     * @return KErrNone if the feature modification succeeded
williamr@2
   424
     * @since S60 5.0
williamr@2
   425
     **/
williamr@2
   426
    IMPORT_C TInt SetFeature( TInt aFeatureId, TInt aFeatureParam );
williamr@2
   427
     
williamr@2
   428
    /**
williamr@2
   429
     * Used to getting feature statuses.
williamr@2
   430
     *
williamr@2
   431
     * @param aFeatureId The feature id, see TFeatureId
williamr@2
   432
     * @param aFeatureParam On return, the parameter for the feature
williamr@2
   433
     *                      (usually non-zero for an enabled feature
williamr@2
   434
     *                      and zero for disabled)
williamr@2
   435
     * @return KErrNone if the feature is supported and fetching its value
williamr@2
   436
     *                  succeeded
williamr@2
   437
     * @since S60 5.0
williamr@2
   438
     */
williamr@2
   439
    IMPORT_C TInt GetFeature( TInt aFeatureId, TInt& aFeatureParam ) const;
williamr@2
   440
williamr@2
   441
    /**
williamr@2
   442
     * Used for checking if the editor supports a feature.
williamr@2
   443
     * For features, see TFeatureId.
williamr@2
   444
     *
williamr@2
   445
     * @param aFeatureId
williamr@2
   446
     * @return ETrue if the feature is supported
williamr@2
   447
     * @since S60 5.0
williamr@2
   448
     */
williamr@2
   449
    IMPORT_C TBool SupportsFeature( TInt aFeatureId ) const;    
williamr@2
   450
    };
williamr@2
   451
williamr@2
   452
#endif