messagingapp/msgui/appengine/inc/conversationsengine.h
changeset 31 ebfee66fde93
child 34 84197e66a4bd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/appengine/inc/conversationsengine.h	Fri Jun 04 10:25:39 2010 +0100
@@ -0,0 +1,274 @@
+/*
+ * 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 CONVERSATIONS_ENGINE_H
+#define CONVERSATIONS_ENGINE_H
+
+// INCLUDES
+#include <QObject>
+#include <QStandardItemModel>
+#include <sqldb.h>
+
+#ifdef BUILD_DLL
+#define CONVERSATIONS_ENGINE_API_EXPORT Q_DECL_EXPORT
+#else
+#define CONVERSATIONS_ENGINE_API_EXPORT Q_DECL_IMPORT
+#endif
+
+class ConversationsSummaryModel;
+class ConversationsModel;
+class DraftsModel;
+class ConversationMsgStoreHandler;
+class ConversationsEnginePrivate;
+
+/**
+ * This is a singleton class which
+ * implements the models for the model/view framework.
+ * The models hold data for the conversations fetched from the
+ * server.
+ *
+ */
+
+class CONVERSATIONS_ENGINE_API_EXPORT ConversationsEngine : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    /**
+     * Returns pointer to sole instance.
+     * @return ConversationEngine object
+     */
+    static ConversationsEngine* instance();
+
+    /**
+     * Destructor
+     */
+    virtual ~ConversationsEngine();
+
+public:
+
+    /**
+     * Returns Conversations Summary Model instance
+     */
+    QStandardItemModel* getConversationsSummaryModel();
+
+    /**
+     * Returns Conversations Model instance
+     */
+    QStandardItemModel* getConversationsModel();
+
+    /**
+     * Returns drafts Model instance
+     */
+    QStandardItemModel* getDraftsModel();
+
+    /**
+     * Get all conversations.
+     * @param conversationId, conversationId
+     * @return returns true if call is successful
+     */
+    bool getConversations(qint64 conversationId);
+	
+    /**
+     * Deregisters the current conversationId and clears the model
+     * @return returns true if call is successful
+     */
+    bool clearConversations();
+
+    /**
+     * Delete all conversations.
+     * @param conversationId, conversationId
+     * @return returns true if call is successful
+     */    
+    bool deleteConversations(qint64 conversationId);
+
+    /**
+     * Delete all messages.
+     * @param msgIdList, message list.
+     */  
+    void deleteMessages(QList<int>& msgIdList);
+
+    /**
+     * Delete all draft messages.
+     */
+    void deleteAllDraftMessages();
+
+    /**
+     * Marks all the unread conversations to read
+     * @param conversationId, conversationId
+     * @return returns true if call is successful
+     */        
+    bool markConversationRead(qint64 conversationId);
+    
+    /**
+     * Mark messages as read.
+     * @param msgIdList, message list.
+     * @return returns true if call is successful
+     */      
+    bool markMessagesRead(QList<int>& msgIdList);
+    
+    /**
+     * Get Contact details name.
+     * @param conversationId, conversationId
+     * @param displayName, Name
+     */  
+    void getContactDetails(qint64 conversationId,
+        QString& displayName,
+        QString& address);
+
+    /**
+     * Get conversationId for a given address.
+     * @param address, Phone number
+     * @return conversation id
+     */  
+    qint64 getConversationIdFromAddress(QString address);
+
+    /**
+     * Get current conversation id.
+     */  
+    qint64 getCurrentConversationId();
+
+    /**
+     * Get conversationId for a given contactId.
+     * @param contactId, Contact Id
+     * @return conversation id
+     */ 
+    qint64 getConversationIdFromContactId(qint32 contactId);
+
+    /**
+     * Emits conversationModelPopulated signal
+     */ 
+    void emitConversationModelPopulated();
+    
+    /**
+     * Emits conversationModelUpdated signal
+     */ 
+    void emitConversationModelUpdated();
+    
+    /**
+     * Emits conversationListModelPopulated signal
+     */ 
+    void emitConversationListModelPopulated();
+
+    /**
+     *  Starts fetching remaing conversations
+     */
+    void fetchMoreConversations();
+
+    /**
+     *  Resend a failed message
+	 *@param  messageId qint32 the Id of the message to be sent
+	 *@return bool true if succeeded
+     */
+    bool resendMessage(qint32 messageId);
+
+    /**
+     * Download a specified message
+     * @param messageId qint32 the Id of the message 
+     * @return KErrNone if Download request is successful, 
+     *         KErrNotFound if settings are not available,
+     *         KErrGeneral for other cases
+     */
+    int downloadMessage(qint32 messageId);  
+
+    /**
+     * Query if the download operation be performed for
+     * a message notification entry
+     * @param aId, message notification id
+     * @return true if download operation is possible
+     */
+    bool downloadOperationSupported(qint32 messageId);
+	
+    /**
+     * Mark message as read and get the message type
+     * @param messageId  message Id 
+     * @param msgType message type is written to this.
+     * @param msgType message sub type is written to this.
+     */
+    void markAsReadAndGetType( qint32 messageId,
+                               int& msgType,
+                               int& msgSubType);
+    
+    /*
+     * Get SQL DB handle
+     * @param isOpen, set to true if open, check this before using the handle
+     */
+    RSqlDatabase& getDBHandle(TBool& isOpen);
+    
+private:
+
+    /**
+     * Constructor
+     */
+    explicit ConversationsEngine(QObject* parent = 0);    
+    
+signals:
+
+    /**
+     * ConversationListModelPopulated signal indicating 
+     * that the model is ready to be displayed
+     */ 
+    void conversationModelPopulated();
+    
+    /**
+     * ConversationModelUpdated signal indicating dynamic 
+     * updates in the model
+     */ 
+    void conversationModelUpdated();
+    
+    /**
+     * ConversationListModelPopulated signal indicating 
+     * that the model is ready to be displayed
+     */
+    void conversationListModelPopulated();
+    
+private:
+
+    /**
+     * Conversations Summary Model
+     * Own
+     */        
+    ConversationsSummaryModel* mConversationsSummaryModel;
+
+    /**
+     * Conversations Model
+     * Own
+     */    
+    ConversationsModel* mConversationsModel;
+
+    /**
+     * Drafts Model
+     * Own
+     */    
+    DraftsModel* mDraftsModel;
+
+    /**
+     * MsgStoreHandler
+     * Own
+     */    
+    ConversationMsgStoreHandler* mConversationMsgStoreHandler;
+    
+    /**
+     * ConversationsEnginePrivate
+     * Own
+     */
+    ConversationsEnginePrivate* d_ptr;
+
+};
+
+#endif // CONVERSATIONS_ENGINE_H