diff -r a32b19fb291e -r 5b14749788d7 messagingapp/msgui/conversationview/src/msgconversationviewitem.cpp --- a/messagingapp/msgui/conversationview/src/msgconversationviewitem.cpp Thu Jun 17 09:57:06 2010 +0100 +++ b/messagingapp/msgui/conversationview/src/msgconversationviewitem.cpp Thu Jul 22 16:32:06 2010 +0100 @@ -27,6 +27,7 @@ #include #include #include +#include // USER INCLUDES #include "msgconversationwidget.h" @@ -41,6 +42,9 @@ const QString ANIMATION_FILE(":/qtg_anim_loading.axml"); const QString ANIMATION_ICON_NAME("qtg_anim_loading"); const QString VCARD_ICON("qtg_large_mycard"); +const QString IMAGE_ICON("qtg_small_image"); +const QString CORRUPTED_ICON("qtg_small_corrupted"); +const QString MSG_VIDEO_ICON("qtg_small_video"); // LOCALIZATION #define LOC_RINGING_TONE hbTrId("txt_messaging_dpopinfo_ringing_tone") @@ -55,7 +59,7 @@ //--------------------------------------------------------------- MsgConversationViewItem::MsgConversationViewItem(QGraphicsItem* parent) : HbListViewItem(parent), mIncoming(false), mConversation(0), - mMessageStateIconItem(0) + mIncomingMsgStateIconItem(0), mOutgoingMsgStateIconItem(0) { } @@ -72,23 +76,18 @@ // Create a new decorator item. //--------------------------------------------------------------- MsgConversationViewItem* MsgConversationViewItem::createItem() - { - return new MsgConversationViewItem(*this); - } +{ + MsgConversationViewItem *item = new MsgConversationViewItem(*this); + item->init(); + return item; +} //--------------------------------------------------------------- // MsgConversationViewItem::updateChildItems // //--------------------------------------------------------------- void MsgConversationViewItem::updateChildItems() - { - - if (!mMessageStateIconItem) - { - mMessageStateIconItem = new HbIconItem(this); - HbStyle::setItemName(mMessageStateIconItem, "msgStateIcon"); - } - +{ QModelIndex index = modelIndex(); #ifdef _DEBUG_TRACES_ @@ -136,14 +135,10 @@ // MsgConversationViewItem::updateSmsTypeItem // @see header file //--------------------------------------------------------------- -void MsgConversationViewItem::updateSmsTypeItem(const QModelIndex& index, int messageSubType) - { - - if (!mConversation) - { - mConversation = new MsgConversationWidget(this); - HbStyle::setItemName(mConversation, "msgconvwidget"); - } +void MsgConversationViewItem::updateSmsTypeItem(const QModelIndex& index, + int messageSubType) +{ + mIncoming = false; mConversation->resetProperties(); @@ -154,8 +149,8 @@ setIncoming(true); mConversation->setIncoming(true); - mMessageStateIconItem->setVisible(false); - } + mIncomingMsgStateIconItem->setVisible(false); + } else if (direction == ConvergedMessage::Outgoing) { setIncoming(false); @@ -238,7 +233,7 @@ } else { - mMessageStateIconItem->setVisible(false); + mIncomingMsgStateIconItem->setVisible(false); } } else if (direction == ConvergedMessage::Outgoing) @@ -295,28 +290,63 @@ //preview image bool hasImage = (msgProperty & EPreviewImage) ? true : false; - if (hasImage) - { - int msgId = index.data(ConvergedMsgId).toInt(); - mConversation->setPreviewIconPath(previewPath, msgId); + { mConversation->setImage(true); - } + HbIcon previewIcon; + if (msgProperty & EPreviewProtectedImage) + { + previewIcon = HbIcon(IMAGE_ICON); + } + else if (msgProperty & EPreviewCorruptedImage) + { + // TODO: Change to official icon. + previewIcon = HbIcon(CORRUPTED_ICON); + } + else + { + QVariant previewData = index.data(PreviewIcon); + previewIcon = qvariant_cast (previewData); + } + mConversation->setPreviewIcon(previewIcon); + } bool hasVideo = (msgProperty & EPreviewVideo) ? true : false; - if (hasVideo) - { + { mConversation->setVideo(true); - } - + HbIcon videoPreviewIcon; + if (msgProperty & EPreviewProtectedVideo) + { + videoPreviewIcon = HbIcon(MSG_VIDEO_ICON); + } + else if (msgProperty & EPreviewCorruptedVideo) + { + videoPreviewIcon = HbIcon(CORRUPTED_ICON); + } + else + { + videoPreviewIcon = HbIcon(MSG_VIDEO_ICON); + } + mConversation->setPreviewIcon(videoPreviewIcon); + } bool hasAudio = (msgProperty & EPreviewAudio) ? true : false; if (hasAudio) - { + { mConversation->setAudio(true); - } - - mConversation->displayAudioIcon(); + if (msgProperty & EPreviewProtectedAudio) + { + mConversation->displayAudioIcon(); + } + else if (msgProperty & EPreviewCorruptedAudio) + { + mConversation->displayAudioIcon(CORRUPTED_ICON); + } + else + { + mConversation->displayAudioIcon(); + } + } int priority = index.data(MessagePriority).toInt(); mConversation->setPriority(priority); @@ -331,6 +361,7 @@ mConversation->setAudio(true); mConversation->displayAudioIcon(); mConversation->setSubject(LOC_RINGING_TONE); + mConversation->setBodyText(bodyText); } else if (messageSubType == ConvergedMessage::VCard) { @@ -380,8 +411,8 @@ //--------------------------------------------------------------- bool MsgConversationViewItem::containsPoint(const QPointF& point) { - return mConversation->boundingRect(). - contains(mConversation->mapFromScene(point)); + return mConversation->boundingRect(). contains(mConversation->mapFromScene( + point)); } //--------------------------------------------------------------- @@ -391,6 +422,23 @@ void MsgConversationViewItem::setIncoming(bool incoming) { mIncoming = incoming; + + if (mIncoming) + { + HbStyle::setItemName(mOutgoingMsgStateIconItem, ""); + mOutgoingMsgStateIconItem->setVisible(false); + HbStyle::setItemName(mIncomingMsgStateIconItem, "msgStateIconIncoming"); + mIncomingMsgStateIconItem->setIcon(HbIcon()); + mIncomingMsgStateIconItem->setVisible(false); + } + else + { + HbStyle::setItemName(mIncomingMsgStateIconItem, ""); + mIncomingMsgStateIconItem->setVisible(false); + HbStyle::setItemName(mOutgoingMsgStateIconItem, "msgStateIconOutgoing"); + mOutgoingMsgStateIconItem->setIcon(HbIcon()); + mOutgoingMsgStateIconItem->setVisible(false); + } } //--------------------------------------------------------------- @@ -408,51 +456,52 @@ //--------------------------------------------------------------- void MsgConversationViewItem::setMessageStateIcon(int messageState) { - HbIconAnimator& iconAnimator = mMessageStateIconItem->animator(); - HbIconAnimationManager* iconAnimationManager = HbIconAnimationManager::global(); + HbIconAnimator& iconAnimator = mOutgoingMsgStateIconItem->animator(); + HbIconAnimationManager* iconAnimationManager = + HbIconAnimationManager::global(); switch (messageState) { case ConvergedMessage::Waiting: case ConvergedMessage::Scheduled: case ConvergedMessage::Sending: - { - bool defined = iconAnimationManager->addDefinitionFile(ANIMATION_FILE); - HbIcon animIcon; + { + bool defined = iconAnimationManager->addDefinitionFile( + ANIMATION_FILE); + HbIcon animIcon; animIcon.setIconName(ANIMATION_ICON_NAME); - QSizeF size = mMessageStateIconItem->size(); - mMessageStateIconItem->setIcon(animIcon); - mMessageStateIconItem->setVisible(true); + QSizeF size = mOutgoingMsgStateIconItem->size(); + mOutgoingMsgStateIconItem->setIcon(animIcon); + mOutgoingMsgStateIconItem->setVisible(true); iconAnimator.startAnimation(); - repolish(); break; } case ConvergedMessage::Suspended: { - iconAnimator.stopAnimation(); - mMessageStateIconItem->setIcon(MSG_OUTBOX_ICON); - mMessageStateIconItem->setVisible(true); - break; - + iconAnimator.stopAnimation(); + mOutgoingMsgStateIconItem->setIcon(MSG_OUTBOX_ICON); + mOutgoingMsgStateIconItem->setVisible(true); + break; + } case ConvergedMessage::Resend: { iconAnimator.stopAnimation(); - mMessageStateIconItem->setIcon(MSG_OUTBOX_ICON); - mMessageStateIconItem->setVisible(true); + mOutgoingMsgStateIconItem->setIcon(MSG_OUTBOX_ICON); + mOutgoingMsgStateIconItem->setVisible(true); break; } case ConvergedMessage::Failed: { iconAnimator.stopAnimation(); - mMessageStateIconItem->setIcon(MSG_FAIL_ICON); - mMessageStateIconItem->setVisible(true); + mOutgoingMsgStateIconItem->setIcon(MSG_FAIL_ICON); + mOutgoingMsgStateIconItem->setVisible(true); break; } case ConvergedMessage::Unknown: default: { iconAnimator.stopAnimation(); - mMessageStateIconItem->setVisible(false); + mOutgoingMsgStateIconItem->setVisible(false); break; } } @@ -465,28 +514,29 @@ void MsgConversationViewItem::setNotificationStateIcon(int notificationState) { - HbIconAnimator& iconAnimator = mMessageStateIconItem->animator(); - HbIconAnimationManager* iconAnimationManager = HbIconAnimationManager::global(); + HbIconAnimator& iconAnimator = mIncomingMsgStateIconItem->animator(); + HbIconAnimationManager* iconAnimationManager = + HbIconAnimationManager::global(); switch (notificationState) { case ConvergedMessage::NotifRetrieving: case ConvergedMessage::NotifWaiting: { //TODO: Temp icon until official icons are received - bool defined = iconAnimationManager->addDefinitionFile(ANIMATION_FILE); + bool defined = iconAnimationManager->addDefinitionFile( + ANIMATION_FILE); HbIcon animIcon; animIcon.setIconName(ANIMATION_ICON_NAME); - QSizeF size = mMessageStateIconItem->size(); - mMessageStateIconItem->setIcon(animIcon); - mMessageStateIconItem->setVisible(true); + QSizeF size = mIncomingMsgStateIconItem->size(); + mIncomingMsgStateIconItem->setIcon(animIcon); + mIncomingMsgStateIconItem->setVisible(true); iconAnimator.startAnimation(); - repolish(); break; } default: { iconAnimator.stopAnimation(); - mMessageStateIconItem->setVisible(false); + mIncomingMsgStateIconItem->setVisible(false); break; } } @@ -501,4 +551,41 @@ mConversation->pressStateChanged(pressed, animate); } +//--------------------------------------------------------------- +// MsgConversationViewItem::init +// @see header file +//--------------------------------------------------------------- +void MsgConversationViewItem::init() +{ + mConversation = new MsgConversationWidget(this); + HbStyle::setItemName(mConversation, "msgconvwidget"); + + mIncomingMsgStateIconItem = new HbIconItem(this); + HbStyle::setItemName(mIncomingMsgStateIconItem, "msgStateIconIncoming"); + + mOutgoingMsgStateIconItem = new HbIconItem(this); + HbStyle::setItemName(mOutgoingMsgStateIconItem, "msgStateIconOutgoing"); + + HbMainWindow *mainWindow = hbInstance->allMainWindows()[0]; + + connect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, + SLOT(orientationchanged(Qt::Orientation)), Qt::UniqueConnection); + + // Force polish to get all the sub-item properties right. + polishEvent(); +} + +//--------------------------------------------------------------- +// MsgConversationViewItem::orientationchanged +// @see header file +//--------------------------------------------------------------- +void MsgConversationViewItem::orientationchanged(Qt::Orientation orientation) +{ + QDEBUG_WRITE("MsgConversationViewItem:orientationchanged start.") + + repolish(); + + QDEBUG_WRITE("MsgConversationViewItem:orientationchanged end.") +} + // EOF