Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
/*
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* 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
* which accompanies this distribution, and is available
* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
// AknView.h
//
// Copyright (c) 1997-2001 Symbian Ltd. All rights reserved.
//
#ifndef AKNVIEW_H
#define AKNVIEW_H
// INCLUDES
#include <babitflags.h>
#include <coecntrl.h>
#include <eikmobs.h>
#include <coeaui.h>
#include <coeview.h>
#include <eikdef.h>
#include <coemop.h>
// FORWARD DECLARATIONS
class CAknViewAppUi;
class CEikStatusPane;
class CEikButtonGroupContainer;
class CAknControlStack;
class CAknViewExtension;
class CAknToolbar;
// CLASS DECLARATION
/**
* This is an abstract base class for a Series 60 application view.
*
* @since Series 60 0.9
*/
class CAknView : public CBase, public MCoeView, public MEikMenuObserver,
public MObjectProvider
{
public:
/**
* Standard constructor.
*/
IMPORT_C CAknView();
/**
* Standard destructor.
*/
IMPORT_C ~CAknView();
/**
* This is a second stage constructor initializing this view with standard
* values. Should be called from derived classes second stage construction
* functions.
* @param aResId The numeric ID of the resource (@c iViewInfo) to be read.
* If aResId=0, resource file is not accessed.
*/
IMPORT_C void BaseConstructL(TInt aResId=0);
/**
* Constructs invisible button group container and menu if they don't exist
* yet. They are placed on the view stack. To be used by views which need
* to access the menu or cba before the view is activated for the first
* time.
*/
IMPORT_C void ConstructMenuAndCbaEarlyL();
/**
* Activate any view in the product. Calls @c CCoeAppUi::ActivateViewL(
* aViewId)
* @param aViewId Identifies the view to activate.
*/
IMPORT_C void ActivateViewL(const TVwsViewId& aViewId);
/**
* Activate any view, then passes the message text @c aCustomMessage of
* type @c aCustomMessageId. Calls @c CCoeAppUi::ActivateViewL(
* aViewId,aCustomMessageId,aCustomMessage)
* @param aViewId Identifies the view to activate.
* @param aCustomMessageId Specifies the message type.
* @param aCustomMessage The message passed to the activated view.
*/
IMPORT_C void ActivateViewL(const TVwsViewId& aViewId,
TUid aCustomMessageId,
const TDesC8& aCustomMessage);
/**
* Returns views id, intended for overriding by sub classes.
* @return id for this view.
*/
IMPORT_C virtual TUid Id() const =0;
/**
* Event handler for status pane size changes.
* @c CAknView provides an empty implementation for sub classes that do
* not want to handle this event.
*/
IMPORT_C virtual void HandleStatusPaneSizeChange();
/**
* From @c MCoeView. The full view Id for this view. Calls @c Id()
* @return View identification number.
*/
IMPORT_C TVwsViewId ViewId() const;
/**
* From @c MEikMenuObserver. This function processes user commands by
* handling @c aCommand values @c EAknSoftkeyOptions, @c EAknCmdExit,
* @c EEikCmdCanceled and passing the others to @c HandleCommandL()
* for sub class to decide the actions.
* @param aCommand ID of the command to respond to.
*/
IMPORT_C virtual void ProcessCommandL(TInt aCommand);
/**
* Command handling function intended for overriding by sub classes.
* Default implementation is empty.
* @param aCommand ID of the command to respond to.
*/
IMPORT_C virtual void HandleCommandL(TInt aCommand);
/**
* Menu bar accessor method. This returns the views menu if available,
* otherwise it returns the applications menu bar.
* @return @c CEikMenuBar pointer to views menu bar.
*/
IMPORT_C virtual CEikMenuBar* MenuBar() const;
/**
* Calculates the client rectangle of the view, taking the applications
* client rectangle and the views CBA into account.
* Calls @c CEikAppUi::ClientRect()
* @return @c TRect the area of the screen available to the application
* for drawing.
*/
IMPORT_C TRect ClientRect() const;
/**
* This function causes the menu bar to disappear from the screen until it
* is invoked again by the user.
* Calls @c CEikAppUi::StopDisplayingMenuBar().
*/
IMPORT_C void StopDisplayingMenuBar();
/**
* Determines whether the application is foreground.
* @return @c ETrue if view is foreground.
*/
IMPORT_C TBool IsForeground() const;
/**
* Called by the framework when view's rectangle changes. The default
* implementation is empty. This function is not used yet.
* @since Series 60 3.0
*/
IMPORT_C virtual void HandleViewRectChange();
/**
* Asks the view to redraw its area. Needs to be implemented only by
* views used in split view architecture. The default implementation is
* empty. This function is not used yet.
* @since Series 60 3.0
*/
IMPORT_C virtual void Redraw() const;
/**
* Avkon view architecture system. Internal use only.
* Calls @c DoActivateL.
*/
IMPORT_C virtual void AknViewActivatedL(const TVwsViewId& aPrevViewId,
TUid aCustomMessageId,
const TDesC8& aCustomMessage);
/**
* Avkon view architecture system. Internal use only. Function is called
* by @c CAknViewAppUi::~CAknViewAppUi() for immediate view deactivation.
* Calls @c DoDeactivate.
*/
void AknViewDeactivated();
/**
* Avkon view architecture system. Internal use only.
*/
void ProcessForegroundEventL(TBool aForeground);
private: // formerly from @c MTopSetMember<CEikMenuBar>
IMPORT_C virtual void Reserved_MtsmPosition();
IMPORT_C virtual void Reserved_MtsmObject();
protected:
/**
* Accessor for the applications user interface as a @c CAknViewAppUi.
* @return Pointer to user interface instance.
*/
IMPORT_C CAknViewAppUi* AppUi() const;
/**
* Status pane accessor method.
* @return Pointer to status pane.
*/
IMPORT_C CEikStatusPane* StatusPane() const;
/**
* Button group container (=CBA) accessor method.
* This returns the views CBA if there is one, and the applications user
* interfaces CBA otherwise.
* @return Pointer to @c CEikButtonGroupContainer.
*/
IMPORT_C CEikButtonGroupContainer* Cba() const;
/**
* Handles a view activation and passes the message of type
* @c aCustomMessageId. This function is intended for overriding by
* sub classes. This function is called by @c AknViewActivatedL().
* Views should not launch waiting or modal notes or dialogs in
* @c DoActivateL.
* @param aPrevViewId Specifies the view previously active.
* @param aCustomMessageId Specifies the message type.
* @param aCustomMessage The activation message.
*/
IMPORT_C virtual void DoActivateL(const TVwsViewId& aPrevViewId,
TUid aCustomMessageId,
const TDesC8& aCustomMessage) = 0;
/**
* View deactivation function intended for overriding by sub classes.
* This function is called by @c AknViewDeactivated().
*/
virtual void DoDeactivate() = 0;
protected: // From MCoeView.
/**
* From @c MCoeView. Takes any action required when this view is activated.
* Handles this view activation event from view server. Calls
* @c CAknViewAppUi::ViewActivatedL()
* @param aPrevViewId Specifies the view previously active.
* @param aCustomMessageId Specifies the message type.
* @param aCustomMessage Activation message.
*/
IMPORT_C void ViewActivatedL(const TVwsViewId& aPrevViewId,
TUid aCustomMessageId,
const TDesC8& aCustomMessage);
/**
* From @c MCoeView. Takes any action that is required following
* deactivation of this view. Handles this view deactivation event from
* viewserver. Calls @c CAknViewAppUi::ViewDeactivated()
*/
IMPORT_C void ViewDeactivated();
/**
* From @c MCoeView. Screen device changed function from viewserver.
* @return TVwsViewIdAndMessage created with default values.
*/
IMPORT_C TVwsViewIdAndMessage ViewScreenDeviceChangedL();
protected: // from MObjectProvider
/**
* From @c MObjectProvider. Gets an (@c MAknsControlContext) object whose
* type is encapsulated by the specified TTypeUid object. Calls
* @c SupplyMopObject( @c TTypeUid aId,
* @c CEikButtonGroupContainer* iCba, @c CEikMenuBar* iMenu ).
* @param aId Encapsulates the @c Uid that identifies the type of object
* required.
* @return Pointer to the @c MAknsControlContext object provided. Note that
* the pointer may be @c NULL.
*/
IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
/**
* From @c MObjectProvider. Gets the parent object provider.
* @return Pointer to the parent object provider (@c MObjectProvider) that
* is @c CAknViewAppUi* iAppUi, or @c NULL.
*/
IMPORT_C MObjectProvider* MopNext();
protected: // From MEikMenuObserver.
/**
* From @c MEikMenuObserver. Menu emphasising or de-emphasising function.
* @c CEikMenuBar objects call this on their observer. Updates the value of
* the flags for the (@c aMenuControl) on the control stack.
* @param aMenuControl The control to be emphasised or de-emphasisied.
* @param aEmphasis @c ETrue to emphasize the menu, @c EFalse to refuse the
* focus.
*/
IMPORT_C virtual void SetEmphasis(CCoeControl* aMenuControl,
TBool aEmphasis);
/**
* From @c MEikMenuObserver. Foreground event handling function intended
* for overriding by sub classes.
* @param aForeground Indicates the required focus state of the control.
*/
IMPORT_C virtual void HandleForegroundEventL(TBool aForeground);
private: // internal functions
void ConstructMenuAndCbaL(TBool aVisible);
/**
* Asserts that extension class object exists.
* @return Extension object.
*/
CAknViewExtension* Extension() const;
public: // new functions
/**
* @since Series 60 3.1
* @return toolbar object.
*/
IMPORT_C CAknToolbar* Toolbar() const;
/**
* This function causes toolbar to be hidden
* @since Series 60 3.1
*/
IMPORT_C void StopDisplayingToolbar();
/**
* Determines if the toolbar of this view is shown when the view is
* activated.
* @since S60 3.2
* @return ETrue if toolbar is shown.
*/
IMPORT_C TBool ToolbarShownOnViewActivation() const;
/**
* Sets toolbar visibility status of this view according to value given.
* The value is used when view is activated.
* @since S60 3.2
* @param aVisible to determine if toolbar should be shown.
*/
IMPORT_C void ShowToolbarOnViewActivation( TBool aVisible );
/**
* Saves toolbar status of this view according to values given.
* The values are used when view is activated.
* @since S60 3.2
* @param aVisible to determine if toolbar should be shown.
* @param aFocused ETrue if toolbar is focused, EFalse if not
*/
void SaveToolbarStatus( TBool aVisible, TBool aFocused );
/**
* Sets new toolbar for the view. Deletes old toolbar. If the old toolbar
* was shown before deleting, then the new toolbar will also be shown.
* @since S60 5.0
* @param aToolbar pointer to new toolbar
*/
IMPORT_C void SetToolbar( CAknToolbar* aToolbar );
/**
* Creates a new toolbar object with the resource id given and sets it for
* the view. Deletes old toolbar. If the old toolbar was shown before
* deleting, then the new toolbar will also be shown.
* @since S60 5.0
* @param aResourceId Resource id of the new toolbar
*/
IMPORT_C void CreateAndSetToolbarL( TInt aResourceId );
protected: // Data
// The follow object is not owned by this class. iCoeEnv is protected in
// keeping with @c CCoeAppUi & @c CCoeControl
CCoeEnv* iCoeEnv;
private:
CAknViewAppUi* iAppUi;
// @c SAknViewInfo is the C++ image of resource structure AVKON_VIEW
struct SAknViewInfo
{
public:
TUint8 iVersion; // resource struct version
TInt iHotKeys; // resource id
TInt iMenu; // resource id
TInt iCba; // resource id
TInt iToolbar; // resource id
TInt iExtension; // resource id
};
// The following member data are owned by this class
SAknViewInfo iViewInfo;
CEikMenuBar* iMenu;
CEikButtonGroupContainer* iCba;
TBitFlags iFlags;
CAknViewExtension* iExtension;
};
#endif // AKNVIEW_H