diff -r 238255e8b033 -r 84d9eb65b26f messagingapp/msgui/msgapp/src/msglistviewitem.cpp --- 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 +#include #include #include #include #include +#include #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 //---------------------------------------------------------------