summaryrefslogtreecommitdiffstats
path: root/src/libs/installer
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2018-03-14 13:33:04 +0200
committerKatja Marttila <katja.marttila@qt.io>2018-03-26 08:46:30 +0000
commit6664ca85f09d6ae195ac30f83a60d53c2355da0f (patch)
treef5e5a80c9e5b47d7e77679f08ccad682c81fdd98 /src/libs/installer
parent3f281b049c814602130dd433cedae84e44b28838 (diff)
Add findFiles method
Task-number: QTIFW-1094 Change-Id: Ibc37e9b568f7f54e37f6ed6a5b040940cab5aebd Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Diffstat (limited to 'src/libs/installer')
-rw-r--r--src/libs/installer/scriptengine.cpp24
-rw-r--r--src/libs/installer/scriptengine_p.h10
2 files changed, 32 insertions, 2 deletions
diff --git a/src/libs/installer/scriptengine.cpp b/src/libs/installer/scriptengine.cpp
index 28f91a394..4a3c163d2 100644
--- a/src/libs/installer/scriptengine.cpp
+++ b/src/libs/installer/scriptengine.cpp
@@ -72,6 +72,28 @@ QJSValue InstallerProxy::componentByName(const QString &componentName)
return QJSValue();
}
+QJSValue QDesktopServicesProxy::findFiles(const QString &path, const QString &pattern)
+{
+ QStringList result;
+ findRecursion(path, pattern, &result);
+
+ QJSValue scriptComponentsObject = m_engine->newArray(result.count());
+ for (int i = 0; i < result.count(); ++i) {
+ scriptComponentsObject.setProperty(i, result.at(i));
+ }
+ return scriptComponentsObject;
+}
+
+void QDesktopServicesProxy::findRecursion(const QString &path, const QString &pattern, QStringList *result)
+{
+ QDir currentDir(path);
+ const QString prefix = path + QLatin1Char('/');
+ foreach (const QString &match, currentDir.entryList(QStringList(pattern), QDir::Files | QDir::NoSymLinks))
+ result->append(prefix + match);
+ foreach (const QString &dir, currentDir.entryList(QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot))
+ findRecursion(prefix + dir, pattern, result);
+}
+
GuiProxy::GuiProxy(ScriptEngine *engine, QObject *parent) :
QObject(parent),
m_engine(engine),
@@ -526,7 +548,7 @@ QJSValue ScriptEngine::generateDesktopServicesObject()
SETPROPERTY(desktopServices, GenericCacheLocation, QStandardPaths)
SETPROPERTY(desktopServices, GenericConfigLocation, QStandardPaths)
- QJSValue object = m_engine.newQObject(new QDesktopServicesProxy);
+ QJSValue object = m_engine.newQObject(new QDesktopServicesProxy(this));
object.setPrototype(desktopServices); // attach the properties
return object;
}
diff --git a/src/libs/installer/scriptengine_p.h b/src/libs/installer/scriptengine_p.h
index 7af5cbab8..adbe2dc0c 100644
--- a/src/libs/installer/scriptengine_p.h
+++ b/src/libs/installer/scriptengine_p.h
@@ -93,7 +93,8 @@ class QDesktopServicesProxy : public QObject
Q_DISABLE_COPY(QDesktopServicesProxy)
public:
- QDesktopServicesProxy() {}
+ QDesktopServicesProxy(ScriptEngine *engine)
+ : m_engine(engine){}
public slots :
bool openUrl(const QString &url) const {
@@ -108,6 +109,13 @@ public slots :
QString storageLocation(qint32 location) const {
return QStandardPaths::writableLocation(QStandardPaths::StandardLocation(location));
}
+ QJSValue findFiles(const QString &path, const QString &pattern);
+
+private:
+ void findRecursion(const QString &path, const QString &pattern, QStringList *result);
+
+private:
+ ScriptEngine *m_engine;
};
#if QT_VERSION < 0x050400