widgets/widgetapp/inc/WidgetUiWindow.h
changeset 0 dd21522fd290
child 10 a359256acfc6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/widgets/widgetapp/inc/WidgetUiWindow.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,527 @@
+/*
+* Copyright (c) 2006, 2008 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: 
+*
+*/
+
+
+#ifndef WIDGETUIWINDOW_H_
+#define WIDGETUIWINDOW_H_
+
+// INCLUDES FILES
+#include <e32base.h>
+#include <BrCtlDefs.h>
+#include <BrCtlInterface.h> // for MWidgetCallback
+#include <AknServerApp.h>
+#include <coecntrl.h>
+#include "WidgetUiObserver.h"
+
+// CONSTANTS
+enum TWidgetAccessGrant
+    {
+    EInvalid,
+    EDeny,
+    EAllow
+    };
+    
+enum TMiniViewState
+    {
+    EMiniViewNotEnabled = 0,
+    EMiniViewEnabled,
+    EPublishStart,
+    EPublishSuspend
+    };
+struct TWidgetState
+    {
+    TBool               iFullViewState; //  full view or not
+    enum TMiniViewState iMiniViewState;
+    };
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CWidgetUiWindowManager;
+class CWidgetUiObserver;
+class CWidgetUiDialogsProviderProxy;
+class CPeriodic;
+class CEikButtonGroupContainer;
+class CCpsPublisher;
+class CFbsBitmap;
+class CSchemeHandler;
+class CBrCtlInterface;
+
+// CLASS DECLARATION
+
+/**
+*
+*
+*  @lib WidgetUi.app
+*  @since Series 60 3.0
+*/
+class CWidgetUiWindow :  public CBase, 
+                    public MWidgetCallback, 
+                    public MBrCtlSpecialLoadObserver,
+                    public MAknServerAppExitObserver
+    {
+    public:
+
+        /**
+        * OpenWindowL
+        * @since 3.1
+        * @param aWindowManager
+        * @param aUid 
+        * @param aCpsPublisher
+        * @return CBrCtlInterface*
+        */
+        static CWidgetUiWindow* OpenWindowL( CWidgetUiWindowManager& aWindowManager,
+                                           const TUid& aUid, CCpsPublisher* aCpsPublisher );
+
+        /**
+        * ~CWidgetUiWindow
+        * Destructor
+        * @since 3.1
+        * @param none
+        * @return none
+        */
+        virtual ~CWidgetUiWindow();
+
+    public: // from MWidgetCallback
+
+        /**
+        * DialogMimeFileSelectLC
+        * Navigates through your file system and selects a file of specific mime type;
+        * analogous to the Browse command in Windows.
+        * @since 3.1
+        * @param aSelectedFileName The selected file name.
+        * @param aMimeType The accepted mime type.
+        * @return ETrue if the user selected a file
+        * EFalse if the user cancelled the transaction and did not select a file.
+        * @attention Returned on cleanup stack. Browser control will free the buffer.
+        */
+        TBool DialogMimeFileSelectLC(HBufC*& aSelectedFileName,
+                                 const TDesC& aMimeType);
+
+       /**
+        * Called to show or hide softkeys
+        * @since 3.1
+        * @param aVisible ETrue to show softkeys, EFalse when full screen is needed
+        */
+        void SetSoftkeysVisible(TBool aVisible);
+
+        /**
+        * Called to change the display orientation to landscape
+        * @since 3.1
+        */
+        void SetDisplayMode(TBrCtlDefs::TBrCtlOrientation aOrientation);
+
+        virtual TInt Reserved_1(TAny*& /*a0*/, TAny* /*a1*/, TAny* /*a2*/) { return 0; }
+        virtual TInt Reserved_2(TAny*& /*a0*/, TAny* /*a1*/, TAny* /*a2*/) { return 0; }
+        virtual TInt Reserved_3(TAny*& /*a0*/, TAny* /*a1*/, TAny* /*a2*/) { return 0; }
+        virtual TInt Reserved_4(TAny*& /*a0*/, TAny* /*a1*/, TAny* /*a2*/) { return 0; }
+        virtual TInt Reserved_5(TAny*& /*a0*/, TAny* /*a1*/, TAny* /*a2*/) { return 0; }
+        virtual TInt Reserved_6(TAny*& /*a0*/, TAny* /*a1*/, TAny* /*a2*/) { return 0; }
+        virtual TInt Reserved_7(TAny*& /*a0*/, TAny* /*a1*/, TAny* /*a2*/) { return 0; }
+        virtual TInt Reserved_8(TAny*& /*a0*/, TAny* /*a1*/, TAny* /*a2*/) { return 0; }
+        virtual TInt Reserved_9(TAny*& /*a0*/, TAny* /*a1*/, TAny* /*a2*/) { return 0; }
+        virtual TInt Reserved_10(TAny*& /*a0*/, TAny* /*a1*/, TAny* /*a2*/) { return 0; }
+    public:  // MBrCtlSpecialLoadObserver
+        /**
+       * NetworkConnectionNeededL
+       * Request to create a network connection.
+       * @since 3.1
+       * @param aConnectionPtr A pointer to the new connection. If NULL, the proxy filter will automatically create a network connection
+       * @param aSockSvrHandle A handle to the socket server.
+       * @param aNewConn A flag if a new connection was created. If the connection is not new, proxy filter optimization will not read the proxy again from CommsBd
+       * @param aBearerType The bearer type of the new connection
+       * @return void
+       */
+        void NetworkConnectionNeededL( TInt* aConnectionPtr,
+                                           TInt* aSockSvrHandle,
+                                           TBool* aNewConn,
+                                           TApBearerType* aBearerType ) ;
+
+        /**
+       * ConnectionManagement
+       * Setup connection based on browser settings
+       * @since 
+       * @return void
+       */
+        void ConnectionManagement();
+
+        /**
+       * StartNetworkConnectionL
+       * Start new connection
+       * @param aNewConn A flag if a new connection was created. If the connection is not new, proxy filter optimization will not read the proxy again from CommsBd
+       * @since 
+       * @return void
+       */
+        void StartNetworkConnectionL(TBool* aNewConn);
+
+        /**
+       * HandleRequestL
+       * Request the host applicaion to handle non-http request.
+       * @since 3.1
+       * @param aTypeArray array of download parameter types
+       * @param aDesArray array of values associated with the types in the type array
+       * @return ETrue is handled by the host application. EFlase if not
+       */
+        TBool HandleRequestL( RArray<TUint>* aTypeArray, CDesCArrayFlat* aDesArray );
+
+        TBool HandleDownloadL(RArray<TUint>* aTypeArray, CDesCArrayFlat* aDesArray);
+
+        /**
+       * DoHandleRequestL
+       * Request the host applicaion to handle non-http request.
+       * @since 3.1
+       * @param aTypeArray array of download parameter types
+       * @param aDesArray array of values associated with the types in the type array
+       * @return ETrue is handled by the host application. EFlase if not
+       */
+        TBool DoHandleRequestL(RArray<TUint>* aTypeArray, CDesCArrayFlat* aDesArray );
+
+        /**
+       * Extract the given BrCtl parameter from the list.
+       * @param aParamTypeToFind Extract this parameter.
+       * @param aTypeArray array of download parameter types.
+       * @param aDesArray array of values associated with the types in the type array.
+       * @param aParamFound Output: ETrue if the parameter was found.
+       * @return A TPtrC pointer for the value.
+       * @since 2.8
+       */
+        TPtrC ExtractBrCtlParam( TUint aParamTypeToFind,
+                          RArray<TUint>* aTypeArray,
+                          CDesCArrayFlat* aDesArray,
+                          TBool& aParamFound ) const;
+
+       /**
+       * Make generic parameter list from BrCtl parameter list.
+       * @param aTypeArray array of download parameter types
+       * @param aDesArray array of values associated with the types in the type array
+       * @return The dynamically allocated list.
+       */
+        CAiwGenericParamList* BrCtlParamList2GenericParamListL( 
+                                             RArray<TUint>* aTypeArray, 
+                                             CDesCArrayFlat* aDesArray ) const; 
+		
+    public: //MAknServerAppExitObserver
+
+        void HandleServerAppExit( TInt aReason );
+
+
+    public:  // new functions
+
+        /**
+        * Engine
+        * @since 3.1
+        * @param none
+        * @return CBrCtlInterface*
+        */
+        CBrCtlInterface* Engine() const { return iEngine; }
+
+        /**
+        * CbaGroup
+        * @since 3.1
+        * @param none
+        * @return CEikButtonGroupContainer*
+        */
+        CEikButtonGroupContainer* CbaGroup();
+
+
+        /**
+        * WidgetExtension
+        * @since 3.1
+        * @param none
+        * @return MWidgetExtension*
+        */
+        MWidgetExtension* WidgetExtension() const { return iWidgetExtension; }
+
+        /**
+        * ReloadWidget
+        * Reload the current widget main html page.
+        * @3.1
+        * @return void
+        */
+        void ReloadWidget();
+
+        /**
+        * Url
+        * Return the  main html page url of current widget.
+        * @3.1
+        * @return pointer to Url but does not transfer ownership
+        */
+       HBufC* Url() { return iUrl; }
+
+        /**
+        * Path
+        * Return the path of current widget.
+        * @3.1
+        * @return pointer to WidgetPath but does not transfer ownership
+        */
+       HBufC* WidgetPath() { return iWidgetPath; }
+
+        /**
+        * Path
+        * Return the bundle id of current widget.
+        * @3.1
+        * @return pointer to WidgetByndleId but does not transfer ownership
+        */
+       HBufC* WidgetBundleId() { return iWidgetBundleId; }
+
+       /**
+        * UId
+        * Return the UId of current widget.
+        * @3.1
+        * @return UId
+        */
+       TUid Uid() const { return iUid; }
+
+       /**
+        * NetworkAccessGrant
+        * Return network access grant.
+        * @since 3.1
+        * @return network access grant
+        */
+       TWidgetAccessGrant NetworkAccessGrant() const { return iNetworkAccessGrant; }
+
+       /**
+        * SetNetworkAccessGrant
+        * Set network access grant.
+        * @since 3.1
+        * @return void
+        */
+       void SetNetworkAccessGrant( TWidgetAccessGrant aGrant )
+         { iNetworkAccessGrant = aGrant; }
+
+        /**
+        * Called to change the label of the right or left softkey
+        * @since 3.1
+        * @param aKeySoftkey softkey top change
+        * @param aText label for right softkey
+        */
+        void SetSoftKeyLabelL( TBrCtlKeySoftkey aKeySoftkey, const TDesC& aText);
+
+       /**
+        * Relayout
+        * relayout display to preferred orientation
+        * @since 3.1
+        * @return void
+        */
+       void Relayout( );
+
+       /**
+        * SetCurrentWindow
+        * sets the current window active or non-current window inactive
+        * @since 3.1
+        * @return void
+        */
+       void SetCurrentWindow( TBool aCurrent );
+       
+       /**
+        * WindowManager
+        * returns pointer to window manager
+        * @since 3.1
+        * @return CWidgetUiWindowManager*
+        */
+       CWidgetUiWindowManager& WindowManager( ) { return iWindowManager; }
+
+       /**
+        * SetWidgetLoaded
+        * notification that widget has finished loading
+        * @since 5.0
+        * @return none
+        */
+        void SetWidgetLoaded( TBool aWidgetLoaded );
+        
+        /**
+        * GetBundleName
+        * Gets the Bundle name for Uid
+        * @since 5.0
+        * @return none
+        */
+        void GetBundleName(TPtr& aBundleName );
+
+         /**
+        * PublishSnapShot
+        * Publishes offscreen bitmap to CPS
+        * @since 5.0
+        * @return none
+        */
+        void PublishSnapShot();
+
+        /**
+        * HasMiniviewL
+        * Checks registry value whethre miniview is supporetd or not
+        * @since 5.0
+        * @return TBool
+        */
+        TBool HasMiniviewL();
+
+        /**
+        * WidgetMiniViewState
+        * returns miniview state
+        * @since 5.0
+        * @return TMiniViewState
+        */
+        TMiniViewState WidgetMiniViewState() const;
+
+        /**
+        * SetWindowStateFullView
+        * Sets	widget is started in full view or not
+        * @since 5.0
+        * @return none
+        */
+        void SetWindowStateFullView( TBool aWidgetFullViewState);
+		
+        /**
+        * SetWindowStateMiniView
+        * Sets	miniview state
+        * @since 5.0
+        * @return none
+        */
+        void SetWindowStateMiniViewL( TMiniViewState aWidgetMiniViewState);
+
+        /**
+        * WidgetFullViewState
+        * Get whhether widget is started in fullView or not
+        * @since 5.0
+        * @return none
+        */
+        TBool WidgetFullViewState() const;
+
+        /**
+        * SetIsCurrentWindow
+        * Sets IsCurrent window so that when window is launched next time
+        * foreground background set is done properly
+        * @since 5.0
+        * @return none
+        */
+        void SetIsCurrentWindow(TBool aIsCurrent){ iIsCurrent = aIsCurrent;}
+
+        /** 
+        * GetBlanketPromptDisplayed 
+        * Get whether blanketprompt is displayed 
+        * @since 5.0 
+        * @return TBool 
+        */                 
+        TBool GetBlanketPromptDisplayed(){ return iBlanketPromptDisplayed;}   
+         
+        /** 
+        * SetBlanketPermissionDisplayed 
+        * Sets  Blanket Permission Prompt when displayed 
+        * @since 5.0 
+        * @return none 
+        */               
+        void SetBlanketPromptDisplayed(TBool aBlanketPromptDisplayed){ iBlanketPromptDisplayed = aBlanketPromptDisplayed;}          
+ 		                 
+        
+    protected:
+
+        /**
+        * CWidgetUiWindow
+        * Construtor
+        * @since 3.1
+        * @param aWindowManger
+        * @param aCpsPublisher
+        * @return none
+        */
+        CWidgetUiWindow( CWidgetUiWindowManager& aWindowManager, CCpsPublisher* aCpsPublisher );
+
+        /**
+        * ConstructL
+        * EPOC default constructor.
+        * By default Symbian 2nd phase constructor is private.
+        * @since 3.1
+        * @param none
+        * @return void
+        */
+        void ConstructL( const TUid& aUid );
+
+    private:
+        /**
+        * UpdateCba
+        * @since 3.1
+        * @return none
+        */
+        void UpdateCba( );
+        
+        /**
+        * SetSoftKeyImageL
+        * @since 3.1
+        * @param aCommand
+        * @param aFilename
+        * @return none
+        */
+        void SetSoftKeyImageL(const TInt aCommand, const TDesC& aFilename);
+        
+        /**
+         * Constructs the publisher identifier
+         * @since 5.1
+         */
+        HBufC* WidgetIdAndNameLC();
+        
+        /**
+        * NetworkSecurityCheckL
+        * Prompts for network access
+        * @since 
+        * @return void
+        */
+        void NetworkSecurityCheckL();
+
+        /**
+        * CheckNetworkAccessL
+        * Checks widget registry values for whether widget is allowed network access
+        * @since 
+        * @return TBool
+        */
+        TBool CheckNetworkAccessL();
+       
+    private:
+        CWidgetUiObserver*              iWidgetUiObserver;  // owned, responsible for deleting
+        CWidgetUiWindowManager&         iWindowManager;
+
+        CWidgetUiDialogsProviderProxy*  iWidgetUiDialogsProviderProxy; // owned, responsible for deleting
+        HBufC*                          iUrl;               // owned, responsible for deleting
+        CBrCtlInterface*                iEngine;            // owned, responsible for deleting
+        MWidgetExtension*               iWidgetExtension;
+        CSchemeHandler*                 iSchemeHandler;     // Own. handles links to mailto etc
+        TUid                            iUid;
+        TWidgetAccessGrant              iNetworkAccessGrant;
+        HBufC*                          iWidgetPath;        // owned, responsible for deleting
+        HBufC*                          iWidgetBundleId;    // owned, responsible for deleting
+
+        TBrCtlDefs::TBrCtlOrientation   iPreferredOrientation;
+        TBool                           iIsCurrent;
+        TBool                           iShowSoftkeys;
+        HBufC*                          iRightSoftKeyLabel; // owned- copy of latest right softkey label
+        HBufC*                          iLeftSoftKeyLabel; // owned- copy of latest left softkey label
+        TBool                           iWidgetLoaded;
+        TBool                           iPenEnabled; // For touch
+        TInt                            iCount;
+        TWidgetState                    iWidgetWindowState;
+        TBool                           iSchemeProcessing;
+        // Interface to publish bitmap
+        CCpsPublisher*                  iCpsPublisher;
+        
+        //Download transaction ID
+        long                            iDlId;
+        TBool                           iBlanketPromptDisplayed;         
+   };
+
+#endif  //
+
+// End of file