diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/mw/aknviewappui.h --- a/epoc32/include/mw/aknviewappui.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/mw/aknviewappui.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,325 @@ -aknviewappui.h +/* +* 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: Base class for view architecture-based applications. +* +*/ + +#ifndef __AKNVIEWAPPUI_H__ +#define __AKNVIEWAPPUI_H__ + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class CAknView; +class CAknViewShutter; +class CAknLocalScreenClearer; +class CAknViewAppUiExtension; +class CAknViewNavigator; + +// MACROS +#define iAvkonViewAppUi ((CAknViewAppUi*)CEikonEnv::Static()->EikAppUi()) + +// CLASS DECLARATION + +/** +* Base class for view architecture-based applications. +* +* @since Series 60 0.9 +*/ +class CAknViewAppUi : public CAknAppUi + { +public: + NONSHARABLE_CLASS(CViewActivationItem) : public CBase + { + public: + + /** + * Two-phased constructor. + * @param aNewView Application view. + * @param aCustomMessageId Message ID. + * @param aCustomMessage Message contents. + * @param aPrevViewId The UID of the previously active view. + * @return Pointer to new @c CViewActivationItem object. + */ + static CViewActivationItem* NewLC(CAknView* aNewView, + TUid aCustomMessageId, + const TDesC8& aCustomMessage, + const TVwsViewId& aPrevViewId); + + /** + * Destructor. + */ + ~CViewActivationItem(); + private: + CViewActivationItem(CAknView* aNewView, + TUid aCustomMessageId, + const TVwsViewId& aPrevViewId); + + void ConstructL(const TDesC8& aCustomMessage); + public: + + // Application view. + CAknView* iNewView; + + // Message ID. + TUid iCustomMessageId; + + // Message contents. + HBufC8* iCustomMessage; + + // The UID of the previously active view. + TVwsViewId iPrevViewId; + }; + + /** + * Container class used to hold information about one split view. + */ + NONSHARABLE_CLASS(TAknSplitViewContainer) + { + public: + /** + * Checks is a view is part of the split view. + * @param aViewId UID of the view to be checked. + * @return ETrue if the given view belongs to the split view. + */ + TBool IsPartOf( const TUid aViewId ); + + public: + // view uids + TUid iViewIds[2]; + // ETrue if a view's activation failed + TBool iFailed[2]; + // drawing areas + TRect iViewRect[2]; + // the size of the leftmost view + TInt iLeftViewSize; + }; + + typedef CArrayPtrFlat CAknViewActivationQueue; + typedef CArrayPtrFlat CAknViews; + +public: + + /** + * Initialises this app UI with standard values. + * @param aAppUiFlags Application user interface flags. + */ + IMPORT_C void BaseConstructL(TInt aAppUiFlags=EStandardApp); + + /** + * Destructor. + */ + IMPORT_C virtual ~CAknViewAppUi(); + + /** + * Activates a specified application view, without passing any message. + * The function leaves if activation of the view fails. + * @param aViewId Identifier of the view to activate. + */ + IMPORT_C void ActivateLocalViewL(TUid aViewId); + + /** + * Activates a specified application view, then passes the message text + * descriptor aCustomMessage for a message of type aCustomMessageId. + * The function leaves if activation of the view fails. + * @param aViewId Identifier of the view to activate. + * @param aCustomMessageId Specifies the message type. + * @param aCustomMessage The message passed to the activated view. + */ + IMPORT_C void ActivateLocalViewL(TUid aViewId, + TUid aCustomMessageId, + const TDesC8& aCustomMessage); + + /** + * Gets a pointer to specified application view. + * @param aView ID of the application view. + * @return Pointer to application view object, + * NULL if aView doesn't exists. + */ + IMPORT_C CAknView* View(TUid aView) const; + + /** + * Registers and adds the view to the app UI. + * This function calls @c CCoeAppUi::RegisterViewL. + * @param aView The view to be registered and added. + */ + IMPORT_C void AddViewL(CAknView* aView); // takes ownership of aView + + /** + * Removes and deregisteres the view from the app UI. + * This function calls @c CCoeAppUi::DeregisterView. + * @param aViewId The view to be deregistered and removed. + */ + IMPORT_C void RemoveView(TUid aViewId); + + /** + * Processes user commands. + * @param aCommand A command ID. + */ + IMPORT_C void ProcessCommandL(TInt aCommand); + + /** + * Stops displaying the application’s menu bar. + */ + IMPORT_C void StopDisplayingMenuBar(); + + // Avkon view architecture system. Internal use only. + void ViewActivatedL(CAknView* aView, + const TVwsViewId& aPrevViewId, + TUid aCustomMessageId, + const TDesC8& aCustomMessage); + + void ViewDeactivated(CAknView* aView); + + /** + * Combines two views. If either of the views belongs to another view combination + * then that combination is removed. + * @since Series 60 5.0 + * @param aView1Id UID of the first (leftmost) view. + * @param aView2Id UID of the second view. + * @param aLeftViewSize Size of the first view (in percentages). + */ + IMPORT_C void SetSplitViewL( const TUid aView1Id, const TUid aView2Id, const TInt aLeftViewSize ); + + /** + * Removes a view combination containing the given view UID. If the view + * with the given UID is currently visible then the screen is switched to + * single view and the the given view stays active. + * @since Series 60 5.0 + * @param aViewId UID of a view combination. + */ + IMPORT_C void RemoveSplitViewL( const TUid aViewId ); + + /** + * Checks if split view is in use. + * @since Series 60 5.0 + * @return ETrue if a split view is active. + */ + IMPORT_C TBool SplitViewActive() const; + + /** + * Returns the currently focused view. + * @since Series 60 5.0 + * @return UID of the currently focused view. + */ + IMPORT_C TUid FocusedView() const; + + /** + * Checks if the given view is visible on the screen. + * @since Series 60 5.0 + * @param aViewId View to be checked. + * @return ETrue if the given view is visible. + */ + IMPORT_C TBool ViewShown( const TUid aViewId ) const; + + /** + * Enables/disables local screen clearer. + * Local screen clearer is used in the view based applications + * to clear the application window if/when the view itself fails + * to do this. By default, the clearer is used. + * This function must be called before the BaseConstructL() to + * prevent the screen clearer on application start up. + * + * @since 3.2 + * @param aEnable ETrue enables local screen clearer. + * EFalse disables local screen clearer. + */ + IMPORT_C void EnableLocalScreenClearer( TBool aEnable = ETrue ); + + /** + * Returns view's rectangle. + * @since Series 60 5.0 + * @param aViewId UID of the view whose rectangle should be returned. + * @param Given view's drawing area. + */ + TRect ViewRect( const TUid aViewId ) const; + + /** + * Handles keyboard initiated navigation between visible split views. + * @since Series 60 5.0 + * @param aKeyEvent Keyboard event. + * @param EKeyWasConsumed if view focus was changed. + */ + TKeyResponse HandleViewNavigationL( const TKeyEvent& aKeyEvent ); + +protected: + + /** + * From @c MEikStatusPaneObserver. Handles a change in the position or + * size of the screen area occupied by the status pane. + */ + IMPORT_C void HandleStatusPaneSizeChange(); + + /** + * From @c CCoeAppUi. Handles changes in keyboard focus when + * an application switches to foreground. + * @param aForeground @c ETrue if the application is in the foreground, + * otherwise @c EFalse. + */ + IMPORT_C void HandleForegroundEventL(TBool aForeground); + + /** + * From AknAppUi. Handles pointer-initiated view switch. Currently this + * function does nothing but calls base class function. + * @since Series 60 3.0 + * @param aEvent Window server event. + * @param aDestination Pointer to the control which the event is targeted to. + */ + IMPORT_C void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination ); + +private: + static TInt ActivationCallBack(TAny* aThis); + void ActivationTick(); + void QueueActivationTick(); + + /** + * Asserts that extension object has been created. + * @return Extension object. + */ + CAknViewAppUiExtension* Extension() const; + + /** + * Activates views in split view. + * @since Series 60 5.0 + * @param View under activation. + */ + void ActivateSplitViewL( CViewActivationItem* aItem ); + + /** + * If the given view is part of a split view then returns that split view, + * @since Series 60 5.0 + * @param aViewId UID of a view that belongs to a split view. + * @return Pointer to a correct split view or NULL if no corresponding split view was found. + */ + TAknSplitViewContainer* SplitView( const TUid aViewId ) const; + +protected: + + // Application view. + CAknView* iView; + + // Application views. + CAknViews* iViews; + +private: + CAknViewShutter* iShutter; + CAknLocalScreenClearer* iClearer; + CAknViewActivationQueue* iActivationQueue; + CIdle* iActivationTick; + // extension class + CAknViewAppUiExtension* iExtension; + }; + +#endif // __AKNVIEWAPPUI_H__