messagingapp/msgui/appengine/src/conversationchangehandler.cpp
changeset 52 12db4185673b
parent 44 36f374c67aa8
equal deleted inserted replaced
44:36f374c67aa8 52:12db4185673b
    59 // This is for handling GetConversation results asynchronusly
    59 // This is for handling GetConversation results asynchronusly
    60 // from the server.
    60 // from the server.
    61 // ---------------------------------------------------------------------------
    61 // ---------------------------------------------------------------------------
    62 //
    62 //
    63 void ConversationsChangeHandler::ConversationsL(RPointerArray<
    63 void ConversationsChangeHandler::ConversationsL(RPointerArray<
    64         CCsConversationEntry>& aConversationEntryList)
    64         CCsConversationEntry>& aConversationEntryList, TInt& aTotalCount)
    65 {
    65 {
    66     mConversationEntryList.ResetAndDestroy();
    66     
       
    67     mTotalCount = aTotalCount;
    67 
    68 
    68     for (TInt i = 0; i < aConversationEntryList.Count(); ++i)
    69     for (TInt i = 0; i < aConversationEntryList.Count(); ++i)
    69     {
    70     {
    70         CCsConversationEntry *entry = aConversationEntryList[i]->CloneL();
    71         CCsConversationEntry *entry = aConversationEntryList[i]->CloneL();
    71         mConversationEntryList.AppendL(entry);
    72         mConversationEntryList.AppendL(entry);
    72     }
    73     }
    73     if (aConversationEntryList.Count() > 0)
    74     if (aConversationEntryList.Count() > 0)
    74     {
    75     {
    75         mFirstWindowCached = EFalse;
       
    76         mCurrentIndex = 0;
       
    77         mCurrentState = EInitialCache;
    76         mCurrentState = EInitialCache;
    78         IssueRequest();
    77         IssueRequest();
    79     }
    78     }
    80     else
    79     else
    81     {
    80     {
    82         //This is done for safety
    81         //This is done for safety
    83         mConvEnginePrivate->registerForConversationUpdatesL();
    82         mConvEnginePrivate->registerForConversationUpdatesL();
    84         mCurrentState = EListenToEvents;
    83         mCurrentState = EListenToEvents;
    85     }
    84     }
    86 }
    85 }
       
    86 // ---------------------------------------------------------------------------
       
    87 // This is for resetting the values before initiating a request 
       
    88 // for fetching entries for a new conversation
       
    89 // ---------------------------------------------------------------------------
       
    90 //
       
    91 void ConversationsChangeHandler::ResetValuesForNewConversation()
       
    92 {
       
    93 	mConvEnginePrivate->registerForConversationUpdatesL();
       
    94     mCurrentIndex = 0;
       
    95     mFirstWindowCached = EFalse;
       
    96     mConversationEntryList.ResetAndDestroy();
       
    97     
       
    98 
       
    99 }
    87 
   100 
    88 // ---------------------------------------------------------------------------
   101 // ---------------------------------------------------------------------------
    89 // Handling addition of new conversation entry from the server
   102 // Handling addition of new conversation entry from the server
    90 // ---------------------------------------------------------------------------
   103 // ---------------------------------------------------------------------------
    91 //
   104 //
   144     //process
   157     //process
   145     switch (mCurrentState)
   158     switch (mCurrentState)
   146     {
   159     {
   147         case EInitialCache:
   160         case EInitialCache:
   148             HandleConversationsL();
   161             HandleConversationsL();
       
   162             break;
       
   163         case EFetchMoreConversations:
       
   164             FetchRemainingConversations(mConversationEntryList.Count());
   149             break;
   165             break;
   150     }
   166     }
   151 }
   167 }
   152 
   168 
   153 // ---------------------------------------------------------------------------
   169 // ---------------------------------------------------------------------------
   200             ConversationsEngine::instance()->emitConversationModelPopulated();
   216             ConversationsEngine::instance()->emitConversationModelPopulated();
   201             mFirstWindowCached = ETrue;
   217             mFirstWindowCached = ETrue;
   202             return;
   218             return;
   203         }
   219         }
   204         IssueRequest();
   220         IssueRequest();
       
   221         return;
       
   222     }
       
   223     //if more entries have to be fetched , issue a request,
       
   224     // else listen for events.
       
   225     if(mCurrentIndex < mTotalCount )
       
   226     {
       
   227         //fetch more
       
   228         mCurrentState = EFetchMoreConversations;
       
   229         IssueRequest();
   205     }
   230     }
   206     else
   231     else
   207     {
   232     {
   208         if (!mFirstWindowCached)
   233         if (!mFirstWindowCached)
   209         {
   234         {
   210             ConversationsEngine::instance()->emitConversationModelPopulated();
   235             ConversationsEngine::instance()->emitConversationModelPopulated();
   211             mFirstWindowCached = ETrue;
   236             mFirstWindowCached = ETrue;
   212         }
   237         }
   213         mConversationEntryList.ResetAndDestroy();
   238         mConversationEntryList.ResetAndDestroy();
   214         mConvEnginePrivate->registerForConversationUpdatesL();
       
   215         mCurrentState = EListenToEvents;
   239         mCurrentState = EListenToEvents;
   216     }
   240     }
   217 }
   241 }
   218 
   242 
   219 // ---------------------------------------------------------------------------
   243 // ---------------------------------------------------------------------------
       
   244 //  Fetches remaining conversations from the server 
       
   245 // ---------------------------------------------------------------------------
       
   246 //
       
   247 void ConversationsChangeHandler::FetchRemainingConversations(TInt aTotalCount)
       
   248 {
       
   249     mConvEnginePrivate->fetchRemainingConversations(aTotalCount);
       
   250     
       
   251 }
       
   252 // ---------------------------------------------------------------------------
   220 //  Starts fetching remaining conversations
   253 //  Starts fetching remaining conversations
   221 // ---------------------------------------------------------------------------
   254 // ---------------------------------------------------------------------------
   222 //
   255 //
   223 void ConversationsChangeHandler::restartHandleConversations()
   256 void ConversationsChangeHandler::restartHandleConversations()
   224 {
   257 {