summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Holzammer <andreas.holzammer.qnx@kdab.com>2012-04-24 16:22:39 +0200
committerKarsten Heimrich <karsten.heimrich@nokia.com>2012-04-25 12:15:31 +0200
commit9358fb8540feacf9b57d23e8341d6eb354267e99 (patch)
tree3161bb66c8c596b0a205e3ad3abb713c31adc968
parent15b38ee5938208a5875e5f4c18d5ab73542a555f (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.cpp4
-rw-r--r--src/libs/installer/packagemanagercore.cpp16
-rw-r--r--src/libs/installer/qinstallerglobal.h1
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