messagingapp/msgui/msgapp/src/msglistviewitem.cpp
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
--- a/messagingapp/msgui/msgapp/src/msglistviewitem.cpp	Fri Apr 16 14:56:15 2010 +0300
+++ b/messagingapp/msgui/msgapp/src/msglistviewitem.cpp	Mon May 03 12:29:07 2010 +0300
@@ -19,10 +19,12 @@
 #include "msglistviewitem.h"
 
 #include <QDateTime>
+#include <QFileInfo>
 #include <hbframeitem.h>
 #include <hbframedrawer.h>
 #include <HbTextItem>
 #include <HbFrameItem>
+#include <HbIconItem>
 
 #include "msgcommondefines.h"
 #include "conversationsengine.h"
@@ -31,10 +33,20 @@
 #include "convergedmessage.h"
 #include "debugtraces.h"
 
-#define NEW_ITEM_FRAME ":/newitem/qtg_fr_list_new_item"
 #define LOC_RINGING_TONE hbTrId("txt_messaging_dpopinfo_ringing_tone")
+#define LOC_MSG_SEND_FAILED hbTrId("txt_messaging_list_message_sending_failed")
+#define LOC_MSG_OUTGOING hbTrId("txt_messaging_list_outgoing_message")
+#define LOC_MSG_RESEND_AT hbTrId("Resend at ")
+#define LOC_BUSINESS_CARD hbTrId("txt_messaging_list_business_card")
+#define LOC_CALENDAR_EVENT hbTrId("txt_messaging_list_calendar_event")
+#define LOC_UNSUPPORTED_MSG_TYPE hbTrId("txt_messaging_list_unsupported_message_type")
+#define LOC_RECEIVED_FILES hbTrId("txt_messaging_list_received_files")
 
+const QString NEW_ITEM_FRAME("qtg_fr_list_new_item");
 const QString LIST_ITEM_BG_FRAME("qtg_fr_list_normal");
+const QString BT_ICON("qtg_large_bluetooth");
+const QString MSG_OUTGOING_ICON("qtg_mono_outbox");
+const QString MSG_FAILED_ICON("qtg_mono_failed");
 
 //---------------------------------------------------------------
 // MsgListViewItem::MsgListViewItem
@@ -107,99 +119,52 @@
         mBgFrameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
     }
 
-    // Time Stamp.
-    QDateTime dateTime;
-    dateTime.setTime_t(modelIndex().data(TimeStamp).toUInt());
-    QString dateString;
-    if (dateTime.date() == QDateTime::currentDateTime().date())
-    {
-        dateString = MsgUtils::dateTimeToString(dateTime, TIME_FORMAT);
-    }
-    else
-    {
-        dateString = MsgUtils::dateTimeToString(dateTime, DATE_FORMAT);
-    }
-
-    mTimestampItem->setText(dateString);
+    // Set the message text depending upon the message type
+    int messageType = modelIndex().data(MessageType).toInt();
+    int messageSubType = modelIndex().data(MessageSubType).toInt();
+    int messageState = modelIndex().data(SendingState).toInt();
+    int messageDirection = modelIndex().data(Direction).toInt();
+    QString prevText;
+    prevText = previewText(messageType, messageSubType, messageState,messageDirection);
+    prevText.replace(QChar::ParagraphSeparator, QChar::LineSeparator);
+    prevText.replace('\r', QChar::LineSeparator);
+    mPreviewLabelItem->setText(prevText);
 
-    //Sender
-    QString firstName = modelIndex().data(FirstName).toString();
-    QString lastName = modelIndex().data(LastName).toString();
-    QString nickName = modelIndex().data(NickName).toString();
-    QString contactAddress = modelIndex().data(ConversationAddress).toString();
+    // Address label
     QString contactName;
-
-    if (!nickName.isEmpty())
+    if(messageType == ConvergedMessage::BT)
     {
-        contactName.append(nickName);
-    }
-    else if (firstName.isEmpty() && lastName.isEmpty())
-    {
-        contactName.append(contactAddress);
-    }
-    else if (lastName.isEmpty())
-    {
-        contactName.append(firstName);
-    }
-    else if (firstName.isEmpty())
-    {
-        contactName.append(lastName);
+        contactName = LOC_RECEIVED_FILES;
     }
     else
     {
-        // If both first Name and last name are present
-        contactName.append(firstName);
-        contactName.append(" ");
-        contactName.append(lastName);
+        QString displayName = modelIndex().data(DisplayName).toString();
+        QString contactAddress = modelIndex().data(ConversationAddress).toString();
+
+        if (displayName.isEmpty())
+        {
+            contactName.append(contactAddress);
+        }
+        else
+        {
+            contactName.append(displayName);
+        }        
     }
     mAddressLabelItem->setText(contactName);
 
-    // Latest Message
-    int messageType = modelIndex().data(MessageType).toInt();
-    QString previewText;
-    // Set the message text depending upon the message type
-    if (messageType == ConvergedMessage::Mms)
-    {
-        QDEBUG_WRITE("MsgListViewItem::updateChildItems Mms block")
-        previewText = modelIndex().data(Subject).toString();
-    }
-    else if(messageType == ConvergedMessage::RingingTone)
-    {
-        QDEBUG_WRITE("MsgListViewItem::updateChildItems RingingTone block")
-        previewText = LOC_RINGING_TONE;
-    }
-	else if (messageType == ConvergedMessage::VCard)
-    {
-        previewText = QString("Business Card");
-    }
-    else if (messageType == ConvergedMessage::VCal)
-    {
-        previewText = QString("Calender Event");
-    }
-    else if(messageType == ConvergedMessage::BioMsg)
-    {
-        previewText = QString("Unsupported Type");
-    }
-    else
-    {
-        QDEBUG_WRITE("MsgListViewItem::updateChildItems default block")
-        previewText = modelIndex().data(BodyText).toString();
-    }
-    mPreviewLabelItem->setText(previewText);
-
     // Unread message count
     int unreadCount = modelIndex().data(UnreadCount).toInt();
-    QString unRead;
+
     if (unreadCount > 0)
     {
-        unRead.append(tr("(%n)", "", unreadCount));
+        QString unRead(tr("(%n)", "", unreadCount));
         mUnreadCountItem->setText(unRead);
         mUnReadMsg = true;
         mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(NEW_ITEM_FRAME);
     }
     else
     {
-        mUnreadCountItem->setText("");
+        mUnreadCountItem->setText(QString());
         mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(QString());
         mUnReadMsg = false;
         repolish();
@@ -209,6 +174,147 @@
 }
 
 //---------------------------------------------------------------
+// MsgListViewItem::previewText
+// @see header
+//---------------------------------------------------------------
+QString MsgListViewItem::previewText(int msgType, 
+    int msgSubType, 
+    int msgState,
+    int msgDirection)
+{
+    QString bodyText(modelIndex().data(BodyText).toString());
+    QString previewText;
+    // Set the message text & icons, depending upon the message type
+    if (msgType == ConvergedMessage::BioMsg) {
+        if (msgSubType == ConvergedMessage::RingingTone) {
+            previewText = LOC_RINGING_TONE;
+        }
+        else if (msgSubType == ConvergedMessage::VCard) {
+            previewText = LOC_BUSINESS_CARD;
+            previewText.append(QChar::LineSeparator);
+            previewText.append(bodyText);
+        }
+        else {
+            previewText = LOC_UNSUPPORTED_MSG_TYPE;
+        }
+    }
+    else if (msgType == ConvergedMessage::BT) {
+        
+        if (msgSubType == ConvergedMessage::VCard) {
+            previewText = LOC_BUSINESS_CARD;
+            previewText.append(QChar::LineSeparator);
+            previewText.append(bodyText);
+        }
+        else {
+            previewText = bodyText;
+        }
+        if (!mPresenceIndicatorItem) {
+            mPresenceIndicatorItem = new HbIconItem(this);
+            HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator");
+            mPresenceIndicatorItem->setIconName(BT_ICON);
+        }
+    }
+    else {
+        previewText = textBySendState(msgState,msgDirection);
+    }
+    return previewText;
+}
+
+
+//---------------------------------------------------------------
+// MsgListViewItem::textBySendState
+// @see header
+//---------------------------------------------------------------
+QString MsgListViewItem::textBySendState(int sendState,int msgDirection)
+{
+    QString previewText;
+    QDateTime dateTime;
+    dateTime.setTime_t(modelIndex().data(TimeStamp).toUInt());
+    QString dateString;
+    if (dateTime.date() == QDateTime::currentDateTime().date()) {
+        dateString = MsgUtils::dateTimeToString(dateTime, TIME_FORMAT);
+    }
+    else {
+        dateString = MsgUtils::dateTimeToString(dateTime, DATE_FORMAT);
+    }
+
+    if (msgDirection == ConvergedMessage::Outgoing)
+    {
+        switch (sendState)
+        {
+            case ConvergedMessage::Resend:
+            {
+
+                QString resendString = LOC_MSG_RESEND_AT + dateString;
+                previewText = resendString;
+                dateString = QString("");
+                if (!mPresenceIndicatorItem)
+                {
+                    mPresenceIndicatorItem = new HbIconItem(this);
+                }
+                HbStyle::setItemName(mPresenceIndicatorItem,
+                    "presenceIndicator");
+                mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
+                mPresenceIndicatorItem->setVisible(true);
+                break;
+            }
+
+            case ConvergedMessage::Sending:
+            case ConvergedMessage::Suspended:
+            case ConvergedMessage::Scheduled:
+            case ConvergedMessage::Waiting:
+            {
+                previewText = QString(LOC_MSG_OUTGOING);
+                if (!mPresenceIndicatorItem)
+                {
+                    mPresenceIndicatorItem = new HbIconItem(this);
+                }
+                HbStyle::setItemName(mPresenceIndicatorItem,
+                    "presenceIndicator");
+                mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
+                mPresenceIndicatorItem->setVisible(true);
+                break;
+            }
+            case ConvergedMessage::Failed:
+            {
+                previewText = QString(LOC_MSG_SEND_FAILED);
+                if (!mPresenceIndicatorItem)
+                {
+                    mPresenceIndicatorItem = new HbIconItem(this);
+                }
+                HbStyle::setItemName(mPresenceIndicatorItem,
+                    "presenceIndicator");
+                mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON);
+                mPresenceIndicatorItem->setVisible(true);
+                break;
+            }
+            default:
+                QString postFix = QString("");
+                previewText = modelIndex().data(BodyText).toString();
+                previewText += (QChar(QChar::LineSeparator) + postFix);
+
+                if (!mPresenceIndicatorItem)
+                {
+                    mPresenceIndicatorItem = new HbIconItem(this);
+                }
+
+                HbStyle::setItemName(mPresenceIndicatorItem,
+                    "presenceIndicator");
+                mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON);
+                mPresenceIndicatorItem->setVisible(false);
+
+                break;
+        }
+    }
+    else
+    {
+        previewText = modelIndex().data(BodyText).toString();
+    }
+    mTimestampItem->setText(dateString);
+    return previewText;
+}
+
+//---------------------------------------------------------------
 // MsgListViewItem::paint.
 // @see header
 //---------------------------------------------------------------