, m_Share(share)
, m_MsgId(item.getMsgId())
, m_IsDraft(item.isDraft())
- , m_Direction(item.getDirection())
- , m_NetworkStatus(item.getNetworkStatus())
- , m_Type(item.getType())
- , m_Time(item.getTime())
+ , m_Direction()
+ , m_NetworkStatus(Message::NS_Unknown)
+ , m_Type(Message::MT_SMS)
+ , m_Time()
, m_ThumbId(thumbId)
, m_BubbleEntityFactory(bubbleEntityFactory)
- , m_IsRestrictedByDpm(item.isRestrictedByDpm())
+ , m_IsRestrictedByDpm(false)
, m_IsNeededReadReport(false)
+ , m_SearchWord(searchWord)
{
- m_IsNeededReadReport = m_Direction == Message::MD_Received &&
- m_Type == Message::MT_MMS &&
- !item.isRead();
-
- prepareBubble(item, searchWord);
+ update(item);
}
ConvListItem::~ConvListItem()
{
m_App.getPopupManager().reset(this);
- for (auto *entity : m_BubbleEntityList)
- delete entity;
-
- m_BubbleEntityList.clear();
+ clearEntityList();
}
-void ConvListItem::updateStatus()
+void ConvListItem::clearEntityList()
{
- MessageRef msg = m_App.getMsgEngine().getStorage().getMessage(m_MsgId);
- if (!msg)
- return;
-
- updateTime();
- m_Time = msg->getTime();
- m_NetworkStatus = msg->getNetworkStatus();
- m_IsRestrictedByDpm = msg->isRestrictedByDpm();
-
- if (m_NetworkStatus == Message::NS_Send_Fail) {
- updateItemType(ConvItemType::Failed);
- updateEntityBgType(BubbleBgViewItem::FailedStyle);
- } else if (m_NetworkStatus == Message::NS_Send_Success || m_NetworkStatus == Message::NS_Sending) {
- updateItemType(ConvItemType::Sent);
- updateEntityBgType(BubbleBgViewItem::SentStyle);
- } else if (m_NetworkStatus == Message::NS_Not_Send) {
- updateItemType(ConvItemType::Draft);
- updateEntityBgType(BubbleBgViewItem::DraftStyle);
- } else if (m_NetworkStatus == Message::NS_Received) {
- updateItemType(ConvItemType::Received);
- BubbleBgViewItem::BgType bgType = m_IsRestrictedByDpm ? BubbleBgViewItem::RestrictedStyle : BubbleBgViewItem::ReceivedStyle;
- updateEntityBgType(bgType);
- } else if (m_NetworkStatus == Message::NS_Retrieving) {
- updateDownloadButton();
- }
-
- update();
+ for (auto *entity : m_BubbleEntityList)
+ delete entity;
+ m_BubbleEntityList.clear();
}
void ConvListItem::updateTime()
downloadButton->disabled(m_NetworkStatus == Message::NS_Retrieving);
}
+void ConvListItem::convertNotiToMms()
+{
+ if (m_Type == Message::MT_MMS_Noti) {
+ MsgConversationItemRef item = m_App.getMsgEngine().getStorage().getConversationItem(m_MsgId);
+ if (item)
+ update(*item);
+ }
+}
+
void ConvListItem::addEntity(BubbleEntity *entity)
{
if (entity)
}
}
-void ConvListItem::prepareBubble(const MsgConversationItem &item, const std::string &searchWord)
+void ConvListItem::update()
+{
+ MessageRef msg = m_App.getMsgEngine().getStorage().getMessage(m_MsgId);
+ if (!msg)
+ return;
+
+ updateTime();
+ m_Time = msg->getTime();
+ m_NetworkStatus = msg->getNetworkStatus();
+ m_IsRestrictedByDpm = msg->isRestrictedByDpm();
+
+ if (m_NetworkStatus == Message::NS_Send_Fail) {
+ updateItemType(ConvItemType::Failed);
+ updateEntityBgType(BubbleBgViewItem::FailedStyle);
+ } else if (m_NetworkStatus == Message::NS_Send_Success || m_NetworkStatus == Message::NS_Sending) {
+ updateItemType(ConvItemType::Sent);
+ updateEntityBgType(BubbleBgViewItem::SentStyle);
+ } else if (m_NetworkStatus == Message::NS_Not_Send) {
+ updateItemType(ConvItemType::Draft);
+ updateEntityBgType(BubbleBgViewItem::DraftStyle);
+ } else if (m_NetworkStatus == Message::NS_Received) {
+ updateItemType(ConvItemType::Received);
+ BubbleBgViewItem::BgType bgType = m_IsRestrictedByDpm ? BubbleBgViewItem::RestrictedStyle : BubbleBgViewItem::ReceivedStyle;
+ updateEntityBgType(bgType);
+ } else if (m_NetworkStatus == Message::NS_Retrieving) {
+ updateDownloadButton();
+ } else if (m_NetworkStatus == Message::NS_Retrieve_Success) {
+ convertNotiToMms();
+ }
+
+ ConvListViewItem::update();
+}
+
+void ConvListItem::update(const MsgConversationItem &item)
{
+ updateTime();
+ clearEntityList();
+
BubbleBgViewItem::BgType bgType = getBubbleBgType(item);
+ m_MsgId = item.getMsgId();
+ m_IsDraft = item.isDraft();
+ m_Direction = item.getDirection();
+ m_NetworkStatus = item.getNetworkStatus();
+ m_Type = item.getType();
+ m_Time = item.getTime();
+ m_IsRestrictedByDpm = item.isRestrictedByDpm();
+ m_IsNeededReadReport = m_Direction == Message::MD_Received &&
+ m_Type == Message::MT_MMS &&
+ !item.isRead();
+
if (m_IsRestrictedByDpm) {
addEntity(createTextEntity(BubbleBgViewItem::RestrictedStyle, msg("IDS_MSG_BODY_COULDNT_RECEIVE_THIS_MESSAGE_THE_SECURITY_POLICY_PREVENTS_RECEIVING_MESSAGES"), false, ""));
} else if (!MsgUtils::isMms(m_Type)) {
- addEntity(createTextEntity(bgType, item.getText(), true, searchWord));
+ addEntity(createTextEntity(bgType, item.getText(), true, m_SearchWord));
} else if (m_Type == Message::MT_MMS_Noti) {
std::string text = MessageDetailContent::getMmsNotiConvListItemContent(m_App, m_MsgId);
- addEntity(createTextEntity(bgType, std::move(text), false, searchWord));
+ addEntity(createTextEntity(bgType, std::move(text), false, m_SearchWord));
addEntity(m_BubbleEntityFactory.createDownloadButtonEntity());
updateDownloadButton();
} else {
std::string mime = media.getMime();
std::transform(mime.begin(), mime.end(), mime.begin(), ::tolower);
if (mime == "text/plain")
- addEntity(createTextEntity(bgType, media, searchWord));
+ addEntity(createTextEntity(bgType, media, m_SearchWord));
else if (mime != "application/smil")
addEntity(m_BubbleEntityFactory.createEntity(media, bgType, m_Direction));
}
void ConvListItem::tryToDownloadMms(bool showToast)
{
if (!m_App.getSysSettingsManager().isMessagingRestrictedByDpm()) {
- m_App.getMsgEngine().getTransport().retrieveMessage(m_MsgId);
- auto *button = findDownloadButton();
- if (button) {
- button->disabled(true);
- updateContent();
+ MsgTransport::SendResult res = m_App.getMsgEngine().getTransport().retrieveMessage(m_MsgId);
+ if (res == MsgTransport::SendSuccess) {
+ auto *button = findDownloadButton();
+ if (button) {
+ button->disabled(true);
+ updateContent();
+ }
}
} else if (showToast) {
notification_status_message_post(msg("IDS_MSG_TPOP_SECURITY_POLICY_RESTRICTS_DOWNLOADING_MULTIMEDIA_MESSAGES").cStr());