meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrattachmentsfield.h
branchRCL_3
changeset 33 da5135c61bad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrattachmentsfield.h	Wed Mar 31 21:08:33 2010 +0300
@@ -0,0 +1,127 @@
+/*
+* 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 CMRATTACHMENTSFIELD_H
+#define CMRATTACHMENTSFIELD_H
+
+#include <e32base.h>
+#include <eikedwob.h>
+
+#include "esmrdef.h"
+#include "cesmrfield.h"
+#include "cesmrrichtextviewer.h"
+#include "cmrattachmentui.h"
+
+// Forward declarations
+class CEikButtonGroupContainer;
+class MESMRMeetingRequestEntry;
+class CMRLabel;
+class CAknsBasicBackgroundControlContext;
+class CMRImage;
+class CESMRRichTextViewer;
+class CCalAttachment;
+class CMRAttachmentUi;
+class CMRAttachmentCommandHandler;
+
+NONSHARABLE_CLASS( CMRAttachmentsField ): public CESMRField,
+                                          public MEikEdwinSizeObserver,
+                                          public MESMRRichTextObserver,
+                                          public MMRAttachmentUiObserver
+
+    {
+public:
+    /**
+     * Two phase constructor.
+     */
+    static CMRAttachmentsField* NewL();
+
+    /**
+     * Destructor.
+     */
+    ~CMRAttachmentsField();
+
+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();
+    TBool HandleSingletapEventL( const TPoint& aPosition );
+    void HandleLongtapEventL( const TPoint& aPosition );
+    TBool HandleRawPointerEventL( const TPointerEvent& aPointerEvent );
+    void DynInitMenuPaneL(
+                 TInt aResourceId,
+                 CEikMenuPane* aMenuPane );    
+
+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 );
+    
+public: // From MMRAttachmentUiObserver
+    void AttachmentOperationCompleted( MDesC16Array& aArray );
+    
+private: // Implementation
+
+    CMRAttachmentsField();
+    void ConstructL();
+
+    void UpdateAttachmentsListL();
+    HBufC* ClipTextLC( const TDesC& aText, const CFont& aFont, TInt aWidth );
+    void UpdateFieldL();
+    HBufC* AttachmentNameAndSizeL( const TDesC& aDes, const CCalAttachment& aAttachment );
+    TBool AddAttachmentL();
+    TInt LineSpacing();
+    TInt FocusMargin();
+    
+private: //data
+    // Own: Title of this field
+    CMRLabel* iTitle;
+    // Own: Field icon
+    CMRImage* iFieldIcon;
+    // Owned. Attendee editor.
+    CESMRRichTextViewer* iRichTextViewer;
+    // Not owned. CBA.
+    CEikButtonGroupContainer* iButtonGroupContainer;
+    // Own. Background control context.
+    CAknsBasicBackgroundControlContext* iBgCtrlContext;
+    // Attachment count
+    TInt iAttachmentCount;
+    /// Own: Attachment ui for adding attachments
+    CMRAttachmentUi* iAttachmentUi;
+    /// 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* iAttCommandHandler;
+    };
+
+#endif  // CMRATTACHMENTSFIELD_H