epoc32/include/mw/aknenv.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
/*
williamr@4
     2
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
williamr@4
     3
* All rights reserved.
williamr@4
     4
* This component and the accompanying materials are made available
williamr@4
     5
* under the terms of "Eclipse Public License v1.0"
williamr@4
     6
* which accompanies this distribution, and is available
williamr@4
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@4
     8
*
williamr@4
     9
* Initial Contributors:
williamr@4
    10
* Nokia Corporation - initial contribution.
williamr@4
    11
*
williamr@4
    12
* Contributors:
williamr@4
    13
*
williamr@4
    14
* Description: 
williamr@4
    15
*
williamr@4
    16
*/
williamr@4
    17
williamr@4
    18
#if !defined(__AVKON_ENV_H__)
williamr@4
    19
#define __AVKON_ENV_H__
williamr@4
    20
williamr@4
    21
//  INCLUDES
williamr@4
    22
#include <eikenv.h>
williamr@4
    23
#include <eiksbfrm.h>
williamr@4
    24
#include <eikcba.h>
williamr@4
    25
#include <eikmobs.h>
williamr@4
    26
#include <eikmenub.h>
williamr@4
    27
#include <eikappui.h>
williamr@4
    28
#include <AknLayout2Id.h> // for TAknLayoutId
williamr@4
    29
#include <AknDef.h> // for TAknUiZoom
williamr@4
    30
williamr@4
    31
// FORWARD DECLARATIONS
williamr@4
    32
namespace AknLayout { class CInstance; }
williamr@4
    33
namespace LayoutPack { class CInstance; }
williamr@4
    34
williamr@4
    35
class CCdlEngineRef;
williamr@4
    36
class MAknEditingStateIndicator;
williamr@4
    37
class MAknIntermediateState;
williamr@4
    38
class CAknAppUi;
williamr@4
    39
class CAknWaitDialog;
williamr@4
    40
class CEikListBox;
williamr@4
    41
class CAknSettingCache;
williamr@4
    42
class CAknFontRegistry;
williamr@4
    43
class CLafSystemFont;
williamr@4
    44
class TAknLayoutConfigScreenMode;
williamr@4
    45
class CCdlRefs;
williamr@4
    46
class CTransitionManager;
williamr@4
    47
class CAknCommandMediator;
williamr@4
    48
// Since there is no include of aknsystemfont.h we need the typedef CLafSystemFont here as well
williamr@4
    49
// Hence this requires parallel maintenance.
williamr@4
    50
typedef CLafSystemFont CAknSystemFont;
williamr@4
    51
williamr@4
    52
// MACROS
williamr@4
    53
// Color Macros
williamr@4
    54
/** Color indirection macros
williamr@4
    55
 *
williamr@4
    56
 * This macro takes number from LAF specification and converts it to TRgb for
williamr@4
    57
 * use to draw things.
williamr@4
    58
 */
williamr@4
    59
williamr@4
    60
// Color macros 
williamr@4
    61
#define AKN_LAF_COLOR_ENV(env,nn)	CAknEnv::AvkonColor(nn)
williamr@4
    62
#define AKN_LAF_COLOR(nn)			CAknEnv::AvkonColor(nn)
williamr@4
    63
#define AKN_LAF_COLOR_STATIC(nn)	CAknEnv::AvkonColor(nn)
williamr@4
    64
williamr@4
    65
	// Avkon layout
williamr@4
    66
//	IMPORT_C const AknLayout::CInstance& AknLayout() const;
williamr@4
    67
williamr@4
    68
williamr@4
    69
// CLASS DECLARATION
williamr@4
    70
williamr@4
    71
/**
williamr@4
    72
*  This class is a Series 60 extension to @c CEikonEnv. 
williamr@4
    73
*  Every Avkon application is provided with an instance of @c CAvkEnv by the
williamr@4
    74
*  framework, which can be accessed through the @c iAvkonEnv macro.
williamr@4
    75
* 
williamr@4
    76
*  @since Series 60 0.9
williamr@4
    77
*/
williamr@4
    78
class CAknEnv : public CBase
williamr@4
    79
	{
williamr@4
    80
public:
williamr@4
    81
    /**
williamr@4
    82
    * Gets the @c CAknEnv maintained by the framework for the application.
williamr@4
    83
    * Compare @c CCoeEnv::Static().
williamr@4
    84
	*
williamr@4
    85
	* This function should never be run in a thread where such a static Avkon
williamr@4
    86
	* environment does not exist. Code that may run on the server side of an
williamr@4
    87
	* application server is one such case.
williamr@4
    88
    * @return A static @c CAknEnv.
williamr@4
    89
    */
williamr@4
    90
	IMPORT_C static CAknEnv* Static();
williamr@4
    91
williamr@4
    92
    /**
williamr@4
    93
    * Destructor.
williamr@4
    94
    */
williamr@4
    95
	IMPORT_C ~CAknEnv();
williamr@4
    96
public:
williamr@4
    97
	// this one creates an empty dialog. for list queries and popup lists with 
williamr@4
    98
	// "No Data" in it.
williamr@4
    99
	/**
williamr@4
   100
    * Executes empty popup list.
williamr@4
   101
	*
williamr@4
   102
    * @param aEmptyText Text indicating empty popup list. NULL if 
williamr@4
   103
    * @c R_AVKON_EMPTY_POPUP_LIST_TEXT used.
williamr@4
   104
	*/
williamr@4
   105
williamr@4
   106
	IMPORT_C void ExecuteEmptyPopupListL(const TDesC *aEmptyText=0);
williamr@4
   107
williamr@4
   108
    /**
williamr@4
   109
    * Executes empty popup list.
williamr@4
   110
	* @c aSoftkeyId is soft key rescource used, but shown without left soft
williamr@4
   111
	* key (except @c R_AVKON_SOFTKEYS_OK_EMPTY).
williamr@4
   112
	*
williamr@4
   113
    * @param aEmptyText Text indicating empty popup list. NULL if
williamr@4
   114
    * @c R_AVKON_EMPTY_POPUP_LIST_TEXT used.
williamr@4
   115
	* @param aTitle A title of the popup list.
williamr@4
   116
	* @param aSoftKeyId CBA resource to be used as a base. 0 if
williamr@4
   117
	* @c R_AVKON_SOFTKEYS_CANCEL is used. 
williamr@4
   118
    */
williamr@4
   119
	IMPORT_C void ExecuteEmptyPopupListL(const TDesC *aEmptyText, 
williamr@4
   120
	                                     const TDesC *aTitle, 
williamr@4
   121
	                                     TInt aSoftkeyId=0);
williamr@4
   122
williamr@4
   123
public:
williamr@4
   124
    /**
williamr@4
   125
    * Set the FEP menu observer.
williamr@4
   126
	*
williamr@4
   127
    * @param aObserver the FEP menu observer.
williamr@4
   128
    */
williamr@4
   129
	IMPORT_C void SetFepMenuObserver(MEikMenuObserver* aObserver);
williamr@4
   130
williamr@4
   131
    /**
williamr@4
   132
    * Get the FEP menu observer.
williamr@4
   133
	*
williamr@4
   134
    * @return Pointer to the FEP menu observer.
williamr@4
   135
    */
williamr@4
   136
	IMPORT_C MEikMenuObserver* FepMenuObserver();
williamr@4
   137
williamr@4
   138
    /**
williamr@4
   139
    * Get the editing state indicator.
williamr@4
   140
	*
williamr@4
   141
    * @return Pointer to the editing state indicator.
williamr@4
   142
    */
williamr@4
   143
	IMPORT_C MAknEditingStateIndicator* EditingStateIndicator();
williamr@4
   144
williamr@4
   145
williamr@4
   146
    /**
williamr@4
   147
    * Swap the editing state indicator.
williamr@4
   148
	*
williamr@4
   149
    * @param aIndicator The new editing state indicator.
williamr@4
   150
	* @return The old editing state indicator.
williamr@4
   151
    */
williamr@4
   152
	IMPORT_C MAknEditingStateIndicator* SwapEditingStateIndicator(
williamr@4
   153
	    MAknEditingStateIndicator* aIndicator);
williamr@4
   154
williamr@4
   155
    /**
williamr@4
   156
    * Exit foreground application.
williamr@4
   157
    */
williamr@4
   158
	IMPORT_C static void ExitForegroundAppL();
williamr@4
   159
williamr@4
   160
public: // Intermediate states support
williamr@4
   161
    /**
williamr@4
   162
    * Register the control implementing intermediate states.
williamr@4
   163
	* Call @c iAvkonEnv->RegisterIntermediateState(this) in control's
williamr@4
   164
	* @c ActivateL().
williamr@4
   165
	*
williamr@4
   166
    * @param aState The control implementing intermediate states.
williamr@4
   167
    */
williamr@4
   168
	IMPORT_C void RegisterIntermediateStateL(MAknIntermediateState *aState);
williamr@4
   169
williamr@4
   170
    /**
williamr@4
   171
    * Unregister the control implementing intermediate states.
williamr@4
   172
	* Call @c iAvkonEnv->UnRegisterIntermediateState(this) in control's 
williamr@4
   173
	* destructor.
williamr@4
   174
	*
williamr@4
   175
    * @param aState The control implementing intermediate states.
williamr@4
   176
    */
williamr@4
   177
	IMPORT_C void UnRegisterIntermediateState(MAknIntermediateState *aState);
williamr@4
   178
williamr@4
   179
    /**
williamr@4
   180
    * Closes all intermediate states as a low-priority process. 
williamr@4
   181
    */
williamr@4
   182
	IMPORT_C void CloseAllIntermediateStates();
williamr@4
   183
williamr@4
   184
public:
williamr@4
   185
    /**
williamr@4
   186
    * Run application shutter.
williamr@4
   187
    */
williamr@4
   188
	IMPORT_C static void RunAppShutter();
williamr@4
   189
williamr@4
   190
    /**
williamr@4
   191
    * Get pointer to the most embedded application UI with Dialog Shutter 
williamr@4
   192
    * running.
williamr@4
   193
	*
williamr@4
   194
    * @return Pointer to the most embedded application UI with Dialog Shutter
williamr@4
   195
    * running. @c NULL if no any Dialog Shutter running.
williamr@4
   196
    */
williamr@4
   197
	IMPORT_C static CAknAppUi* AppWithShutterRunning();
williamr@4
   198
williamr@4
   199
    /**
williamr@4
   200
	* Stop the scheduler. If the waiting control can't stop the scheduler
williamr@4
   201
	* immediately, then trying to show a busy note.
williamr@4
   202
	* @param aWait Scheduler object to be stopped.
williamr@4
   203
	*/
williamr@4
   204
	IMPORT_C static void StopSchedulerWaitWithBusyMessage(
williamr@4
   205
	    CActiveSchedulerWait& aWait);
williamr@4
   206
williamr@4
   207
public:
williamr@4
   208
    /**
williamr@4
   209
	* Create CBA observer. The possible existing one is removed first.
williamr@4
   210
	* @param aCba A control which @c ProcessCommandL handles the command.
williamr@4
   211
	* @param aListBox Stored to data member @c iListBox.
williamr@4
   212
	*/
williamr@4
   213
	IMPORT_C void CreateCbaObserverL(CEikButtonGroupContainer *aCba, 
williamr@4
   214
	                                 CEikListBox *aListBox);
williamr@4
   215
williamr@4
   216
    /**
williamr@4
   217
	* Remove CBA observer.
williamr@4
   218
	*/
williamr@4
   219
	IMPORT_C void RemoveCbaObserver();
williamr@4
   220
williamr@4
   221
williamr@4
   222
    /**
williamr@4
   223
	* Remove CBA observer if the right one.
williamr@4
   224
	* @param aCba CBA to be checked.
williamr@4
   225
	*/
williamr@4
   226
	IMPORT_C void InformCbaDeletion(CEikButtonGroupContainer *aCba);
williamr@4
   227
williamr@4
   228
    /**
williamr@4
   229
     * Requests mediation of MSK commmands from specified CBA to the
williamr@4
   230
     * given observer. When called for the first time, this method creates
williamr@4
   231
     * an observer that is added to specified CBA to observe MSK commands
williamr@4
   232
     * and to mediate all received events to the given observer. The created
williamr@4
   233
     * observer exists until the CAknEnv instance is destroyed. All subsequent
williamr@4
   234
     * calls to this method replace the previously requested mediation.
williamr@4
   235
     *
williamr@4
   236
     * @param aCba CBA whose MSK is to be observed.
williamr@4
   237
     * @param aCommandObserver An observer for which the commands are sent.
williamr@4
   238
     */
williamr@4
   239
    IMPORT_C void RequestCommandMediationL( CEikButtonGroupContainer& aCba,
williamr@4
   240
        MEikCommandObserver& aCommandObserver );
williamr@4
   241
williamr@4
   242
    /**
williamr@4
   243
     * Ends mediating MSK commands to specified command observer. If commands
williamr@4
   244
     * are being mediated to the specifed observer, the command mediator is
williamr@4
   245
     * removed from the CBA to end mediation.
williamr@4
   246
     *
williamr@4
   247
     * @param aCommandObserver An observer.
williamr@4
   248
     */
williamr@4
   249
    IMPORT_C void EndCommandMediation( MEikCommandObserver& aCommandObserver );
williamr@4
   250
williamr@4
   251
public:
williamr@4
   252
    /**
williamr@4
   253
	* Get current layout ID.
williamr@4
   254
	* @since Series 60 2.0
williamr@4
   255
	* @param aCurrentLayoutId On return, contains current layout ID.
williamr@4
   256
	*/
williamr@4
   257
	IMPORT_C void GetCurrentLayoutId(TAknLayoutId& aCurrentLayoutId) const;
williamr@4
   258
williamr@4
   259
    /**
williamr@4
   260
    * Get current global zoom
williamr@4
   261
    * @since 3.1
williamr@4
   262
    * @param aCurrentGlobalUiZoom On return, contains current global zoom.
williamr@4
   263
    */
williamr@4
   264
    IMPORT_C void GetCurrentGlobalUiZoom(TAknUiZoom& aCurrentGlobalUiZoom) const;
williamr@4
   265
williamr@4
   266
public:
williamr@4
   267
    /**
williamr@4
   268
    * Tells the type of status pane layout for UI.
williamr@4
   269
    * @since Series 60 2.0
williamr@4
   270
    * @param aResId resource id for current layout.
williamr@4
   271
    * @return Resource id equivalent type of status pane layout.
williamr@4
   272
    */
williamr@4
   273
	IMPORT_C TInt StatusPaneResIdForCurrentLayout(TInt aResId) const;
williamr@4
   274
williamr@4
   275
public:
williamr@4
   276
    /**
williamr@4
   277
    * Requests Window Server client buffer used by the application to
williamr@4
   278
    * be of at least the given size. All code that wants to increase
williamr@4
   279
    * (to avoid flicker) or decrease (to save RAM) the buffer compared
williamr@4
   280
    * to the default size should call this method instead of using
williamr@4
   281
    * WS interface directly. A list of all requests is maintained
williamr@4
   282
    * and the highest request is always effective. Only if there are no
williamr@4
   283
    * requests done, the default buffer size is used.
williamr@4
   284
    *
williamr@4
   285
    * @since Series 60 2.0
williamr@4
   286
    *
williamr@4
   287
    * @param aRequestedBufferSize requested Window Server client buffer size.
williamr@4
   288
    *
williamr@4
   289
    * @return Request ID. This is used when the request is canceled.
williamr@4
   290
    *         In OOM situation, @c KErrNoMemory is returned. 
williamr@4
   291
    *         @c CancelWsBufferRequest ignores negative values as error codes
williamr@4
   292
    *         so it is OK to pass any value returned by this method to
williamr@4
   293
    *         @c CancelWsBufferRequest.
williamr@4
   294
    */
williamr@4
   295
    IMPORT_C TInt RequestWsBuffer( TInt aRequestedBufferSize );
williamr@4
   296
williamr@4
   297
    /**
williamr@4
   298
    * Cancels a request made by call @c RequestWsBuffer. This should be
williamr@4
   299
    * called in order to save RAM when higher than normal buffer size is
williamr@4
   300
    * no longer required.
williamr@4
   301
    *
williamr@4
   302
    * @since Series 60 2.0
williamr@4
   303
    *
williamr@4
   304
    * @param aRequestID The request ID returned by the
williamr@4
   305
    *        @c RequestWsBuffer call which is to be canceled.
williamr@4
   306
    *        Negative values are treated as error codes and ignored.
williamr@4
   307
    */
williamr@4
   308
    IMPORT_C void CancelWsBufferRequest( TInt aRequestID );
williamr@4
   309
williamr@4
   310
public:
williamr@4
   311
    /**
williamr@4
   312
    * @internal to Series 60
williamr@4
   313
    */
williamr@4
   314
	IMPORT_C CAknSettingCache& SettingCache() const;
williamr@4
   315
williamr@4
   316
    /**
williamr@4
   317
    * Access to the registry of CAknLayoutFont pointers. Used for runtime
williamr@4
   318
    * checking of CFont pointers.
williamr@4
   319
    * 
williamr@4
   320
    * @internal to Series 60
williamr@4
   321
    * @since Series 60 2.8
williamr@4
   322
    * 
williamr@4
   323
    * @return   Reference to the registry
williamr@4
   324
    */
williamr@4
   325
    CAknFontRegistry& FontRegistry() const;
williamr@4
   326
williamr@4
   327
    /**
williamr@4
   328
    * Access to the system font array that is owned by CEikonEnv. The member accessed by this
williamr@4
   329
    * is set during CEikonEnv construction and may be null during application startup.
williamr@4
   330
    * 
williamr@4
   331
    * @internal to Series 60
williamr@4
   332
    * @since Series 60 2.8
williamr@4
   333
    * 
williamr@4
   334
    * @return   Pointer to the system font array
williamr@4
   335
    */
williamr@4
   336
    CArrayPtr<CAknSystemFont>* SystemFontArray() const;
williamr@4
   337
williamr@4
   338
    void UpdateSystemFontsL();
williamr@4
   339
    
williamr@4
   340
    static void ShutOrHideAppL();
williamr@4
   341
williamr@4
   342
public: // layout
williamr@4
   343
    
williamr@4
   344
    /**
williamr@4
   345
    * Load an appropriate Avkon layout.
williamr@4
   346
    * 
williamr@4
   347
    * @since  Series 60 2.6
williamr@4
   348
    * @return @c EFalse if the layout is already loaded.
williamr@4
   349
    */
williamr@4
   350
	IMPORT_C TBool LoadAknLayoutL();
williamr@4
   351
    /**
williamr@4
   352
    * Load an appropriate Avkon layout for a particular screen mode.
williamr@4
   353
    * 
williamr@4
   354
    * @since  Series 60 3.1
williamr@4
   355
    * @param  aScreenMode The screen mode which the layout is required for
williamr@4
   356
    * @return @c EFalse if the layout is already loaded.
williamr@4
   357
    */
williamr@4
   358
	IMPORT_C TBool LoadAknLayoutL(const TAknLayoutConfigScreenMode& aScreenMode);
williamr@4
   359
	
williamr@4
   360
    /**
williamr@4
   361
    * Re-load the current Avkon layout, in case there are new layout instances present.
williamr@4
   362
    * 
williamr@4
   363
    * @since  Series 60 5.1
williamr@4
   364
    */
williamr@4
   365
	void ReloadAknLayoutL();
williamr@4
   366
	
williamr@4
   367
	// Avkon layout
williamr@4
   368
	/**
williamr@4
   369
    * Accessor method to layout. 
williamr@4
   370
    *
williamr@4
   371
    * @since  Series 60 2.6
williamr@4
   372
    * @return Reference to the Layout.
williamr@4
   373
    */
williamr@4
   374
	IMPORT_C const AknLayout::CInstance& AknLayout() const;
williamr@4
   375
williamr@4
   376
public: // color support
williamr@4
   377
	/**
williamr@4
   378
    * Gets the TRgb value of the entry at the specified index in the colour 
williamr@4
   379
    * lookup table.
williamr@4
   380
    *
williamr@4
   381
    * @since  Series 60 0.9
williamr@4
   382
    * @param  The aIndex of the colour lookup table, integer between 0 and 255.
williamr@4
   383
    * @return The TRgb value of the colour lookup table at the aIndex.
williamr@4
   384
    */
williamr@4
   385
    IMPORT_C static TRgb AvkonColor( TInt );
williamr@4
   386
williamr@4
   387
public: // split view support
williamr@4
   388
    /**
williamr@4
   389
    * Checks if split view is active.
williamr@4
   390
	* @since Series 60 5.0
williamr@4
   391
    * @return ETrue if split view is active.
williamr@4
   392
    */
williamr@4
   393
    IMPORT_C TBool SplitViewActive() const;
williamr@4
   394
williamr@4
   395
    /**
williamr@4
   396
    * Sets split view flag.
williamr@4
   397
	* @since Series 60 5.0
williamr@4
   398
    * @param aSplitViewActive Etrue if split view is active.
williamr@4
   399
    */
williamr@4
   400
    void SplitViewActive( const TBool aSplitViewActive );
williamr@4
   401
williamr@4
   402
    void TransitionEvent(TInt aEvent, const TUid& aAppUid);
williamr@4
   403
    void TransitionEvent(TInt aEvent);
williamr@4
   404
    TBool HasBlank() const;
williamr@4
   405
williamr@4
   406
public: // future language
williamr@4
   407
    /*
williamr@4
   408
     * Check if the feature language is same.
williamr@4
   409
     * @param aFeatureLanguage feature language (e.g. KFeatureIdJapanese)
williamr@4
   410
     * @return ETrue if the arg is same as iFeatureLanguage.
williamr@4
   411
     * @since 3.1
williamr@4
   412
     */
williamr@4
   413
    TBool IsFeatureLanguage(TInt aFeatureLanguage);
williamr@4
   414
williamr@4
   415
private:
williamr@4
   416
williamr@4
   417
    void SetWsBufferSize();
williamr@4
   418
    void SetWsBufferSize( TInt aRequestedBufferSize );
williamr@4
   419
williamr@4
   420
    // Only these can use run info array, so it cannot get messed up
williamr@4
   421
    // by simultaneous use.
williamr@4
   422
    friend class AknBidiTextUtils;
williamr@4
   423
    friend class TAknTextWrapper;
williamr@4
   424
williamr@4
   425
    /**
williamr@4
   426
    * Returns run info array owned by AknEnv.
williamr@4
   427
    *
williamr@4
   428
    * @param aLength Length of the array is returned here.
williamr@4
   429
    *
williamr@4
   430
    * @return Run info array owned by AknEnv.
williamr@4
   431
    */
williamr@4
   432
    TBidirectionalState::TRunInfo* RunInfoArray( TInt& aLength ) const;
williamr@4
   433
williamr@4
   434
    /**
williamr@4
   435
    * Tests how big run info array the given text requires and
williamr@4
   436
    * tries to increase the size of the array if required.
williamr@4
   437
    *
williamr@4
   438
    * @param aLogicalText Text in logical order.
williamr@4
   439
    *
williamr@4
   440
    * @return KErrNone or KErrNoMemory.
williamr@4
   441
    */
williamr@4
   442
    TInt PrepareRunInfoArray( const TDesC& aLogicalText );
williamr@4
   443
williamr@4
   444
    /**
williamr@4
   445
    * Tries to increase the size of the run info array if
williamr@4
   446
    * it is currently smaller than given length.
williamr@4
   447
    *
williamr@4
   448
    * @param aLength Length of the new run info array to be allocated.
williamr@4
   449
    *
williamr@4
   450
    * @return KErrNone or KErrNoMemory.
williamr@4
   451
    */
williamr@4
   452
    TInt SetRequiredRunInfoArraySize( TInt aLength );
williamr@4
   453
williamr@4
   454
	void SetLayoutRequirementsL();
williamr@4
   455
	void AssertLayoutLoaded();
williamr@4
   456
	TBool TryLoadAknLayoutL(TAknLayoutId aId, const TAknLayoutConfigScreenMode& aScreenMode, TAknUiZoom aUiZoom);
williamr@4
   457
	TBool LoadAknLayoutL(TAknLayoutId aId, const TAknLayoutConfigScreenMode& aScreenMode, TAknUiZoom aUiZoom);
williamr@4
   458
    TAknUiZoom ResolveCurrentUiZoom();
williamr@4
   459
    
williamr@4
   460
    /**
williamr@4
   461
    * Use the currently loaded layout to set the values of the font size array used by CCoeFontProvider. 
williamr@4
   462
    */
williamr@4
   463
    void SetConeFontSizeArrayL() const;
williamr@4
   464
williamr@4
   465
private:
williamr@4
   466
	static TInt RealCloseIntermediateStates(TAny *aEnv);
williamr@4
   467
	static TInt SchedulerStoppedCallBack(TAny* aWaitNote);
williamr@4
   468
	void DoSchedulerStoppedCallBack();
williamr@4
   469
williamr@4
   470
private:
williamr@4
   471
    friend class LafEnv;
williamr@4
   472
williamr@4
   473
    IMPORT_C static void InstallAknEnvAsExtensionL(CEikonEnv* aEnv);
williamr@4
   474
    IMPORT_C CAknEnv();
williamr@4
   475
    IMPORT_C void ConstructL();
williamr@4
   476
    
williamr@4
   477
public:
williamr@4
   478
    /**
williamr@4
   479
    * Return if Transparency is Enabled .
williamr@4
   480
    *
williamr@4
   481
    * @since 5.0
williamr@4
   482
    *
williamr@4
   483
    * @return if Transparency is Enabled.
williamr@4
   484
    */
williamr@4
   485
    IMPORT_C TBool TransparencyEnabled() const; 
williamr@4
   486
williamr@4
   487
private:
williamr@4
   488
	MEikMenuObserver* iFepMenuObserver;
williamr@4
   489
	MAknEditingStateIndicator* iEditStateIndicator;
williamr@4
   490
private:
williamr@4
   491
	CArrayPtr<MAknIntermediateState> *iStateArray;
williamr@4
   492
	CArrayPtr<CBase> *iDeleteArray;
williamr@4
   493
	CIdle *iIdle;
williamr@4
   494
	CAknWaitDialog* iBusyMsgDialog;
williamr@4
   495
	TInt iBusyMsgCount;
williamr@4
   496
	MEikCommandObserver *iCbaCommandObserver;
williamr@4
   497
    CAknSettingCache* iSettingCache;
williamr@4
   498
    TBidirectionalState::TRunInfo* iRunInfoArray;
williamr@4
   499
    TInt iRunInfoArrayLength;
williamr@4
   500
williamr@4
   501
    struct TWsBufferRequest
williamr@4
   502
        {
williamr@4
   503
        TInt iRequestID;
williamr@4
   504
        TInt iRequestedSize;
williamr@4
   505
        };
williamr@4
   506
williamr@4
   507
    RArray<TWsBufferRequest> iWsBufferRequestArray;
williamr@4
   508
    TInt iRequestIdCounter;
williamr@4
   509
    TInt iCurrentWsBufferRequest;
williamr@4
   510
williamr@4
   511
	// cache for layout parameters
williamr@4
   512
	TAknLayoutId iLastLayoutId;
williamr@4
   513
	TInt iLastScreenMode;
williamr@4
   514
	TAknUiZoom iLastZoom;
williamr@4
   515
williamr@4
   516
	CEikonEnv* iCoeEnv;
williamr@4
   517
    CAknFontRegistry* iFontRegistry;  // Owned register of CAknLayoutFont pointers
williamr@4
   518
    CCdlEngineRef* iCdlEngRef;
williamr@4
   519
    const AknLayout::CInstance* iLayout;	
williamr@4
   520
    CArrayPtr<CAknSystemFont>* iSystemFontArray; // Not owned. System Font array is owned by CEikonEnv
williamr@4
   521
    TBool iSplitViewActive;
williamr@4
   522
    CTransitionManager* iTransitionManager;
williamr@4
   523
    CAknCommandMediator* iCommandMediator;
williamr@4
   524
    /*
williamr@4
   525
     * Set the feature language Id
williamr@4
   526
     * If device uses Japanese language variant, KFeatureIdJapanese is set.
williamr@4
   527
     * @since 3.1
williamr@4
   528
     */
williamr@4
   529
    TInt iFeatureLanguage;
williamr@4
   530
    };
williamr@4
   531
williamr@4
   532
williamr@4
   533
#define iAvkonEnv (STATIC_CAST(CAknEnv*,iEikonEnv->Extension()))
williamr@4
   534
#define AVKONENV (STATIC_CAST(CAknEnv*, CEikonEnv::Static()->Extension()))
williamr@4
   535
williamr@4
   536
#endif