messagingapp/msgui/appengine/src/conversationssummarymodel.cpp
changeset 37 518b245aa84c
parent 25 84d9eb65b26f
child 41 25fe1fe642e3
--- a/messagingapp/msgui/appengine/src/conversationssummarymodel.cpp	Mon May 03 12:29:07 2010 +0300
+++ b/messagingapp/msgui/appengine/src/conversationssummarymodel.cpp	Fri Jun 25 15:47:40 2010 +0530
@@ -18,10 +18,13 @@
 #include "conversationssummarymodel.h"
 #include "conversationsenginedefines.h"
 #include "conversationsengineutility.h"
-#include "s60qconversions.h"
+#include <xqconversions.h>
 #include "convergedmessage.h"
 #include "unidatamodelloader.h"
 #include "unidatamodelplugininterface.h"
+#include "ringbc.h"
+#include "msgcontacthandler.h"
+#include "debugtraces.h"
 
 #include <ccsclientconversation.h>
 #include <ccsconversationentry.h>
@@ -35,6 +38,8 @@
 ConversationsSummaryModel::ConversationsSummaryModel(QObject* parent)
 :QStandardItemModel(parent)
     {
+    QStandardItemModel::setSortRole(TimeStamp);
+    QStandardItemModel::sort(0, Qt::DescendingOrder);
     }
 
 //---------------------------------------------------------------
@@ -153,7 +158,7 @@
 // @see header
 //---------------------------------------------------------------
 void ConversationsSummaryModel::addRow(
-        const CCsClientConversation& conversation)
+        const CCsClientConversation& conversation, bool caching)
     {  
     int convId = conversation.GetConversationEntryId();
     
@@ -175,7 +180,12 @@
         QModelIndex index = indexList[0];
         QStandardItem* item = this->item(index.row(), 0);
         populateItem(*item,conversation);
-    }        
+    }  
+    // no need to sort if it is initial caching, as sorting is already done
+    if (!caching)
+        {
+        QStandardItemModel::sort(0, Qt::DescendingOrder);
+        }
     }
 
 //---------------------------------------------------------------
@@ -203,6 +213,8 @@
 void ConversationsSummaryModel::populateItem(QStandardItem& item, 
         const CCsClientConversation& conversation)
     {
+    QCRITICAL_WRITE("ConversationsSummaryModel::populateItem start.");
+            
     //get entry
     CCsConversationEntry* conEntry = conversation.GetConversationEntry(); 
     //error scenario
@@ -239,7 +251,7 @@
         HBufC* body = conEntry->Description();
         if( body && body->Length())
         {     
-            QString bodytext(S60QConversions::s60DescToQString(*body));
+            QString bodytext(XQConversions::s60DescToQString(*body));
             item.setData(bodytext, BodyText); 
             item.setData(bodytext, Subject );
         }
@@ -262,7 +274,7 @@
     //display name
     if(disName && disName->Length())
         {
-        displayName = S60QConversions::s60DescToQString(*disName);
+        displayName = XQConversions::s60DescToQString(*disName);
         item.setData(displayName,DisplayName); 
         }
     
@@ -271,7 +283,7 @@
     QString contactNumber("");
     if ( contactno && contactno->Length() )
         {
-        contactNumber = S60QConversions::s60DescToQString(*contactno);                  
+        contactNumber = XQConversions::s60DescToQString(*contactno);                  
         }        
     item.setData(contactNumber, ConversationAddress);
 
@@ -280,7 +292,9 @@
     item.setData(contactId, ContactId);
     
     // unread status        
-    item.setData(conEntry->IsAttributeSet(ECsAttributeUnread),UnReadStatus);      
+    item.setData(conEntry->IsAttributeSet(ECsAttributeUnread),UnReadStatus); 
+    
+    QCRITICAL_WRITE("ConversationsSummaryModel::populateItem start.");
     }
 
 
@@ -293,7 +307,7 @@
 {
     //TODO, needs to be revisited again, once BT team provides the solution for
     //BT received as Biomsg issue.
-    QString description = S60QConversions::s60DescToQString(*(entry.Description()));
+    QString description = XQConversions::s60DescToQString(*(entry.Description()));
 
     if (description.contains(".vcf") || description.contains(".ics")) // "vCard"
     {
@@ -301,7 +315,8 @@
         item.setData(ConvergedMessage::VCard, MessageSubType);
 
         //parse vcf file to get the details
-        QString displayName = ConversationsEngineUtility::getVcardDisplayName(description);
+        QString displayName = MsgContactHandler::getVCardDisplayName(
+                description);
         item.setData(displayName, BodyText);
     }
     else 
@@ -341,7 +356,8 @@
             QString attachmentPath = attList[0]->path();
 
             //get display-name and set as bodytext
-            QString displayName = ConversationsEngineUtility::getVcardDisplayName(attachmentPath);
+            QString displayName = MsgContactHandler::getVCardDisplayName(
+                    attachmentPath);
             item.setData(displayName, BodyText);
 
             // clear attachement list : its allocated at data model
@@ -353,12 +369,43 @@
     else if (ConvergedMessage::VCal == msgSubType) {
         //not supported
     }
-    else {
+    else if (ConvergedMessage::RingingTone == msgSubType) {
+        if (bioMsgPlugin->attachmentCount() > 0) {
+            UniMessageInfoList attList = bioMsgPlugin->attachmentList();
+            QString attachmentPath = attList[0]->path();
+            	
+            //get tone title, and set as bodytext
+            RingBc ringBc;
+            item.setData(ringBc.toneTitle(attachmentPath), BodyText);
+            while (!attList.isEmpty()) {
+                delete attList.takeFirst();
+            }
+        }
+    }
+
+   else if(ConvergedMessage::NokiaService == msgSubType){
+        // This is a bio message so lets parse it and see if it has a associated attachment ..        
+        if (bioMsgPlugin->attachmentCount() > 0) {
+				// TODO : need to confirm if we need to read from attachment
+        }
+        else {// description
+            HBufC* description = entry.Description();
+            QString subject("");
+            if (description && description->Length()) {
+                subject = (XQConversions::s60DescToQString(*description));
+                item.setData(subject, BodyText);
+            }
+
+        }
+
+    }
+
+   else {
         // description
         HBufC* description = entry.Description();
         QString subject("");
         if (description && description->Length()) {
-            subject = (S60QConversions::s60DescToQString(*description));
+            subject = (XQConversions::s60DescToQString(*description));
             item.setData(subject, BodyText);
         }
     }