summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikko Gronoff <mikko.gronoff@qt.io>2019-04-26 09:55:15 +0300
committerMikko Gronoff <mikko.gronoff@qt.io>2019-04-26 09:55:36 +0300
commit04cecef50d9316d98c11e8b82be5a492ef9bde70 (patch)
treedae4cf00b9473cdc274218091e5a29e8ab4f4767
parent747d70eaa865aad25b0ee680a0090c059a0549a9 (diff)
parent8d82e92fcb04d42fa5efbd23e155ac9f076c7c9c (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
* origin/5.12: 8d82e92 Parse individual demo.xml files Change-Id: Ifb675485bf4ae14390a1ef0641ac23107f67d633
-rw-r--r--src/applicationsmodel.cpp92
-rw-r--r--src/applicationsmodel_p.h4
2 files changed, 45 insertions, 51 deletions
diff --git a/src/applicationsmodel.cpp b/src/applicationsmodel.cpp
index 9fb4487..5c29c93 100644
--- a/src/applicationsmodel.cpp
+++ b/src/applicationsmodel.cpp
@@ -50,73 +50,65 @@ void IndexingThread::run()
{
QList<AppData> results;
QList<QString> roots = root.split(":");
- target = qgetenv("B2QT_BASE") + "-" + qgetenv("B2QT_PLATFORM");
foreach (const QString &root, roots) {
- if (QFile::exists(root + "/demos.xml")) {
-
- QFile file(root + "/demos.xml");
-
- if (!file.open(QIODevice::ReadOnly))
- break;
-
- QXmlStreamReader xml(&file);
-
- AppData data;
- bool exclude = false;
-
- while (!xml.atEnd()) {
- switch (xml.readNext()) {
-
- case QXmlStreamReader::StartElement:
- if (xml.name().toString().toLower() == "application") {
-
- const QStringList excludeList = xml.attributes().value("exclude").toString().split(QStringLiteral(";"));
-
- exclude = excludeList.contains(target) || excludeList.contains(QStringLiteral("all"));
+ QDirIterator it(root, QDir::Dirs | QDir::NoDotDot);
+ while (it.hasNext()) {
+ QString path = it.next();
+ if (QFile::exists(path + "/demo.xml"))
+ parseDemo(path, results);
+ }
+ }
- if (exclude)
- break;
+ std::sort(results.begin(), results.end(), appOrder);
- data.name = xml.attributes().value("title").toString().trimmed();
+ qDebug() << "Indexer: all done... total:" << results.size();
+ emit indexingFinished(results);
+}
- QString path = xml.attributes().value("location").toString();
- data.location = QUrl::fromLocalFile(path);
+void IndexingThread::parseDemo(QString path, QList<AppData> &results) {
+ QFile file(path + "/demo.xml");
- data.main = QString("/%1").arg(xml.attributes().value("main").toString());
+ if (!file.open(QIODevice::ReadOnly))
+ return;
- QString imageName = xml.attributes().value("icon").toString();
+ QXmlStreamReader xml(&file);
- data.icon = QFile::exists(imageName)
- ? QUrl::fromLocalFile(imageName)
- : QUrl("qrc:///qml/images/codeless.png");
+ AppData data;
+ while (!xml.atEnd()) {
+ switch (xml.readNext()) {
+ case QXmlStreamReader::StartElement:
+ if (xml.name().toString().toLower() == "application") {
+ data.location = QUrl::fromLocalFile(path);
+ data.name = xml.attributes().value("title").toString().trimmed();
+ data.main = QString("/%1").arg(xml.attributes().value("main").toString());
- data.priority = xml.attributes().value("priority").toInt();
+ QString imageName = QString("%1/%2")
+ .arg(path, xml.attributes().value("icon").toString());
- } else if (xml.name().toString().toLower() == "description") {
- data.description = xml.readElementText().trimmed();
- }
- break;
+ data.icon = QFile::exists(imageName)
+ ? QUrl::fromLocalFile(imageName)
+ : QUrl();
- case QXmlStreamReader::EndElement:
- if (xml.name().toString().toLower() == "application" && !exclude)
- results << data;
- break;
+ data.priority = xml.attributes().value("priority").toInt();
- default:
- break;
- }
+ } else if (xml.name().toString().toLower() == "description") {
+ data.description = xml.readElementText().trimmed();
}
+ break;
+
+ case QXmlStreamReader::EndElement:
+ if (xml.name().toString().toLower() == "application")
+ results << data;
+ break;
- if (xml.error() != QXmlStreamReader::NoError)
- qWarning("XML Parser error: %s", qPrintable(xml.errorString()));
+ default:
+ break;
}
}
- std::sort(results.begin(), results.end(), appOrder);
-
- qDebug() << "Indexer: all done... total:" << results.size();
- emit indexingFinished(results);
+ if (xml.error() != QXmlStreamReader::NoError)
+ qWarning("XML Parser error: %s", qPrintable(xml.errorString()));
}
ApplicationsModel::ApplicationsModel(QObject *parent) :
diff --git a/src/applicationsmodel_p.h b/src/applicationsmodel_p.h
index 7ae5368..ba1254b 100644
--- a/src/applicationsmodel_p.h
+++ b/src/applicationsmodel_p.h
@@ -40,13 +40,15 @@ public:
virtual ~IndexingThread() = default;
void run() final;
+private:
+ void parseDemo(QString path, QList<AppData> &results);
+
signals:
void indexingFinished(QList<AppData> results);
public:
QString root;
ApplicationsModel *model = nullptr;
- QString target;
};
#endif // APPLICATIONSMODEL_P_H