emailservices/nmailbase/inc/nmmessageenvelope.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 14 May 2010 15:41:10 +0300
changeset 23 2dc6caa42ec3
parent 18 578830873419
permissions -rw-r--r--
Revision: 201017 Kit: 201019

/*
* 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:
*
*/

#ifndef NMMESSAGEENVELOPE_H_
#define NMMESSAGEENVELOPE_H_

#include <QFlags>

#include "nmbasedef.h"
#include "nmcommon.h"
#include "nmaddress.h"


class NMBASE_EXPORT NmMessageEnvelopePrivate : public QSharedData
{

public:
    NmMessageEnvelopePrivate();
    virtual ~NmMessageEnvelopePrivate();

    NmMessageFlags flags() const;
    void setFlags(const NmMessageFlags flags, bool set);
    void setFlag(const NmMessageFlag flag, bool set);
    bool isFlagSet(const NmMessageFlag flag) const;

public:
    NmId mMessageId;
    NmId mFolderId; // id for top-level message/messageId for message parts
    NmId mMailboxId;
    QString mSubject;
    NmAddress mSender;
    QDateTime mSentTime;
    QList<NmAddress> mToRecipients;
    QList<NmAddress> mCcRecipients;
    QList<NmAddress> mBccRecipients;

private:
    NmMessageFlags mMessageFlags;
};


class NMBASE_EXPORT NmMessageEnvelope
{

public:
    NmMessageEnvelope();
    NmMessageEnvelope(const NmId &messageId);
    NmMessageEnvelope(const NmMessageEnvelope &envelope);
    NmMessageEnvelope(QExplicitlySharedDataPointer<NmMessageEnvelopePrivate> nmPrivateMessageEnvelope);
    NmMessageEnvelope &operator=(const NmMessageEnvelope &envelope);
    bool operator==(const NmMessageEnvelope &envelope) const;
    bool operator!=(const NmMessageEnvelope &envelope) const;
    virtual ~NmMessageEnvelope();

    void setMessageId(const NmId &messageId);
    NmId messageId() const;

    NmId folderId() const;
    void setFolderId(const NmId &folderId);

    NmId mailboxId() const;
    void setMailboxId(const NmId &mailboxId);

    void setSubject(const QString &subject);
    QString subject() const;

    void setSender(const NmAddress &sender);
    NmAddress sender() const;

    void setSentTime(const QDateTime &sentTime);
    QDateTime sentTime() const;

    void setHasAttachments(bool hasAttachments);
    bool hasAttachments() const;

    void setRead(bool read);
    bool isRead() const;

    void setReplied(bool replied);
    bool isReplied() const;

    void setForwarded(bool forwarded);
    bool isForwarded() const;

    void setPriority(NmMessagePriority forwarded);
    NmMessagePriority priority() const;

    NmMessageFlags flags() const;

    QList<NmAddress>& toRecipients() const;
    void setToRecipients(QList<NmAddress> toRecipients);
    void clearToRecipients();

    QList<NmAddress>& ccRecipients() const;
    void setCcRecipients(QList<NmAddress> ccRecipients);
    void clearCcRecipients();

    QList<NmAddress>& bccRecipients() const;
    void setBccRecipients(QList<NmAddress> bccRecipients);
    void clearBccRecipients();

private:
    // Data object shared between Symbian and QT data types.
    QExplicitlySharedDataPointer<NmMessageEnvelopePrivate> d;

    friend class CFSMailMessageBase;
};

Q_DECLARE_METATYPE(const NmMessageEnvelope*)
Q_DECLARE_METATYPE(NmMessageEnvelope*)

#endif /* NMMESSAGEENVELOPE_H_ */