emailuis/nmailuiengine/inc/nmuiengine.h
changeset 23 2dc6caa42ec3
parent 20 ecc8def7944a
child 27 9ba4404ef423
equal deleted inserted replaced
20:ecc8def7944a 23:2dc6caa42ec3
     1 /*
     1 /*
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    18 #ifndef NMUIENGINE_H
    18 #ifndef NMUIENGINE_H
    19 #define NMUIENGINE_H
    19 #define NMUIENGINE_H
    20 
    20 
    21 #include <QObject>
    21 #include <QObject>
    22 #include <QList>
    22 #include <QList>
    23 #ifdef Q_OS_SYMBIAN
       
    24 #include <xqsharablefile.h>
    23 #include <xqsharablefile.h>
    25 #endif
       
    26 
    24 
    27 #include "nmcommon.h"
    25 #include "nmcommon.h"
    28 #include "nmuienginedef.h"
    26 #include "nmuienginedef.h"
    29 
    27 
       
    28 class QAbstractItemModel;
    30 class NmMailboxListModel;
    29 class NmMailboxListModel;
    31 class NmMessageListModel;
    30 class NmMessageListModel;
       
    31 class NmMessageSearchListModel;
    32 class NmDataManager;
    32 class NmDataManager;
    33 class NmDataPluginFactory;
    33 class NmDataPluginFactory;
    34 class NmMailboxMetaData;
    34 class NmMailboxMetaData;
    35 class NmMessage;
    35 class NmMessage;
    36 class NmMessagePart;
    36 class NmMessagePart;
    37 class NmMessageEnvelope;
    37 class NmMessageEnvelope;
       
    38 class NmOperation;
    38 class NmMessageCreationOperation;
    39 class NmMessageCreationOperation;
    39 class NmStoreEnvelopesOperation;
    40 class NmStoreEnvelopesOperation;
    40 class NmAddAttachmentsOperation;
    41 class NmAddAttachmentsOperation;
    41 class NmOperation;
       
    42 class NmCheckOutboxOperation;
    42 class NmCheckOutboxOperation;
    43 class NmMessageSendingOperation;
    43 class NmMessageSendingOperation;
       
    44 
    44 
    45 
    45 class NMUIENGINE_EXPORT NmUiEngine: public QObject
    46 class NMUIENGINE_EXPORT NmUiEngine: public QObject
    46 {
    47 {
    47     Q_OBJECT
    48     Q_OBJECT
       
    49 
    48 public:
    50 public:
    49 
    51 
    50     static NmUiEngine *instance();
    52     static NmUiEngine *instance();
    51     static void releaseInstance(NmUiEngine *&instance);
    53     static void releaseInstance(NmUiEngine *&instance);
    52 
    54 
    53     NmMailboxListModel &mailboxListModel();
    55     NmMailboxListModel &mailboxListModel();
    54 
       
    55     void refreshMailboxListModel();
    56     void refreshMailboxListModel();
    56 
       
    57     NmMessageListModel &messageListModel(const NmId &mailboxId, const NmId &folderId);
    57     NmMessageListModel &messageListModel(const NmId &mailboxId, const NmId &folderId);
    58 
    58     NmMessageSearchListModel &messageSearchListModel(QAbstractItemModel *sourceModel);
    59     void releaseMessageListModel(const NmId &mailboxId);
       
    60 
    59 
    61     NmId standardFolderId(const NmId &mailboxId, NmFolderType folderType);
    60     NmId standardFolderId(const NmId &mailboxId, NmFolderType folderType);
    62 
    61 
    63     NmMessage *message(
    62     NmMessage *message(
    64         const NmId &mailboxId,
    63         const NmId &mailboxId,
    65         const NmId &folderId,
    64         const NmId &folderId,
    66         const NmId &messageId);
    65         const NmId &messageId);
    67 
    66 
    68     NmOperation *fetchMessage(
    67     QPointer<NmOperation> fetchMessage(
    69         const NmId &mailboxId,
    68         const NmId &mailboxId,
    70         const NmId &folderId,
    69         const NmId &folderId,
    71         const NmId &messageId);
    70         const NmId &messageId);
    72 
    71 
    73     NmOperation *fetchMessagePart( 
    72     QPointer<NmOperation> fetchMessagePart( 
    74         const NmId &mailboxId,
    73         const NmId &mailboxId,
    75         const NmId &folderId,
    74         const NmId &folderId,
    76         const NmId &messageId,
    75         const NmId &messageId,
    77         const NmId &messagePartId);
    76         const NmId &messagePartId);
    78     
    77     
    79     XQSharableFile messagePartFile(
    78     XQSharableFile messagePartFile(
    80             const NmId &mailboxId,
    79        const NmId &mailboxId,
    81             const NmId &folderId,
    80        const NmId &folderId,
    82             const NmId &messageId,
    81        const NmId &messageId,
    83             const NmId &messagePartId);
    82        const NmId &messagePartId);
    84     
    83     
    85     NmMailboxMetaData *mailboxById(const NmId &mailboxId);
    84     NmMailboxMetaData *mailboxById(const NmId &mailboxId);
    86 
    85 
    87     int contentToMessagePart(
    86     int contentToMessagePart(
    88         const NmId &mailboxId,
    87         const NmId &mailboxId,
    97     int deleteMessages(
    96     int deleteMessages(
    98         const NmId &mailboxId,
    97         const NmId &mailboxId,
    99         const NmId &folderId,
    98         const NmId &folderId,
   100         const QList<NmId> &messageIdList);
    99         const QList<NmId> &messageIdList);
   101 
   100 
   102     NmStoreEnvelopesOperation *setEnvelopes(
   101     QPointer<NmStoreEnvelopesOperation> setEnvelopes(
   103             const NmId &mailboxId,
   102         const NmId &mailboxId,
   104             const NmId &folderId,
   103         const NmId &folderId,
   105             NmEnvelopeProperties property,
   104         NmEnvelopeProperties property,
   106             const QList<const NmMessageEnvelope*> &envelopeList);
   105         const QList<const NmMessageEnvelope*> &envelopeList);
   107 
   106 
   108 
   107     QPointer<NmMessageCreationOperation> createNewMessage(const NmId &mailboxId);
   109     NmMessageCreationOperation *createNewMessage(const NmId &mailboxId);
   108 
   110 
   109     QPointer<NmMessageCreationOperation> createForwardMessage(
   111     NmMessageCreationOperation *createForwardMessage(
   110         const NmId &mailboxId,
   112             const NmId &mailboxId,
   111         const NmId &originalMessageId);
   113             const NmId &originalMessageId);
   112 
   114 
   113     QPointer<NmMessageCreationOperation> createReplyMessage(
   115     NmMessageCreationOperation *createReplyMessage(
   114         const NmId &mailboxId,
   116             const NmId &mailboxId,
   115         const NmId &originalMessageId,
   117             const NmId &originalMessageId,
   116         bool replyAll);
   118             bool replyAll);
       
   119 
   117 
   120     int saveMessage(const NmMessage &message);
   118     int saveMessage(const NmMessage &message);
   121 
   119 
   122     int refreshMailbox(const NmId &mailboxId);
   120     int refreshMailbox(const NmId &mailboxId);
   123 
   121 
   127     
   125     
   128     int removeMessage(
   126     int removeMessage(
   129                 const NmId &mailboxId,
   127                 const NmId &mailboxId,
   130                 const NmId &folderId,
   128                 const NmId &folderId,
   131                 const NmId &messageId);
   129                 const NmId &messageId);
   132 
   130     
   133     void storeOperation(NmOperation *op);
   131     void sendMessage(NmMessage *message, const QList<NmOperation*> &preliminaryOperations);
   134 
       
   135     void sendMessage(NmMessage *message, const QList<NmOperation *> &preliminaryOperations);
       
   136 
   132 
   137     bool isSendingMessage() const;
   133     bool isSendingMessage() const;
   138 
   134 
   139     const NmMessage *messageBeingSent() const;
   135     const NmMessage *messageBeingSent() const;
   140     NmAddAttachmentsOperation *addAttachments(
   136     
   141             const NmMessage &message,
   137     QPointer<NmAddAttachmentsOperation> addAttachments(
   142             const QList<QString> &fileList);
   138         const NmMessage &message,
   143     
   139         const QList<QString> &fileList);
   144     NmOperation *removeAttachment(const NmMessage &message, const NmId &attachmentPartId);
   140     
   145 
   141     QPointer<NmOperation> removeAttachment(
   146     NmCheckOutboxOperation *checkOutbox(const NmId &mailboxId);
   142         const NmMessage &message, 
       
   143         const NmId &attachmentPartId);
       
   144 
       
   145     QPointer<NmCheckOutboxOperation> checkOutbox(const NmId &mailboxId);
   147     
   146     
   148     NmSyncState syncState(const NmId& mailboxId);
   147     NmSyncState syncState(const NmId& mailboxId);
   149     NmConnectState connectionState(const NmId& mailboxId);
   148     NmConnectState connectionState(const NmId& mailboxId);
   150 
   149 
       
   150     int search(const NmId &mailboxId,
       
   151                const QStringList &searchStrings);
       
   152 
       
   153     int cancelSearch(const NmId &mailboxId);
       
   154     
       
   155     NmFolderType folderTypeById(NmId mailboxId, NmId folderId);
       
   156 
   151 public slots:
   157 public slots:
   152     void handleCompletedOperation();
       
   153     void handleCompletedSendOperation();
   158     void handleCompletedSendOperation();
   154     void handleSyncStateEvent(NmSyncState syncState, const NmOperationCompletionEvent &event);
   159     void handleSyncStateEvent(NmSyncState syncState, const NmOperationCompletionEvent &event);
   155     void cleanupSendOperation();
   160     void handleConnectEvent(NmConnectState connectState, const NmId &mailboxId, const int errorCode);
   156     
   161 
       
   162 private slots:
       
   163     void handleMessageEvent(
       
   164             NmMessageEvent event,
       
   165             const NmId &folderId,
       
   166             const QList<NmId> &messageIds, 
       
   167             const NmId& mailboxId);
       
   168     
       
   169     void handleMailboxEvent(NmMailboxEvent event,
       
   170                             const QList<NmId> &mailboxIds);
       
   171 
       
   172 
   157 signals:
   173 signals:
   158     void syncStateEvent(NmSyncState, const NmId &);
   174     void syncStateEvent(NmSyncState, const NmId &);
   159     void connectionEvent(NmConnectState, const NmId &);
   175     void connectionEvent(NmConnectState, const NmId &);
   160     void operationCompleted(const NmOperationCompletionEvent &event);
   176     void operationCompleted(const NmOperationCompletionEvent &event);
   161     void sendOperationCompleted();
   177     void sendOperationCompleted();
   162 
   178     void messageDeleted(const NmId &mailboxId, const NmId &folderId, const NmId &messageId);
       
   179     void mailboxDeleted(const NmId &mailboxId);
       
   180     void matchFound(const NmId &);
       
   181     void searchComplete();
       
   182     
   163 private:
   183 private:
   164 
       
   165     NmUiEngine();
   184     NmUiEngine();
   166     virtual ~NmUiEngine();
   185     virtual ~NmUiEngine();
   167 
   186 
   168 private:
   187 private:
   169 
       
   170     static NmUiEngine *mInstance;
   188     static NmUiEngine *mInstance;
   171     static int	mReferenceCount;
   189     static int	mReferenceCount;
   172 
   190 
   173     NmDataPluginFactory *mPluginFactory;
   191     NmDataPluginFactory *mPluginFactory;
   174     NmDataManager *mDataManager;                // Owned
   192     NmDataManager *mDataManager;                // Owned
   175     NmMailboxListModel *mMailboxListModel;      // Owned
   193     NmMailboxListModel *mMailboxListModel;      // Owned
   176     NmMessageListModel *mMessageListModel;      // Owned
   194     NmMessageListModel *mMessageListModel;      // Owned
   177     QList<NmOperation*> mOperations;			// Owned
   195     NmMessageSearchListModel *mMessageSearchListModel; // Owned
   178 
   196     QPointer<NmMessageSendingOperation> mSendOperation;  // Not owned
   179     NmMessageSendingOperation *mSendOperation;  // Owned
       
   180 };
   197 };
   181 
   198 
   182 
   199 
   183 #endif /* NMUIENGINE_H */
   200 #endif /* NMUIENGINE_H */
   184 
   201