--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/unieditor/utils/inc/UniBaseHeader.h Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,336 @@
+/*
+* Copyright (c) 2005-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: Unified Message Editor base header.
+*
+*/
+
+
+
+#ifndef C_UNIBASEHEADER_H
+#define C_UNIBASEHEADER_H
+
+// INCLUDES
+#include <MsgEditorView.h>
+#include <MsgEditor.hrh> // TMsgControlId
+#include <MsgAddressControl.h>
+#include <MsgAttachmentControl.h>
+#include <cmsvrecipientlist.h>
+#include <unimodelconst.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+class CMsgExpandableControl;
+class CUniAddressHandler;
+class CMsgBaseControl;
+class CMsgEditorAppUi;
+class CBaseMtm;
+
+// CLASS DECLARATION
+
+// ==========================================================
+
+/**
+* Unified Editor Base Header class declaration.
+* Class provides common services for editor and viewer header classes.
+*
+* @lib UniUtils.lib
+*
+* @since S60 3.2
+*/
+class CUniBaseHeader : public CBase
+ {
+ public: // Constructor and destructor
+
+ enum THeaderFields
+ {
+ EHeaderAddressFrom = 0,
+ EHeaderAddressTo,
+ EHeaderAddressCc,
+ EHeaderAddressBcc,
+ EHeaderSubject,
+ EHeaderAttachment
+ };
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CUniBaseHeader();
+
+ /**
+ * Adds correct header fields to the view.
+ *
+ * @since S60 3.2
+ */
+ IMPORT_C void AddToViewL();
+
+ /* Removes headers from
+ *
+ * @since S60 3.2
+ *
+ * @param aFlag Selected additional headers.
+ * Combination of EUniFeatureSubject, EUniFeatureCc
+ * and EUniFeatureBcc of enum TUniFeatures.
+ * Note! Do not edit initial value unless you know
+ * what you do. EUniFeatureTo and EUniFeatureFrom must be included.
+ */
+ IMPORT_C void RemoveFromViewL( TInt aFlags = 0x7fffffff );
+
+ /**
+ * Currently focused address field
+ *
+ * @since S60 3.2
+ *
+ * @param aFocusedControl currently focused control
+ *
+ * @return KErrNotFound, or HeaderAddressTo, EHeaderAddressCc,
+ * EHeaderAddressBcc,
+ */
+ IMPORT_C TInt FocusedAddressField ( CMsgBaseControl* aFocusedControl );
+
+ /**
+ * Returns specified header address control.
+ *
+ * @since S60 3.2
+ *
+ * @param aType Header control type.
+ *
+ * @return NULL if control was not found.
+ * Otherwise pointer to correct header object.
+ */
+ inline CMsgAddressControl* AddressControl( THeaderFields aType ) const;
+
+ /**
+ * Returns specified header address control's ID.
+ *
+ * @since S60 3.2
+ *
+ * @param aType Header control type.
+ *
+ * @return TMsgControlId of the specified control
+ */
+ inline TMsgControlId AddressControlId( THeaderFields aType ) const;
+
+ /**
+ * Returns subject control.
+ *
+ * @since S60 3.2
+ *
+ * @return NULL if control was not found.
+ * Otherwise pointer to CMsgExpandableControl object.
+ */
+ inline CMsgExpandableControl* SubjectControl() const;
+
+ /**
+ * Returns attachment control.
+ *
+ * @since S60 3.2
+ *
+ * @return NULL if control was not found.
+ * Otherwise pointer to CMsgAttachmentControl object.
+ */
+ inline CMsgAttachmentControl* AttachmentControl() const;
+
+ /**
+ * Returns header variation bit mask.
+ *
+ * @since S60 3.2
+ *
+ * @return Combination of bit flags of variation of EUniFeatureSubject,
+ * EUniFeatureCc, EUniFeatureBcc.
+ * Note that the flags must be read first using AddHeadersVariationL()
+ */
+ inline TInt AddHeadersVariation() const;
+
+ /**
+ * Reads additional headers variation of bit flags of configuration of KMmsuiHeaderSubject,
+ * KMmsuiHeaderCc, KMmsuiHeaderBcc
+ *
+ * @since S60 3.2
+ *
+ * @return Combination of bit flags of variation of EUniFeatureSubject,
+ * EUniFeatureCc, EUniFeatureBcc.
+ */
+ IMPORT_C TInt AddHeadersConfigL();
+
+ /**
+ * Saves new additional headers selection
+ * Currently this function can be called either before updating
+ * controls on the UI or afterwards
+ *
+ * @since S60 3.2
+ *
+ * @param aFlag Selected additional headers.
+ * Combination of EUniFeatureSubject, EUniFeatureCc
+ * and EUniFeatureBcc of enum TUniFeatures
+ */
+ IMPORT_C void SaveAddHeadersConfigL( TInt aAddHeaders );
+
+ /**
+ * Returns whether message has recipients.
+ *
+ * @since S60 3.2
+ *
+ * @return ETrue, header contains recipients
+ * EFalse, header does not include any recipient
+ */
+ IMPORT_C TBool HasRecipients();
+
+ /**
+ * Function checks whether component id represents an address control
+ * visible on the first slide of the editor.
+ * This is to avoid following code:
+ * if ( id == EMsgComponentIdTo
+ * || id == EMsgComponentIdCc
+ * || id == EMsgComponentIdBcc )...
+ *
+ * @since S60 3.2
+ *
+ * @return ETrue, is an address field
+ * EFalse, is not an address field. If the address field would not be
+ * visible on the first slide, return EFalse.
+ */
+ IMPORT_C TBool IsAddressControl( TInt aId );
+
+ /**
+ * Handles notifying the resource change event to the controls that are owned by the header.
+ *
+ * @param aType Resource change type the same way as in corresponding CCoeControl function call.
+ */
+ IMPORT_C void HandleResourceChange( TInt aType );
+
+ protected: // Constructors
+
+ enum
+ {
+ // For internal use of header class hierarchy
+ // This can be whatever bit excluding
+ // EUniFeatureCc, EUniFeatureBcc and EUniFeatureSubject
+ EUniFeatureTo = 0x4000000,
+ EUniFeatureFrom = 0x8000000,
+ EUniFeatureAttachment = 0x10000000
+ };
+
+ struct TAddressData
+ {
+ CMsgExpandableControl* iControl;
+ TBool iOwned;
+ CUniAddressHandler* iAddressHandler; // no address handler for subject
+ TMsgControlId iControlType;
+ TMsvRecipientTypeValues iRecipientTypeValue; // from msv api
+ };
+
+ /**
+ * Hidden C++ default constructor.
+ */
+ IMPORT_C CUniBaseHeader( CBaseMtm& aMtm,
+ CMsgEditorView& aView,
+ RFs& aFs );
+
+ /**
+ * Implements adding controls into view
+ *
+ * @since S60 3.2
+ *
+ * @param aReadContent determines whether content is read to the
+ * UI control from MTM.
+ * Reading is not needed, if control is added by user selection
+ */
+ IMPORT_C void DoAddToViewL( TBool aReadContent );
+
+ /**
+ * Checks recipient address types, which the message contains
+ *
+ * @since S60 3.2
+ *
+ * @return combination of EUniFeatureCc and EUniFeatureBcc of enum TUniFeatures
+ */
+ IMPORT_C TInt MtmAddressTypes();
+
+ /**
+ * Add header variation.
+ *
+ * @since S60 3.2
+ *
+ * @return Sets combination of bit flags of variation of EUniFeatureSubject,
+ * EUniFeatureCc, EUniFeatureBcc to iAddHeadersVariation
+ */
+ IMPORT_C void AddHeadersVariationL( TBool aIsUpload );
+
+ /**
+ * Create UI control for recipient.
+ *
+ * @since S60 3.2
+ *
+ * @param aData data area for this recipient type
+ * @param aRecipientType recipient type
+ * @param aReadContent determines whether recipient data is read from
+ * MTM
+ */
+ virtual void InsertRecipientL( TAddressData& aData,
+ THeaderFields aRecipientType,
+ TBool aReadContent) = 0;
+ /**
+ * Create UI control for from field. Base implementation is empty
+ *
+ * @since S60 3.2
+ *
+ * @param aReadContent determines whether recipient data is read from
+ * MTM
+ */
+ virtual void InsertFromL( TBool aReadContent );
+
+ /**
+ * Creates UI control for subject
+ *
+ * @since S60 3.2
+ *
+ * @param aReadContent determines whether content is read to the
+ * UI control from MTM.
+ * Reading is not needed, if control is added by user selection
+ */
+ virtual void InsertSubjectL( TBool aReadContent ) = 0;
+
+ /**
+ * Creates UI control for attachment field
+ *
+ * @since S60 3.2
+ *
+ * @param aReadContent Determines whether content is read to the UI control.
+ */
+ virtual void InsertAttachmentL( TBool aReadContent ) = 0;
+
+ protected: //Data
+
+ CBaseMtm& iMtm;
+ CMsgEditorView& iView;
+ RFs& iFs;
+ TInt iAddHeadersVariation;
+ TInt iAddHeadersConfig;
+ TAddressData iHeaders[6];
+
+ /// Derived class must remember to use flags EUniFeatureTo, EUniFeatureFrom, too
+ TInt iAddDelayed;
+ };
+
+#include <unibaseheader.inl>
+
+#endif // C_UNIBASEHEADER_H