From: Pawel Andruszkiewicz
Date: Mon, 5 Oct 2015 12:02:50 +0000 (+0200)
Subject: [Messaging] Fixed handling folder IDs for SMS/MMS.
X-Git-Tag: submit/tizen/20151026.073646^2^2~54^2
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ac5053c3ecdf1ae6ac77b281f41a26c295ba0281;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Messaging] Fixed handling folder IDs for SMS/MMS.
[Verification] TCT pass rate (r47): 100% (184/184/0/0/0) (SMS)
100% (123/123/0/0/0) (MMS)
Change-Id: I858a204fd0125d81aed56032453ef379ae1252e8
Signed-off-by: Pawel Andruszkiewicz
---
diff --git a/src/messaging/message.cc b/src/messaging/message.cc
index 129b1c7d..a5711b21 100755
--- a/src/messaging/message.cc
+++ b/src/messaging/message.cc
@@ -77,10 +77,37 @@ int Message::getConversationId() const
return m_conversation_id;
}
-int Message::getFolderId() const
-{
- // TODO: folderId is supported different way in SMS/MMS and email
- return m_folder_id;
+int Message::getFolderId() const {
+ LoggerD("Entered");
+ return m_folder_id;
+}
+
+int Message::getFolderIdForUser() const {
+ LoggerD("Entered");
+ // WIDL states:
+ // For SMS and MMS, folderId can be one of these values:
+ // - INBOX = 1,
+ // - OUTBOX = 2,
+ // - DRAFTS = 3,
+ // - SENTBOX = 4
+
+ switch (m_folder_id) {
+ case MSG_INBOX_ID:
+ return 1;
+
+ case MSG_OUTBOX_ID:
+ return 2;
+
+ case MSG_DRAFT_ID:
+ return 3;
+
+ case MSG_SENTBOX_ID:
+ return 4;
+
+ default:
+ LoggerE("Unexpected folder id: %d", m_folder_id);
+ return -1;
+ }
}
MessageType Message::getType() const
@@ -1685,7 +1712,7 @@ bool Message::isMatchingAttribute(const std::string& attribute_name,
}
}
else if (FOLDER_ID == attribute_name) {
- return FilterUtils::isStringMatching(key, std::to_string(getFolderId()),
+ return FilterUtils::isStringMatching(key, std::to_string(getFolderIdForUser()),
match_flag);
}
else if (TYPE == attribute_name) {
diff --git a/src/messaging/message.h b/src/messaging/message.h
index 5b130a1e..7bccf995 100755
--- a/src/messaging/message.h
+++ b/src/messaging/message.h
@@ -63,6 +63,7 @@ public:
int getOldId() const;
int getConversationId() const;
int getFolderId() const;
+ virtual int getFolderIdForUser() const;
MessageType getType() const;
std::string getTypeString() const;
time_t getTimestamp() const;
diff --git a/src/messaging/message_email.cc b/src/messaging/message_email.cc
index bbb4f085..bd0f06cd 100755
--- a/src/messaging/message_email.cc
+++ b/src/messaging/message_email.cc
@@ -36,7 +36,14 @@ MessageEmail::~MessageEmail()
LoggerD("MessageEmail destructor.");
}
-// *** overrided methods
+// *** overridden methods
+
+int MessageEmail::getFolderIdForUser() const {
+ LoggerD("Entered");
+ // in case of e-mails we're using platform IDs directly
+ return m_folder_id;
+}
+
void MessageEmail::setCC(std::vector &cc)
{
LoggerD("Entered");
diff --git a/src/messaging/message_email.h b/src/messaging/message_email.h
index 0ca9f6a4..092834f6 100755
--- a/src/messaging/message_email.h
+++ b/src/messaging/message_email.h
@@ -29,6 +29,8 @@ public:
~MessageEmail();
//overrided base class functions
+ virtual int getFolderIdForUser() const override;
+
void setCC(std::vector &cc);
void setBCC(std::vector &bcc);
void setSubject(std::string subject);
diff --git a/src/messaging/messaging_database_manager.cc b/src/messaging/messaging_database_manager.cc
index 8731c7f6..9307b1c9 100755
--- a/src/messaging/messaging_database_manager.cc
+++ b/src/messaging/messaging_database_manager.cc
@@ -472,6 +472,36 @@ PlatformResult MessagingDatabaseManager::getAttributeFilterQuery(AbstractFilterP
} else if (ENDSWITH == match_flag) {
match_value = "%<%" + match_value + ">%";
}
+ } else if ("folderId" == attribute_name &&
+ (MessageType::SMS == msgType || MessageType::MMS == msgType)) {
+ LoggerD("Non-email folder ID");
+
+ // need to convert from values presented to user to _MSG_FOLDER_ID_E
+ auto folder_id = attr_filter->getMatchValue()->toLong();
+ switch (folder_id) {
+ case 1:
+ folder_id = MSG_INBOX_ID;
+ break;
+
+ case 2:
+ folder_id = MSG_OUTBOX_ID;
+ break;
+
+ case 3:
+ folder_id = MSG_DRAFT_ID;
+ break;
+
+ case 4:
+ folder_id = MSG_SENTBOX_ID;
+ break;
+
+ default:
+ LoggerE("Unexpected folder ID: %d", folder_id);
+ folder_id = -1;
+ break;
+ }
+
+ match_value = std::to_string(folder_id);
}
switch (match_flag) {
diff --git a/src/messaging/messaging_util.cc b/src/messaging/messaging_util.cc
index f1a7aa5e..af718183 100755
--- a/src/messaging/messaging_util.cc
+++ b/src/messaging/messaging_util.cc
@@ -582,7 +582,7 @@ picojson::value MessagingUtil::messageToJson(std::shared_ptr message)
: picojson::value();
o[MESSAGE_ATTRIBUTE_FOLDER_ID] =
message->is_folder_id_set()
- ? picojson::value(std::to_string(message->getFolderId()))
+ ? picojson::value(std::to_string(message->getFolderIdForUser()))
: picojson::value();
o[MESSAGE_ATTRIBUTE_TYPE] = picojson::value(message->getTypeString());
o[MESSAGE_ATTRIBUTE_TIMESTAMP] =