[Messaging] MMS message service support
authorKrzysztof Lachacz <k.lachacz@samsung.com>
Tue, 13 Jan 2015 13:07:25 +0000 (14:07 +0100)
committerRobert Karolak <r.karolak@samsung.com>
Tue, 13 Jan 2015 13:36:55 +0000 (14:36 +0100)
[Verification] Code compiles without errors.

Change-Id: I3e5486af85aa8a5e4bea33c6bd4f8bb47790f9ac
Signed-off-by: Krzysztof Lachacz <k.lachacz@samsung.com>
src/messaging/messaging_manager.cc
src/messaging/messaging_manager.h

index cc272aea30dabf844d73c3bf97cdea6546b23f6b..7d3a7db95be47fc4e6fb171db3606bf8589d3ce8 100755 (executable)
@@ -39,6 +39,7 @@ MessagingManager::MessagingManager()
     }
 
     m_sms_service = std::make_pair(UNDEFINED_MESSAGE_SERVICE, nullptr);
+    m_mms_service = std::make_pair(UNDEFINED_MESSAGE_SERVICE, nullptr);
 }
 
 MessagingManager::~MessagingManager()
@@ -59,6 +60,9 @@ MessagingManager::~MessagingManager()
     if (m_sms_service.second) {
         delete m_sms_service.second;
     }
+    if (m_mms_service.second) {
+        delete m_mms_service.second;
+    }
 }
 
 MessagingManager& MessagingManager::getInstance()
@@ -102,7 +106,7 @@ static void* getMsgServicesThread(const std::shared_ptr<MsgManagerCallbackData>&
                         MessageType::SMS);
                 if (!service) {
                     LoggerE("MessageService for SMS creation failed");
-                    throw common::UnknownException("MessageService for email creation failed");
+                    throw common::UnknownException("MessageService for SMS creation failed");
                 }
                 *(user_data->sms_service) = std::make_pair(service->getMsgServiceId(), service);
 
@@ -116,8 +120,28 @@ static void* getMsgServicesThread(const std::shared_ptr<MsgManagerCallbackData>&
             }
             break;
         case MessageType::MMS:
-            LoggerD("Currently unsupported");
-            // TODO add class which will extended message_service and call message_service_short_msg
+            LoggerD("MessageService for MMS");
+            {
+                if (user_data->mms_service->second) {
+                    delete user_data->mms_service->second;
+                }
+
+                MessageService* service = new(std::nothrow) MessageServiceShortMsg(
+                        MessageServiceAccountId::MMS_ACCOUNT_ID,
+                        MessageType::MMS);
+                if (!service) {
+                    LoggerE("MessageService for MMS creation failed");
+                    throw common::UnknownException("MessageService for MMS creation failed");
+                }
+                *(user_data->mms_service) = std::make_pair(service->getMsgServiceId(), service);
+
+                picojson::array array;
+                array.push_back(picojson::value(service->toPicoJS()));
+                obj[JSON_DATA] = picojson::value(array);
+                obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
+
+                service = NULL;
+            }
             break;
         case MessageType::EMAIL:
                 // TODO FIXME need to work on readability of that case
@@ -202,6 +226,7 @@ void MessagingManager::getMessageServices(const std::string& type, double callba
     user_data->json = json;
     user_data->services_map = &m_email_services;
     user_data->sms_service = &m_sms_service;
+    user_data->mms_service = &m_mms_service;
 
     common::TaskQueue::GetInstance().Queue<MsgManagerCallbackData>
         (getMsgServicesThread, callbackCompleted, user_data);
@@ -210,6 +235,8 @@ void MessagingManager::getMessageServices(const std::string& type, double callba
 MessageService* MessagingManager::getMessageService(const int id) {
     if (id == m_sms_service.first) {
         return m_sms_service.second;
+    } else if (id == m_mms_service.first) {
+        return m_mms_service.second;
     } else {
         return m_email_services[id];
     }
index 77e4721216c2df7e9f3f2e63c5af1f0eb27ba41f..2ba815abdf1d1fd1f6eced9d2ab065bd0e52f8a3 100755 (executable)
@@ -20,6 +20,7 @@ public:
     std::shared_ptr<picojson::value> json;
     std::map<int, MessageService*>* services_map;
     std::pair<int, MessageService*>* sms_service;
+    std::pair<int, MessageService*>* mms_service;
 };
 
 class MessagingManager {
@@ -37,6 +38,7 @@ private:
     msg_handle_t m_msg_handle;
     std::map<int, MessageService*> m_email_services;
     std::pair<int, MessageService*> m_sms_service;
+    std::pair<int, MessageService*> m_mms_service;
 };
 
 } // namespace messaging