#ifndef EVENTPARSERS_VMGEntities_FACTORY_H
#define EVENTPARSERS_VMGEntities_FACTORY_H
+class Settings;
+
class QString;
namespace EventParsers
Factory() {};
public:
- static iReader* Instantiate(QString& lineData, const SMSEntity* parent);
+ static iReader* Instantiate(const Settings &settings, QString& lineData, const SMSEntity* parent);
};
}
}
using namespace EventParsers::VMGEntities;
-SMSEntity::SMSEntity(const SMSEntity* parent):
- m_Parent(parent)
+SMSEntity::SMSEntity(const Settings &settings, const SMSEntity *parent):
+ m_Settings(settings), m_Parent(parent)
{
}
class SMSEntity
{
public:
- SMSEntity(const SMSEntity* parent);
virtual ~SMSEntity() {};
+ SMSEntity(const Settings &settings, const SMSEntity* parent);
protected:
const bool isAttachment() const;
const SMSEntity* m_Parent;
const SMSEntity* getParent() const { return m_Parent; };
+ const Settings &CurrentSettings() const { return m_Settings; }
virtual const char* getTagName() const { return "VBODY"; }
+ const Settings &m_Settings;
};
}
}
using namespace EventParsers::VMGEntities;
-VBody::VBody(const SMSEntity* parent) :
- SMSEntity(parent)
+VBody::VBody(const Settings &settings, const SMSEntity *parent) :
+ SMSEntity(settings, parent)
{
}
}
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;
#include "iReader.h"
#include "iWriter.h"
+class Settings;
+
class QString;
namespace EventTypes { class SMS; }
class VBody : public SMSEntity, public iWriter, public iReader
{
public:
- VBody(const SMSEntity *parent);
+ VBody(const Settings &settings, const SMSEntity *parent);
//VBody(QTextStream& stream);
~VBody();
using namespace EventParsers::VMGEntities;
-VCalendar::VCalendar(const SMSEntity* parent) :
- SMSEntity(parent), m_Version(1.0)
+VCalendar::VCalendar(const Settings &settings, const SMSEntity* parent) :
+ SMSEntity(settings, parent), m_Version(1.0)
{
}
//{
//}
-VCalendar::VCalendar(const SMSEntity* parent, float version) :
- SMSEntity(parent), m_Version(version)
+VCalendar::VCalendar(const Settings &settings, const SMSEntity* parent, float version) :
+ SMSEntity(settings, parent), m_Version(version)
{
}
}
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;
class VCalendar : public SMSEntity, public iWriter, public iReader
{
public:
- VCalendar (const SMSEntity *parent);
+ VCalendar (const Settings &settings, const SMSEntity *parent);
//VCalendar (QTextStream& stream);
- VCalendar (const SMSEntity *parent, float version);
+ VCalendar (const Settings &settings, const SMSEntity *parent, float version);
~VCalendar ();
virtual bool Read(const QString &initialLine, QTextStream &stream, EventTypes::SMS &event);
using namespace EventParsers::VMGEntities;
-VCard::VCard(const SMSEntity* parent) :
- SMSEntity(parent), m_Version(2.1), m_Target(VCARD_LOCAL)
+VCard::VCard(const Settings &settings, const SMSEntity* parent) :
+ SMSEntity(settings, parent), m_Version(2.1), m_Target(VCARD_LOCAL)
{
}
//{
//}
-VCard::VCard(const SMSEntity* parent, float version, eTarget target) :
- SMSEntity(parent), m_Version(version), m_Target(target)
+VCard::VCard(const Settings &settings, const SMSEntity* parent, float version, eTarget target) :
+ SMSEntity(settings, parent), m_Version(version), m_Target(target)
{
}
}
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;
VCARD_REMOTE
};
- VCard(const SMSEntity *parent);
+ VCard(const Settings &settings, const SMSEntity *parent);
//VCard(QTextStream& stream);
- VCard(const SMSEntity *parent, float version, eTarget target);
+ VCard(const Settings &settings, const SMSEntity *parent, float version, eTarget target);
~VCard();
virtual bool Read(const QString &initialLine, QTextStream &stream, EventTypes::SMS &event);
using namespace EventParsers::VMGEntities;
-VEnvelope::VEnvelope(const SMSEntity* parent) :
- SMSEntity(parent)
+VEnvelope::VEnvelope(const Settings &settings, const SMSEntity* parent) :
+ SMSEntity(settings, parent)
{
}
{
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;
class VEnvelope : public SMSEntity, public iWriter, public iReader
{
public:
- VEnvelope(const SMSEntity* parent);
+ VEnvelope(const Settings &settings, const SMSEntity* parent);
//VEnvelope(QTextStream& stream);
~VEnvelope();
using namespace EventParsers::VMGEntities;
-iReader *Factory::Instantiate(QString& lineData, const SMSEntity *parent)
+iReader *Factory::Instantiate(const Settings &settings, QString& lineData, const SMSEntity *parent)
{
if(lineData.startsWith("BEGIN:"))
{
QString item = lineData.mid(lineData.indexOf(":")+1);
if(item == "VMSG")
- return new VMessage(parent);
+ return new VMessage(settings, parent);
else if(item == "VCARD")
- return new VCard(parent);
+ return new VCard(settings, parent);
else if(item == "VENV")
- return new VEnvelope(parent);
+ return new VEnvelope(settings, parent);
else if(item == "VBODY")
- return new VBody(parent);
+ return new VBody(settings, parent);
else if(item == "VCALENDAR")
- return new VCalendar(parent);
+ return new VCalendar(settings, parent);
}
qDebug() << "Unrecognised entity '" << lineData <<"'";
#include "EventTypes/SMS.h"
#include "Factory.h"
+#include "Settings.h"
#include "VCard.h"
#include "VEnvelope.h"
#include "VBody.h"
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)
{
}
}
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);
#include "iReader.h"
#include "iWriter.h"
+class Settings;
+
class QString;
class QTextStream;
class VMessage : public SMSEntity, public iWriter, public iReader
{
public:
- VMessage(const SMSEntity* parent);
+ VMessage(const Settings &settings, const SMSEntity* parent);
//VMessage(QTextStream& stream);
- VMessage(const SMSEntity* parent, float version);
+ VMessage(const Settings &settings, const SMSEntity* parent, float version);
~VMessage();
virtual bool Read(const QString & initialLine, QTextStream& stream, EventTypes::SMS & event);
// Parse the event
EventTypes::SMS *event(new EventTypes::SMS(CurrentSettings()));
QString lineData = eventStream.readLine();
- EventParsers::VMGEntities::iReader* reader = EventParsers::VMGEntities::Factory::Instantiate(lineData, NULL);
+ EventParsers::VMGEntities::iReader* reader = EventParsers::VMGEntities::Factory::Instantiate(CurrentSettings(), lineData, NULL);
bool valid(NULL != reader && reader->Read(QString(""), eventStream, *event));
delete reader;
if (!valid)
#ifndef EVENTTYPES_PHONECALL_H
#define EVENTTYPES_PHONECALL_H
+#include "Settings.h"
+
#include <QDateTime>
#include <QDebug>
#include <QList>
stream.setAutoDetectUnicode(false);
stream.setCodec("UTF-16LE");
- EventParsers::VMGEntities::VMessage writer(NULL, 1.1);
+ EventParsers::VMGEntities::VMessage writer(CurrentSettings(), NULL, 1.1);
writer.Write(stream, *this);
//stream << "Test";
//stream.setCodec(oldCodec);