messagingapp/msgui/msgapp/src/msglistviewitem.cpp
changeset 34 84197e66a4bd
parent 31 ebfee66fde93
child 44 36f374c67aa8
equal deleted inserted replaced
31:ebfee66fde93 34:84197e66a4bd
    76 // MsgListViewItem::updateChildItems
    76 // MsgListViewItem::updateChildItems
    77 // @see header
    77 // @see header
    78 //---------------------------------------------------------------
    78 //---------------------------------------------------------------
    79 void MsgListViewItem::updateChildItems()
    79 void MsgListViewItem::updateChildItems()
    80 {
    80 {
    81     if (!mAddressLabelItem)
    81     initItems();
    82     {
    82 
    83         mAddressLabelItem = new HbTextItem(this);
    83     setTimestampAndPreviewText();
    84         HbStyle::setItemName(mAddressLabelItem, "addressLabel");
       
    85     }
       
    86     if (!mTimestampItem)
       
    87     {
       
    88         mTimestampItem = new HbTextItem(this);
       
    89         HbStyle::setItemName(mTimestampItem, "timeLabel");
       
    90     }
       
    91     if (!mPreviewLabelItem)
       
    92     {
       
    93         mPreviewLabelItem = new HbTextItem(this);
       
    94         mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap);
       
    95         HbStyle::setItemName(mPreviewLabelItem, "previewLabel");
       
    96     }
       
    97     if (!mUnreadCountItem)
       
    98     {
       
    99         mUnreadCountItem = new HbTextItem(this);
       
   100         HbStyle::setItemName(mUnreadCountItem, "unreadCount");
       
   101     }
       
   102     if (!mNewMsgIndicatorItem)
       
   103     {
       
   104         mNewMsgIndicatorItem = new HbFrameItem(this);
       
   105         HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator");
       
   106 
       
   107         mNewMsgIndicatorItem->frameDrawer().setFrameType(
       
   108             HbFrameDrawer::ThreePiecesVertical);
       
   109     }
       
   110 
       
   111     // Set the message text depending upon the message type
       
   112     int messageType = modelIndex().data(MessageType).toInt();
       
   113     int messageSubType = modelIndex().data(MessageSubType).toInt();
       
   114     int messageState = modelIndex().data(SendingState).toInt();
       
   115     int messageDirection = modelIndex().data(Direction).toInt();
       
   116     QString prevText;
       
   117     prevText = previewText(messageType, messageSubType, messageState,messageDirection);
       
   118     prevText.replace(QChar::ParagraphSeparator, QChar::LineSeparator);
       
   119     prevText.replace('\r', QChar::LineSeparator);
       
   120     mPreviewLabelItem->setText(prevText);
       
   121 
    84 
   122     // Address label
    85     // Address label
   123     QString contactName;
    86     QString contactName;
       
    87     int messageType = modelIndex().data(MessageType).toInt();
   124     if(messageType == ConvergedMessage::BT)
    88     if(messageType == ConvergedMessage::BT)
   125     {
    89     {
   126         contactName = LOC_RECEIVED_FILES;
    90         contactName = LOC_RECEIVED_FILES;
   127     }
    91     }
   128     else
    92     else
   146 
   110 
   147     if (unreadCount > 0)
   111     if (unreadCount > 0)
   148     {
   112     {
   149         QString unRead(tr("(%n)", "", unreadCount));
   113         QString unRead(tr("(%n)", "", unreadCount));
   150         mUnreadCountItem->setText(unRead);
   114         mUnreadCountItem->setText(unRead);
   151         mUnReadMsg = true;
   115         if(!mUnReadMsg)
   152         mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(NEW_ITEM_FRAME);
   116         {
       
   117             mUnReadMsg = true;
       
   118             mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(NEW_ITEM_FRAME);
       
   119             repolish();
       
   120         }       
   153     }
   121     }
   154     else
   122     else
   155     {
   123     {
   156         mUnreadCountItem->setText(QString());
   124         mUnreadCountItem->setText(QString());        
   157         mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(QString());
   125         if(mUnReadMsg)
   158         mUnReadMsg = false;
   126         {
   159         repolish();
   127             mUnReadMsg = false;  
       
   128             mNewMsgIndicatorItem->frameDrawer().setFrameGraphicsName(QString());
       
   129             repolish();
       
   130         }
   160     }
   131     }
   161 
   132 
   162     HbListViewItem::updateChildItems();
   133     HbListViewItem::updateChildItems();
   163 }
   134 }
   164 
   135 
   165 //---------------------------------------------------------------
   136 //---------------------------------------------------------------
   166 // MsgListViewItem::previewText
   137 // MsgListViewItem::initItems
   167 // @see header
   138 // @see header
   168 //---------------------------------------------------------------
   139 //---------------------------------------------------------------
   169 QString MsgListViewItem::previewText(int msgType, 
   140 void MsgListViewItem::initItems()
   170     int msgSubType, 
   141 {
   171     int msgState,
   142     if (!mAddressLabelItem) {
   172     int msgDirection)
   143         mAddressLabelItem = new HbTextItem(this);
       
   144         HbStyle::setItemName(mAddressLabelItem, "addressLabel");
       
   145     }
       
   146     if (!mTimestampItem) {
       
   147         mTimestampItem = new HbTextItem(this);
       
   148         HbStyle::setItemName(mTimestampItem, "timeLabel");
       
   149     }
       
   150     if (!mPreviewLabelItem) {
       
   151         mPreviewLabelItem = new HbTextItem(this);
       
   152         mPreviewLabelItem->setTextWrapping(Hb::TextWordWrap);
       
   153         HbStyle::setItemName(mPreviewLabelItem, "previewLabel");
       
   154     }
       
   155     if (!mUnreadCountItem) {
       
   156         mUnreadCountItem = new HbTextItem(this);
       
   157         HbStyle::setItemName(mUnreadCountItem, "unreadCount");
       
   158     }
       
   159     if (!mNewMsgIndicatorItem) {
       
   160         mNewMsgIndicatorItem = new HbFrameItem(this);
       
   161         HbStyle::setItemName(mNewMsgIndicatorItem, "newMsgIndicator");
       
   162 
       
   163         mNewMsgIndicatorItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesVertical);
       
   164     }
       
   165     if (!mPresenceIndicatorItem) {
       
   166         mPresenceIndicatorItem = new HbIconItem(this);
       
   167         HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator");
       
   168     }
       
   169 }
       
   170 //---------------------------------------------------------------
       
   171 // MsgListViewItem::defaultPreviewText
       
   172 // @see header
       
   173 //---------------------------------------------------------------
       
   174 QString MsgListViewItem::defaultPreviewText(int msgType, int msgSubType)
   173 {
   175 {
   174     QString bodyText(modelIndex().data(BodyText).toString());
   176     QString bodyText(modelIndex().data(BodyText).toString());
   175     QString previewText;
   177     QString previewText;
   176     // Set the message text & icons, depending upon the message type
   178     // Set the message text & icons, depending upon the message type
   177     if (msgType == ConvergedMessage::BioMsg) {
   179     if (msgType == ConvergedMessage::BioMsg) {
       
   180 
   178         if (msgSubType == ConvergedMessage::RingingTone) {
   181         if (msgSubType == ConvergedMessage::RingingTone) {
   179             previewText = LOC_RINGING_TONE;
   182             previewText = LOC_RINGING_TONE;
   180         }
   183         }
   181         else if (msgSubType == ConvergedMessage::VCard) {
   184         else if (msgSubType == ConvergedMessage::VCard) {
   182             previewText = LOC_BUSINESS_CARD;
   185             previewText = LOC_BUSINESS_CARD;
   183             previewText.append(QChar::LineSeparator);
   186             previewText.append(QChar::LineSeparator);
   184             previewText.append(bodyText);
   187             previewText.append(bodyText);
   185         }
   188         }
   186         else if (msgSubType == ConvergedMessage::Provisioning) {
   189         else if (msgSubType == ConvergedMessage::Provisioning) {
   187                 previewText = bodyText;
   190             previewText = bodyText;
   188                 }
   191         }
       
   192         else if (msgSubType == ConvergedMessage::NokiaService) {
       
   193             previewText = bodyText;
       
   194         }
   189         else {
   195         else {
   190             previewText = LOC_UNSUPPORTED_MSG_TYPE;
   196             previewText = LOC_UNSUPPORTED_MSG_TYPE;
   191         }
   197         }
       
   198 
       
   199         mPresenceIndicatorItem->setVisible(false);
   192     }
   200     }
   193     else if (msgType == ConvergedMessage::BT) {
   201     else if (msgType == ConvergedMessage::BT) {
   194         
   202 
   195         if (msgSubType == ConvergedMessage::VCard) {
   203         if (msgSubType == ConvergedMessage::VCard) {
   196             previewText = LOC_BUSINESS_CARD;
   204             previewText = LOC_BUSINESS_CARD;
   197             previewText.append(QChar::LineSeparator);
   205             previewText.append(QChar::LineSeparator);
   198             previewText.append(bodyText);
   206             previewText.append(bodyText);
   199         }
   207         }
   200         else {
   208         else {
   201             previewText = bodyText;
   209             previewText = bodyText;
   202         }
   210         }
   203         if (!mPresenceIndicatorItem) {
   211 
   204             mPresenceIndicatorItem = new HbIconItem(this);
   212         mPresenceIndicatorItem->setIconName(BT_ICON);
   205             HbStyle::setItemName(mPresenceIndicatorItem, "presenceIndicator");
   213         mPresenceIndicatorItem->setVisible(true);
   206             mPresenceIndicatorItem->setIconName(BT_ICON);
       
   207         }
       
   208     }
   214     }
   209     else {
   215     else {
   210         previewText = textBySendState(msgState,msgDirection);
   216         // All message types except BIO & BT.
       
   217         previewText = modelIndex().data(BodyText).toString();
       
   218         mPresenceIndicatorItem->setVisible(false);
   211     }
   219     }
   212     return previewText;
   220     return previewText;
   213 }
   221 }
   214 
   222 
   215 
   223 
   216 //---------------------------------------------------------------
   224 //---------------------------------------------------------------
   217 // MsgListViewItem::textBySendState
   225 // MsgListViewItem::setTimestampAndPreviewText
   218 // @see header
   226 // @see header
   219 //---------------------------------------------------------------
   227 //---------------------------------------------------------------
   220 QString MsgListViewItem::textBySendState(int sendState,int msgDirection)
   228 void MsgListViewItem::setTimestampAndPreviewText()
   221 {
   229 {
   222     QString previewText;
   230     // Get timestamp
   223     QDateTime dateTime;
   231     QDateTime dateTime;
   224     dateTime.setTime_t(modelIndex().data(TimeStamp).toUInt());
   232     dateTime.setTime_t(modelIndex().data(TimeStamp).toUInt());
   225     QString dateString;
   233     QString dateString;
   226     if (dateTime.date() == QDateTime::currentDateTime().date()) {
   234     if (dateTime.date() == QDateTime::currentDateTime().date()) {
   227         dateString = MsgUtils::dateTimeToString(dateTime, TIME_FORMAT);
   235         dateString = MsgUtils::dateTimeToString(dateTime, TIME_FORMAT);
   228     }
   236     }
   229     else {
   237     else {
   230         dateString = MsgUtils::dateTimeToString(dateTime, DATE_FORMAT);
   238         dateString = MsgUtils::dateTimeToString(dateTime, DATE_FORMAT);
   231     }
   239     }
   232 
   240 
   233     if (msgDirection == ConvergedMessage::Outgoing)
   241     // Set preview text & time based on direction
   234     {
   242     int msgType = modelIndex().data(MessageType).toInt();
   235         switch (sendState)
   243     int msgSubType = modelIndex().data(MessageSubType).toInt();
   236         {
   244     int sendState = modelIndex().data(SendingState).toInt();
   237             case ConvergedMessage::Resend:
   245     int msgDirection = modelIndex().data(Direction).toInt();
   238             {
   246     QString previewText;
   239 
   247     if (ConvergedMessage::Incoming == msgDirection) {
   240                 QString resendString = LOC_MSG_RESEND_AT + dateString;
   248         previewText = defaultPreviewText(msgType, msgSubType);
   241                 previewText = resendString;
   249     }
   242                 dateString = QString("");
   250     else if (msgDirection == ConvergedMessage::Outgoing) {
   243                 if (!mPresenceIndicatorItem)
   251 
   244                 {
   252         switch (sendState) {
   245                     mPresenceIndicatorItem = new HbIconItem(this);
   253         case ConvergedMessage::Resend:
   246                 }
   254         {
   247                 HbStyle::setItemName(mPresenceIndicatorItem,
   255             previewText = LOC_MSG_RESEND_AT + dateString;
   248                     "presenceIndicator");
   256             dateString = QString();
   249                 mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
   257             mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
   250                 mPresenceIndicatorItem->setVisible(true);
   258             mPresenceIndicatorItem->setVisible(true);
   251                 break;
   259             break;
   252             }
   260         }
   253 
   261         case ConvergedMessage::Sending:
   254             case ConvergedMessage::Sending:
   262         case ConvergedMessage::Suspended:
   255             case ConvergedMessage::Suspended:
   263         case ConvergedMessage::Scheduled:
   256             case ConvergedMessage::Scheduled:
   264         case ConvergedMessage::Waiting:
   257             case ConvergedMessage::Waiting:
   265         {
   258             {
   266             previewText = QString(LOC_MSG_OUTGOING);
   259                 previewText = QString(LOC_MSG_OUTGOING);
   267             mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
   260                 if (!mPresenceIndicatorItem)
   268             mPresenceIndicatorItem->setVisible(true);
   261                 {
   269             break;
   262                     mPresenceIndicatorItem = new HbIconItem(this);
   270         }
   263                 }
   271         case ConvergedMessage::Failed:
   264                 HbStyle::setItemName(mPresenceIndicatorItem,
   272         {
   265                     "presenceIndicator");
   273             previewText = QString(LOC_MSG_SEND_FAILED);
   266                 mPresenceIndicatorItem->setIconName(MSG_OUTGOING_ICON);
   274             mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON);
   267                 mPresenceIndicatorItem->setVisible(true);
   275             mPresenceIndicatorItem->setVisible(true);
   268                 break;
   276             break;
   269             }
   277         }
   270             case ConvergedMessage::Failed:
   278         default:
   271             {
   279         {
   272                 previewText = QString(LOC_MSG_SEND_FAILED);
   280             // Successful case
   273                 if (!mPresenceIndicatorItem)
   281             previewText = defaultPreviewText(msgType, msgSubType);
   274                 {
   282             break;
   275                     mPresenceIndicatorItem = new HbIconItem(this);
   283         }
   276                 }
   284         }
   277                 HbStyle::setItemName(mPresenceIndicatorItem,
   285     }
   278                     "presenceIndicator");
   286     previewText.replace(QChar::ParagraphSeparator, QChar::LineSeparator);
   279                 mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON);
   287     previewText.replace('\r', QChar::LineSeparator);
   280                 mPresenceIndicatorItem->setVisible(true);
   288     mPreviewLabelItem->setText(previewText);
   281                 break;
       
   282             }
       
   283             default:
       
   284                 QString postFix = QString("");
       
   285                 previewText = modelIndex().data(BodyText).toString();
       
   286                 previewText += (QChar(QChar::LineSeparator) + postFix);
       
   287 
       
   288                 if (!mPresenceIndicatorItem)
       
   289                 {
       
   290                     mPresenceIndicatorItem = new HbIconItem(this);
       
   291                 }
       
   292 
       
   293                 HbStyle::setItemName(mPresenceIndicatorItem,
       
   294                     "presenceIndicator");
       
   295                 mPresenceIndicatorItem->setIconName(MSG_FAILED_ICON);
       
   296                 mPresenceIndicatorItem->setVisible(false);
       
   297 
       
   298                 break;
       
   299         }
       
   300     }
       
   301     else
       
   302     {
       
   303         previewText = modelIndex().data(BodyText).toString();
       
   304     }
       
   305     mTimestampItem->setText(dateString);
   289     mTimestampItem->setText(dateString);
   306     return previewText;
       
   307 }
   290 }
   308 
   291 
   309 //---------------------------------------------------------------
   292 //---------------------------------------------------------------
   310 // MsgListViewItem::paint.
   293 // MsgListViewItem::paint.
   311 // @see header
   294 // @see header