@@ -26,6 +26,9 @@ static const char ProjectElementName[] = "project";
2626static const char AllocElementName[] = " autodealloc" ;
2727static const char ClassElementName[] = " class" ;
2828static const char ClassNameAttrib[] = " name" ;
29+ static const char IncludDirElementName[] = " includedir" ;
30+ static const char DirElementName[] = " dir" ;
31+ static const char DirNameAttrib[] = " name" ;
2932
3033ProjectFile::ProjectFile (QObject *parent) :
3134 QObject(parent)
@@ -60,6 +63,9 @@ bool ProjectFile::Read(const QString &filename)
6063 // Find allocelement from inside project element
6164 if (insideProject && xmlReader.name () == AllocElementName)
6265 ReadAutoAllocClasses (xmlReader);
66+
67+ if (insideProject && xmlReader.name () == IncludDirElementName)
68+ ReadIncludeDirs (xmlReader);
6369 break ;
6470
6571 case QXmlStreamReader::EndElement:
@@ -90,6 +96,11 @@ QStringList ProjectFile::GetDeAllocatedClasses() const
9096 return mDeAllocatedClasses ;
9197}
9298
99+ QStringList ProjectFile::GetIncludeDirs () const
100+ {
101+ return mIncludeDirs ;
102+ }
103+
93104void ProjectFile::ReadAutoAllocClasses (QXmlStreamReader &reader)
94105{
95106 QXmlStreamReader::TokenType type;
@@ -131,3 +142,45 @@ void ProjectFile::ReadAutoAllocClasses(QXmlStreamReader &reader)
131142 }
132143 while (!allRead);
133144}
145+
146+ void ProjectFile::ReadIncludeDirs (QXmlStreamReader &reader)
147+ {
148+ QXmlStreamReader::TokenType type;
149+ bool allRead = false ;
150+ do
151+ {
152+ type = reader.readNext ();
153+ switch (type)
154+ {
155+ case QXmlStreamReader::StartElement:
156+
157+ // Read dir-elements
158+ if (reader.name ().toString () == DirElementName)
159+ {
160+ QXmlStreamAttributes attribs = reader.attributes ();
161+ QString name = attribs.value (" " , DirNameAttrib).toString ();
162+ if (!name.isEmpty ())
163+ mIncludeDirs << name;
164+ }
165+ break ;
166+
167+ case QXmlStreamReader::EndElement:
168+ if (reader.name ().toString () == IncludDirElementName)
169+ allRead = true ;
170+ break ;
171+
172+ // Not handled
173+ case QXmlStreamReader::NoToken:
174+ case QXmlStreamReader::Invalid:
175+ case QXmlStreamReader::StartDocument:
176+ case QXmlStreamReader::EndDocument:
177+ case QXmlStreamReader::Characters:
178+ case QXmlStreamReader::Comment:
179+ case QXmlStreamReader::DTD:
180+ case QXmlStreamReader::EntityReference:
181+ case QXmlStreamReader::ProcessingInstruction:
182+ break ;
183+ }
184+ }
185+ while (!allRead);
186+ }
0 commit comments