widgets/widgetapp/inc/WidgetUiObserver.h
changeset 0 dd21522fd290
child 1 7c90e6132015
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/widgets/widgetapp/inc/WidgetUiObserver.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,325 @@
+/*
+* 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: 
+*
+*/
+
+
+#ifndef WIDGETUIOBSERVER_H_
+#define WIDGETUIOBSERVER_H_
+
+//  INCLUDES
+#include <BrCtlLayoutObserver.h>
+#include <BrCtlSoftkeysObserver.h>
+#include <BrCtlSpecialLoadObserver.h>
+#include <BrCtlDownloadObserver.h>
+#include <BrCtlWindowObserver.h>
+#include <BrCtlInterface.h>
+#include <DocumentHandler.h>
+#include <flogger.h>
+
+// FORWARD DECLARATIONS
+class CActiveApDb;
+class CWidgetUiWindow;
+
+// CLASS DECLARATION
+
+/**
+*
+*  @lib WidgetUI.exe
+*  @since 3.1
+*/
+class CWidgetUiObserver : public CBase,
+                       public MBrCtlLayoutObserver,     // not needed
+                       public MBrCtlSoftkeysObserver,   // needed
+                       public MBrCtlLoadEventObserver,  // needed
+                       public MBrCtlLinkResolver,       // needed
+                       public MBrCtlDownloadObserver,   // not needed
+                       public MBrCtlWindowObserver      // needed
+    {
+
+    public:  // Constructors and destructor
+
+        /**
+        * NewL
+        * Two-phased constructor.
+        * @since 3.1
+        * @param none
+        * @return CWidgetUiObserver*
+        */
+        static CWidgetUiObserver* NewL( CWidgetUiWindow& aWindow );
+
+        /**
+        * ~CWidgetUiObserver
+        * Destructor
+        * @since 3.1
+        * @param none
+        * @return none
+        */
+        ~CWidgetUiObserver();
+
+
+        /**
+        * UpdateBrowserVScrollBarL
+        * Update the position of vertical scrollbar.
+        * @since 3.1
+        * @param aDocumentHeight The total height of the markup page
+        * @param aDisplayHeight The height of the display
+        * @param aDisplayPosY The current Y position
+        * @return void
+        */
+        void UpdateBrowserVScrollBarL( TInt aDocumentHeight,
+                                       TInt aDisplayHeight,
+                                       TInt aDisplayPosY );
+
+        /**
+        * UpdateBrowserHScrollBarL
+        * Update the position of horizontal scrollbar.
+        * @since 3.1
+        * @param aDocumentWidth The total width of the markup page
+        * @param aDisplayWidth The width of the display
+        * @param aDisplayPosX The current X position
+        * @return void
+        */
+        void UpdateBrowserHScrollBarL( TInt aDocumentWidth,
+                                       TInt aDisplayWidth,
+                                       TInt aDisplayPosX );
+
+        /**
+        * NotifyLayoutChange
+        * Inform the layout of the page: right to left or left to right. Useful when the application draws the scrollbar itself.
+        * @since 3.1
+        * @param aNewLayout RTL or LTR
+        * @return void
+        */
+        void NotifyLayoutChange( TBrCtlLayout aNewLayout );
+
+        /**
+        * UpdateTitleL
+        * Update the title of the page in history view
+        * @since 3.1
+        * @param aTitle Title of the page
+        * @return void
+        */
+        void UpdateTitleL( const TDesC& aTitle );
+
+        /**
+        * UpdateSoftkeyL
+        * WidgetUi Control requests to update a softkey
+        * @since 3.1
+        * @param aKeySoftkey Update the left softkey or the right softkey
+        * @param aLabel The label associated with the softkey update
+        * @param aCommandId The command to use if the softkey is selected by the user
+        * @param aBrCtlSoftkeyChangeReason The reason for the softkey change
+        * @return void
+        */
+        void UpdateSoftkeyL( TBrCtlKeySoftkey aKeySoftkey,
+                             const TDesC& aLabel,
+                             TUint32 aCommandId,
+                             TBrCtlSoftkeyChangeReason aBrCtlSoftkeyChangeReason);
+
+        /**
+        * HandleBrowserLoadEventL
+        * A load events notification
+        * @since 3.1
+        * @param aLoadEvent The load event
+        * @param aSize Size depends on the event
+        * @param aTransactionId The transaction id of the transaction that had this event
+        * @return void
+        */
+        void HandleBrowserLoadEventL( TBrCtlDefs::TBrCtlLoadEvent aLoadEvent,
+                                      TUint aSize, TUint16 aTransactionId );
+
+        /**
+        * ResolveEmbeddedLinkL
+        * WidgetUi plug-in calls this method when embedded link is found. Used with ECapabilityClientResolveEmbeddedURL
+        * @since 3.1
+        * @param aEmbeddedUrl The url of the embedded content
+        * @param aCurrentUrl The url of the current page
+        * @param aLoadContentType The expected type of the embedded content
+        * @param aEmbeddedLinkContent a callback interface to return the embedded content
+        * @return EFalse, WidgetUI will resolve the link
+        */
+        TBool ResolveEmbeddedLinkL( const TDesC& aEmbeddedUrl,
+                                    const TDesC& aCurrentUrl,
+                                    TBrCtlLoadContentType aLoadContentType,
+                                    MBrCtlLinkContent& aEmbeddedLinkContent );
+
+        /**
+        * ResolveLinkL
+        * WidgetUi plug-in calls this method when the user requests to load content via selecting a link, or any other way. Used with ECapabilityClientNotifyURL
+        * @since 3.1
+        * @param aUrl The requested url
+        * @param aCurrentUrl The url of the current page
+        * @param aBrCtlLinkContent a callback interface to return the embedded content
+        * @return EFalse, WidgetUi will resolve the link
+        */
+        TBool ResolveLinkL( const TDesC& aUrl, const TDesC& aCurrentUrl,
+                            MBrCtlLinkContent& aBrCtlLinkContent );
+
+        /**
+        * CancelAll
+        * Cancel all outstanding resolving operations
+        * @since 3.1
+        * @param none
+        * @return void
+        */
+        void CancelAll() ;
+
+        /**
+        * NewDownloadL
+        * Inform the host application that a new download has started using the Download Manager
+        * @since 3.1
+        * @param aTransactionID The ID of the transaction, it is unique as long as the transaction is on-going
+        * @param aFileName The name of file in which the content is stored/
+        * @param aContentType The content type of the downloaded content
+        * @param aUrl The Url of the request to be done in the new window
+        * @return ETrue if the file is handled progressively, EFalse otherwise
+        */
+        TBool NewDownloadL( TUint aTransactionID,
+                            const TDesC& aFileName,
+                            const TDesC& aContentType,
+                            const TDesC& aUrl );
+
+        /**
+        * ResumeDownloadL
+        * Inform the host application that a new download has started using the Download Manager
+        * @since 3.1
+        * @param aTransactionID The ID of the transaction, it is unique as long as the transaction is on-going
+        * @param aFileName The name of file in which the content is stored/
+        * @param aContentType The content type of the downloaded content
+        * @param aUrl The Url of the request to be done in the new window
+        * @return Return ETrue if the file is handled progressively, EFalse otherwise
+        */
+        virtual void ResumeDownloadL( TUint /*aTransactionID*/,
+                                      TUint /*aLength*/,
+                                      const TDesC& /*aFileName*/,
+                                      const TDesC& /*aContentType*/,
+                                      const TDesC& /*aUrl*/ ) { }
+        /**
+        * HandleDownloadEventL
+        * Inform the host application of a progress event related to a download
+        * @since 3.1
+        * @param aTransactionID The ID of the transaction, it is unique as long as the transaction is on-going
+        * @param aDownloadEvent The event to be reported
+        * @param aValue The value depends on the event
+        * @return void
+        */
+        void HandleDownloadEventL( TUint aTransactionID,
+                                   TBrCtlDownloadEvent aDownloadEvent,
+                                   TUint aValue );
+
+    public: // From MBrCtlWindowObserver
+    
+        
+        CBrCtlInterface* OpenWindowL(TDesC& aUrl, TDesC* aTargetName, TBool aUserInitiated, 
+             TAny* aReserved);
+
+        /**
+        * Find a window by target name
+        * @since 3.0
+        * @param aTargetName name of the window to find
+        * @return Return Value is the browser control associated with the window name
+        */
+        CBrCtlInterface* FindWindowL( const TDesC& aTargetName ) const;             
+
+        /**
+        * Handle window events such as close/focus etc
+        * @since 3.0
+        * @param aTargetName name of the window to send the event to
+        * @param aCommand Command to pass to the window
+        * @return void
+        */
+        void HandleWindowCommandL( const TDesC& aTargetName, TBrCtlWindowCommand aCommand );
+        
+    private:
+
+        /**
+        * CWidgetUiObserver
+        * Construtor
+        * @since 3.1
+        * @param aWindowManager
+        * @return none
+        */
+        CWidgetUiObserver( CWidgetUiWindow& aWindow );
+
+        /**
+        * ConstructL
+        * EPOC default constructor.
+        * By default Symbian 2nd phase constructor is private.
+        * @since 3.1
+        * @param none
+        * @return void
+        */
+        void ConstructL();
+
+        /**
+        * IsFileScheme
+        * Find if the scheme is file://
+        * @since 3.1
+        * @param aFilename
+        * @return TBool
+        */
+        TBool IsFileScheme( const TDesC& aFileName );
+
+        /**
+        * ReadFileL
+        * Read the file
+        * @since 3.1
+        * @param aFileName
+        * @return HBufC*
+        */
+        HBufC8* ReadFileL( const TDesC& aFileName);
+
+        /**
+        * RecognizeLC
+        * Rcognize the mime type.
+        * @since 3.1
+        * @param aFileName
+        * @param aData
+        * @return HBufC*
+        */
+        HBufC* RecognizeLC( const TDesC& aFileName, const TDesC8& aData );
+
+        /**
+        * TranslateURLToFilenameL
+        * Translate the file name from a URL to a valid file name in the system..
+        * @since 3.1
+        * @param aFileName
+        * @return TBool
+        */
+        TBool TranslateURLToFilenameL( const TDesC& aFileName, const TDesC& aLanguageDir  );
+
+    private:   // data
+
+        CWidgetUiWindow* iWindow; // not owned, not responsible for deleting
+#ifdef _DEBUG
+        RFileLogger             iFileLogger;
+        TBool                   iCanLog;
+#endif
+        // The loaded file's name. This is different from the URL. It does not contain the scheme.
+        HBufC*                  iFileName;
+
+        CDocumentHandler*       iHandler;
+        TBool                   iConnected;
+        TFileName               iAppPrivatePath;
+        HBufC*                  iSoftkeyExitStr;
+        HBufC*                  iLeftSoftkeyStr;
+        //Active Object to collect bitmap
+        CIdle* iCollectBitmapTimer;
+    };
+
+#endif      // WIDGEUIOBSERVER_H
+
+// End of File