diff options
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/installer/component.cpp | 79 | ||||
-rw-r--r-- | src/libs/installer/component.h | 19 | ||||
-rw-r--r-- | src/libs/installer/installer.pro | 3 |
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 ¶meter1, const QString ¶meter2, + const QString ¶meter3, const QString ¶meter4, const QString ¶meter5, const QString ¶meter6, + const QString ¶meter7, const QString ¶meter8, const QString ¶meter9, const QString ¶meter10) { - 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 ¶meters) { @@ -1071,13 +1045,23 @@ bool Component::addOperation(const QString &operation, const QStringList ¶me } /*! - \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 ¶meter1, + const QString ¶meter2, const QString ¶meter3, const QString ¶meter4, const QString ¶meter5, + const QString ¶meter6, const QString ¶meter7, const QString ¶meter8, const QString ¶meter9, + const QString ¶meter10) { - 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 ¶meters) { 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 ¶meters); + Q_INVOKABLE bool addOperation(const QString &operation, const QString ¶meter1 = QString(), + const QString ¶meter2 = QString(), const QString ¶meter3 = QString(), + const QString ¶meter4 = QString(), const QString ¶meter5 = QString(), + const QString ¶meter6 = QString(), const QString ¶meter7 = QString(), + const QString ¶meter8 = QString(), const QString ¶meter9 = QString(), + const QString ¶meter10 = QString()); + Q_INVOKABLE bool addOperation(const QString &operation, const QStringList ¶meters); void addElevatedOperation(Operation *operation); - Q_INVOKABLE bool addElevatedOperation(QQmlV4Function *args); - bool addElevatedOperation(const QString &operation, const QStringList ¶meters); + Q_INVOKABLE bool addElevatedOperation(const QString &operation, + const QString ¶meter1 = QString(), const QString ¶meter2 = QString(), + const QString ¶meter3 = QString(), const QString ¶meter4 = QString(), + const QString ¶meter5 = QString(), const QString ¶meter6 = QString(), + const QString ¶meter7 = QString(), const QString ¶meter8 = QString(), + const QString ¶meter9 = QString(), const QString ¶meter10 = QString()); + Q_INVOKABLE bool addElevatedOperation(const QString &operation, const QStringList ¶meters); 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 \ |