epoc32/include/mw/aknview.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
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@2
     1
/*
williamr@2
     2
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     3
* All rights reserved.
williamr@2
     4
* This component and the accompanying materials are made available
williamr@4
     5
* under the terms of "Eclipse Public License v1.0"
williamr@2
     6
* which accompanies this distribution, and is available
williamr@4
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.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
// AknView.h
williamr@2
    19
//
williamr@2
    20
// Copyright (c) 1997-2001 Symbian Ltd.  All rights reserved.
williamr@2
    21
//
williamr@2
    22
williamr@2
    23
#ifndef AKNVIEW_H
williamr@2
    24
#define AKNVIEW_H
williamr@2
    25
williamr@2
    26
//  INCLUDES
williamr@2
    27
#include <babitflags.h>
williamr@2
    28
#include <coecntrl.h>
williamr@2
    29
#include <eikmobs.h>
williamr@2
    30
#include <coeaui.h>
williamr@2
    31
#include <coeview.h>
williamr@2
    32
#include <eikdef.h>
williamr@2
    33
#include <coemop.h>
williamr@2
    34
williamr@2
    35
// FORWARD DECLARATIONS
williamr@2
    36
class CAknViewAppUi;
williamr@2
    37
class CEikStatusPane;
williamr@2
    38
class CEikButtonGroupContainer;
williamr@2
    39
class CAknControlStack;
williamr@2
    40
class CAknViewExtension;
williamr@2
    41
class CAknToolbar;
williamr@2
    42
williamr@2
    43
// CLASS DECLARATION
williamr@2
    44
williamr@2
    45
/**
williamr@2
    46
 * This is an abstract base class for a Series 60 application view.
williamr@2
    47
 *
williamr@2
    48
 * @since Series 60 0.9
williamr@2
    49
 */
williamr@2
    50
class CAknView : public CBase, public MCoeView, public MEikMenuObserver, 
williamr@2
    51
                public MObjectProvider
williamr@2
    52
	{
williamr@2
    53
public:
williamr@2
    54
williamr@2
    55
    /** 
williamr@2
    56
     * Standard constructor.
williamr@2
    57
     */
williamr@2
    58
	IMPORT_C CAknView();
williamr@2
    59
williamr@2
    60
    /** 
williamr@2
    61
     * Standard destructor.
williamr@2
    62
     */	
williamr@2
    63
	IMPORT_C ~CAknView();
williamr@2
    64
williamr@2
    65
    /** 
williamr@2
    66
     * This is a second stage constructor initializing this view with standard 
williamr@2
    67
     * values. Should be called from derived classes second stage construction
williamr@2
    68
     * functions.  
williamr@2
    69
     * @param aResId The numeric ID of the resource (@c iViewInfo) to be read. 
williamr@2
    70
     *        If aResId=0, resource file is not accessed.
williamr@2
    71
     */
williamr@2
    72
	IMPORT_C void BaseConstructL(TInt aResId=0);
williamr@2
    73
	
williamr@2
    74
    /** 
williamr@2
    75
     * Constructs invisible button group container and menu if they don't exist
williamr@2
    76
     * yet. They are placed on the view stack. To be used by views which need 
williamr@2
    77
     * to access the menu or cba before the view is activated for the first 
williamr@2
    78
     * time.
williamr@2
    79
     */	
williamr@2
    80
	IMPORT_C void ConstructMenuAndCbaEarlyL();		
williamr@2
    81
williamr@2
    82
    /** 
williamr@2
    83
     * Activate any view in the product. Calls @c CCoeAppUi::ActivateViewL(
williamr@2
    84
     * aViewId)
williamr@2
    85
     * @param aViewId Identifies the view to activate.
williamr@2
    86
     */
williamr@2
    87
	IMPORT_C void ActivateViewL(const TVwsViewId& aViewId);
williamr@2
    88
williamr@2
    89
    /** 
williamr@2
    90
     * Activate any view, then passes the message text @c aCustomMessage of 
williamr@2
    91
     * type @c aCustomMessageId. Calls @c CCoeAppUi::ActivateViewL(
williamr@2
    92
     * aViewId,aCustomMessageId,aCustomMessage) 
williamr@2
    93
     * @param aViewId Identifies the view to activate.
williamr@2
    94
     * @param aCustomMessageId Specifies the message type.
williamr@2
    95
     * @param aCustomMessage The message passed to the activated view.
williamr@2
    96
     */
williamr@2
    97
	IMPORT_C void ActivateViewL(const TVwsViewId& aViewId,
williamr@2
    98
	                            TUid aCustomMessageId,
williamr@2
    99
	                            const TDesC8& aCustomMessage);
williamr@2
   100
williamr@2
   101
    /**
williamr@2
   102
    * Returns views id, intended for overriding by sub classes.
williamr@2
   103
    * @return id for this view.
williamr@2
   104
    */
williamr@2
   105
	IMPORT_C virtual TUid Id() const =0;
williamr@2
   106
williamr@2
   107
    /** 
williamr@2
   108
     * Event handler for status pane size changes.
williamr@2
   109
     * @c CAknView provides an empty implementation for sub classes that do 
williamr@2
   110
     * not want to handle this event.
williamr@2
   111
     */
williamr@2
   112
	IMPORT_C virtual void HandleStatusPaneSizeChange();
williamr@2
   113
williamr@2
   114
    /** 
williamr@2
   115
     * From @c MCoeView. The full view Id for this view. Calls @c Id()
williamr@2
   116
     * @return View identification number.
williamr@2
   117
     */
williamr@2
   118
	IMPORT_C TVwsViewId ViewId() const;
williamr@2
   119
williamr@2
   120
	/** 
williamr@2
   121
     * From @c MEikMenuObserver. This function processes user commands by 
williamr@2
   122
     * handling @c aCommand values @c EAknSoftkeyOptions, @c EAknCmdExit, 
williamr@2
   123
     * @c EEikCmdCanceled and passing the others to @c HandleCommandL() 
williamr@2
   124
     * for sub class to decide the actions.  
williamr@2
   125
     * @param aCommand ID of the command to respond to. 
williamr@2
   126
     */	 
williamr@2
   127
	IMPORT_C virtual void ProcessCommandL(TInt aCommand);
williamr@2
   128
williamr@2
   129
    /** 
williamr@2
   130
     * Command handling function intended for overriding by sub classes. 
williamr@2
   131
     * Default implementation is empty.  
williamr@2
   132
     * @param aCommand ID of the command to respond to. 
williamr@2
   133
     */
williamr@2
   134
	IMPORT_C virtual void HandleCommandL(TInt aCommand);
williamr@2
   135
williamr@2
   136
    /** 
williamr@2
   137
     * Menu bar accessor method. This returns the views menu if available, 
williamr@2
   138
     * otherwise it returns the applications menu bar.
williamr@2
   139
     * @return  @c CEikMenuBar pointer to views menu bar.
williamr@2
   140
     */
williamr@2
   141
	IMPORT_C virtual CEikMenuBar* MenuBar() const;
williamr@2
   142
williamr@2
   143
	/** 
williamr@2
   144
     * Calculates the client rectangle of the view, taking the applications 
williamr@2
   145
     * client rectangle and the views CBA into account.
williamr@2
   146
     * Calls @c CEikAppUi::ClientRect() 
williamr@2
   147
     * @return @c TRect the area of the screen available to the application 
williamr@2
   148
     *          for drawing.
williamr@2
   149
     */
williamr@2
   150
	IMPORT_C TRect ClientRect() const;
williamr@2
   151
williamr@2
   152
    /** 
williamr@2
   153
     * This function causes the menu bar to disappear from the screen until it
williamr@2
   154
     * is invoked again by the user.
williamr@2
   155
     * Calls @c CEikAppUi::StopDisplayingMenuBar().
williamr@2
   156
     */
williamr@2
   157
	IMPORT_C void StopDisplayingMenuBar();
williamr@2
   158
williamr@2
   159
    /** 
williamr@2
   160
     * Determines whether the application is foreground. 
williamr@2
   161
     * @return @c ETrue if view is foreground.
williamr@2
   162
     */
williamr@2
   163
	IMPORT_C TBool IsForeground() const;
williamr@2
   164
williamr@2
   165
    /**
williamr@2
   166
    * Called by the framework when view's rectangle changes. The default
williamr@2
   167
    * implementation is empty. This function is not used yet.
williamr@2
   168
    * @since Series 60 3.0
williamr@2
   169
    */
williamr@2
   170
    IMPORT_C virtual void HandleViewRectChange();
williamr@2
   171
	
williamr@2
   172
    /**
williamr@2
   173
    * Asks the view to redraw its area. Needs to be implemented only by
williamr@2
   174
    * views used in split view architecture. The default implementation is
williamr@2
   175
    * empty. This function is not used yet.
williamr@2
   176
    * @since Series 60 3.0
williamr@2
   177
    */
williamr@2
   178
    IMPORT_C virtual void Redraw() const;
williamr@2
   179
williamr@2
   180
williamr@2
   181
    /** 
williamr@2
   182
     * Avkon view architecture system. Internal use only.
williamr@2
   183
     * Calls @c DoActivateL.
williamr@2
   184
     */	 
williamr@2
   185
	IMPORT_C virtual void AknViewActivatedL(const TVwsViewId& aPrevViewId,
williamr@2
   186
	                                        TUid aCustomMessageId,
williamr@2
   187
	                                        const TDesC8& aCustomMessage);
williamr@2
   188
williamr@2
   189
    /** 
williamr@2
   190
     * Avkon view architecture system. Internal use only. Function is called 
williamr@2
   191
     * by @c CAknViewAppUi::~CAknViewAppUi() for immediate view deactivation. 
williamr@2
   192
     * Calls @c DoDeactivate.     
williamr@2
   193
     */  
williamr@2
   194
	void AknViewDeactivated();
williamr@2
   195
williamr@2
   196
    /** 
williamr@2
   197
     * Avkon view architecture system. Internal use only.
williamr@2
   198
     */ 
williamr@2
   199
	void ProcessForegroundEventL(TBool aForeground);
williamr@2
   200
williamr@2
   201
private: // formerly from @c MTopSetMember<CEikMenuBar>
williamr@2
   202
	IMPORT_C virtual void Reserved_MtsmPosition();
williamr@2
   203
	IMPORT_C virtual void Reserved_MtsmObject();
williamr@2
   204
williamr@2
   205
protected:
williamr@2
   206
williamr@2
   207
    /** 
williamr@2
   208
     * Accessor for the applications user interface as a @c CAknViewAppUi.
williamr@2
   209
     * @return Pointer to user interface instance.
williamr@2
   210
     */
williamr@2
   211
	IMPORT_C CAknViewAppUi* AppUi() const;
williamr@2
   212
williamr@2
   213
    /** 
williamr@2
   214
     * Status pane accessor method.
williamr@2
   215
     * @return Pointer to status pane. 
williamr@2
   216
     */
williamr@2
   217
	IMPORT_C CEikStatusPane* StatusPane() const;
williamr@2
   218
williamr@2
   219
    /** 
williamr@2
   220
     * Button group container (=CBA) accessor method. 
williamr@2
   221
     * This returns the views CBA if there is one, and the applications user 
williamr@2
   222
     * interfaces CBA otherwise.
williamr@2
   223
     * @return Pointer to @c CEikButtonGroupContainer.
williamr@2
   224
     */
williamr@2
   225
	IMPORT_C CEikButtonGroupContainer* Cba() const;
williamr@2
   226
williamr@2
   227
    /** 
williamr@2
   228
     * Handles a view activation and passes the message of type 
williamr@2
   229
     * @c aCustomMessageId. This function is intended for overriding by 
williamr@2
   230
     * sub classes. This function is called by @c AknViewActivatedL().
williamr@2
   231
     * Views should not launch waiting or modal notes or dialogs in
williamr@2
   232
     * @c DoActivateL.
williamr@2
   233
     * @param aPrevViewId Specifies the view previously active.
williamr@2
   234
     * @param aCustomMessageId Specifies the message type.
williamr@2
   235
     * @param aCustomMessage The activation message.
williamr@2
   236
     */
williamr@2
   237
	IMPORT_C virtual void DoActivateL(const TVwsViewId& aPrevViewId,
williamr@2
   238
	                                  TUid aCustomMessageId,
williamr@2
   239
	                                  const TDesC8& aCustomMessage) = 0;
williamr@2
   240
williamr@2
   241
    /** 
williamr@2
   242
     * View deactivation function intended for overriding by sub classes. 
williamr@2
   243
     * This function is called by @c AknViewDeactivated().
williamr@2
   244
     */
williamr@2
   245
	virtual void DoDeactivate() = 0;
williamr@2
   246
williamr@2
   247
protected: // From MCoeView.
williamr@2
   248
williamr@2
   249
    /** 
williamr@2
   250
     * From @c MCoeView. Takes any action required when this view is activated.
williamr@2
   251
     * Handles this view activation event from view server. Calls 
williamr@2
   252
     * @c CAknViewAppUi::ViewActivatedL()
williamr@2
   253
     * @param aPrevViewId Specifies the view previously active.
williamr@2
   254
     * @param aCustomMessageId Specifies the message type.
williamr@2
   255
     * @param aCustomMessage Activation message.
williamr@2
   256
     */
williamr@2
   257
	IMPORT_C void ViewActivatedL(const TVwsViewId& aPrevViewId,
williamr@2
   258
	                             TUid aCustomMessageId,
williamr@2
   259
	                             const TDesC8& aCustomMessage);
williamr@2
   260
williamr@2
   261
    /** 
williamr@2
   262
     * From @c MCoeView. Takes any action that is required following 
williamr@2
   263
     * deactivation of this view. Handles this view deactivation event from
williamr@2
   264
     * viewserver. Calls @c CAknViewAppUi::ViewDeactivated()
williamr@2
   265
     */
williamr@2
   266
	IMPORT_C void ViewDeactivated();
williamr@2
   267
williamr@2
   268
    /** 
williamr@2
   269
     * From @c MCoeView. Screen device changed function from viewserver.
williamr@2
   270
     * @return TVwsViewIdAndMessage created with default values.
williamr@2
   271
     */
williamr@2
   272
	IMPORT_C TVwsViewIdAndMessage ViewScreenDeviceChangedL();
williamr@2
   273
williamr@2
   274
protected: // from MObjectProvider
williamr@2
   275
williamr@2
   276
    /** 
williamr@2
   277
     * From @c MObjectProvider. Gets an (@c MAknsControlContext) object whose 
williamr@2
   278
     * type is encapsulated by the specified TTypeUid object. Calls 
williamr@2
   279
     * @c SupplyMopObject( @c TTypeUid aId, 
williamr@2
   280
     *      @c CEikButtonGroupContainer* iCba, @c CEikMenuBar* iMenu ). 
williamr@2
   281
     * @param aId Encapsulates the @c Uid that identifies the type of object 
williamr@2
   282
     *         required. 
williamr@2
   283
     * @return Pointer to the @c MAknsControlContext object provided. Note that
williamr@2
   284
     *          the pointer may be @c NULL. 
williamr@2
   285
     */
williamr@2
   286
	IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
williamr@2
   287
williamr@2
   288
    /** 
williamr@2
   289
     * From @c MObjectProvider. Gets the parent object provider.   
williamr@2
   290
     * @return Pointer to the parent object provider (@c MObjectProvider) that
williamr@2
   291
     *          is @c CAknViewAppUi* iAppUi, or @c NULL.
williamr@2
   292
     */
williamr@2
   293
	IMPORT_C MObjectProvider* MopNext();
williamr@2
   294
williamr@2
   295
protected: // From MEikMenuObserver.
williamr@2
   296
williamr@2
   297
    /** 
williamr@2
   298
     * From @c MEikMenuObserver. Menu emphasising or de-emphasising function. 
williamr@2
   299
     * @c CEikMenuBar objects call this on their observer. Updates the value of
williamr@2
   300
     * the flags for the (@c aMenuControl) on the control stack. 
williamr@2
   301
     * @param aMenuControl The control to be emphasised or de-emphasisied.
williamr@2
   302
     * @param aEmphasis @c ETrue to emphasize the menu, @c EFalse to refuse the
williamr@2
   303
     *          focus.
williamr@2
   304
     */
williamr@2
   305
	IMPORT_C virtual void SetEmphasis(CCoeControl* aMenuControl,
williamr@2
   306
	                                  TBool aEmphasis);
williamr@2
   307
williamr@2
   308
    /** 
williamr@2
   309
     * From @c MEikMenuObserver. Foreground event handling function intended 
williamr@2
   310
     * for overriding by sub classes.  
williamr@2
   311
     * @param aForeground Indicates the required focus state of the control.
williamr@2
   312
     */	
williamr@2
   313
	IMPORT_C virtual void HandleForegroundEventL(TBool aForeground);
williamr@2
   314
williamr@2
   315
private: // internal functions
williamr@2
   316
	void ConstructMenuAndCbaL(TBool aVisible);
williamr@2
   317
williamr@2
   318
	/**
williamr@2
   319
	* Asserts that extension class object exists.
williamr@2
   320
	* @return Extension object.
williamr@2
   321
	*/
williamr@2
   322
	CAknViewExtension* Extension() const;
williamr@2
   323
	
williamr@2
   324
public: // new functions
williamr@2
   325
williamr@2
   326
    /**
williamr@2
   327
	* @since Series 60 3.1
williamr@2
   328
	* @return toolbar object.
williamr@2
   329
	*/
williamr@2
   330
	IMPORT_C CAknToolbar* Toolbar() const;
williamr@2
   331
	
williamr@2
   332
	/** 
williamr@2
   333
     * This function causes toolbar to be hidden
williamr@2
   334
     * @since Series 60 3.1
williamr@2
   335
     */
williamr@2
   336
	IMPORT_C void StopDisplayingToolbar();
williamr@2
   337
    
williamr@2
   338
    /** 
williamr@2
   339
     * Determines if the toolbar of this view is shown when the view is 
williamr@2
   340
     * activated. 
williamr@2
   341
     * @since S60 3.2
williamr@2
   342
     * @return ETrue if toolbar is shown. 
williamr@2
   343
     */
williamr@2
   344
    IMPORT_C TBool ToolbarShownOnViewActivation() const; 
williamr@2
   345
 
williamr@2
   346
    /** 
williamr@2
   347
     * Sets toolbar visibility status of this view according to value given. 
williamr@2
   348
     * The value is used when view is activated. 
williamr@2
   349
     * @since S60 3.2
williamr@2
   350
     * @param aVisible to determine if toolbar should be shown. 
williamr@2
   351
     */
williamr@2
   352
    IMPORT_C void ShowToolbarOnViewActivation( TBool aVisible ); 
williamr@2
   353
williamr@2
   354
    /** 
williamr@2
   355
     * Saves toolbar status of this view according to values given. 
williamr@2
   356
     * The values are used when view is activated. 
williamr@2
   357
     * @since S60 3.2
williamr@2
   358
     * @param aVisible to determine if toolbar should be shown. 
williamr@2
   359
     * @param aFocused ETrue if toolbar is focused, EFalse if not
williamr@2
   360
     */
williamr@2
   361
    void SaveToolbarStatus( TBool aVisible, TBool aFocused ); 
williamr@2
   362
williamr@2
   363
    /** 
williamr@2
   364
     * Sets new toolbar for the view. Deletes old toolbar. If the old toolbar 
williamr@2
   365
     * was shown before deleting, then the new toolbar will also be shown.
williamr@2
   366
     * @since S60 5.0
williamr@2
   367
     * @param aToolbar pointer to new toolbar
williamr@2
   368
     */
williamr@2
   369
    IMPORT_C void SetToolbar( CAknToolbar* aToolbar ); 
williamr@2
   370
williamr@2
   371
    /** 
williamr@2
   372
     * Creates a new toolbar object with the resource id given and sets it for
williamr@2
   373
     * the view. Deletes old toolbar. If the old toolbar was shown before
williamr@2
   374
     * deleting, then the new toolbar will also be shown.  
williamr@2
   375
     * @since S60 5.0
williamr@2
   376
     * @param aResourceId Resource id of the new toolbar
williamr@2
   377
     */
williamr@2
   378
    IMPORT_C void CreateAndSetToolbarL( TInt aResourceId ); 
williamr@2
   379
williamr@2
   380
		
williamr@2
   381
protected:  // Data
williamr@2
   382
	// The follow object is not owned by this class. iCoeEnv is protected in 
williamr@2
   383
	// keeping with @c CCoeAppUi & @c CCoeControl
williamr@2
   384
	CCoeEnv* iCoeEnv;
williamr@2
   385
williamr@2
   386
private:
williamr@2
   387
	CAknViewAppUi* iAppUi;
williamr@2
   388
williamr@2
   389
	// @c SAknViewInfo is the C++ image of resource structure AVKON_VIEW
williamr@2
   390
	struct SAknViewInfo
williamr@2
   391
		{
williamr@2
   392
	public:
williamr@2
   393
        TUint8 iVersion;    // resource struct version
williamr@2
   394
		TInt iHotKeys;		// resource id
williamr@2
   395
		TInt iMenu;			// resource id
williamr@2
   396
		TInt iCba;			// resource id
williamr@2
   397
        TInt iToolbar;      // resource id
williamr@2
   398
        TInt iExtension;    // resource id
williamr@2
   399
		};
williamr@2
   400
williamr@2
   401
	// The following member data are owned by this class
williamr@2
   402
	SAknViewInfo iViewInfo;
williamr@2
   403
	CEikMenuBar* iMenu;
williamr@2
   404
	CEikButtonGroupContainer* iCba;
williamr@2
   405
	TBitFlags iFlags;
williamr@2
   406
    CAknViewExtension* iExtension;
williamr@2
   407
	};
williamr@2
   408
williamr@2
   409
#endif      // AKNVIEW_H