From c0bfd6ab49e36b1f96a500fced976b9eef2aec4b Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Thu, 25 Aug 2011 02:46:25 +0100 Subject: [PATCH] Pass the current settings down to the parsers so they can behave accordingly (i.e. early out on a parse) --- EventParsers/VMGEntities/Factory.h | 4 +++- EventParsers/VMGEntities/SMSEntity.cpp | 4 ++-- EventParsers/VMGEntities/SMSEntity.h | 4 +++- EventParsers/VMGEntities/VBody.cpp | 6 +++--- EventParsers/VMGEntities/VBody.h | 4 +++- EventParsers/VMGEntities/VCalendar.cpp | 10 +++++----- EventParsers/VMGEntities/VCalendar.h | 4 ++-- EventParsers/VMGEntities/VCard.cpp | 10 +++++----- EventParsers/VMGEntities/VCard.h | 4 ++-- EventParsers/VMGEntities/VEnvelope.cpp | 6 +++--- EventParsers/VMGEntities/VEnvelope.h | 2 +- EventParsers/VMGEntities/VMGFactory.cpp | 12 ++++++------ EventParsers/VMGEntities/VMessage.cpp | 25 +++++++++++++------------ EventParsers/VMGEntities/VMessage.h | 6 ++++-- EventParsers/VMGParser.cpp | 2 +- EventTypes/PhoneCall.h | 2 ++ EventTypes/SMS.cpp | 2 +- 17 files changed, 59 insertions(+), 48 deletions(-) diff --git a/EventParsers/VMGEntities/Factory.h b/EventParsers/VMGEntities/Factory.h index f6ce10b..ecd60ae 100644 --- a/EventParsers/VMGEntities/Factory.h +++ b/EventParsers/VMGEntities/Factory.h @@ -19,6 +19,8 @@ #ifndef EVENTPARSERS_VMGEntities_FACTORY_H #define EVENTPARSERS_VMGEntities_FACTORY_H +class Settings; + class QString; namespace EventParsers @@ -34,7 +36,7 @@ namespace EventParsers Factory() {}; public: - static iReader* Instantiate(QString& lineData, const SMSEntity* parent); + static iReader* Instantiate(const Settings &settings, QString& lineData, const SMSEntity* parent); }; } } diff --git a/EventParsers/VMGEntities/SMSEntity.cpp b/EventParsers/VMGEntities/SMSEntity.cpp index 1a23c6c..b60a00d 100644 --- a/EventParsers/VMGEntities/SMSEntity.cpp +++ b/EventParsers/VMGEntities/SMSEntity.cpp @@ -22,8 +22,8 @@ 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) { } diff --git a/EventParsers/VMGEntities/SMSEntity.h b/EventParsers/VMGEntities/SMSEntity.h index 9ed198a..30fe6a8 100644 --- a/EventParsers/VMGEntities/SMSEntity.h +++ b/EventParsers/VMGEntities/SMSEntity.h @@ -31,16 +31,18 @@ namespace EventParsers 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; }; } } diff --git a/EventParsers/VMGEntities/VBody.cpp b/EventParsers/VMGEntities/VBody.cpp index dba3fd7..346d97b 100644 --- a/EventParsers/VMGEntities/VBody.cpp +++ b/EventParsers/VMGEntities/VBody.cpp @@ -30,8 +30,8 @@ using namespace EventParsers::VMGEntities; -VBody::VBody(const SMSEntity* parent) : - SMSEntity(parent) +VBody::VBody(const Settings &settings, const SMSEntity *parent) : + SMSEntity(settings, parent) { } @@ -97,7 +97,7 @@ bool VBody::Read(const QString &initialLine, QTextStream &stream, EventTypes::SM } 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; diff --git a/EventParsers/VMGEntities/VBody.h b/EventParsers/VMGEntities/VBody.h index 5a9bb6c..8eb84c0 100644 --- a/EventParsers/VMGEntities/VBody.h +++ b/EventParsers/VMGEntities/VBody.h @@ -25,6 +25,8 @@ #include "iReader.h" #include "iWriter.h" +class Settings; + class QString; namespace EventTypes { class SMS; } @@ -36,7 +38,7 @@ namespace EventParsers class VBody : public SMSEntity, public iWriter, public iReader { public: - VBody(const SMSEntity *parent); + VBody(const Settings &settings, const SMSEntity *parent); //VBody(QTextStream& stream); ~VBody(); diff --git a/EventParsers/VMGEntities/VCalendar.cpp b/EventParsers/VMGEntities/VCalendar.cpp index 8b97dab..db7a1b0 100644 --- a/EventParsers/VMGEntities/VCalendar.cpp +++ b/EventParsers/VMGEntities/VCalendar.cpp @@ -38,8 +38,8 @@ 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) { } @@ -47,8 +47,8 @@ VCalendar::VCalendar(const SMSEntity* parent) : //{ //} -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) { } @@ -134,7 +134,7 @@ bool VCalendar::Read(const QString &initialLine, QTextStream &stream, EventTypes } 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; diff --git a/EventParsers/VMGEntities/VCalendar.h b/EventParsers/VMGEntities/VCalendar.h index f64c72d..de6a323 100644 --- a/EventParsers/VMGEntities/VCalendar.h +++ b/EventParsers/VMGEntities/VCalendar.h @@ -34,9 +34,9 @@ namespace EventParsers 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); diff --git a/EventParsers/VMGEntities/VCard.cpp b/EventParsers/VMGEntities/VCard.cpp index b6d6b63..e5e0a7d 100644 --- a/EventParsers/VMGEntities/VCard.cpp +++ b/EventParsers/VMGEntities/VCard.cpp @@ -38,8 +38,8 @@ 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) { } @@ -47,8 +47,8 @@ VCard::VCard(const SMSEntity* parent) : //{ //} -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) { } @@ -164,7 +164,7 @@ bool VCard::Read(const QString &initialLine, QTextStream &stream, EventTypes::SM } 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; diff --git a/EventParsers/VMGEntities/VCard.h b/EventParsers/VMGEntities/VCard.h index 29d3960..0386c97 100644 --- a/EventParsers/VMGEntities/VCard.h +++ b/EventParsers/VMGEntities/VCard.h @@ -40,9 +40,9 @@ namespace EventParsers 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); diff --git a/EventParsers/VMGEntities/VEnvelope.cpp b/EventParsers/VMGEntities/VEnvelope.cpp index 54b8f41..aa8c10c 100644 --- a/EventParsers/VMGEntities/VEnvelope.cpp +++ b/EventParsers/VMGEntities/VEnvelope.cpp @@ -27,8 +27,8 @@ using namespace EventParsers::VMGEntities; -VEnvelope::VEnvelope(const SMSEntity* parent) : - SMSEntity(parent) +VEnvelope::VEnvelope(const Settings &settings, const SMSEntity* parent) : + SMSEntity(settings, parent) { } @@ -75,7 +75,7 @@ bool VEnvelope::Read(const QString &initialLine, QTextStream &stream, EventTypes { 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; diff --git a/EventParsers/VMGEntities/VEnvelope.h b/EventParsers/VMGEntities/VEnvelope.h index d399a90..cff710f 100644 --- a/EventParsers/VMGEntities/VEnvelope.h +++ b/EventParsers/VMGEntities/VEnvelope.h @@ -38,7 +38,7 @@ namespace EventParsers class VEnvelope : public SMSEntity, public iWriter, public iReader { public: - VEnvelope(const SMSEntity* parent); + VEnvelope(const Settings &settings, const SMSEntity* parent); //VEnvelope(QTextStream& stream); ~VEnvelope(); diff --git a/EventParsers/VMGEntities/VMGFactory.cpp b/EventParsers/VMGEntities/VMGFactory.cpp index 1959d89..849932b 100644 --- a/EventParsers/VMGEntities/VMGFactory.cpp +++ b/EventParsers/VMGEntities/VMGFactory.cpp @@ -28,22 +28,22 @@ 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 <<"'"; diff --git a/EventParsers/VMGEntities/VMessage.cpp b/EventParsers/VMGEntities/VMessage.cpp index 59097d7..b798462 100644 --- a/EventParsers/VMGEntities/VMessage.cpp +++ b/EventParsers/VMGEntities/VMessage.cpp @@ -20,6 +20,7 @@ #include "EventTypes/SMS.h" #include "Factory.h" +#include "Settings.h" #include "VCard.h" #include "VEnvelope.h" #include "VBody.h" @@ -31,8 +32,8 @@ 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) { } @@ -40,8 +41,8 @@ VMessage::VMessage(const SMSEntity* parent) : //{ //} -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) { } @@ -105,7 +106,7 @@ bool VMessage::Read(const QString & initialLine, QTextStream & stream, EventType } 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; @@ -141,24 +142,24 @@ void VMessage::Write(QTextStream &stream, const EventTypes::SMS &event) 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); diff --git a/EventParsers/VMGEntities/VMessage.h b/EventParsers/VMGEntities/VMessage.h index 725b175..b302c5d 100644 --- a/EventParsers/VMGEntities/VMessage.h +++ b/EventParsers/VMGEntities/VMessage.h @@ -23,6 +23,8 @@ #include "iReader.h" #include "iWriter.h" +class Settings; + class QString; class QTextStream; @@ -38,9 +40,9 @@ namespace EventParsers 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); diff --git a/EventParsers/VMGParser.cpp b/EventParsers/VMGParser.cpp index 5011ca4..0cfda71 100644 --- a/EventParsers/VMGParser.cpp +++ b/EventParsers/VMGParser.cpp @@ -81,7 +81,7 @@ EventTypes::EventFromFileList VMGParser::ParseFile(QFile &eventFile, const QList // 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) diff --git a/EventTypes/PhoneCall.h b/EventTypes/PhoneCall.h index f709713..c246258 100644 --- a/EventTypes/PhoneCall.h +++ b/EventTypes/PhoneCall.h @@ -19,6 +19,8 @@ #ifndef EVENTTYPES_PHONECALL_H #define EVENTTYPES_PHONECALL_H +#include "Settings.h" + #include #include #include diff --git a/EventTypes/SMS.cpp b/EventTypes/SMS.cpp index b80b833..97ee9c5 100644 --- a/EventTypes/SMS.cpp +++ b/EventTypes/SMS.cpp @@ -141,7 +141,7 @@ void SMS::Export(const QString &baseDirectory) const 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); -- 1.7.9.5