--- /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