emailservices/nmclientapi/inc/nmapidataplugininterface.h
author Pat Downey <patd@symbian.org>
Tue, 11 May 2010 12:31:25 +0100
changeset 21 f9ba49b96643
parent 18 578830873419
permissions -rw-r--r--
Add missing docml files.

/*
 * 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 NMAPIDATAPLUGININTERFACE_H_
#define NMAPIDATAPLUGININTERFACE_H_

#include <QList>
#include "nmcommon.h"

class NmMailbox;
class NmMessage;
class NmMessagePart;
class NmFolder;
class NmMessageEnvelope;
class NmOperation;
class NmMessageCreationOperation;
class NmStoreEnvelopesOperation;

/*!
 \class NmDataPluginInterface
 \brief The class NmDataPluginInterface provides an interface to access email data from
 protocol plugins.
 Implementation classes of this interface are expected to emit following signals:
 void mailboxEvent(NmMailboxEvent event,
 const QList<NmId> &mailboxIds);
 void messageEvent(NmMessageEvent event,
 const NmId &folderId,
 const QList<NmId> &messageIds,
 const NmId&);
 */
class NmDataPluginInterface
{
public:

    virtual ~NmDataPluginInterface()
    {
    }
    ;
    virtual int listMailboxIds(QList<NmId> &mailboxIdList) = 0;
    virtual int listMailboxes(QList<NmMailbox*> &mailboxList) = 0;
    virtual int getMailboxById(const NmId &id, NmMailbox *&mailbox) = 0;
    virtual int deleteMailboxById(const NmId &id) = 0;
    virtual int getMessageById(
        const NmId &mailboxId,
        const NmId &folderId,
        const NmId &messageId,
        NmMessage *&message) = 0;
    virtual int listFolders(const NmId &mailboxId, QList<NmFolder*> &folderList) = 0;
    virtual int listMessages(
        const NmId &mailboxId,
        const NmId &folderId,
        QList<NmMessageEnvelope*> &messageEnvelopeList) = 0;

    virtual NmOperation *fetchMessage(
        const NmId &mailboxId,
        const NmId &folderId,
        const NmId &messageId) = 0;

    /*!
     Get standard folder. Returns NmId.getId() == 0 if not found.
     */
    virtual NmId getStandardFolderId(const NmId &mailbox, NmFolderType folderType) = 0;
    virtual int refreshMailbox(NmId mailboxId) = 0;
    virtual int contentToMessagePart(
        const NmId &mailboxId,
        const NmId &folderId,
        const NmId &messageId,
        NmMessagePart &messagePart) = 0;

    virtual int deleteMessages(
        const NmId &mailboxId,
        const NmId &folderId,
        const QList<NmId> &messageIdList) = 0;

    virtual NmStoreEnvelopesOperation *storeEnvelopes(
        const NmId &mailboxId,
        const NmId &folderId,
        const QList<const NmMessageEnvelope*> &envelopeList) = 0;

    /*!
     Creates a new message into the drafts folder of the given mailbox.
     */
    virtual NmMessageCreationOperation *createNewMessage(const NmId &mailboxId) = 0;

    /*!
     Creates a new forward message into the drafts folder of the given mailbox.
     */
    virtual NmMessageCreationOperation *createForwardMessage(
        const NmId &mailboxId,
        const NmId &originalMessageId) = 0;

    /*!
     Creates a new reply message into the drafts folder of the given mailbox.
     */
    virtual NmMessageCreationOperation *createReplyMessage(
        const NmId &mailboxId,
        const NmId &originalMessageId,
        const bool replyAll) = 0;

    virtual int saveMessage(const NmMessage &message) = 0;

    /*!
     Removes the message from mailbox.
     */
    virtual int
        removeMessage(const NmId& mailboxId, const NmId& folderId, const NmId& messageId) = 0;

    /*!
     To get any events from plugins mailboxes must subscribe events first.
     */
    virtual void subscribeMailboxEvents(const NmId& mailboxId) = 0;

    /*!
     When events are no longer needed for mailbox, subscription must be stopped.
     */
    virtual void unsubscribeMailboxEvents(const NmId& mailboxId) = 0;

    virtual NmOperation *sendMessage(const NmMessage &message) = 0;
};

Q_DECLARE_INTERFACE(NmDataPluginInterface, "sf.app.commonmail.emailuis.nmailuiengine.NmDataPluginInterface/1.0")

#endif /* NMDATAPLUGININTERFACE_H_ */