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