20ReadQrcResult
readQrcFile(
const QString &resourceFile,
const QString &content)
23 QString dirPath = QFileInfo(resourceFile).path();
24 QXmlStreamReader reader(content);
25 bool isFileTag =
false;
26 QStringList tagStack{
"RCC"_L1,
"qresource"_L1,
"file"_L1 };
28 while (!reader.atEnd()) {
29 QXmlStreamReader::TokenType t = reader.readNext();
31 case QXmlStreamReader::StartElement:
32 if (curDepth >= tagStack.size() || reader.name() != tagStack.at(curDepth)) {
33 result.errorString = FMT::tr(
"unexpected <%1> tag\n")
34 .arg(reader.name().toString());
35 result.line = reader.lineNumber();
38 if (++curDepth == tagStack.size())
42 case QXmlStreamReader::EndElement:
44 if (curDepth == 0 || reader.name() != tagStack.at(curDepth - 1)) {
45 result.errorString = FMT::tr(
"unexpected closing <%1> tag\n")
46 .arg(reader.name().toString());
47 result.line = reader.lineNumber();
53 case QXmlStreamReader::Characters:
55 QString fn = reader.text().toString();
56 if (!QFileInfo(fn).isAbsolute())
57 fn = dirPath + u'/' + fn;
59 if (isSupportedExtension(cfi.suffix()))
60 result.files << cfi.filePath();
68 if (reader.error() != QXmlStreamReader::NoError) {
69 result.errorString = reader.errorString();
70 result.line = reader.lineNumber();