Commit c59ba462 authored by Eike Ziller's avatar Eike Ziller

Merge remote-tracking branch 'origin/2.7' into 2.8

parents 728fe7d7 1477729a
...@@ -101,6 +101,8 @@ AndroidRunner::AndroidRunner(QObject *parent, ...@@ -101,6 +101,8 @@ AndroidRunner::AndroidRunner(QObject *parent,
QByteArray which = psProc.readAll(); QByteArray which = psProc.readAll();
m_isBusyBox = which.startsWith("busybox"); m_isBusyBox = which.startsWith("busybox");
m_checkPIDTimer.setInterval(1000);
connect(&m_adbLogcatProcess, SIGNAL(readyReadStandardOutput()), SLOT(logcatReadStandardOutput())); connect(&m_adbLogcatProcess, SIGNAL(readyReadStandardOutput()), SLOT(logcatReadStandardOutput()));
connect(&m_adbLogcatProcess, SIGNAL(readyReadStandardError()), SLOT(logcatReadStandardError())); connect(&m_adbLogcatProcess, SIGNAL(readyReadStandardError()), SLOT(logcatReadStandardError()));
connect(&m_checkPIDTimer, SIGNAL(timeout()), SLOT(checkPID())); connect(&m_checkPIDTimer, SIGNAL(timeout()), SLOT(checkPID()));
...@@ -154,8 +156,10 @@ void AndroidRunner::checkPID() ...@@ -154,8 +156,10 @@ void AndroidRunner::checkPID()
return; return;
QByteArray psOut = runPs(); QByteArray psOut = runPs();
m_processPID = extractPid(m_packageName, psOut); m_processPID = extractPid(m_packageName, psOut);
if (m_processPID == -1) if (m_processPID == -1) {
m_checkPIDTimer.stop();
emit remoteProcessFinished(tr("\n\n'%1' died.").arg(m_packageName)); emit remoteProcessFinished(tr("\n\n'%1' died.").arg(m_packageName));
}
} }
void AndroidRunner::forceStop() void AndroidRunner::forceStop()
...@@ -186,7 +190,6 @@ void AndroidRunner::start() ...@@ -186,7 +190,6 @@ void AndroidRunner::start()
{ {
m_adbLogcatProcess.start(m_adb, selector() << _("logcat")); m_adbLogcatProcess.start(m_adb, selector() << _("logcat"));
m_wasStarted = false; m_wasStarted = false;
m_checkPIDTimer.start(1000); // check if the application is alive every 1 seconds
QtConcurrent::run(this, &AndroidRunner::asyncStart); QtConcurrent::run(this, &AndroidRunner::asyncStart);
} }
...@@ -300,6 +303,8 @@ void AndroidRunner::asyncStart() ...@@ -300,6 +303,8 @@ void AndroidRunner::asyncStart()
return; return;
} }
QMetaObject::invokeMethod(&m_checkPIDTimer, "start");
m_wasStarted = true; m_wasStarted = true;
if (m_useCppDebugger) { if (m_useCppDebugger) {
// This will be funneled to the engine to actually start and attach // This will be funneled to the engine to actually start and attach
......
...@@ -195,7 +195,8 @@ void KdePasteProtocol::list() ...@@ -195,7 +195,8 @@ void KdePasteProtocol::list()
{ {
QTC_ASSERT(!m_listReply, return); QTC_ASSERT(!m_listReply, return);
QString url = QLatin1String(hostUrlC) + QLatin1String("api/xml/all"); // Trailing slash is important to prevent redirection.
QString url = QLatin1String(hostUrlC) + QLatin1String("api/xml/all/");
m_listReply = httpGet(url); m_listReply = httpGet(url);
connect(m_listReply, SIGNAL(finished()), this, SLOT(listFinished())); connect(m_listReply, SIGNAL(finished()), this, SLOT(listFinished()));
if (debug) if (debug)
......
...@@ -317,12 +317,21 @@ static inline ParseState nextClosingState(ParseState current, const QStringRef & ...@@ -317,12 +317,21 @@ static inline ParseState nextClosingState(ParseState current, const QStringRef &
return ParseError; return ParseError;
} }
static inline QStringList parseLists(QIODevice *io) static inline QStringList parseLists(QIODevice *io, QString *errorMessage)
{ {
enum { maxEntries = 200 }; // Limit the archive, which can grow quite large. enum { maxEntries = 200 }; // Limit the archive, which can grow quite large.
QStringList rc; QStringList rc;
QXmlStreamReader reader(io); // Read answer and delete part up to the main table since the input form has
// parts that can no longer be parsed using XML parsers (<input type="text" x-webkit-speech />)
QByteArray data = io->readAll();
const int tablePos = data.indexOf("<table class=\"maintable\" cellspacing=\"0\">");
if (tablePos < 0) {
*errorMessage = QLatin1String("Could not locate beginning of table.");
return rc;
}
data.remove(0, tablePos);
QXmlStreamReader reader(data);
ParseState state = OutSideTable; ParseState state = OutSideTable;
int tableRow = 0; int tableRow = 0;
int tableColumn = 0; int tableColumn = 0;
...@@ -410,6 +419,8 @@ static inline QStringList parseLists(QIODevice *io) ...@@ -410,6 +419,8 @@ static inline QStringList parseLists(QIODevice *io)
break; break;
} // switch reader state } // switch reader state
} }
if (reader.hasError())
*errorMessage = QString::fromLatin1("Error at line %1:%2").arg(reader.lineNumber()).arg(reader.errorString());
return rc; return rc;
} }
...@@ -420,7 +431,10 @@ void PasteBinDotComProtocol::listFinished() ...@@ -420,7 +431,10 @@ void PasteBinDotComProtocol::listFinished()
if (debug) if (debug)
qDebug() << "listFinished: error" << m_listReply->errorString(); qDebug() << "listFinished: error" << m_listReply->errorString();
} else { } else {
QStringList list = parseLists(m_listReply); QString errorMessage;
const QStringList list = parseLists(m_listReply, &errorMessage);
if (list.isEmpty())
qWarning().nospace() << "Failed to read list from " << PASTEBIN_BASE << ':' << errorMessage;
emit listDone(name(), list); emit listDone(name(), list);
if (debug) if (debug)
qDebug() << list; qDebug() << list;
......
...@@ -155,12 +155,12 @@ MetaInfo { ...@@ -155,12 +155,12 @@ MetaInfo {
Type { Type {
name: "QtQuick.Controls.Slider" name: "QtQuick.Controls.Slider"
icon: ":/componentsplugin/images/sliderh16.png" icon: ":/componentsplugin/images/slider16.png"
ItemLibraryEntry { ItemLibraryEntry {
name: "Slider (Horizontal)" name: "Slider (Horizontal)"
category: "Qt Quick - Controls" category: "Qt Quick - Controls"
libraryIcon: ":/componentsplugin/images/sliderh.png" libraryIcon: ":/componentsplugin/images/slider.png"
version: "1.0" version: "1.0"
requiredImport: "QtQuick.Controls" requiredImport: "QtQuick.Controls"
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment