summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSandro Knauß <sknauss@kde.org>2016-10-19 15:40:25 +0200
committerSandro Knauß <sknauss@kde.org>2016-10-19 15:40:25 +0200
commita93a649f34ffa794884019e05c57869bd3bd4672 (patch)
treecff51c4fab9ebd5a0e3e05309f13013617d88759
parent17a926c2697143937b0c1700b1d1e8081f727059 (diff)
downloadkube-a93a649f34ffa794884019e05c57869bd3bd4672.tar.gz
kube-a93a649f34ffa794884019e05c57869bd3bd4672.zip
Move addSignatures/addEncryptions/addPart to Entry class
-rw-r--r--framework/domain/messageparser_new.cpp178
1 files changed, 89 insertions, 89 deletions
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 *)
26Q_DECLARE_METATYPE(Signature *) 26Q_DECLARE_METATYPE(Signature *)
27Q_DECLARE_METATYPE(Encryption *) 27Q_DECLARE_METATYPE(Encryption *)
28 28
29class Entry;
30
31class NewModelPrivate
32{
33public:
34 NewModelPrivate(NewModel *q_ptr, const std::shared_ptr<Parser> &parser);
35 ~NewModelPrivate();
36
37 void createTree();
38
39 QSharedPointer<QVariant> getVar(const std::shared_ptr<Signature> &sig);
40 QSharedPointer<QVariant> getVar(const std::shared_ptr<Encryption> &enc);
41 QSharedPointer<QVariant> getVar(const std::shared_ptr<Part> &part);
42 QSharedPointer<QVariant> getVar(Part *part);
43 QSharedPointer<QVariant> getVar(const std::shared_ptr<Content> &content);
44 QSharedPointer<QVariant> getVar(Content *content);
45
46 int getPos(Signature *sig);
47 int getPos(Encryption *enc);
48 int getPos(Part *part);
49 int getPos(Content *content);
50
51 NewModel *q;
52 QVector<Part::Ptr> mParts;
53 std::unique_ptr<Entry> mRoot;
54
55 std::shared_ptr<Parser> mParser;
56private:
57 QMap<std::shared_ptr<Signature>, QSharedPointer<QVariant>> mSignatureMap;
58 QMap<std::shared_ptr<Encryption>, QSharedPointer<QVariant>> mEncryptionMap;
59 QMap<Part *, QSharedPointer<QVariant>> mPartMap;
60 QMap<Content *, QSharedPointer<QVariant>> mCMap;
61};
62
29class Entry 63class Entry
30{ 64{
31public: 65public:
32 Entry() 66 Entry(NewModelPrivate *model)
33 : mParent(nullptr) 67 : mParent(nullptr)
68 , mNewModelPrivate(model)
34 { 69 {
35 } 70 }
36 71
@@ -48,6 +83,52 @@ public:
48 entry->mParent = this; 83 entry->mParent = this;
49 } 84 }
50 85
86 Entry *addSignatures(QVector<Signature::Ptr> signatures)
87 {
88 auto ret = this;
89 foreach(const auto &sig, signatures) {
90 auto entry = new Entry(mNewModelPrivate);
91 entry->mData = mNewModelPrivate->getVar(sig);
92 ret->addChild(entry);
93 ret = entry;
94 }
95 return ret;
96 }
97
98 Entry *addEncryptions(QVector<Encryption::Ptr> encryptions)
99 {
100 auto ret = this;
101 foreach(const auto &enc, encryptions) {
102 auto entry = new Entry(mNewModelPrivate);
103 entry->mData = mNewModelPrivate->getVar(enc);
104 ret->addChild(entry);
105 ret = entry;
106 }
107 return ret;
108 }
109
110 Entry *addPart(Part *part)
111 {
112 auto entry = new Entry(mNewModelPrivate);
113 entry->mData = mNewModelPrivate->getVar(part);
114 addChild(entry);
115 foreach(const auto &content, part->content()) {
116 auto _entry = entry;
117 _entry = _entry->addEncryptions(content->encryptions().mid(part->encryptions().size()));
118 _entry = _entry->addSignatures(content->signatures().mid(part->signatures().size()));
119 auto c = new Entry(mNewModelPrivate);
120 c->mData = mNewModelPrivate->getVar(content);
121 _entry->addChild(c);
122 }
123 foreach(const auto &sp, part->subParts()) {
124 auto _entry = entry;
125 _entry = _entry->addEncryptions(sp->encryptions().mid(part->encryptions().size()));
126 _entry = _entry->addSignatures(sp->signatures().mid(part->signatures().size()));
127 _entry->addPart(sp.get());
128 }
129 return entry;
130 }
131
51 int pos() 132 int pos()
52 { 133 {
53 if(!mParent) { 134 if(!mParent) {
@@ -67,46 +148,13 @@ public:
67 148
68 Entry *mParent; 149 Entry *mParent;
69 QVector<Entry *> mChildren; 150 QVector<Entry *> mChildren;
151 NewModelPrivate *mNewModelPrivate;
70}; 152};
71 153
72class NewModelPrivate
73{
74public:
75 NewModelPrivate(NewModel *q_ptr, const std::shared_ptr<Parser> &parser);
76 ~NewModelPrivate();
77
78 void createTree();
79 Entry *addSignatures(Entry *parent, QVector<Signature::Ptr> signatures);
80 Entry *addEncryptions(Entry *parent, QVector<Encryption::Ptr> encryptions);
81 Entry *addPart(Entry *parent, Part *part);
82
83 QSharedPointer<QVariant> getVar(const std::shared_ptr<Signature> &sig);
84 QSharedPointer<QVariant> getVar(const std::shared_ptr<Encryption> &enc);
85 QSharedPointer<QVariant> getVar(const std::shared_ptr<Part> &part);
86 QSharedPointer<QVariant> getVar(Part *part);
87 QSharedPointer<QVariant> getVar(const std::shared_ptr<Content> &content);
88 QSharedPointer<QVariant> getVar(Content *content);
89
90 int getPos(Signature *sig);
91 int getPos(Encryption *enc);
92 int getPos(Part *part);
93 int getPos(Content *content);
94
95 NewModel *q;
96 QVector<Part::Ptr> mParts;
97 std::unique_ptr<Entry> mRoot;
98
99 std::shared_ptr<Parser> mParser;
100private:
101 QMap<std::shared_ptr<Signature>, QSharedPointer<QVariant>> mSignatureMap;
102 QMap<std::shared_ptr<Encryption>, QSharedPointer<QVariant>> mEncryptionMap;
103 QMap<Part *, QSharedPointer<QVariant>> mPartMap;
104 QMap<Content *, QSharedPointer<QVariant>> mCMap;
105};
106 154
107NewModelPrivate::NewModelPrivate(NewModel *q_ptr, const std::shared_ptr<Parser> &parser) 155NewModelPrivate::NewModelPrivate(NewModel *q_ptr, const std::shared_ptr<Parser> &parser)
108 : q(q_ptr) 156 : q(q_ptr)
109 , mRoot(std::unique_ptr<Entry>(new Entry)) 157 , mRoot(std::unique_ptr<Entry>(new Entry(this)))
110 , mParser(parser) 158 , mParser(parser)
111{ 159{
112 mParts = mParser->collectContentParts(); 160 mParts = mParser->collectContentParts();
@@ -117,54 +165,6 @@ NewModelPrivate::~NewModelPrivate()
117{ 165{
118} 166}
119 167
120Entry *NewModelPrivate::addSignatures(Entry *parent, QVector<Signature::Ptr> signatures)
121{
122 auto ret = parent;
123 foreach(const auto &sig, signatures) {
124 auto entry = new Entry();
125 entry->mData = getVar(sig);
126 ret = entry;
127 parent->addChild(entry);
128 }
129 return ret;
130}
131
132Entry * NewModelPrivate::addEncryptions(Entry *parent, QVector<Encryption::Ptr> encryptions)
133{
134 auto ret = parent;
135 foreach(const auto &enc, encryptions) {
136 auto entry = new Entry();
137 entry->mData = getVar(enc);
138 parent->addChild(entry);
139 ret = entry;
140 }
141 return ret;
142}
143
144Entry * NewModelPrivate::addPart(Entry *parent, Part *part)
145{
146 auto entry = new Entry();
147 entry->mData = getVar(part);
148 parent->addChild(entry);
149
150 foreach(const auto &content, part->content()) {
151 auto _entry = entry;
152 _entry = addEncryptions(_entry, content->encryptions().mid(part->encryptions().size()));
153 _entry = addSignatures(_entry, content->signatures().mid(part->signatures().size()));
154 auto c = new Entry();
155 c->mData = getVar(content);
156 _entry->addChild(c);
157 }
158
159 foreach(const auto &sp, part->subParts()) {
160 auto _entry = entry;
161 _entry = addEncryptions(_entry, sp->encryptions().mid(part->encryptions().size()));
162 _entry = addSignatures(_entry, sp->signatures().mid(part->signatures().size()));
163 addPart(_entry, sp.get());
164 }
165 return entry;
166}
167
168void NewModelPrivate::createTree() 168void NewModelPrivate::createTree()
169{ 169{
170 auto root = mRoot.get(); 170 auto root = mRoot.get();
@@ -176,16 +176,16 @@ void NewModelPrivate::createTree()
176 auto _parent = parent; 176 auto _parent = parent;
177 if (pPart != part->parent()) { 177 if (pPart != part->parent()) {
178 auto _parent = root; 178 auto _parent = root;
179 _parent = addEncryptions(_parent, part->parent()->encryptions()); 179 _parent = _parent->addEncryptions(part->parent()->encryptions());
180 _parent = addSignatures(_parent, part->parent()->signatures()); 180 _parent = _parent->addSignatures(part->parent()->signatures());
181 signatures = part->parent()->signatures(); 181 signatures = part->parent()->signatures();
182 encryptions = part->parent()->encryptions(); 182 encryptions = part->parent()->encryptions();
183 parent = _parent; 183 parent = _parent;
184 pPart = part->parent(); 184 pPart = part->parent();
185 } 185 }
186 _parent = addEncryptions(_parent, part->encryptions().mid(encryptions.size())); 186 _parent = _parent->addEncryptions(part->encryptions().mid(encryptions.size()));
187 _parent = addSignatures(_parent, part->signatures().mid(signatures.size())); 187 _parent = _parent->addSignatures(part->signatures().mid(signatures.size()));
188 addPart(_parent, part.get()); 188 _parent->addPart(part.get());
189 } 189 }
190} 190}
191 191