[Messaging] Move MessageEmail class from previous implementation
authorRobert Karolak <r.karolak@samsung.com>
Sun, 14 Dec 2014 17:36:00 +0000 (18:36 +0100)
committerJerzy Pabich <j.pabich@samsung.com>
Mon, 15 Dec 2014 07:07:08 +0000 (16:07 +0900)
[Verification] Code compiles, messaging plugin is visible in node
console

Change-Id: I51c594a57708a53c3681f3d2e7b4ce523e7e8f36
Signed-off-by: Robert Karolak <r.karolak@samsung.com>
src/messaging/message.cc
src/messaging/message_email.cc [new file with mode: 0644]
src/messaging/message_email.h [new file with mode: 0644]
src/messaging/messaging.gyp

index 3c8c53f..0bf9d4e 100644 (file)
@@ -12,6 +12,7 @@
 #include "common/logger.h"
 #include "common/platform_exception.h"
 
+#include "message_email.h"
 #include "messaging_util.h"
 
 namespace extension {
@@ -1478,8 +1479,7 @@ std::shared_ptr<Message> Message::convertPlatformEmailToObject(
         email_mail_data_t& mail)
 {
     LOGD("Enter");
-//    FIXME when MessageEmail will be avalaible new Message() -> new MessageEmail()
-    std::shared_ptr<Message> message(new Message());
+    std::shared_ptr<Message> message(new MessageEmail());
     message->updateEmailMessage(mail);
     return message;
 }
diff --git a/src/messaging/message_email.cc b/src/messaging/message_email.cc
new file mode 100644 (file)
index 0000000..d4cfec1
--- /dev/null
@@ -0,0 +1,149 @@
+// Copyright 2014 Samsung Electronics Co, Ltd. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+#include "message_email.h"
+
+#include "common/logger.h"
+#include "common/platform_exception.h"
+
+namespace extension {
+namespace messaging {
+
+MessageEmail::MessageEmail():
+    Message()
+{
+    LOGD("MessageEmail constructor.");
+    this->m_type = MessageType(EMAIL);
+}
+
+MessageEmail::~MessageEmail()
+{
+    LOGD("MessageEmail destructor.");
+}
+
+// *** overrided methods
+void MessageEmail::setCC(std::vector<std::string> &cc)
+{
+    // CC recipient's format validation should be done by email service
+    m_cc = cc;
+
+    if(m_cc.empty()) {
+        LOGD("Recipient's list cleared");
+        return;
+    }
+}
+
+void MessageEmail::setBCC(std::vector<std::string> &bcc)
+{
+    // BCC recipient's format validation should be done by email service
+    m_bcc = bcc;
+
+    if(m_bcc.empty()) {
+        LOGD("Recipient's list cleared");
+        return;
+    }
+}
+
+void MessageEmail::setSubject(std::string subject)
+{
+    m_subject = subject;
+}
+
+void MessageEmail::setIsHighPriority(bool highpriority)
+{
+    m_high_priority = highpriority;
+}
+
+//void MessageEmail::setMessageAttachments(AttachmentPtrVector &attachments)
+//{
+//    m_attachments = attachments;
+//
+//    m_has_attachment = true;
+//    if(m_attachments.empty()) {
+//        LOGD("Recipient's list cleared");
+//        m_has_attachment = false;
+//    }
+//}
+//
+//bool MessageEmail::getHasAttachment() const
+//{
+//    LOGD("MessageEmail::getHasAttachment()");
+//    return m_has_attachment || !m_body->getInlineAttachments().empty();
+//}
+
+void MessageEmail::updateEmailMessage(email_mail_data_t& mail)
+{
+    LOGD("Enter");
+    std::vector<std::string> recp_list;
+
+    setId(mail.mail_id);
+
+    setFolderId(mail.mailbox_id);
+
+    setConversationId(mail.thread_id);
+
+    if(mail.full_address_from) {
+        setFrom(MessagingUtil::extractSingleEmailAddress(mail.full_address_from));
+    }
+
+    if(mail.full_address_to) {
+        recp_list = Message::getEmailRecipientsFromStruct(mail.full_address_to);
+        setTO(recp_list);
+    }
+
+    if(mail.full_address_cc) {
+        recp_list = Message::getEmailRecipientsFromStruct(mail.full_address_cc);
+        setCC(recp_list);
+    }
+
+    if(mail.full_address_bcc) {
+        recp_list = Message::getEmailRecipientsFromStruct(mail.full_address_bcc);
+        setBCC(recp_list);
+    }
+
+    setTimeStamp(mail.date_time);
+
+    setIsRead(mail.flags_seen_field);
+
+    setIsHighPriority((EMAIL_MAIL_PRIORITY_HIGH == mail.priority) ? true : false);
+
+    if (mail.subject == NULL) {
+        LOGW("Subject is null");
+    } else {
+        LOGD("Subject: %s", mail.subject);
+        setSubject(mail.subject);
+    }
+
+//    TODO getBody
+//    getBody()->updateBody(mail);
+
+    if (mail.mail_id != mail.thread_id) {
+        setInResponseTo(mail.thread_id);
+    }
+
+    switch(mail.save_status)
+    {
+        case EMAIL_MAIL_STATUS_SENT:
+            setMessageStatus(MessageStatus::STATUS_SENT);
+        break;
+        case EMAIL_MAIL_STATUS_SENDING:
+            setMessageStatus(MessageStatus::STATUS_SENDING);
+        break;
+        case EMAIL_MAIL_STATUS_SAVED:
+            setMessageStatus(MessageStatus::STATUS_DRAFT);
+        break;
+        case EMAIL_MAIL_STATUS_SEND_FAILURE:
+            setMessageStatus(MessageStatus::STATUS_FAILED);
+        break;
+        default:
+            setMessageStatus(MessageStatus::STATUS_UNDEFINED);
+        break;
+    }
+//    TODO EmailAttachment
+//    AttachmentPtrVector att = convertEmailToMessageAttachment(mail);
+//
+//    setMessageAttachments(att);
+}
+
+} // messaging
+} // extension
diff --git a/src/messaging/message_email.h b/src/messaging/message_email.h
new file mode 100644 (file)
index 0000000..c2855db
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright 2014 Samsung Electronics Co, Ltd. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MESSAGING_MESSAGE_EMAIL_H_
+#define MESSAGING_MESSAGE_EMAIL_H_
+
+#include "message.h"
+
+namespace extension {
+namespace messaging {
+
+class MessageEmail: public Message {
+public:
+// constructor
+    MessageEmail();
+    ~MessageEmail();
+
+//overrided base class functions
+    void setCC(std::vector<std::string> &cc);
+    void setBCC(std::vector<std::string> &bcc);
+    void setSubject(std::string subject);
+    void setIsHighPriority(bool highpriority);
+//  FIXME when attachment class will be avalaible
+//  void setMessageAttachments(AttachmentPtrVector &attachments);
+//
+//  bool getHasAttachment() const;
+    /**
+     * Updates message with data from email_mail_data_t structure.
+     * @param mail
+     */
+    virtual void updateEmailMessage(email_mail_data_t& mail);
+
+private:
+    // function that verifies recipient's list validity
+    bool isValidRecpientsVector(std::vector<std::string> &recipients);
+};
+
+} // messaging
+} // extension
+
+#endif // MESSAGING_MESSAGE_EMAIL_H_
index 8d5c8ef..3281360 100644 (file)
@@ -36,7 +36,9 @@
         'message_storage_email.cc',
         'message_storage_email.h',
         'message.cc',
-        'message.h'
+        'message.h',
+        'message_email.cc',
+        'message_email.h'
       ],
       'includes': [
         '../common/pkg-config.gypi',