messagingapp/msgui/appengine/inc/conversationchangehandler.h
branchRCL_3
changeset 57 ebe688cedc25
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/appengine/inc/conversationchangehandler.h	Tue Aug 31 15:11:31 2010 +0300
@@ -0,0 +1,208 @@
+/*
+ * Copyright (c) 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:  ?Description
+ *
+ */
+
+#ifndef CONVERSATIONS_CHANGEHANDLER_H
+#define CONVERSATIONS_CHANGEHANDLER_H
+
+//SYSTEM INCLUDES
+#include <e32base.h>
+#include <e32std.h>  
+#include <badesca.h>
+#include <mcsconversationchangeobserver.h>
+
+// USER INCLUDE
+
+//FORWARD DECLARATIONS
+class ConversationsModel;
+class ConversationsEnginePrivate;
+
+/**
+ *  Handles the change events (add/modify/delete) related to conversations 
+ *  form the server
+ *
+ *  @code
+ *  @endcode
+ *
+ *  @since S60 v10.1
+ */
+class ConversationsChangeHandler : public CActive,
+        public MCsConversationChangeObserver
+{
+public:
+
+    /**
+     * Default constructor.
+     */
+    explicit ConversationsChangeHandler(
+        ConversationsEnginePrivate* convEnginePrivate,
+        ConversationsModel* conversationsModel);
+
+    /**
+     * Destructor.
+     */
+    ~ConversationsChangeHandler();
+
+    /**
+     * Starts fetching remaining conversations
+     */
+    void restartHandleConversations();
+
+public:// CActive
+
+    /**
+     * RunL.
+     */
+    void RunL();
+
+    /**
+     * DoCancel
+     */
+    void DoCancel();
+
+public:
+
+    /**
+     * Conversations
+     * This is for handling GetConversation results asynchronusly
+     * from the server.
+     * 
+     * @param aConversationEntryList List of conversation entries
+     * returned by server.
+     * @param aTotalCount total number of conversation entries
+     */
+
+    void ConversationsL(
+        RPointerArray<CCsConversationEntry>& aConversationEntryList,
+        TInt& aTotalCount);
+    
+    /**
+     * ResetValuesForNewConversation
+     * Resets the values of flags, and indexes for a new conversation
+     */
+    void ResetValuesForNewConversation();
+
+public://MCsConversationChangeObserver
+    /**  
+     * AddConversation
+     * This is for handling addition of new conversation entry in
+     * conversation view asynchronusly from the server.
+     * 
+     * @param aConversationEntry  Conversation Entry
+     */
+    void AddConversation(const CCsConversationEntry& aConversationEntry);
+
+    /**  
+     * ModifyConversation
+     * This is for handling modification of existing
+     * conversation entry in conversation view 
+     * asynchronusly from the server.
+     * 
+     * @param aConversationEntry  Conversation Entry
+     */
+    void ModifyConversation(const CCsConversationEntry& aConversationEntry);
+
+    /**  
+     * DeleteConversation
+     * This is for handling deletion of existing
+     * conversation entry from conversation view 
+     * asynchronusly from the server.
+     * 
+     * @param aConversationEntry  Conversation Entry
+     */
+    void DeleteConversation(const CCsConversationEntry& aConversationEntry);
+
+    /**
+     * RefreshConversation
+     * This is for handling refresh asynchronusly from the server.
+     */
+    void RefreshConversation();
+
+private:
+
+    /**
+     * Make the active object alive
+     */
+    void IssueRequest();
+
+    /**
+     * Handles Conversations received from server and updates into model
+     */    
+    void HandleConversationsL();
+    
+    /**
+     * Fetch remaning conversations from Server Cache
+     * @param aCount - count of conversations added to entry list
+     */
+    void FetchRemainingConversations(TInt aCount);
+    
+private:
+    // Data
+
+    /**
+     * ConversationsChangeHandler Internal States
+     */
+    enum ConvChangeHandlerStates
+    {
+        EInit = 500, 
+        EInitialCache, 
+        EFetchMoreConversations,
+        EListenToEvents
+    };
+
+    /**
+     * mCurrentState
+     * Holds Current state
+     */
+    ConvChangeHandlerStates mCurrentState;
+
+    /**
+     * First list of conversations updated
+     * Own.
+     */    
+    TBool mFirstWindowCached;
+
+    /**
+     * Current entry being processed
+     * Own.
+     */
+    TInt mCurrentIndex;
+    
+    /**
+     * Total count of conversation entries in the Conversation
+     * Own
+     */
+    TInt mTotalCount;
+    /**
+     * ConversationsModel Object
+     * Not Own.
+     */
+    ConversationsModel* mConversationsModel;
+
+    /**
+     * ConversationsEnginePrivate object
+     * Not Own.
+     */
+    ConversationsEnginePrivate* mConvEnginePrivate;
+
+    /**
+     * List of CCsConversationEntry entries
+     * Own.
+     */
+    RPointerArray<CCsConversationEntry> mConversationEntryList;
+};
+
+#endif // CONVERSATIONS_CHANGEHANDLER_H