From a93a649f34ffa794884019e05c57869bd3bd4672 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20Knau=C3=9F?= Date: Wed, 19 Oct 2016 15:40:25 +0200 Subject: Move addSignatures/addEncryptions/addPart to Entry class --- framework/domain/messageparser_new.cpp | 178 ++++++++++++++++----------------- 1 file changed, 89 insertions(+), 89 deletions(-) (limited to 'framework/domain') diff --git a/framework/domain/messageparser_new.cpp b/framework/domain/messageparser_new.cpp index 57f8172f..b930f33d 100644 --- a/framework/domain/messageparser_new.cpp +++ b/framework/domain/messageparser_new.cpp @@ -26,11 +26,46 @@ Q_DECLARE_METATYPE(Content *) Q_DECLARE_METATYPE(Signature *) Q_DECLARE_METATYPE(Encryption *) +class Entry; + +class NewModelPrivate +{ +public: + NewModelPrivate(NewModel *q_ptr, const std::shared_ptr &parser); + ~NewModelPrivate(); + + void createTree(); + + QSharedPointer getVar(const std::shared_ptr &sig); + QSharedPointer getVar(const std::shared_ptr &enc); + QSharedPointer getVar(const std::shared_ptr &part); + QSharedPointer getVar(Part *part); + QSharedPointer getVar(const std::shared_ptr &content); + QSharedPointer getVar(Content *content); + + int getPos(Signature *sig); + int getPos(Encryption *enc); + int getPos(Part *part); + int getPos(Content *content); + + NewModel *q; + QVector mParts; + std::unique_ptr mRoot; + + std::shared_ptr mParser; +private: + QMap, QSharedPointer> mSignatureMap; + QMap, QSharedPointer> mEncryptionMap; + QMap> mPartMap; + QMap> mCMap; +}; + class Entry { public: - Entry() + Entry(NewModelPrivate *model) : mParent(nullptr) + , mNewModelPrivate(model) { } @@ -48,6 +83,52 @@ public: entry->mParent = this; } + Entry *addSignatures(QVector signatures) + { + auto ret = this; + foreach(const auto &sig, signatures) { + auto entry = new Entry(mNewModelPrivate); + entry->mData = mNewModelPrivate->getVar(sig); + ret->addChild(entry); + ret = entry; + } + return ret; + } + + Entry *addEncryptions(QVector encryptions) + { + auto ret = this; + foreach(const auto &enc, encryptions) { + auto entry = new Entry(mNewModelPrivate); + entry->mData = mNewModelPrivate->getVar(enc); + ret->addChild(entry); + ret = entry; + } + return ret; + } + + Entry *addPart(Part *part) + { + auto entry = new Entry(mNewModelPrivate); + entry->mData = mNewModelPrivate->getVar(part); + addChild(entry); + foreach(const auto &content, part->content()) { + auto _entry = entry; + _entry = _entry->addEncryptions(content->encryptions().mid(part->encryptions().size())); + _entry = _entry->addSignatures(content->signatures().mid(part->signatures().size())); + auto c = new Entry(mNewModelPrivate); + c->mData = mNewModelPrivate->getVar(content); + _entry->addChild(c); + } + foreach(const auto &sp, part->subParts()) { + auto _entry = entry; + _entry = _entry->addEncryptions(sp->encryptions().mid(part->encryptions().size())); + _entry = _entry->addSignatures(sp->signatures().mid(part->signatures().size())); + _entry->addPart(sp.get()); + } + return entry; + } + int pos() { if(!mParent) { @@ -67,46 +148,13 @@ public: Entry *mParent; QVector mChildren; + NewModelPrivate *mNewModelPrivate; }; -class NewModelPrivate -{ -public: - NewModelPrivate(NewModel *q_ptr, const std::shared_ptr &parser); - ~NewModelPrivate(); - - void createTree(); - Entry *addSignatures(Entry *parent, QVector signatures); - Entry *addEncryptions(Entry *parent, QVector encryptions); - Entry *addPart(Entry *parent, Part *part); - - QSharedPointer getVar(const std::shared_ptr &sig); - QSharedPointer getVar(const std::shared_ptr &enc); - QSharedPointer getVar(const std::shared_ptr &part); - QSharedPointer getVar(Part *part); - QSharedPointer getVar(const std::shared_ptr &content); - QSharedPointer getVar(Content *content); - - int getPos(Signature *sig); - int getPos(Encryption *enc); - int getPos(Part *part); - int getPos(Content *content); - - NewModel *q; - QVector mParts; - std::unique_ptr mRoot; - - std::shared_ptr mParser; -private: - QMap, QSharedPointer> mSignatureMap; - QMap, QSharedPointer> mEncryptionMap; - QMap> mPartMap; - QMap> mCMap; -}; NewModelPrivate::NewModelPrivate(NewModel *q_ptr, const std::shared_ptr &parser) : q(q_ptr) - , mRoot(std::unique_ptr(new Entry)) + , mRoot(std::unique_ptr(new Entry(this))) , mParser(parser) { mParts = mParser->collectContentParts(); @@ -117,54 +165,6 @@ NewModelPrivate::~NewModelPrivate() { } -Entry *NewModelPrivate::addSignatures(Entry *parent, QVector signatures) -{ - auto ret = parent; - foreach(const auto &sig, signatures) { - auto entry = new Entry(); - entry->mData = getVar(sig); - ret = entry; - parent->addChild(entry); - } - return ret; -} - -Entry * NewModelPrivate::addEncryptions(Entry *parent, QVector encryptions) -{ - auto ret = parent; - foreach(const auto &enc, encryptions) { - auto entry = new Entry(); - entry->mData = getVar(enc); - parent->addChild(entry); - ret = entry; - } - return ret; -} - -Entry * NewModelPrivate::addPart(Entry *parent, Part *part) -{ - auto entry = new Entry(); - entry->mData = getVar(part); - parent->addChild(entry); - - foreach(const auto &content, part->content()) { - auto _entry = entry; - _entry = addEncryptions(_entry, content->encryptions().mid(part->encryptions().size())); - _entry = addSignatures(_entry, content->signatures().mid(part->signatures().size())); - auto c = new Entry(); - c->mData = getVar(content); - _entry->addChild(c); - } - - foreach(const auto &sp, part->subParts()) { - auto _entry = entry; - _entry = addEncryptions(_entry, sp->encryptions().mid(part->encryptions().size())); - _entry = addSignatures(_entry, sp->signatures().mid(part->signatures().size())); - addPart(_entry, sp.get()); - } - return entry; -} - void NewModelPrivate::createTree() { auto root = mRoot.get(); @@ -176,16 +176,16 @@ void NewModelPrivate::createTree() auto _parent = parent; if (pPart != part->parent()) { auto _parent = root; - _parent = addEncryptions(_parent, part->parent()->encryptions()); - _parent = addSignatures(_parent, part->parent()->signatures()); + _parent = _parent->addEncryptions(part->parent()->encryptions()); + _parent = _parent->addSignatures(part->parent()->signatures()); signatures = part->parent()->signatures(); encryptions = part->parent()->encryptions(); parent = _parent; pPart = part->parent(); } - _parent = addEncryptions(_parent, part->encryptions().mid(encryptions.size())); - _parent = addSignatures(_parent, part->signatures().mid(signatures.size())); - addPart(_parent, part.get()); + _parent = _parent->addEncryptions(part->encryptions().mid(encryptions.size())); + _parent = _parent->addSignatures(part->signatures().mid(signatures.size())); + _parent->addPart(part.get()); } } -- cgit v1.2.3