/*
* Copyright (c) 2007-2008 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: common email base object
*
*/
#ifndef __CFSMAILMESSAGEBASE_H
#define __CFSMAILMESSAGEBASE_H
#include <e32std.h>
#include <e32base.h>
#include "CFSMailAddress.h"
//<qmail>
#include <QExplicitlySharedDataPointer>
class NmMessageEnvelopePrivate;
class NmMessageEnvelope;
//</qmail>
/**
* email handling base class
*
* @lib FSFWCommonLib
* @since S60 v3.1
*/
NONSHARABLE_CLASS ( CFSMailMessageBase ) : public CBase
{
public:
/**
* Two-phased constructor.
*
* @param aMessageId id of the email to be created
*/
IMPORT_C static CFSMailMessageBase* NewL( const TFSMailMsgId aMessageId );
/**
* Two-phased constructor.
*
* @param aMessageId id of the email to be created
*/
IMPORT_C static CFSMailMessageBase* NewLC( const TFSMailMsgId aMessageId );
/**
* Destructor.
*/
IMPORT_C virtual ~CFSMailMessageBase();
/**
* message id accessor
*
* @return message id
*/
IMPORT_C TFSMailMsgId GetMessageId() const;
/**
* if email is related to another email, for example due reply / forward,
* related email id is returned
*
* @return related email id
*/
IMPORT_C TFSMailMsgId IsRelatedTo() const;
/**
* set email related to another email, for example due reply / forward
*
* @param aMessageId related email id
*/
IMPORT_C void SetRelatedTo( const TFSMailMsgId aMessageId );
/**
* email parent folder id accessor
*
* @returns parent folder id
*/
IMPORT_C TFSMailMsgId GetFolderId() const ;
/**
* email parent folder id mutator
*
* @param aFolderId parent folder id
*/
IMPORT_C void SetFolderId( const TFSMailMsgId aFolderId );
/**
* email mailbox id accessor
*
* @returns mailbox id
*/
IMPORT_C TFSMailMsgId GetMailBoxId() const ;
/**
* email mailbox id mutator
*
* @param aMailBoxId mailbox id
*/
IMPORT_C void SetMailBoxId( const TFSMailMsgId aMailBoxId );
/**
* email sender address accessor
*
* @return email sender address, ownership not transferred to user
*/
IMPORT_C CFSMailAddress* GetSender() const;
/**
* email sender address mutator
*
* @param aSender email sender address, ownership transferred from user
*/
IMPORT_C void SetSender( CFSMailAddress* aSender );
/**
* returns TO-recipients list of email
*
* @return to-recipients list, ownership not transferred user
*/
IMPORT_C RPointerArray<CFSMailAddress> GetToRecipients();
/**
* returns CC-recipients list of email
*
* @return cc-recipients list, ownership not transferred user
*/
IMPORT_C RPointerArray<CFSMailAddress> GetCCRecipients( );
/**
* returns BCC-recipients list of email
*
* @return bcc-recipients list, ownership not transferred user
*/
IMPORT_C RPointerArray<CFSMailAddress> GetBCCRecipients( );
/**
* appends one recipient to email TO-field, ownership transferred from user
*
* @param aRecipient new recipient email address
*/
IMPORT_C void AppendToRecipient( CFSMailAddress* aRecipient );
/**
* appends one recipient to email CC-field, ownership transferred from user
*
* @param aRecipient new recipient email address
*/
IMPORT_C void AppendCCRecipient( CFSMailAddress* aRecipient );
/**
* appends one recipient to email BCC field, ownership transferred from user
*
* @param aRecipient new recipient email address
*/
IMPORT_C void AppendBCCRecipient( CFSMailAddress* aRecipient );
/**
* clears email TO-recipients list
*
*/
IMPORT_C void ClearToRecipients();
/**
* clears email CC-recipients list
*
*/
IMPORT_C void ClearCcRecipients();
/**
* clears email BCC-recipients list
*
*/
IMPORT_C void ClearBccRecipients();
/**
* email subject accessor
*
* @return email subject, ownership not transferred user
*/
IMPORT_C TDesC& GetSubject() const;
/**
* email subject mutator
*
* @param aSubject new email subject
*/
IMPORT_C void SetSubject( const TDesC& aSubject );
/**
* email date accessor
*
* @return email date
*/
IMPORT_C TTime GetDate() const;
/**
* email date mutator
*
* @param aDate new email date
*/
IMPORT_C void SetDate( const TTime aDate );
/**
* email flags accessor
*
* @return email flags
*/
IMPORT_C TInt GetFlags() const;
/**
* email flag set
*
* @aFlag email flag to be set
*/
IMPORT_C void SetFlag( const TInt aFlag );
/**
* email flag reset
*
* @aFlag email flag to be reset
*/
IMPORT_C void ResetFlag( const TInt aFlag );
/**
* test email flag is set
*
* @aFlag email flag to be tested
* @return email flag status (set/reset)
*/
IMPORT_C TBool IsFlagSet( const TInt aFlag ) const;
/**
* Email reply-to address accessor ; defines optional email address
* that clients should use to send replies. Returns NULL pointer
* if address is not set, ownership not transferred to user.
*
* @return email reply-to address
*/
IMPORT_C const CFSMailAddress& GetReplyToAddress();
/**
* email reply-to address mutator, ownership transferred from user
*
* @param aReplyToAddress email reply-to address
*/
IMPORT_C void SetReplyToAddress( CFSMailAddress* aReplyToAddress );
// <qmail>
/**
* gets the new NmMessageEnvelope object
*
* @return NmMessageEnvelope object
*/
IMPORT_C NmMessageEnvelope* GetNmMessageEnvelope();
// </qmail>
protected:
/**
* C++ default constructor.
*/
CFSMailMessageBase();
/**
* ConstructL
*/
IMPORT_C void ConstructL( const TFSMailMsgId aMessageId );
void ConstructL( const NmMessageEnvelope &aMessageEnvelope );
/**
* email message id mutator
*
* @param aMessageId message id to be set
*/
IMPORT_C void SetMessageId( const TFSMailMsgId aMessageId );
// <qmail>
/**
* Reference to QT side of the message meta data object.
*/
QExplicitlySharedDataPointer<NmMessageEnvelopePrivate> iNmPrivateMessageEnvelope;
// </qmail>
private: // data
/**
* id of another email or part this object is related to
* due some reason, like in reply or forward email use cases
*/
TFSMailMsgId iRelatedTo;
/**
* email mailbox id
*/
TFSMailMsgId iMailBoxId;
/**
* email parent folder id
*/
TFSMailMsgId iFolderId;
/**
* email sender address
* do not use it directly!
*/
CFSMailAddress* iSender;
/**
* email reply-to address
*/
CFSMailAddress* iReplyTo;
/**
* email subject
*/
mutable TPtrC iSubjectPtr;
};
#endif // __CFSMAILMESSAGEBASE_H