/*
* Copyright (c) 2006 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 "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  View of WidgetUi application
*
*/


#ifndef WIDGETUIWINDOWVIEW_H_
#define WIDGETUIWINDOWVIEW_H_

//  INCLUDES
#include <aknview.h>
#include <BrCtlInterface.h>

// CONSTANTS

// MACROS

// DATA TYPES

// FUNCTION PROTOTYPES

// FORWARD DECLARATIONS
class CWidgetUiWindowContainer;
class CBrCtlInterface;
class CWidgetUiObserver;
class CWidgetUiWindowManager;
class CAknNavigationDecorator;
class CAknIndicatorContainer;
class CAknNavigationControlContainer;

// CLASS DECLARATION

/**
*  CWidgetUiWindowView
*  @lib resLoader.lib
*  @since 3.1
*/
class CWidgetUiWindowView : public CAknView,
                            public MBrCtlStateChangeObserver
    {
    public:  // Constructors and destructor

        /**
        * NewLC
        * Two-phased constructor.
        * @since 3.1
        * @param aWindowManger
        * @return CWidgetUiWindowView*
        */
        static CWidgetUiWindowView* NewLC( CWidgetUiWindowManager& aWindowManager );

        /**
        * ~CWidgetUiWindowView
        * Destructor
        * @since 3.1
        * @param none
        * @return none
        */
        virtual ~CWidgetUiWindowView();

    public: // new functions

         /**
        * Container
        * @since 3.1
        * @param none
        * @return CWidgetUiWindowContainer*
        */
        CWidgetUiWindowContainer* Container();

        
        /**
        * UpdateStatusPane
        * show/hide the status pane 
        * @since 3.1
        * @param aVisible - ETrue to show; EFalse to hide
        * @return void
        */
        void UpdateStatusPane( TBool aVisible );

        /**
        * CbaGroup
        * @since 3.1
        * @param none
        * @return CEikButtonGroupContainer*
        */
        CEikButtonGroupContainer* CbaGroup() { return Cba(); }

        /**
        * IsOptionsMenuActivated
        * @return ETrue if Options menu loaded, EFalse otherwise
        */
        TBool IsOptionsMenuActivated();
        /**
        * DeActivateOptionsMenu
        * Set Optionsmenu loaded flag to EFalse
        * @return void
        */
        void DeActivateOptionsMenu();
    public: // Functions from base classes

        /**
        * HandleCommandL
        * @since 3.1
        * @param aCommand
        * @return void
        */
        void HandleCommandL( TInt aCommand );

        /**
        * Id
        * @since 3.1
        * @param none
        * @return TUid
        */
        TUid Id() const;
        
        /**
        * Find if the platform supports touch
        * @return ETrue if the platform supports touch, EFalse otherwise
        */
        TBool PenEnabled() { return iPenEnabled; }

    public: // Functions from MEikStatusPaneObserver

        /**
        * HandleStatusPaneSizeChange
        * @since 3.1
        * @param none
        * @return void
        */
        void HandleStatusPaneSizeChange();

    public:     // from MBrCtlStateChangeObserver

        /**
        * State change event handling for disable javascript notification changes.
        * @param aState which state we are in
        * @param aValue state specific value
        * @return void
        */
        void StateChanged( TBrCtlDefs::TBrCtlState aState, TInt aValue );
        
        /**
        * UpdateToolbar in case Orientation is changed
        * @param aShow to define visibility of toolbar
        * @return void
        */        
        void UpdateToolbar(TBool aShow);
        
    private:

        /**
        * CWidgetUiWindowView
        * Constructor
        * @since 3.1
        * @param aWindowManager
        * @return none
        */
        CWidgetUiWindowView( CWidgetUiWindowManager& aWindowManager );

        /**
        * ConstructL
        * EPOC default constructor.
        * By default Symbian 2nd phase constructor is private.
        * @since 3.1
        * @param none
        * @return void
        */
        void ConstructL();

    private: // from CAknView

        /**
        * DynInitMenuPaneL
        * @since 3.1
        * @param aResourceId
        * @param aMenuPane
        * @return void
        */
        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );

        /**
        * DoActivateL
        * @since 3.1
        * @param aPrevViewId
        * @param aCustomMessageId
        * @param aCustomMessage
        * @return void
        */
        void DoActivateL( const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage );

        /**
        * DoDeactivate
        * @since 3.1
        * @param none
        * @return void
        */
        void DoDeactivate();

        /**
        * Redraw
        * @since 3.1
        * @param none
        * @return void
        */
        void Redraw() const;

      private :  // Data

        CWidgetUiWindowContainer*           iContainer;     // Component container owned
        CWidgetUiWindowManager&             iWindowManager; // not owned, not responsible for deleting
        CAknNavigationDecorator*            iNaviDecorator; // owned, responsible for deleting
        CAknIndicatorContainer*             iIndiContainer; // not owned, not responsible for deleting
        CAknNavigationControlContainer*     iNaviCont;
        TBool                               iCbaVisible;
        TBool                               iStatusPaneVisible;
        TBool                               iPenEnabled;
        TBool                               iActivatedObjectVisible; 
		TBool 								iIsOptionsMenuActivated;
  };

#endif // CWidgetUIWINDOWVIEW_H_

// End of File
