From f636e323d7778ac0c5ffca3866e2e72b9aa99a01 Mon Sep 17 00:00:00 2001 From: Andrey Klimenko Date: Thu, 27 Oct 2016 18:04:53 +0300 Subject: [PATCH] TizenRefApp-7510 reduced number of MsgStorage::getMessage() calls to improve performance of getting message details Change-Id: I8ec28db5c1d788622e6c32b2e8565498028fa669 Signed-off-by: Andrey Klimenko --- .../ConvList/Controller/src/MsgDetailsPopup.cpp | 21 ++++++++-------- src/Conversation/Utils/inc/MessageDetailContent.h | 9 +++---- .../Utils/src/MessageDetailContent.cpp | 29 +++++++++++----------- 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/Conversation/ConvList/Controller/src/MsgDetailsPopup.cpp b/src/Conversation/ConvList/Controller/src/MsgDetailsPopup.cpp index d93f247..d60e994 100644 --- a/src/Conversation/ConvList/Controller/src/MsgDetailsPopup.cpp +++ b/src/Conversation/ConvList/Controller/src/MsgDetailsPopup.cpp @@ -47,14 +47,15 @@ void MsgDetailsPopup::updateContent() std::string content; MsgStorage &msgStorage = m_App.getMsgEngine().getStorage(); - Message::Direction msgDirection = msgStorage.getMessage(m_MsgId)->getDirection(); - Message::Type msgType = msgStorage.getMessage(m_MsgId)->getType(); - Message::NetworkStatus msgStatus = msgStorage.getMessage(m_MsgId)->getNetworkStatus(); - ThreadId msgThreadId = msgStorage.getMessage(m_MsgId)->getThreadId(); + MessageRef message = msgStorage.getMessage(m_MsgId); + Message::Direction msgDirection = message->getDirection(); + Message::Type msgType = message->getType(); + Message::NetworkStatus msgStatus = message->getNetworkStatus(); + ThreadId msgThreadId = message->getThreadId(); content += getMessageType(msgType); content += getContactsInfo(m_App, msgDirection, msgThreadId); - content += getSentReceivedTime(msgStorage, msgDirection, m_MsgId); + content += getSentReceivedTime(*message, msgDirection); if(msgDirection == Message::MD_Sent && msgType == Message::MT_SMS) { @@ -65,15 +66,15 @@ void MsgDetailsPopup::updateContent() else if(msgType == Message::MT_MMS_Noti) { content += brTag; - content += getMmsSubject(m_App, m_MsgId, ViewDetailsTextStyle); - content += getMmsMessageSize(m_App, m_MsgId, ViewDetailsTextStyle); - content += getMmsMessageExpired(m_App, m_MsgId, ViewDetailsTextStyle); + content += getMmsSubject(*message, ViewDetailsTextStyle); + content += getMmsMessageSize(*message, ViewDetailsTextStyle); + content += getMmsMessageExpired(*message, ViewDetailsTextStyle); } else if(msgType == Message::MT_MMS) { content += brTag; - content += getMmsSubject(m_App, m_MsgId, ViewDetailsTextStyle); - content += getMmsMessageSize(m_App, m_MsgId, ViewDetailsTextStyle); + content += getMmsSubject(*message, ViewDetailsTextStyle); + content += getMmsMessageSize(*message, ViewDetailsTextStyle); if(msgDirection == Message::MD_Sent) { diff --git a/src/Conversation/Utils/inc/MessageDetailContent.h b/src/Conversation/Utils/inc/MessageDetailContent.h index b470acf..c921879 100644 --- a/src/Conversation/Utils/inc/MessageDetailContent.h +++ b/src/Conversation/Utils/inc/MessageDetailContent.h @@ -31,16 +31,15 @@ namespace Msg DownloadTextStyle }; - // TODO: Ineffective get methods by MsgId std::string getMmsNotiConvListItemContent(App &app, MsgId msgId); std::string getMessageType(Message::Type msgType); std::string getContactsInfo(App &app, Message::Direction m_Direction, ThreadId msgThreadId); - std::string getSentReceivedTime(MsgStorage &msgStorage, Message::Direction msgDirection, MsgId msgId); + std::string getSentReceivedTime(const Message &message, Message::Direction msgDirection); std::string makeDeliveryReportResult(App &app, Message::NetworkStatus msgStatus, Message::Type msgType, ThreadId msgThreadId, MsgId msgId); std::string getSmsStatus(Message::NetworkStatus msgStatus); - std::string getMmsSubject(App &app, MsgId msgId, int style); - std::string getMmsMessageSize(App &app, MsgId msgId, int style); - std::string getMmsMessageExpired(App &app, MsgId msgId, int style); + std::string getMmsSubject(const Message &msg, int style); + std::string getMmsMessageSize(const Message &message, int style); + std::string getMmsMessageExpired(const Message &message, int style); std::string makeReadReportResult(App &app, MsgId msgId, ThreadId msgThreadId, Message::NetworkStatus msgStatus); std::string makeDispAddress(App &app, const std::string &address); std::string makeMainText(const std::string &text); diff --git a/src/Conversation/Utils/src/MessageDetailContent.cpp b/src/Conversation/Utils/src/MessageDetailContent.cpp index 5058693..d142bd1 100644 --- a/src/Conversation/Utils/src/MessageDetailContent.cpp +++ b/src/Conversation/Utils/src/MessageDetailContent.cpp @@ -40,10 +40,11 @@ namespace std::string getMmsNotiConvListItemContent(App &app, MsgId msgId) { + MessageRef msg = app.getMsgEngine().getStorage().getMessage(msgId); std::string msgDetails; - msgDetails += getMmsSubject(app, msgId, DownloadTextStyle); - msgDetails += getMmsMessageSize(app, msgId, DownloadTextStyle); - msgDetails += getMmsMessageExpired(app, msgId, DownloadTextStyle); + msgDetails += getMmsSubject(*msg, DownloadTextStyle); + msgDetails += getMmsMessageSize(*msg, DownloadTextStyle); + msgDetails += getMmsMessageExpired(*msg, DownloadTextStyle); return msgDetails; } @@ -100,7 +101,7 @@ std::string getContactsInfo(App &app, Message::Direction msgDirection, ThreadId return contactsInfo; } -std::string getSentReceivedTime(MsgStorage &msgStorage, Message::Direction msgDirection, MsgId msgId) +std::string getSentReceivedTime(const Message &message, Message::Direction msgDirection) { std::string msgDetails; if(msgDirection == Message::MD_Sent) @@ -109,7 +110,7 @@ std::string getSentReceivedTime(MsgStorage &msgStorage, Message::Direction msgDi msgDetails.append(makeMainText(msg("IDS_MSG_HEADER_TIME_RECEIVED"))); msgDetails.append("
"); - time_t time = msgStorage.getMessage(msgId)->getTime(); + time_t time = message.getTime(); msgDetails.append(makeSecondText(TimeUtils::makeDateTimeString(time))); return msgDetails; } @@ -210,18 +211,19 @@ std::string getSmsStatus(Message::NetworkStatus msgStatus) return status; } -std::string getMmsSubject(App &app, MsgId msgId, int style) +std::string getMmsSubject(const Message &message, int style) { std::string msgDetails; - std::string subject = app.getMsgEngine().getStorage().getMessage(msgId)->getSubject(); + std::string subject = message.getSubject(); switch(style) { case ViewDetailsTextStyle: msgDetails.append(makeMainText(msg("IDS_MSG_HEADER_SUBJECT"))).append("
"); if(subject.empty()) - msgDetails.append(makeSecondText(msg("IDS_MSGF_BODY_NO_SUBJECT"))); + msgDetails.append(makeSecondText(msg("IDS_MSGF_BODY_NO_SUBJECT"))); else msgDetails.append(makeSecondText(subject)); + msgDetails.append("

"); break; case DownloadTextStyle: @@ -231,6 +233,7 @@ std::string getMmsSubject(App &app, MsgId msgId, int style) msgDetails.append(msg("IDS_MSGF_BODY_NO_SUBJECT")); else msgDetails.append(subject); + msgDetails.append("
"); break; default: @@ -241,11 +244,10 @@ std::string getMmsSubject(App &app, MsgId msgId, int style) return msgDetails; } -std::string getMmsMessageSize(App &app, MsgId msgId, int style) +std::string getMmsMessageSize(const Message &message, int style) { + int msgSize = message.getSize(); std::string msgDetails; - int msgSize = app.getMsgEngine().getStorage().getMessage(msgId)->getSize(); - switch(style) { case ViewDetailsTextStyle: @@ -267,11 +269,10 @@ std::string getMmsMessageSize(App &app, MsgId msgId, int style) return msgDetails; } -std::string getMmsMessageExpired(App &app, MsgId msgId, int style) +std::string getMmsMessageExpired(const Message &message, int style) { + const MessageMms *mms = dynamic_cast(&message); std::string msgDetails; - MessageMmsRef mms = std::dynamic_pointer_cast(app.getMsgEngine().getStorage().getMessage(msgId)); - switch(style) { case ViewDetailsTextStyle: -- 2.7.4