diff options
author | Andreas Holzammer <andreas.holzammer.qnx@kdab.com> | 2012-04-24 16:22:39 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@nokia.com> | 2012-04-25 12:15:31 +0200 |
commit | 9358fb8540feacf9b57d23e8341d6eb354267e99 (patch) | |
tree | 3161bb66c8c596b0a205e3ad3abb713c31adc968 | |
parent | 15b38ee5938208a5875e5f4c18d5ab73542a555f (diff) |
Add QFileDialog::getExistingDirectory to Scripting
Make it possible to access QFileDialog::getExistingDirectory
from installer script.
Change-Id: I2cfa8cd9bba77580b4ed1ade46b56796839f7126
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Karsten Heimrich <karsten.heimrich@nokia.com>
-rw-r--r-- | src/libs/installer/component_p.cpp | 4 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 16 | ||||
-rw-r--r-- | src/libs/installer/qinstallerglobal.h | 1 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/libs/installer/component_p.cpp b/src/libs/installer/component_p.cpp index 4294ac8a8..df09ff50b 100644 --- a/src/libs/installer/component_p.cpp +++ b/src/libs/installer/component_p.cpp @@ -143,6 +143,10 @@ QScriptEngine *ComponentPrivate::scriptEngine() m_scriptEngine->globalObject().setProperty(QLatin1String("QDesktopServices"), desktopServices); m_scriptEngine->globalObject().setProperty(QLatin1String("component"), m_scriptEngine->newQObject(q)); + QScriptValue fileDialog = m_scriptEngine->newArray(); + fileDialog.setProperty(QLatin1String("getExistingDirectory"), m_scriptEngine->newFunction(qFileDialogGetExistingDirectory)); + m_scriptEngine->globalObject().setProperty(QLatin1String("QFileDialog"), fileDialog); + return m_scriptEngine; } diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 41515a428..c81987f39 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -52,6 +52,7 @@ #include <QtCore/QTemporaryFile> #include <QtGui/QDesktopServices> +#include <QtGui/QFileDialog> #include <QtScript/QScriptEngine> #include <QtScript/QScriptContext> @@ -181,6 +182,21 @@ QScriptValue QInstaller::qDesktopServicesStorageLocation(QScriptContext *context return QDesktopServices::storageLocation(location); } +QScriptValue QInstaller::qFileDialogGetExistingDirectory( QScriptContext *context, QScriptEngine *engine ) +{ + Q_UNUSED(engine); + const QScriptValue check = checkArguments(context, 0, 2); + if (check.isError()) + return check; + QString caption; + QString dir; + if (context->argumentCount() > 0) + caption = context->argument(0).toString(); + if (context->argumentCount() > 1) + dir = context->argument(1).toString(); + return QFileDialog::getExistingDirectory(0, caption, dir); +} + QString QInstaller::uncaughtExceptionString(QScriptEngine *scriptEngine, const QString &context) { QString error(QLatin1String("\n\n%1\n\nBacktrace:\n\t%2")); diff --git a/src/libs/installer/qinstallerglobal.h b/src/libs/installer/qinstallerglobal.h index 843ed5598..57e4a0bb9 100644 --- a/src/libs/installer/qinstallerglobal.h +++ b/src/libs/installer/qinstallerglobal.h @@ -86,6 +86,7 @@ QScriptValue qInstallerComponentByName(QScriptContext *context, QScriptEngine *e QScriptValue qDesktopServicesOpenUrl(QScriptContext *context, QScriptEngine *engine); QScriptValue qDesktopServicesDisplayName(QScriptContext *context, QScriptEngine *engine); QScriptValue qDesktopServicesStorageLocation(QScriptContext *context, QScriptEngine *engine); +QScriptValue qFileDialogGetExistingDirectory(QScriptContext *context, QScriptEngine *engine); } // namespace QInstaller |