#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>
using namespace EventParsers::VMGEntities;
-VMessage::VMessage(const SMSEntity* parent) :
- SMSEntity(parent), m_Version(1.1)
+VMessage::VMessage(const Settings &settings, const SMSEntity *parent) :
+ SMSEntity(settings, parent), m_Version(1.1)
{
}
//{
//}
-VMessage::VMessage(const SMSEntity* parent, float version) :
- SMSEntity(parent), m_Version(version)
+VMessage::VMessage(const Settings &settings, const SMSEntity *parent, float version) :
+ SMSEntity(settings, parent), m_Version(version)
{
}
{
}
-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)
{
{
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;
}
else if(lineData.startsWith("BEGIN:"))
{
- iReader* reader = Factory::Instantiate(lineData, this);
+ iReader* reader = Factory::Instantiate(CurrentSettings(), lineData, this);
bool valid(NULL != reader && reader->Read(lineData, stream, event));
delete reader;
stream << "X-IRMC-BOX:" << ( event.Destination() == EventTypes::SMS::SENT ? "SENT" : "INBOX") << "\n";
stream << "X-NOK-DT:" << event.Timestamp().toUTC().toString("yyyyMMddThhmmssZ") << "\n";
- VEnvelope msgEnvelope(this);
+ VEnvelope msgEnvelope(CurrentSettings(), this);
// Add in the empty vcard for outgoing messages
if(event.Destination() == EventTypes::SMS::SENT)
{
- VCard(this, 2.1, VCard::VCARD_LOCAL).Write(stream, event);
+ VCard(CurrentSettings(), this, 2.1, VCard::VCARD_LOCAL).Write(stream, event);
- msgEnvelope.getContentWriters().append(new VCard(&msgEnvelope, 2.1, VCard::VCARD_REMOTE));
+ msgEnvelope.getContentWriters().append(new VCard(CurrentSettings(), &msgEnvelope, 2.1, VCard::VCARD_REMOTE));
- VEnvelope *bodyEnvelope = new VEnvelope(this);
- bodyEnvelope->getContentWriters().append(new VBody(bodyEnvelope));
+ VEnvelope *bodyEnvelope = new VEnvelope(CurrentSettings(), this);
+ bodyEnvelope->getContentWriters().append(new VBody(CurrentSettings(), bodyEnvelope));
msgEnvelope.getContentWriters().append(bodyEnvelope);
}
else
{
- VCard(this, 2.1, VCard::VCARD_REMOTE).Write(stream, event);
+ VCard(CurrentSettings(), this, 2.1, VCard::VCARD_REMOTE).Write(stream, event);
- msgEnvelope.getContentWriters().append(new VBody(&msgEnvelope));
+ msgEnvelope.getContentWriters().append(new VBody(CurrentSettings(), &msgEnvelope));
}
msgEnvelope.Write(stream, event);