Added passing through name to number lookup for resolving numbers in exported events.
[qwerkisync] / EventParsers / VMGEntities / VMessage.cpp
index b798462..6e1141a 100644 (file)
@@ -21,9 +21,9 @@
 #include "EventTypes/SMS.h"
 #include "Factory.h"
 #include "Settings.h"
+#include "VBody.h"
 #include "VCard.h"
 #include "VEnvelope.h"
-#include "VBody.h"
 
 #include <QDateTime>
 #include <QTextStream>
@@ -50,7 +50,7 @@ VMessage::~VMessage()
 {
 }
 
-bool VMessage::Read(const QString & initialLine, QTextStream & stream, EventTypes::SMS & event)
+bool VMessage::Read(const QString &initialLine, QTextStream &stream, EventTypes::SMS &event)
 {
        if(getParent() != NULL)
        {
@@ -83,18 +83,26 @@ bool VMessage::Read(const QString & initialLine, QTextStream & stream, EventType
                else if(lineData.startsWith("X-IRMC-STATUS:"))
                {
                        bool isRead(lineData.mid(lineData.indexOf(":") + 1) == "READ");
-                       event.setIsRead(isRead);
+                       event.IsRead(isRead);
                }
                else if(lineData.startsWith("X-IRMC-BOX:"))
                {
                        QString box = lineData.mid(lineData.indexOf(":") + 1);
                        bool isOutgoing(box == "SENT");
+
+                       // Early out once we know we're not processing this type of message
+                       if((!isOutgoing && !CurrentSettings().ShouldProcess(Settings::INCOMING, EventTypes::EVENT_TYPE_SMS))
+                               || isOutgoing && !CurrentSettings().ShouldProcess(Settings::OUTGOING, EventTypes::EVENT_TYPE_SMS))
+                       {
+                               return false;
+                       }
+
                        if (isOutgoing == false && box != "INBOX")
                        {
                                qDebug() << "Unexpected box: " << box;
                                return false;
                        }
-                       event.setDestination(isOutgoing ? EventTypes::SMS::SENT : EventTypes::SMS::INBOX);
+                       event.Destination(isOutgoing ? EventTypes::SMS::SENT : EventTypes::SMS::INBOX);
                }
                else if(lineData.startsWith("X-NOK-DT:"))
                {
@@ -102,7 +110,7 @@ bool VMessage::Read(const QString & initialLine, QTextStream & stream, EventType
                                lineData.mid(lineData.indexOf(":") + 1),
                                "yyyyMMddThhmmssZ"));
                        timestamp.setTimeSpec(Qt::UTC);
-                       event.setTimestamp(timestamp);
+                       event.Timestamp(timestamp);
                }
                else if(lineData.startsWith("BEGIN:"))
                {
@@ -134,7 +142,7 @@ bool VMessage::Read(const QString & initialLine, QTextStream & stream, EventType
        return true;
 }
 
-void VMessage::Write(QTextStream &stream, const EventTypes::SMS &event)
+void VMessage::Write(QTextStream &stream, const EventTypes::SMS &event, const NumberToNameLookup &numberToNameLookup)
 {
        stream << "BEGIN:VMSG\n";
        stream << "VERSION:" << m_Version << "\n";
@@ -147,7 +155,7 @@ void VMessage::Write(QTextStream &stream, const EventTypes::SMS &event)
        // Add in the empty vcard for outgoing messages
        if(event.Destination() == EventTypes::SMS::SENT)
        {
-               VCard(CurrentSettings(), this, 2.1, VCard::VCARD_LOCAL).Write(stream, event);
+               VCard(CurrentSettings(), this, 2.1, VCard::VCARD_LOCAL).Write(stream, event, numberToNameLookup);
 
                msgEnvelope.getContentWriters().append(new VCard(CurrentSettings(), &msgEnvelope, 2.1, VCard::VCARD_REMOTE));
 
@@ -157,12 +165,12 @@ void VMessage::Write(QTextStream &stream, const EventTypes::SMS &event)
        }
        else
        {
-               VCard(CurrentSettings(), this, 2.1, VCard::VCARD_REMOTE).Write(stream, event);
+               VCard(CurrentSettings(), this, 2.1, VCard::VCARD_REMOTE).Write(stream, event, numberToNameLookup);
 
                msgEnvelope.getContentWriters().append(new VBody(CurrentSettings(), &msgEnvelope));
        }
 
-       msgEnvelope.Write(stream, event);
+       msgEnvelope.Write(stream, event, numberToNameLookup);
 
        stream << "END:VMSG\n";
 }