summaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@theqtcompany.com>2016-02-17 10:49:51 +0000
committerKatja Marttila <katja.marttila@theqtcompany.com>2016-02-17 11:20:56 +0000
commite67fd518cbdf9c4ea99f88368f4c2b45e625c0c2 (patch)
tree80d6756a059edf8e92aabc6dd391ac7f425cca58 /src/libs
parent9d4be1a53be2b643114d051332d8439bc8809e59 (diff)
Revert "Use QQmlV4Function to correctly get empty parameters from script."
This reverts commit eb574d77b0ab9a92b61e7738d089cd4ea4304e51. The change will not work with Qt5.5 as it is causing constant crashes in Qt installers. Using this change will require a fix for Qt5. As we are about to make Qt installers based on 2.0 we need to revert this change for now. Change-Id: Ia7906d02db645f2407ab07d14f5a037224574b29 Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/installer/component.cpp79
-rw-r--r--src/libs/installer/component.h19
-rw-r--r--src/libs/installer/installer.pro3
3 files changed, 46 insertions, 55 deletions
diff --git a/src/libs/installer/component.cpp b/src/libs/installer/component.cpp
index d379305a8..ebd37a641 100644
--- a/src/libs/installer/component.cpp
+++ b/src/libs/installer/component.cpp
@@ -55,10 +55,6 @@
#include <QtUiTools/QUiLoader>
-#include <private/qv8engine_p.h>
-#include <private/qv4scopedvalue_p.h>
-#include <private/qv4global_p.h>
-
#include <algorithm>
using namespace QInstaller;
@@ -706,11 +702,11 @@ void Component::createOperationsForPath(const QString &path)
if (fi.isFile()) {
static const QString copy = QString::fromLatin1("Copy");
- addOperation(copy, QStringList() << fi.filePath() << target);
+ addOperation(copy, fi.filePath(), target);
} else if (fi.isDir()) {
qApp->processEvents();
static const QString mkdir = QString::fromLatin1("Mkdir");
- addOperation(mkdir, QStringList(target));
+ addOperation(mkdir, target);
QDirIterator it(fi.filePath());
while (it.hasNext())
@@ -750,7 +746,7 @@ void Component::createOperationsForArchive(const QString &archive)
if (isZip) {
// archives get completely extracted per default (if the script isn't doing other stuff)
- addOperation(QLatin1String("Extract"), QStringList() << archive << QLatin1String("@TargetDir@"));
+ addOperation(QLatin1String("Extract"), archive, QLatin1String("@TargetDir@"));
} else {
createOperationsForPath(archive);
}
@@ -1012,44 +1008,24 @@ Operation *Component::createOperation(const QString &operationName, const QStrin
return operation;
}
-namespace {
+/*!
+ Convenience method for calling the operation \a operation with up to ten parameters:
+ \a parameter1, \a parameter2, \a parameter3, \a parameter4, \a parameter5, \a parameter6,
+ \a parameter7, \a parameter8, \a parameter9, and \a parameter10.
-inline bool convert(QQmlV4Function *func, QStringList *toArgs)
+ \sa {component::addOperation}{component.addOperation}
+*/
+bool Component::addOperation(const QString &operation, const QString &parameter1, const QString &parameter2,
+ const QString &parameter3, const QString &parameter4, const QString &parameter5, const QString &parameter6,
+ const QString &parameter7, const QString &parameter8, const QString &parameter9, const QString &parameter10)
{
- if (func->length() < 2)
- return false;
- QV4::Scope scope(func->v4engine());
- QV4::ScopedValue val(scope);
- val = (*func)[0];
-
- *toArgs << val->toQString();
- for (int i = 1; i < func->length(); i++) {
- val = (*func)[i];
- if (val->isObject() && val->as<QV4::Object>()->isArrayObject()) {
- QV4::ScopedValue valtmp(scope);
- QV4::Object *array = val->as<QV4::Object>();
- uint length = array->getLength();
- for (uint ii = 0; ii < length; ++ii) {
- valtmp = array->getIndexed(ii);
- *toArgs << valtmp->toQStringNoThrow();
- }
- } else {
- *toArgs << val->toQString();
- }
+ if (Operation *op = createOperation(operation, parameter1, parameter2, parameter3, parameter4, parameter5,
+ parameter6, parameter7, parameter8, parameter9, parameter10)) {
+ addOperation(op);
+ return true;
}
- return true;
-}
-}
-/*!
- \internal
-*/
-bool Component::addOperation(QQmlV4Function *func)
-{
- QStringList args;
- if (convert(func, &args))
- return addOperation(args[0], args.mid(1));
return false;
}
@@ -1057,8 +1033,6 @@ bool Component::addOperation(QQmlV4Function *func)
Creates and adds an installation operation for \a operation. Add any number of \a parameters.
The variables that the parameters contain, such as \c @TargetDir@, are replaced with their
values.
-
- \sa {component::addOperation}{component.addOperation}
*/
bool Component::addOperation(const QString &operation, const QStringList &parameters)
{
@@ -1071,13 +1045,23 @@ bool Component::addOperation(const QString &operation, const QStringList &parame
}
/*!
- \internal
+ Convenience method for calling the elevated operation \a operation with up to ten parameters:
+ \a parameter1, \a parameter2, \a parameter3, \a parameter4, \a parameter5, \a parameter6,
+ \a parameter7, \a parameter8, \a parameter9, and \a parameter10.
+
+ \sa {component::addElevatedOperation}{component.addElevatedOperation}
*/
-bool Component::addElevatedOperation(QQmlV4Function *func)
+bool Component::addElevatedOperation(const QString &operation, const QString &parameter1,
+ const QString &parameter2, const QString &parameter3, const QString &parameter4, const QString &parameter5,
+ const QString &parameter6, const QString &parameter7, const QString &parameter8, const QString &parameter9,
+ const QString &parameter10)
{
- QStringList args;
- if (convert(func, &args))
- return addElevatedOperation(args[0], args.mid(1));
+ if (Operation *op = createOperation(operation, parameter1, parameter2, parameter3, parameter4, parameter5,
+ parameter6, parameter7, parameter8, parameter9, parameter10)) {
+ addElevatedOperation(op);
+ return true;
+ }
+
return false;
}
@@ -1086,7 +1070,6 @@ bool Component::addElevatedOperation(QQmlV4Function *func)
The variables that the parameters contain, such as \c @TargetDir@, are replaced with their
values. The operation is executed with elevated rights.
- \sa {component::addElevatedOperation}{component.addElevatedOperation}
*/
bool Component::addElevatedOperation(const QString &operation, const QStringList &parameters)
{
diff --git a/src/libs/installer/component.h b/src/libs/installer/component.h
index a075a0145..71f10c272 100644
--- a/src/libs/installer/component.h
+++ b/src/libs/installer/component.h
@@ -44,7 +44,6 @@
#include <QtCore/QUrl>
QT_FORWARD_DECLARE_CLASS(QDebug)
-QT_FORWARD_DECLARE_CLASS(QQmlV4Function)
namespace KDUpdater {
class Update;
@@ -131,12 +130,22 @@ public:
OperationList operations() const;
void addOperation(Operation *operation);
- Q_INVOKABLE bool addOperation(QQmlV4Function *args);
- bool addOperation(const QString &operation, const QStringList &parameters);
+ Q_INVOKABLE bool addOperation(const QString &operation, const QString &parameter1 = QString(),
+ const QString &parameter2 = QString(), const QString &parameter3 = QString(),
+ const QString &parameter4 = QString(), const QString &parameter5 = QString(),
+ const QString &parameter6 = QString(), const QString &parameter7 = QString(),
+ const QString &parameter8 = QString(), const QString &parameter9 = QString(),
+ const QString &parameter10 = QString());
+ Q_INVOKABLE bool addOperation(const QString &operation, const QStringList &parameters);
void addElevatedOperation(Operation *operation);
- Q_INVOKABLE bool addElevatedOperation(QQmlV4Function *args);
- bool addElevatedOperation(const QString &operation, const QStringList &parameters);
+ Q_INVOKABLE bool addElevatedOperation(const QString &operation,
+ const QString &parameter1 = QString(), const QString &parameter2 = QString(),
+ const QString &parameter3 = QString(), const QString &parameter4 = QString(),
+ const QString &parameter5 = QString(), const QString &parameter6 = QString(),
+ const QString &parameter7 = QString(), const QString &parameter8 = QString(),
+ const QString &parameter9 = QString(), const QString &parameter10 = QString());
+ Q_INVOKABLE bool addElevatedOperation(const QString &operation, const QStringList &parameters);
QStringList downloadableArchives() const;
Q_INVOKABLE void addDownloadableArchive(const QString &path);
diff --git a/src/libs/installer/installer.pro b/src/libs/installer/installer.pro
index cfa83d08d..87af31f3c 100644
--- a/src/libs/installer/installer.pro
+++ b/src/libs/installer/installer.pro
@@ -34,8 +34,7 @@ QT += \
xml \
concurrent \
widgets \
- core-private \
- qml-private
+ core-private
win32:QT += winextras
HEADERS += packagemanagercore.h \