summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/scripting-api/packagemanagercore.qdoc14
-rw-r--r--src/libs/installer/packagemanagercore.cpp23
-rw-r--r--src/libs/installer/packagemanagercore.h1
3 files changed, 38 insertions, 0 deletions
diff --git a/doc/scripting-api/packagemanagercore.qdoc b/doc/scripting-api/packagemanagercore.qdoc
index 50666d3be..ac6cad2ce 100644
--- a/doc/scripting-api/packagemanagercore.qdoc
+++ b/doc/scripting-api/packagemanagercore.qdoc
@@ -358,6 +358,20 @@
*/
/*!
+ \qmlmethod string installer::readConsoleLine(string title, int maxlen)
+
+ Prints \a title to a console and reads console input. Function halts the
+ installer and waits for user input. Function returns a line which user has
+ typed into the console. The maximum allowed line length is set to
+ \a maxlen. If the stream contains lines longer than this, then the line is
+ split after \a maxlen characters. If \a maxlen is 0, the line can be of
+ any length.
+
+ \note This function can only be called when installing from a command line
+ instance without GUI.
+*/
+
+/*!
\qmlmethod boolean installer::fileExists(string filePath)
Returns \c true if the \a filePath exists; otherwise returns \c false.
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index 14d7114f6..bb754f568 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -878,6 +878,29 @@ QString PackageManagerCore::readFile(const QString &filePath, const QString &cod
}
/*!
+ * Prints \a title to console and reads console input. Function will halt the
+ * installer and wait for user input. Returns a line which user has typed into
+ * console. The maximum allowed line length is set to \a maxlen. If the stream
+ * contains lines longer than this, then the line will be split after maxlen
+ * characters. If \a maxlen is 0, the line can be of any length.
+ *
+ * \note Can be only called when installing from command line instance without GUI.
+ *
+ * \sa {installer::readConsoleLine}{installer.readConsoleLine}
+ */
+QString PackageManagerCore::readConsoleLine(const QString &title, qint64 maxlen) const
+{
+ if (!isCommandLineInstance())
+ return QString();
+ if (!title.isEmpty())
+ qDebug() << title;
+ QTextStream stream(stdin);
+ QString input;
+ stream.readLineInto(&input, maxlen);
+ return input;
+}
+
+/*!
Checks whether the target directory \a targetDirectory exists and has contents:
\list
\li Returns \c true if the directory exists and is empty.
diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h
index dceaa4fef..9e24b5c0a 100644
--- a/src/libs/installer/packagemanagercore.h
+++ b/src/libs/installer/packagemanagercore.h
@@ -190,6 +190,7 @@ public:
Q_INVOKABLE bool isFileExtensionRegistered(const QString &extension) const;
Q_INVOKABLE bool fileExists(const QString &filePath) const;
Q_INVOKABLE QString readFile(const QString &filePath, const QString &codecName) const;
+ Q_INVOKABLE QString readConsoleLine(const QString &title = QString(), qint64 maxlen = 0) const;
bool checkTargetDir(const QString &targetDirectory);
QString targetDirWarning(const QString &targetDirectory) const;