diff options
Diffstat (limited to 'src/plugins/qnx/blackberryapplicationrunner.cpp')
-rw-r--r-- | src/plugins/qnx/blackberryapplicationrunner.cpp | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/plugins/qnx/blackberryapplicationrunner.cpp b/src/plugins/qnx/blackberryapplicationrunner.cpp index 2f8438821f..8e93e5f37e 100644 --- a/src/plugins/qnx/blackberryapplicationrunner.cpp +++ b/src/plugins/qnx/blackberryapplicationrunner.cpp @@ -93,6 +93,7 @@ BlackBerryApplicationRunner::BlackBerryApplicationRunner(bool debugMode, BlackBe , m_stopProcess(0) , m_tailProcess(0) , m_testSlog2Process(0) + , m_launchDateTimeProcess(0) , m_runningStateTimer(new QTimer(this)) , m_runningStateProcess(0) { @@ -146,8 +147,9 @@ void BlackBerryApplicationRunner::start() void BlackBerryApplicationRunner::checkSlog2Info() { - // Not necessary to retest if slog2info exists. - if (!m_testSlog2Process) { + if (m_testSlog2Process) { + readLaunchTime(); + } else if (!m_testSlog2Process) { m_testSlog2Process = new QSsh::SshRemoteProcessRunner(this); connect(m_testSlog2Process, SIGNAL(processClosed(int)), this, SLOT(handleSlog2InfoFound())); @@ -270,7 +272,11 @@ void BlackBerryApplicationRunner::killTailProcess() void BlackBerryApplicationRunner::tailApplicationLog() { - // TODO: Reading the log using qconn instead? + QSsh::SshRemoteProcessRunner *process = qobject_cast<QSsh::SshRemoteProcessRunner *>(sender()); + QTC_ASSERT(process, return); + + m_launchDateTime = QDateTime::fromString(QString::fromLatin1(process->readAllStandardOutput()).trimmed(), + QString::fromLatin1("dd HH:mm:ss")); if (m_stopping || (m_tailProcess && m_tailProcess->isProcessRunning())) return; @@ -290,7 +296,7 @@ void BlackBerryApplicationRunner::tailApplicationLog() QString command; if (m_slog2infoFound) { - command = QString::fromLatin1("slog2info -w"); + command = QString::fromLatin1("slog2info -w -b ") + m_appId; } else { command = QLatin1String("tail -c +1 -f /accounts/1000/appdata/") + m_appId + QLatin1String("/logs/log"); @@ -308,6 +314,15 @@ void BlackBerryApplicationRunner::handleSlog2InfoFound() tailApplicationLog(); } +void BlackBerryApplicationRunner::readLaunchTime() +{ + m_launchDateTimeProcess = new QSsh::SshRemoteProcessRunner(this); + connect(m_launchDateTimeProcess, SIGNAL(processClosed(int)), + this, SLOT(tailApplicationLog())); + + m_launchDateTimeProcess->run("date +\"%d %H:%M:%S\"", m_sshParams); +} + void BlackBerryApplicationRunner::handleTailOutput() { QSsh::SshRemoteProcessRunner *process = qobject_cast<QSsh::SshRemoteProcessRunner *>(sender()); @@ -317,7 +332,9 @@ void BlackBerryApplicationRunner::handleTailOutput() if (m_slog2infoFound) { const QStringList multiLine = message.split(QLatin1Char('\n')); Q_FOREACH (const QString &line, multiLine) { - if ( line.contains(m_appId) ) { + QDateTime dateTime = QDateTime::fromString(line.split(m_appId).first().mid(4).trimmed(), + QString::fromLatin1("dd HH:mm:ss.zzz")); + if (dateTime >= m_launchDateTime) { QStringList validLineBeginnings; validLineBeginnings << QLatin1String("qt-msg 0 ") << QLatin1String("qt-msg* 0 ") |