epoc32/include/mw/aknnavi.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-2007 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:  A default control in the status pane's navigation pane.
williamr@4
    15
*
williamr@4
    16
*/
williamr@4
    17
williamr@4
    18
williamr@4
    19
#ifndef C_AKNNAVI_H
williamr@4
    20
#define C_AKNNAVI_H
williamr@4
    21
williamr@4
    22
#include <AknControl.h>
williamr@4
    23
#include <coeccntx.h>
williamr@4
    24
#include <Aknvolumecontrol.h>
williamr@4
    25
williamr@4
    26
// FORWARD DECLARATIONS
williamr@4
    27
class CAknNavigationDecorator;
williamr@4
    28
class CEikStatusPaneBase;
williamr@4
    29
class CFbsBitmap;
williamr@4
    30
class MAknTabObserver;
williamr@4
    31
class CAknNavigationControlContainerExtension;
williamr@4
    32
class MAknsControlContext;
williamr@4
    33
williamr@4
    34
class MAknNavigationDecoratorInterface
williamr@4
    35
    {
williamr@4
    36
public:
williamr@4
    37
    virtual ~MAknNavigationDecoratorInterface() { }
williamr@4
    38
    virtual CCoeControl* DecoratedControl() = 0;
williamr@4
    39
    };
williamr@4
    40
williamr@4
    41
class MAknNavigationContainerInterface
williamr@4
    42
    {
williamr@4
    43
public:
williamr@4
    44
    virtual ~MAknNavigationContainerInterface() { }
williamr@4
    45
    virtual CAknNavigationDecorator* CreateMessageLabelL(const TDesC& aText) = 0;
williamr@4
    46
    virtual CAknNavigationDecorator* CreateTabGroupL() = 0;
williamr@4
    47
    virtual void PushL( CAknNavigationDecorator& ) = 0;
williamr@4
    48
    virtual void Pop() = 0;
williamr@4
    49
    };
williamr@4
    50
williamr@4
    51
/**
williamr@4
    52
 * A default control in the status pane's navigation pane.
williamr@4
    53
 */
williamr@4
    54
class CAknNavigationControlContainer : public CAknControl,
williamr@4
    55
                                       public MCoeControlContext,
williamr@4
    56
                                       public MCoeControlObserver,
williamr@4
    57
                                       public MAknNavigationContainerInterface
williamr@4
    58
    {
williamr@4
    59
williamr@4
    60
public:
williamr@4
    61
williamr@4
    62
    DECLARE_TYPE_ID( 0x101F8740 )
williamr@4
    63
williamr@4
    64
public:
williamr@4
    65
williamr@4
    66
    /**
williamr@4
    67
     * C++ default constructor.
williamr@4
    68
     *
williamr@4
    69
     * This object does not own the contents of the navi pane controls stack.
williamr@4
    70
     */
williamr@4
    71
    IMPORT_C CAknNavigationControlContainer();
williamr@4
    72
williamr@4
    73
    /**
williamr@4
    74
     * Destructor.
williamr@4
    75
     *
williamr@4
    76
     * This object does not own the contents of the navi pane controls stack.
williamr@4
    77
     */
williamr@4
    78
    IMPORT_C ~CAknNavigationControlContainer();
williamr@4
    79
williamr@4
    80
    /**
williamr@4
    81
     * Handles 2nd phase construction.
williamr@4
    82
     */
williamr@4
    83
    IMPORT_C void ConstructL();
williamr@4
    84
williamr@4
    85
    /**
williamr@4
    86
     * Constructs from a resource. Created object is owned by this object until
williamr@4
    87
     * @c ResourceDecorator() method is called. If the application does not
williamr@4
    88
     * fetch the object it is deleted in destructor.
williamr@4
    89
     *
williamr@4
    90
     * @param aReader Resource reader.
williamr@4
    91
     */
williamr@4
    92
    IMPORT_C void ConstructFromResourceL( TResourceReader& aReader );
williamr@4
    93
williamr@4
    94
    /**
williamr@4
    95
     * Resource constructor that returns a new object to the application.
williamr@4
    96
     *
williamr@4
    97
     * @param aReader Resource reader.
williamr@4
    98
     * @return Navigation decorator object that contains navigation pane
williamr@4
    99
     *         control read from resources.
williamr@4
   100
     */
williamr@4
   101
    IMPORT_C CAknNavigationDecorator*
williamr@4
   102
                    ConstructNavigationDecoratorFromResourceL(
williamr@4
   103
                                                TResourceReader& aReader);
williamr@4
   104
williamr@4
   105
    /**
williamr@4
   106
     * Creates and returns a new navigation decorator object containing tab
williamr@4
   107
     * group.
williamr@4
   108
     * The ownership of the object is transferred to the application.
williamr@4
   109
     *
williamr@4
   110
     * @return Navigation decorator object that contains tab group.
williamr@4
   111
     */
williamr@4
   112
    IMPORT_C CAknNavigationDecorator* CreateTabGroupL();
williamr@4
   113
williamr@4
   114
    /**
williamr@4
   115
     * Creates and returns a new navigation decorator object containing tab
williamr@4
   116
     * group. The ownership of the object is transferred to the application.
williamr@4
   117
     *
williamr@4
   118
     * @param aObserver Pointer to tab group observer
williamr@4
   119
     * @return Navigation decorator object that contains tab group.
williamr@4
   120
     */
williamr@4
   121
    IMPORT_C CAknNavigationDecorator* CreateTabGroupL(
williamr@4
   122
                                            MAknTabObserver* aObserver);
williamr@4
   123
williamr@4
   124
    /**
williamr@4
   125
     * Creates from a resource and returns a new navigation decorator object
williamr@4
   126
     * containing tab group.
williamr@4
   127
     * The ownership of the object is transferred to the application.
williamr@4
   128
     *
williamr@4
   129
     * @param aReader Resource reader.
williamr@4
   130
     * @return Navigation decorator object that contains tab group.
williamr@4
   131
     */
williamr@4
   132
    IMPORT_C CAknNavigationDecorator* CreateTabGroupL(
williamr@4
   133
                                                TResourceReader& aReader);
williamr@4
   134
williamr@4
   135
    /**
williamr@4
   136
     * Creates from a resource and returns a new navigation decorator object
williamr@4
   137
     * containing tab group.
williamr@4
   138
     * The ownership of the object is transferred to the application.
williamr@4
   139
     *
williamr@4
   140
     * @param aReader Resource reader.
williamr@4
   141
     * @param aObserver Pointer to tab group observer.
williamr@4
   142
     * @return Navigation decorator object that contains tab group.
williamr@4
   143
     */
williamr@4
   144
    IMPORT_C CAknNavigationDecorator* CreateTabGroupL(
williamr@4
   145
                                            TResourceReader& aReader,
williamr@4
   146
                                            MAknTabObserver* aObserver);
williamr@4
   147
williamr@4
   148
    /**
williamr@4
   149
     * Creates and returns a new navigation decorator object containing
williamr@4
   150
     * navigation label.
williamr@4
   151
     * The ownership of the object is transferred to the application.
williamr@4
   152
     *
williamr@4
   153
     * @param aText Label text to the navigation pane.
williamr@4
   154
     * @return Navigation decorator object that contains navigation label.
williamr@4
   155
     */
williamr@4
   156
    IMPORT_C CAknNavigationDecorator* CreateNavigationLabelL(
williamr@4
   157
                                            const TDesC& aText = KNullDesC);
williamr@4
   158
williamr@4
   159
    /**
williamr@4
   160
     * Creates from a resource and returns a new navigation decorator object
williamr@4
   161
     * containing navigation label.
williamr@4
   162
     * The ownership of the object is transferred to the application.
williamr@4
   163
     *
williamr@4
   164
     * @param aReader Resource reader.
williamr@4
   165
     * @return Navigation decorator object that contains navigation label.
williamr@4
   166
     */
williamr@4
   167
    IMPORT_C CAknNavigationDecorator* CreateNavigationLabelL(
williamr@4
   168
                                                    TResourceReader& aReader);
williamr@4
   169
williamr@4
   170
    /**
williamr@4
   171
     * Creates and returns a new navigation decorator object containing
williamr@4
   172
     * navigation image.
williamr@4
   173
     * The ownership of the returned object is transferred to the application.
williamr@4
   174
     * Moves ownership of @c aBitmap and @c aMaskBitmap to the navigation
williamr@4
   175
     * decorator object at the end of the method.
williamr@4
   176
     *
williamr@4
   177
     * @param aBitmap Image to be shown in the navigation pane.
williamr@4
   178
     * @param aMaskBitmap Mask of the image to be shown in the
williamr@4
   179
     *        navigation panel.
williamr@4
   180
     * @return Navigation decorator object that contains navigation image.
williamr@4
   181
     */
williamr@4
   182
    IMPORT_C CAknNavigationDecorator* CreateNavigationImageL(
williamr@4
   183
                                        const CFbsBitmap* aBitmap = NULL,
williamr@4
   184
                                        const CFbsBitmap* aMaskBitmap = NULL);
williamr@4
   185
williamr@4
   186
    /**
williamr@4
   187
     * Creates from a resource and returns a new navigation decorator object
williamr@4
   188
     * containing navigation image.
williamr@4
   189
     * The ownership of the returned object is transferred to the application.
williamr@4
   190
     *
williamr@4
   191
     * @param aReader Resource reader.
williamr@4
   192
     * @return Navigation decorator object that
williamr@4
   193
     *         contains navigation image.
williamr@4
   194
     */
williamr@4
   195
    IMPORT_C CAknNavigationDecorator* CreateNavigationImageL(
williamr@4
   196
                                            TResourceReader& aReader);
williamr@4
   197
williamr@4
   198
    /**
williamr@4
   199
     * Creates and returns a new navigation decorator object containing
williamr@4
   200
     * help text.
williamr@4
   201
     * The ownership of the object is transferred to the application.
williamr@4
   202
     *
williamr@4
   203
     * @param aText Help text label to be shown in the navigation pane.
williamr@4
   204
     * @return Navigation decorator object that
williamr@4
   205
     *         contains message label (=hint text).
williamr@4
   206
     */
williamr@4
   207
    IMPORT_C CAknNavigationDecorator* CreateMessageLabelL(
williamr@4
   208
                                        const TDesC& aText = KNullDesC);
williamr@4
   209
williamr@4
   210
    /**
williamr@4
   211
     * Creates from a resource and returns a new navigation decorator object
williamr@4
   212
     * containing help text.
williamr@4
   213
     * The ownership of the object is transferred to the application.
williamr@4
   214
     *
williamr@4
   215
     * @param aReader Resource reader.
williamr@4
   216
     * @return Navigation decorator object that contains message label
williamr@4
   217
     *         (=hint text).
williamr@4
   218
     */
williamr@4
   219
    IMPORT_C CAknNavigationDecorator* CreateMessageLabelL(
williamr@4
   220
                                            TResourceReader& aReader);
williamr@4
   221
williamr@4
   222
    /**
williamr@4
   223
     * Creates volume control indicator to the navi pane.
williamr@4
   224
     * The ownership of the object is transferred to the application.
williamr@4
   225
     *
williamr@4
   226
     * @param aResourceId Resource file id for the volume control
williamr@4
   227
     * @return Navigation decorator object that contains volume indicator.
williamr@4
   228
     *
williamr@4
   229
     * @deprecated  Navi pane volume control is not supported anymore.
williamr@4
   230
     */
williamr@4
   231
    IMPORT_C CAknNavigationDecorator* CreateVolumeIndicatorL(TInt aResourceId);
williamr@4
   232
williamr@4
   233
    /**
williamr@4
   234
     * Creates editor indicator container control to the navi pane.
williamr@4
   235
     * The ownership of the object is transferred to the application.
williamr@4
   236
     *
williamr@4
   237
     * @return Navigation decorator object that contains editor indicator
williamr@4
   238
     *         container.
williamr@4
   239
     */
williamr@4
   240
    IMPORT_C CAknNavigationDecorator* CreateEditorIndicatorContainerL();
williamr@4
   241
williamr@4
   242
    /**
williamr@4
   243
     * Pushes default content (empty navigation pane) to the navigation pane's
williamr@4
   244
     * object stack.
williamr@4
   245
     * This operation also draws default content to the navigation pane.
williamr@4
   246
     *
williamr@4
   247
     * @param  aAllowDuplicates  If this is @c ETrue, duplicate default
williamr@4
   248
     *                           navi pane contents are allowed.
williamr@4
   249
     */
williamr@4
   250
    IMPORT_C void PushDefaultL( TBool aAllowDuplicates = EFalse );
williamr@4
   251
williamr@4
   252
    /**
williamr@4
   253
     * Pushes a navigation decorator object to the navigation pane's object
williamr@4
   254
     * stack.
williamr@4
   255
     * This operation also draws the control to the navigation pane. An object
williamr@4
   256
     * can be on the stack only once. If the object already exists in the stack
williamr@4
   257
     * it is moved to topmost object. Ownership is not transfered.
williamr@4
   258
     * Editor indicator control has priority over others. It is always at the
williamr@4
   259
     * top if it exists. In this case all other controls are pushed under
williamr@4
   260
     * the editor indicator object.
williamr@4
   261
     *
williamr@4
   262
     * @param aNaviPaneControl Object to be added at the top of the stack.
williamr@4
   263
     */
williamr@4
   264
    IMPORT_C void PushL( CAknNavigationDecorator& aNaviPaneControl );
williamr@4
   265
williamr@4
   266
    /**
williamr@4
   267
     * Pops topmost object from the navigation pane's object stack. If editor
williamr@4
   268
     * indicator control is topmost, it is not popped. The next control
williamr@4
   269
     * is popped instead.
williamr@4
   270
     * It is not possible to pop editor indicator object with this method.
williamr@4
   271
     * Use @c Pop(CAknNavigationDecorator* aControl) or @c delete(aControl)
williamr@4
   272
     * instead if editor indicator control is needed to be popped.
williamr@4
   273
     */
williamr@4
   274
    IMPORT_C void Pop();
williamr@4
   275
williamr@4
   276
    /**
williamr@4
   277
     * Pops (remove) certain object from the navigation pane's object stack.
williamr@4
   278
     * The removed object does not need to be topmost.
williamr@4
   279
     *
williamr@4
   280
     * @param aControl Object to be removed from the stack.
williamr@4
   281
     */
williamr@4
   282
    IMPORT_C void Pop( CAknNavigationDecorator* aControl );
williamr@4
   283
williamr@4
   284
    /**
williamr@4
   285
     * Returns topmost object from navigation pane's object stack.
williamr@4
   286
     * Editor indicator object is transparent for this operation. If editor
williamr@4
   287
     * indicators exist on the navi pane, next object on the stack is returned.
williamr@4
   288
     *
williamr@4
   289
     * @return Navigation decorator object that is topmost in navigation pane's
williamr@4
   290
     *         object stack.
williamr@4
   291
     */
williamr@4
   292
    IMPORT_C CAknNavigationDecorator* Top();
williamr@4
   293
williamr@4
   294
    /**
williamr@4
   295
    * Return topmost object from navigation pane's object stack.
williamr@4
   296
    * FEP Editor indicator object is transparent or visible for this operation
williamr@4
   297
    * depending on the given parameter value. If editor indicator object is to
williamr@4
   298
    * be ignored and it exist on the navi pane, next object on the stack is
williamr@4
   299
    * returned. Note that generally FEP does all the needed visibility etc.
williamr@4
   300
    * handling for FEP editor indicators, so by default applications should
williamr@4
   301
    * ignore FEP editor indicators.
williamr@4
   302
    *
williamr@4
   303
    * @since 3.1
williamr@4
   304
    * @param  aIgnoreFepEditorIndicator  Tells if editor indicator
williamr@4
   305
    *                                    object is ignored.
williamr@4
   306
    *
williamr@4
   307
    * @return Navigation decorator object that is topmost in
williamr@4
   308
    *         navigation pane's object stack.
williamr@4
   309
    */
williamr@4
   310
    IMPORT_C CAknNavigationDecorator* Top(TBool aIgnoreFepEditorIndicator) const;
williamr@4
   311
williamr@4
   312
williamr@4
   313
    /**
williamr@4
   314
     * Replaces existing navigation decorator object in the navigation pane's
williamr@4
   315
     * object stack. Any object can be on the stack only once. If the
williamr@4
   316
     * replacement object already exists in the stack, previous copy is
williamr@4
   317
     * removed from the stack. Ownership is not transfered.
williamr@4
   318
     * Navi pane is redrawn if top item is changed.
williamr@4
   319
     *
williamr@4
   320
     * @param aToBeReplaced An object to be replaced.
williamr@4
   321
     * @param aReplacement An object that is put to the stack instead.
williamr@4
   322
     * @return Error number. @c KErrNone if the operation succeeds.
williamr@4
   323
     *         @c KErrNotFound if @c 'aToBeReplaced' object cannot be
williamr@4
   324
     *         found from the stack.
williamr@4
   325
     */
williamr@4
   326
    IMPORT_C TInt ReplaceL( CAknNavigationDecorator& aToBeReplaced,
williamr@4
   327
                            CAknNavigationDecorator& aReplacement );
williamr@4
   328
williamr@4
   329
    /**
williamr@4
   330
     * Returns the object constructed from resources with
williamr@4
   331
     * @c ConstrucFromResourcesL() -method to the application.
williamr@4
   332
     * Ownership of the object is transferred to the application.
williamr@4
   333
     *
williamr@4
   334
     * @return Navigation Decorator object that was
williamr@4
   335
     *         created from resources.
williamr@4
   336
     */
williamr@4
   337
    IMPORT_C CAknNavigationDecorator* ResourceDecorator();
williamr@4
   338
williamr@4
   339
    /**
williamr@4
   340
     * This non-exported method returns reference to navi arrow bitmaps.
williamr@4
   341
     *
williamr@4
   342
     * @param  aId  Id of the bitmap.
williamr@4
   343
     * @return Reference to the navi arrow bitmap.
williamr@4
   344
     */
williamr@4
   345
    CFbsBitmap& NaviArrowBitmap( TInt aId );
williamr@4
   346
williamr@4
   347
public:
williamr@4
   348
williamr@4
   349
    /**
williamr@4
   350
     * This method can be used to set preferred layout style for navi decorator
williamr@4
   351
     * objects that are pushed into navistack.
williamr@4
   352
     * Given layout is applied to objects only if that object supports it and
williamr@4
   353
     * status pane layout allows that mode to be used.
williamr@4
   354
     *
williamr@4
   355
     * @since 3.1
williamr@4
   356
     *
williamr@4
   357
     * @param aLayoutStyle CAknNavigationDecorator::ENaviControlLayoutNormal,
williamr@4
   358
     *                     CAknNavigationDecorator::ENaviControlLayoutNarrow or
williamr@4
   359
     *                     CAknNavigationDecorator::ENaviControlLayoutWide
williamr@4
   360
     *
williamr@4
   361
     */
williamr@4
   362
    IMPORT_C void SetPreferredNaviDecoratorLayoutStyle( TInt aLayoutStyle );
williamr@4
   363
williamr@4
   364
    /**
williamr@4
   365
     * Static method to return current color scheme.
williamr@4
   366
     * @return Current color scheme value.
williamr@4
   367
     */
williamr@4
   368
    IMPORT_C static TInt ColorScheme();
williamr@4
   369
williamr@4
   370
    /**
williamr@4
   371
     * Used by the UI framework. Notifies context and signal
williamr@4
   372
     * panes wheter navi wipe graphichs is to be drawn or not.
williamr@4
   373
     */
williamr@4
   374
    void NotifyNaviWipeStatusL();
williamr@4
   375
williamr@4
   376
    /**
williamr@4
   377
     * Gets current wipe bitmap for navi pane.
williamr@4
   378
     *
williamr@4
   379
     * @return Wipe bitmap Id
williamr@4
   380
     */
williamr@4
   381
    static TInt CurrentNaviWipeBitmap();
williamr@4
   382
williamr@4
   383
    /**
williamr@4
   384
     * From @c CCoeControl.
williamr@4
   385
     *
williamr@4
   386
     * Handles pointer events
williamr@4
   387
     *
williamr@4
   388
     * @param aPointerEvent The pointer event.
williamr@4
   389
     */
williamr@4
   390
    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
williamr@4
   391
    
williamr@4
   392
    /**
williamr@4
   393
     * Used to notify the navi pane when it goes to background.
williamr@4
   394
     * @internal Used by the UI framework.
williamr@4
   395
     */
williamr@4
   396
    void HandleLosingForeground();
williamr@4
   397
    
williamr@4
   398
    /**
williamr@4
   399
     * Used to notify the navi pane when it gains foreground.
williamr@4
   400
     * @internal Used by the UI framework.
williamr@4
   401
     */
williamr@4
   402
    void HandleGainingForegroundL();
williamr@4
   403
williamr@4
   404
protected: // from CCoeControl
williamr@4
   405
williamr@4
   406
    /**
williamr@4
   407
     * From @c CCoeControl.
williamr@4
   408
     *
williamr@4
   409
     * Handles the size change events.
williamr@4
   410
     */
williamr@4
   411
    IMPORT_C virtual void SizeChanged();
williamr@4
   412
williamr@4
   413
    /**
williamr@4
   414
     * From @c CCoeControl.
williamr@4
   415
     *
williamr@4
   416
     * Handles a change to the control's resources of type @c aType
williamr@4
   417
     * which are shared across the environment, e.g. color scheme change.
williamr@4
   418
     *
williamr@4
   419
     * @param aType Event type.
williamr@4
   420
     */
williamr@4
   421
    IMPORT_C virtual void HandleResourceChange(TInt aType);
williamr@4
   422
williamr@4
   423
    /**
williamr@4
   424
     * From @c CCoeControl.
williamr@4
   425
     *
williamr@4
   426
     * Returns number of controls inside the context pane control.
williamr@4
   427
     *
williamr@4
   428
     * @return Number of component controls.
williamr@4
   429
     */
williamr@4
   430
    IMPORT_C virtual TInt CountComponentControls() const;
williamr@4
   431
williamr@4
   432
    /**
williamr@4
   433
     * From @c CCoeControl.
williamr@4
   434
     *
williamr@4
   435
     * Returns a control determined by control id.
williamr@4
   436
     *
williamr@4
   437
     * @param aIndex Index of a control to be returned.
williamr@4
   438
     * @return Pointer to control.
williamr@4
   439
     */
williamr@4
   440
    IMPORT_C virtual CCoeControl* ComponentControl(TInt aIndex) const;
williamr@4
   441
williamr@4
   442
protected: // from MCoeControlObserver
williamr@4
   443
williamr@4
   444
    /**
williamr@4
   445
     * From @c  MCoeControlObserver.
williamr@4
   446
     *
williamr@4
   447
     * Handles Control event.
williamr@4
   448
     *
williamr@4
   449
     * @param aControl Control that caused the event.
williamr@4
   450
     * @param aEventType Type of the event.
williamr@4
   451
     */
williamr@4
   452
    IMPORT_C void HandleControlEventL(CCoeControl* aControl,
williamr@4
   453
                                      TCoeEvent aEventType);
williamr@4
   454
williamr@4
   455
private: // from CCoeControl
williamr@4
   456
williamr@4
   457
    IMPORT_C virtual void Draw(const TRect& aRect) const;
williamr@4
   458
williamr@4
   459
private:
williamr@4
   460
williamr@4
   461
    /**
williamr@4
   462
    * From CAknControl
williamr@4
   463
    */
williamr@4
   464
    IMPORT_C void* ExtensionInterface( TUid aInterface );
williamr@4
   465
williamr@4
   466
public:
williamr@4
   467
williamr@4
   468
    /**
williamr@4
   469
     * Not used / implemented
williamr@4
   470
     *
williamr@4
   471
     * @deprecated
williamr@4
   472
     *
williamr@4
   473
     * @since S60 3.0
williamr@4
   474
     *
williamr@4
   475
     * @return @c EFalse
williamr@4
   476
     */
williamr@4
   477
    TBool NaviWipeUsed() const;
williamr@4
   478
williamr@4
   479
    /**
williamr@4
   480
     * Gets navi bitmap.
williamr@4
   481
     *
williamr@4
   482
     * @return Bitmap's colour.
williamr@4
   483
     */
williamr@4
   484
    CFbsBitmap* NaviColorBitmap() const;
williamr@4
   485
williamr@4
   486
    /**
williamr@4
   487
     * Not used / implemented
williamr@4
   488
     *
williamr@4
   489
     * @deprecated
williamr@4
   490
     *
williamr@4
   491
     * @since S60 3.0
williamr@4
   492
     */
williamr@4
   493
    static void SetBackgroundContextAttributes( CCoeControl* aControl,
williamr@4
   494
                                                TBool aNaviWipeUsed );
williamr@4
   495
williamr@4
   496
private:
williamr@4
   497
    TBool IsFepOwnedEditorIndicatorControl(
williamr@4
   498
        CAknNavigationDecorator* aDecorator ) const;
williamr@4
   499
williamr@4
   500
    void HandleVisibilityOfNonFepOwnedIndicatorControl(
williamr@4
   501
        CAknNavigationDecorator* aDecorator, TBool aVisible);
williamr@4
   502
williamr@4
   503
    /**
williamr@4
   504
    * Checks wheter default navi wipe bitmap can be drawn to navipane and draws
williamr@4
   505
    * it if it is possible.
williamr@4
   506
    *
williamr@4
   507
    * @since S60 2.6
williamr@4
   508
    * @param aGc Used graphics context.
williamr@4
   509
    * @param aRect Rect of the navipane.
williamr@4
   510
    * @return @c ETrue if draw operation was done, otherwise @c EFalse.
williamr@4
   511
    *
williamr@4
   512
    */
williamr@4
   513
    TBool DrawDefaultNaviWipe(CWindowGc& aGc, const TRect& aRect) const;
williamr@4
   514
williamr@4
   515
    /**
williamr@4
   516
    * Checks wheter default navi solid bitmap can be drawn to navipane and draws
williamr@4
   517
    * it if it is possible.
williamr@4
   518
    *
williamr@4
   519
    * @since S60 2.6
williamr@4
   520
    * @param aGc Used graphics context.
williamr@4
   521
    * @param aRect Rect of the navipane.
williamr@4
   522
    * @return ETrue if draw operation was done, otherwise EFalse.
williamr@4
   523
    *
williamr@4
   524
    */
williamr@4
   525
    TBool DrawDefaultNaviSolid(CWindowGc& aGc, const TRect& aRect) const;
williamr@4
   526
williamr@4
   527
    /**
williamr@4
   528
    * Checks wheter skinned navi wipe bitmap can be drawn to navipane and draws
williamr@4
   529
    * it if it is possible. Also skinned background bitmap is drawn.
williamr@4
   530
    *
williamr@4
   531
    * @since S60 2.6
williamr@4
   532
    * @param aGc Used graphics context.
williamr@4
   533
    * @param aRect Rect of the navipane.
williamr@4
   534
    * @param aSkin Used skin instance.
williamr@4
   535
    * @param aCc Used skin control context.
williamr@4
   536
    * @return ETrue if draw operation was done, otherwise EFalse.
williamr@4
   537
    */
williamr@4
   538
    TBool DrawSkinnedNaviWipe( CWindowGc& aGc,
williamr@4
   539
                               const TRect& aRect,
williamr@4
   540
                               MAknsSkinInstance* aSkin,
williamr@4
   541
                               MAknsControlContext* aCc ) const;
williamr@4
   542
williamr@4
   543
    /**
williamr@4
   544
    * Checks wheter skinned navi solid bitmap can be drawn to navipane and draws
williamr@4
   545
    * it if it is possible. Also skinned background bitmap is drawn.
williamr@4
   546
    *
williamr@4
   547
    * @since S60 2.6
williamr@4
   548
    * @param aGc Used graphics context.
williamr@4
   549
    * @param aRect Rect of the navipane.
williamr@4
   550
    * @param aSkin Used skin instance.
williamr@4
   551
    * @param aCc Used skin control context.
williamr@4
   552
    * @return ETrue if draw operation was done, otherwise EFalse.
williamr@4
   553
    */
williamr@4
   554
    TBool DrawSkinnedNaviSolid( CWindowGc& aGc,
williamr@4
   555
                                const TRect& aRect,
williamr@4
   556
                                MAknsSkinInstance* aSkin,
williamr@4
   557
                                MAknsControlContext* aCc ) const;
williamr@4
   558
williamr@4
   559
    /**
williamr@4
   560
     * Loads a color bitmap for CAknNavigationDecorator.
williamr@4
   561
     * @since S60 2.8
williamr@4
   562
     */
williamr@4
   563
    void LoadNaviColorBitmapL();
williamr@4
   564
williamr@4
   565
    void SetContainerWindowNonFading( TBool aNonFading );
williamr@4
   566
    
williamr@4
   567
    TRect VolumePopupRect();
williamr@4
   568
williamr@4
   569
protected: // from CCoeControl
williamr@4
   570
williamr@4
   571
    /**
williamr@4
   572
     * From @c CCoeControl.
williamr@4
   573
     *
williamr@4
   574
     * Retrieves an object of the same type as that encapsulated in aId.
williamr@4
   575
     *
williamr@4
   576
     * This function is used to allow controls to ask their owners for
williamr@4
   577
     * access to other objects that they own.
williamr@4
   578
     *
williamr@4
   579
     * Other than in the case where NULL is returned, the object returned
williamr@4
   580
     * must be of the same object type - that is, the @c ETypeId member of
williamr@4
   581
     * the object pointed to by the pointer returned by this function must
williamr@4
   582
     * be equal to the @c iUid member of @c aId.
williamr@4
   583
     *
williamr@4
   584
     * @param aId An encapsulated object type ID.
williamr@4
   585
     * @return Encapsulated pointer to the provided object.
williamr@4
   586
     *         Note that the encapsulated pointer may be NULL.
williamr@4
   587
     */
williamr@4
   588
    TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
williamr@4
   589
williamr@4
   590
private:
williamr@4
   591
williamr@4
   592
    CEikStatusPaneBase* iStatusPane;
williamr@4
   593
williamr@4
   594
    CAknNavigationDecorator* iNaviDecoratorFromResource;
williamr@4
   595
williamr@4
   596
    typedef CArrayPtrFlat<CAknNavigationDecorator> CAknNaviPaneStack;
williamr@4
   597
    CAknNaviPaneStack* iNaviPaneControls;
williamr@4
   598
williamr@4
   599
    CFbsBitmap* iNaviArrowBitmap[4];
williamr@4
   600
williamr@4
   601
    TInt  iSpare;
williamr@4
   602
    CAknNavigationControlContainerExtension* iExtension;
williamr@4
   603
    };
williamr@4
   604
williamr@4
   605
#endif // C_AKNNAVI_H