meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrviewerattachmentfield.h
branchRCL_3
changeset 12 4ce476e64c59
child 16 b5fbb9b25d57
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrviewerattachmentfield.h	Wed Mar 31 21:08:33 2010 +0300
@@ -0,0 +1,131 @@
+/*
+* Copyright (c) 2009 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:  MR Attachment field for editor and viewer
+ *
+*/
+
+
+#ifndef CMRVIEWERATTACHMENTSFIELD_H
+#define CMRVIEWERATTACHMENTSFIELD_H
+
+#include <e32base.h>
+#include <eikedwob.h>
+
+#include "esmrdef.h"
+#include "cesmrfield.h"
+#include "cesmrrichtextviewer.h"
+
+// Forward declarations
+class CMRImage;
+class CEikButtonGroupContainer;
+class CAknsBasicBackgroundControlContext;
+class CESMRRichTextViewer;
+class CCalAttachment;
+class CMRAttachmentCommandHandler;
+class CCalRemoteAttachmentApi;
+class CCalRemoteAttachmentInfo;
+class MCalRemoteAttachmentOperation;
+
+/**
+ * CMRViewerAttachmentsField is entry viewer attachment field
+ */
+NONSHARABLE_CLASS( CMRViewerAttachmentsField ): 
+        public CESMRField,
+        public MEikEdwinSizeObserver,
+        public MESMRRichTextObserver
+    {
+public:
+    /**
+     * Two phase constructor.
+     */
+    static CMRViewerAttachmentsField* NewL();
+
+    /**
+     * Destructor.
+     */
+    ~CMRViewerAttachmentsField();
+
+protected: // From CESMRField
+    TSize MinimumSize();
+    void InitializeL();
+    void InternalizeL( MESMRCalEntry& aEntry );
+    void ExternalizeL( MESMRCalEntry& aEntry );
+    TBool ExecuteGenericCommandL( TInt aCommand );
+    void SetOutlineFocusL( TBool aFocus );
+    void ListObserverSet();
+    void HandleLongtapEventL( const TPoint& aPosition );
+    TBool HandleRawPointerEventL( const TPointerEvent& aPointerEvent );
+    void DynInitMenuPaneL(
+                 TInt aResourceId,
+                 CEikMenuPane* aMenuPane );
+    void LockL();
+    
+protected: // From CCoeControl
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl( TInt aInd ) const;
+    void SizeChanged();
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+    void SetContainerWindowL( const CCoeControl& aControl );
+    
+protected: // From MEikEdwinSizeObserver
+    TBool HandleEdwinSizeEventL( CEikEdwin* aEdwin, TEdwinSizeEvent aType, TSize aDesirableEdwinSize);
+    
+public: // From MESMRRichTextObserver
+    TBool HandleRichTextLinkSelection( const CESMRRichTextLink* aLink );
+    
+private: // Implementation
+    CMRViewerAttachmentsField();
+    void ConstructL();
+
+    void UpdateAttachmentsListL();
+    HBufC* ClipTextLC( const TDesC& aText, const CFont& aFont, TInt aWidth );
+    void UpdateFieldL();
+    HBufC* AttachmentNameAndSizeL( const TDesC& aDes, const CCalAttachment& aAttachment );
+    TInt LineSpacing();
+    TInt FocusMargin();
+    void CreateRemoteAttApiL();
+    void DynInitMenuPaneForCurrentAttachmentL(
+                 CEikMenuPane* aMenuPane );
+    TBool IsAttachmentDownloadInProgress( const CCalAttachment& aAttachment );
+    
+private: //data
+    // Own: Field icon
+    CMRImage* iFieldIcon;
+    /// Own: Lock icon
+    CMRImage* iLockIcon;
+    // Owned. Attachment list.
+    CESMRRichTextViewer* iRichTextViewer;
+    // Not owned. CBA.
+    CEikButtonGroupContainer* iButtonGroupContainer;
+    // Own. Background control context.
+    CAknsBasicBackgroundControlContext* iBgCtrlContext;
+    // Attachment count
+    TInt iAttachmentCount;
+    /// Ref: Reference to internalized entry
+    MESMRCalEntry* iEntry;
+    // Field rect for comparison purposes
+    TRect iFieldRect;
+    // Rich Text viewer size
+    TSize iRichTextSize;
+    /// Own: Attachment command handler
+    CMRAttachmentCommandHandler* iAttachmentCommandHandler;
+    /// Own: Remote attachment API
+    CCalRemoteAttachmentApi* iRemoteAttApi;
+    /// Own: Remote attachment URIs
+    CDesCArrayFlat* iRemoteAttUris;
+    /// Own: Remote attachment info
+    CCalRemoteAttachmentInfo* iAttachmentInfo;
+    };
+
+#endif  // CMRATTACHMENTSFIELD_H