#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>
{
}
-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)
{
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:"))
{
lineData.mid(lineData.indexOf(":") + 1),
"yyyyMMddThhmmssZ"));
timestamp.setTimeSpec(Qt::UTC);
- event.setTimestamp(timestamp);
+ event.Timestamp(timestamp);
}
else if(lineData.startsWith("BEGIN:"))
{
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";
// 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));
}
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";
}