emailuis/emailui/inc/FreestyleEmailUiHtmlViewerContainer.h
changeset 0 8466d47a6819
child 1 12c456ceeff2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/inc/FreestyleEmailUiHtmlViewerContainer.h	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,175 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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:  CFsEmailUiHtmlViewerContainer class definition
+*
+*/
+ 
+
+
+#ifndef __FREESTYLEEMAILUI_HTML_VIEWER_CONTAINER_H__
+#define __FREESTYLEEMAILUI_HTML_VIEWER_CONTAINER_H__
+
+
+#include <coecntrl.h>
+#include <BrCtlSpecialLoadObserver.h>
+#include <BrCtlLinkResolver.h>
+
+#include "FreestyleEmailDownloadInformationMediator.h"
+
+class CFSMailMessage;
+class CFreestyleEmailUiAppUi;
+class CFreestyleMessageHeaderURLEventHandler;
+
+/**
+ * Html viewer container.
+ */
+class CFsEmailUiHtmlViewerContainer : public CCoeControl,
+                                      public MBrCtlSpecialLoadObserver,
+                                      public MBrCtlLinkResolver,
+                                      public MBrCtlSoftkeysObserver,
+                                      public MFSEmailDownloadInformationObserver
+    {
+public:
+
+    /** Two-phased constructor. */
+    static CFsEmailUiHtmlViewerContainer* NewL( CFreestyleEmailUiAppUi& aAppUi,
+        CFsEmailUiHtmlViewerView& aView );
+    /** Destrcutor. */
+    ~CFsEmailUiHtmlViewerContainer();
+
+    CBrCtlInterface* BrowserControlIf();
+    void LoadContentFromFileL( const TDesC& aFileName );
+    void LoadContentFromFileL( RFile& aFile );
+    void LoadContentFromUrlL( const TDesC& aUrl );
+    void LoadContentFromMailMessageL( CFSMailMessage* aMailMessage );
+    void ResetContent();
+    void CancelFetch();
+    void ClearCacheAndLoadEmptyContent();
+    // <cmail>
+    void PrepareForExit();
+    // </cmail>
+    
+// from base class CCoeControl
+
+    CCoeControl* ComponentControl( TInt aIndex ) const;
+    TInt CountComponentControls() const;
+    void Draw( const TRect& aRect ) const;
+    void SizeChanged();
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+// from base class MBrCtlSpecialLoadObserver
+
+    void NetworkConnectionNeededL( TInt* aConnectionPtr, TInt* aSockSvrHandle,
+        TBool* aNewConn, TApBearerType* aBearerType );
+    TBool HandleRequestL( RArray<TUint>* aTypeArray, CDesCArrayFlat* aDesArray );
+    TBool HandleDownloadL( RArray<TUint>* aTypeArray, CDesCArrayFlat* aDesArray );
+
+// from base class MFSEmailDownloadInformationObserver
+
+    void RequestResponseL( const TFSProgress& aEvent, const TPartData& aPart );
+
+// from base class MBrCtlLinkResolver
+
+    TBool ResolveEmbeddedLinkL( const TDesC& aEmbeddedUrl,
+        const TDesC& aCurrentUrl, TBrCtlLoadContentType aLoadContentType, 
+        MBrCtlLinkContent& aEmbeddedLinkContent ); 
+    TBool ResolveLinkL( const TDesC& aUrl, const TDesC& aCurrentUrl,
+        MBrCtlLinkContent& aBrCtlLinkContent );
+    void CancelAll();
+
+// from base class MBrCtlSoftkeysObserver
+
+    void UpdateSoftkeyL( TBrCtlKeySoftkey aKeySoftkey, const TDesC& aLabel,
+        TUint32 aCommandId, TBrCtlSoftkeyChangeReason aBrCtlSoftkeyChangeReason );
+    void StopObserving();
+private:
+
+    // Second phase constructor.
+    void ConstructL();
+    // C++ constructor.
+    CFsEmailUiHtmlViewerContainer( CFreestyleEmailUiAppUi& aAppUi,
+        CFsEmailUiHtmlViewerView& aView );
+
+    // Set HTML folder path name
+    void SetHtmlFolderPathL();
+    // Sets temporary HTML folder path name
+    void SetTempHtmlFolderPath();
+    // Remove all previously created files from temporary HTML folder
+    void EmptyTempHtmlFolderL();
+    // Copies given file to temporary HTML folder and returns an open file
+    // handle to the created copy.
+// <cmail>
+    void CopyFileToHtmlFileL( RFile& aFile, const TDesC& aFileName, CFSMailMessagePart& aHtmlBodyPart );
+    // Reads given file content to buffer and return pointer to it
+    HBufC8* ReadContentFromFileLC( RFile& aFile );
+    // Writes buffer to given file
+    void WriteContentToFileL( const TDesC8& aContent, const TDesC& aFileName, CFSMailMessagePart& aHtmlBodyPart );
+// </cmail>
+    // Finds the attachment from the list that matches the given content ID 
+    CFSMailMessagePart* MatchingAttacmentL( const TDesC& aContentId,
+        const RPointerArray<CFSMailMessagePart>& aAttachments ) const;
+    // Resolves embedded link referring to file in temporary HTML folder
+    TBool ResolveLinkL( const TDesC& aLink, TBool aContentId,
+        MBrCtlLinkContent& aEmbeddedLinkContent );
+    // Downloads and return attachment content via MBrCtlLinkContent interface
+    void DownloadAttachmentL( CFSMailMessagePart& aAttachment,
+        MBrCtlLinkContent& aEmbeddedLinkContent );
+    
+    void SetHTMLResourceFlagFullName();
+    void EnableHTMLResourceFlagL();
+    TBool HTMLResourceFlagEnabled();
+    void CopyHTMLResourceL();
+    // Ensure all resource files (eg. images) required by HTML display to be ready in C:\[private]\HtmlFile
+    void EnsureHTMLResourceL(); 
+    void ConvertPlainTextToHTML(CFSMailMessagePart* aTextBodyPart, RFile htmlFile);
+    void CopyFileToHtmlFileL( const TDesC8& aBuffer,
+            const TDesC& aFileName, CFSMailMessagePart& aHtmlBodyPart );
+    void ConvertToHTML( const TDesC8& aContent,
+            const TDesC& aFileName, CFSMailMessagePart& aHtmlBodyPart );
+    HBufC8* GetCharacterSetL( CFSMailMessagePart& aHtmlBodyPart );
+    
+
+private: // data
+
+    // Reference to AppUi.
+    CFreestyleEmailUiAppUi& iAppUi;
+    // Reference to Html viewer view.
+    CFsEmailUiHtmlViewerView& iView;
+    // Browser control interface. Own.
+    CBrCtlInterface* iBrCtlInterface;
+    // Message. Not own.
+    CFSMailMessage*  iMessage;
+    RFile            iFile;
+    RFs              iFs;
+    RSocketServ      iSocketServer;
+    RConnection      iConnection;
+    TBool            iFirstTime;
+    
+    // HTML folder path.
+    TPath iHtmlFolderPath;
+    // Temporary HTML folder path.
+    TPath iTempHtmlFolderPath;
+    // HTML resource flag file path
+    TPath iHtmlResourceFlagPath;
+    
+    // Interfaces waiting for embedded link content.
+    RPointerArray<MBrCtlLinkContent> iLinkContents;
+    // Message parts being downloaded as embedded link content.
+    RArray<TPartData> iMessageParts;
+    CFreestyleMessageHeaderURLEventHandler* iEventHandler;
+    TBool iObservingDownload;
+    };
+
+
+#endif // __FREESTYLEEMAILUI_HTML_VIEWER_CONTAINER_H__