--- a/messagingapp/msgui/msgapp/src/msglistviewitem.cpp Thu Jun 17 09:57:06 2010 +0100
+++ b/messagingapp/msgui/msgapp/src/msglistviewitem.cpp Thu Jul 22 16:32:06 2010 +0100
@@ -25,6 +25,8 @@
#include <HbTextItem>
#include <HbFrameItem>
#include <HbIconItem>
+#include <QCoreApplication>
+#include <HbEvent>
#include "msgcommondefines.h"
#include "conversationsengine.h"
@@ -78,49 +80,13 @@
//---------------------------------------------------------------
void MsgListViewItem::updateChildItems()
{
- if (!mAddressLabelItem)
- {
- mAddressLabelItem = new HbTextItem(this);
- HbStyle::setItemName(mAddressLabelItem, "addressLabel");
- }
- if (!mTimestampItem)
- {
- mTimestampItem = new HbTextItem(this);
- HbStyle::setItemName(mTimestampItem, "timeLabel");
- }
- if (!mPreviewLabelItem)
- {
- mPreviewLabelItem = new HbTextItem(this);
- mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap);
- HbStyle::setItemName(mPreviewLabelItem, "previewLabel");
- }
- if (!mUnreadCountItem)
- {
- mUnreadCountItem = new HbTextItem(this);
- HbStyle::setItemName(mUnreadCountItem, "unreadCount");
- }
- if (!mNewMsgIndicatorItem)
- {
- mNewMsgIndicatorItem = new HbFrameItem(this);
- HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator");
+ initItems();
- mNewMsgIndicatorItem->frameDrawer().setFrameType(
- HbFrameDrawer::ThreePiecesVertical);
- }
-
- // 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);
+ setTimestampAndPreviewText();
// Address label
QString contactName;
+ int messageType = modelIndex().data(MessageType).toInt();
if(messageType == ConvergedMessage::BT)
{
contactName = LOC_RECEIVED_FILES;
@@ -129,15 +95,7 @@
{
QString displayName = modelIndex().data(DisplayName).toString();
QString contactAddress = modelIndex().data(ConversationAddress).toString();
-
- if (displayName.isEmpty())
- {
- contactName.append(contactAddress);
- }
- else
- {
- contactName.append(displayName);
- }
+ contactName.append(displayName);
}
mAddressLabelItem->setText(contactName);
@@ -148,33 +106,76 @@
{
QString unRead(tr("(%n)", "", unreadCount));
mUnreadCountItem->setText(unRead);
- mUnReadMsg = true;
- mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(NEW_ITEM_FRAME);
+ if(!mUnReadMsg)
+ {
+ mUnReadMsg = true;
+ mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(NEW_ITEM_FRAME);
+ repolish();
+ // Needed for colour group changes to be visible
+ QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged));
+ }
}
else
{
- mUnreadCountItem->setText(QString());
- mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(QString());
- mUnReadMsg = false;
- repolish();
+ mUnreadCountItem->setText(QString());
+ if(mUnReadMsg)
+ {
+ mUnReadMsg = false;
+ mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(QString());
+ repolish();
+ // Needed for colour group changes to be visible
+ QCoreApplication::postEvent(this, new HbEvent(HbEvent::ThemeChanged));
+ }
}
HbListViewItem::updateChildItems();
}
//---------------------------------------------------------------
-// MsgListViewItem::previewText
+// MsgListViewItem::initItems
// @see header
//---------------------------------------------------------------
-QString MsgListViewItem::previewText(int msgType,
- int msgSubType,
- int msgState,
- int msgDirection)
+void MsgListViewItem::initItems()
+{
+ if (!mAddressLabelItem) {
+ mAddressLabelItem = new HbTextItem(this);
+ HbStyle::setItemName(mAddressLabelItem, "addressLabel");
+ }
+ if (!mTimestampItem) {
+ mTimestampItem = new HbTextItem(this);
+ HbStyle::setItemName(mTimestampItem, "timeLabel");
+ }
+ if (!mPreviewLabelItem) {
+ mPreviewLabelItem = new HbTextItem(this);
+ mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap);
+ HbStyle::setItemName(mPreviewLabelItem, "previewLabel");
+ }
+ if (!mUnreadCountItem) {
+ mUnreadCountItem = new HbTextItem(this);
+ HbStyle::setItemName(mUnreadCountItem, "unreadCount");
+ }
+ if (!mNewMsgIndicatorItem) {
+ mNewMsgIndicatorItem = new HbFrameItem(this);
+ HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator");
+
+ mNewMsgIndicatorItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical);
+ }
+ if (!mPresenceIndicatorItem) {
+ mPresenceIndicatorItem = new HbIconItem(this);
+ HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator");
+ }
+}
+//---------------------------------------------------------------
+// MsgListViewItem::defaultPreviewText
+// @see header
+//---------------------------------------------------------------
+QString MsgListViewItem::defaultPreviewText(int msgType, int msgSubType)
{
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;
}
@@ -184,14 +185,19 @@
previewText.append(bodyText);
}
else if (msgSubType == ConvergedMessage::Provisioning) {
- previewText = bodyText;
- }
+ previewText = bodyText;
+ }
+ else if (msgSubType == ConvergedMessage::NokiaService) {
+ previewText = bodyText;
+ }
else {
previewText = LOC_UNSUPPORTED_MSG_TYPE;
}
+
+ mPresenceIndicatorItem->setVisible(false);
}
else if (msgType == ConvergedMessage::BT) {
-
+
if (msgSubType == ConvergedMessage::VCard) {
previewText = LOC_BUSINESS_CARD;
previewText.append(QChar::LineSeparator);
@@ -200,26 +206,26 @@
else {
previewText = bodyText;
}
- if (!mPresenceIndicatorItem) {
- mPresenceIndicatorItem = new HbIconItem(this);
- HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator");
- mPresenceIndicatorItem->setIconName(BT_ICON);
- }
+
+ mPresenceIndicatorItem->setIconName(BT_ICON);
+ mPresenceIndicatorItem->setVisible(true);
}
else {
- previewText = textBySendState(msgState,msgDirection);
+ // All message types except BIO & BT.
+ previewText = modelIndex().data(BodyText).toString();
+ mPresenceIndicatorItem->setVisible(false);
}
return previewText;
}
//---------------------------------------------------------------
-// MsgListViewItem::textBySendState
+// MsgListViewItem::setTimestampAndPreviewText
// @see header
//---------------------------------------------------------------
-QString MsgListViewItem::textBySendState(int sendState,int msgDirection)
+void MsgListViewItem::setTimestampAndPreviewText()
{
- QString previewText;
+ // Get timestamp
QDateTime dateTime;
dateTime.setTime_t(modelIndex().data(TimeStamp).toUInt());
QString dateString;
@@ -230,80 +236,55 @@
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;
- }
+ // Set preview text & time based on direction
+ int msgType = modelIndex().data(MessageType).toInt();
+ int msgSubType = modelIndex().data(MessageSubType).toInt();
+ int sendState = modelIndex().data(SendingState).toInt();
+ int msgDirection = modelIndex().data(Direction).toInt();
+ QString previewText;
+ if (ConvergedMessage::Incoming == msgDirection) {
+ previewText = defaultPreviewText(msgType, msgSubType);
+ }
+ else if (msgDirection == ConvergedMessage::Outgoing) {
- 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;
+ switch (sendState) {
+ case ConvergedMessage::Resend:
+ {
+ previewText = LOC_MSG_RESEND_AT + dateString;
+ dateString = QString();
+ 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);
+ mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
+ mPresenceIndicatorItem->setVisible(true);
+ break;
+ }
+ case ConvergedMessage::Failed:
+ {
+ previewText = QString(LOC_MSG_SEND_FAILED);
+ mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON);
+ mPresenceIndicatorItem->setVisible(true);
+ break;
+ }
+ default:
+ {
+ // Successful case
+ previewText = defaultPreviewText(msgType, msgSubType);
+ break;
+ }
}
}
- else
- {
- previewText = modelIndex().data(BodyText).toString();
- }
+ previewText.replace(QChar::ParagraphSeparator, QChar::LineSeparator);
+ previewText.replace('\r', QChar::LineSeparator);
+ mPreviewLabelItem->setText(previewText);
mTimestampItem->setText(dateString);
- return previewText;
}
//---------------------------------------------------------------