--- 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
//---------------------------------------------------------------