diff --git a/src/plugins/qnx/blackberrydeviceconfiguration.cpp b/src/plugins/qnx/blackberrydeviceconfiguration.cpp index f3bd8a7024beb1cfde0f7ccaf7015fdfd3754559..d13b793103159a712e126382c6733c7aeff678c3 100644 --- a/src/plugins/qnx/blackberrydeviceconfiguration.cpp +++ b/src/plugins/qnx/blackberrydeviceconfiguration.cpp @@ -35,6 +35,7 @@ #include "qnxdeviceprocesssignaloperation.h" #include "blackberrydeviceconfigurationwidget.h" #include "blackberrydeviceconnectionmanager.h" +#include "qnxdeviceprocesslist.h" #include <projectexplorer/kitinformation.h> #include <ssh/sshconnection.h> @@ -162,6 +163,11 @@ QVariantMap BlackBerryDeviceConfiguration::toMap() const return map; } +DeviceProcessList *BlackBerryDeviceConfiguration::createProcessListModel(QObject *parent) const +{ + return new QnxDeviceProcessList(sharedFromThis(), parent); +} + DeviceProcessSignalOperation::Ptr BlackBerryDeviceConfiguration::signalOperation() const { return DeviceProcessSignalOperation::Ptr( diff --git a/src/plugins/qnx/blackberrydeviceconfiguration.h b/src/plugins/qnx/blackberrydeviceconfiguration.h index 95b58988e50b1d20ee25d02961d522f29ca0472a..99dd6790d4717d002056b7ae5f7b61d7475d41dc 100644 --- a/src/plugins/qnx/blackberrydeviceconfiguration.h +++ b/src/plugins/qnx/blackberrydeviceconfiguration.h @@ -64,6 +64,7 @@ public: QString displayNameForActionId(Core::Id actionId) const; void executeAction(Core::Id actionId, QWidget *parent); ProjectExplorer::IDevice::Ptr clone() const; + ProjectExplorer::DeviceProcessList *createProcessListModel(QObject *parent) const; bool hasDeviceTester() const; ProjectExplorer::DeviceProcessSignalOperation::Ptr signalOperation() const; diff --git a/src/plugins/qnx/qnx.pro b/src/plugins/qnx/qnx.pro index ed664b364e7e6d74d41c0dbbef62966328c14d87..68128385a76a9bcde9558f5539a8591ea877fd27 100644 --- a/src/plugins/qnx/qnx.pro +++ b/src/plugins/qnx/qnx.pro @@ -96,7 +96,8 @@ SOURCES += qnxplugin.cpp \ blackberryconfigurationmanager.cpp \ blackberrydevicelistdetector.cpp \ blackberrylogprocessrunner.cpp \ - qnxdeviceprocesssignaloperation.cpp + qnxdeviceprocesssignaloperation.cpp \ + qnxdeviceprocesslist.cpp HEADERS += qnxplugin.h\ qnxconstants.h \ @@ -192,7 +193,8 @@ HEADERS += qnxplugin.h\ blackberryconfigurationmanager.h \ blackberrydevicelistdetector.h \ blackberrylogprocessrunner.h \ - qnxdeviceprocesssignaloperation.h + qnxdeviceprocesssignaloperation.h \ + qnxdeviceprocesslist.h FORMS += \ blackberrydeviceconfigurationwizardsetuppage.ui \ diff --git a/src/plugins/qnx/qnx.qbs b/src/plugins/qnx/qnx.qbs index 6bfc3e2f1ae6fcfa9b2ce356a6a6d843ccb35d18..e8797e2911db076aad57d935a8b1be98dedb3088 100644 --- a/src/plugins/qnx/qnx.qbs +++ b/src/plugins/qnx/qnx.qbs @@ -213,6 +213,8 @@ QtcPlugin { "qnxdeviceconfigurationwizard.h", "qnxdeviceconfigurationwizardpages.cpp", "qnxdeviceconfigurationwizardpages.h", + "qnxdeviceprocesslist.cpp", + "qnxdeviceprocesslist.h", "qnxdeviceprocesssignaloperation.cpp", "qnxdeviceprocesssignaloperation.h", "qnxdevicetester.cpp", diff --git a/src/plugins/qnx/qnxdeviceconfiguration.cpp b/src/plugins/qnx/qnxdeviceconfiguration.cpp index cdaea98b345db16c1728e5ccc154eb6d5c0681c6..74559f375027ba0d43c6caa660e2e5d27443e741 100644 --- a/src/plugins/qnx/qnxdeviceconfiguration.cpp +++ b/src/plugins/qnx/qnxdeviceconfiguration.cpp @@ -31,9 +31,9 @@ #include "qnxdeviceconfiguration.h" #include "qnxdevicetester.h" +#include "qnxdeviceprocesslist.h" #include "qnxdeviceprocesssignaloperation.h" -#include <projectexplorer/devicesupport/sshdeviceprocesslist.h> #include <ssh/sshconnection.h> #include <QRegExp> @@ -80,51 +80,6 @@ class QnxPortsGatheringMethod : public ProjectExplorer::PortsGatheringMethod } }; -class QnxDeviceProcessList : public ProjectExplorer::SshDeviceProcessList -{ -public: - QnxDeviceProcessList(const ProjectExplorer::IDevice::ConstPtr &device, QObject *parent) - : SshDeviceProcessList(device, parent) - { - } - -private: - QString listProcessesCommandLine() const - { - return QLatin1String("pidin -F \"%a %A '/%n'\""); - } - - QList<ProjectExplorer::DeviceProcessItem> buildProcessList(const QString &listProcessesReply) const - { - QList<ProjectExplorer::DeviceProcessItem> processes; - QStringList lines = listProcessesReply.split(QLatin1Char('\n')); - if (lines.isEmpty()) - return processes; - - lines.pop_front(); // drop headers - QRegExp re(QLatin1String("\\s*(\\d+)\\s+(.*)'(.*)'")); - - foreach (const QString& line, lines) { - if (re.exactMatch(line)) { - const QStringList captures = re.capturedTexts(); - if (captures.size() == 4) { - const int pid = captures[1].toInt(); - const QString args = captures[2]; - const QString exe = captures[3]; - ProjectExplorer::DeviceProcessItem deviceProcess; - deviceProcess.pid = pid; - deviceProcess.exe = exe.trimmed(); - deviceProcess.cmdLine = args.trimmed(); - processes.append(deviceProcess); - } - } - } - - qSort(processes); - return processes; - } -}; - QnxDeviceConfiguration::QnxDeviceConfiguration() : RemoteLinux::LinuxDevice() { diff --git a/src/plugins/qnx/qnxdeviceprocesslist.cpp b/src/plugins/qnx/qnxdeviceprocesslist.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7e5f5bfb8fa5a73268455e2b516d7a5c656bc4d9 --- /dev/null +++ b/src/plugins/qnx/qnxdeviceprocesslist.cpp @@ -0,0 +1,80 @@ +/************************************************************************** +** +** Copyright (C) 2013 BlackBerry Limited. All rights reserved. +** +** Contact: BlackBerry Limited (blackberry-qt@qnx.com) +** Contact: KDAB (info@kdab.com) +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "qnxdeviceprocesslist.h" + +#include <QRegExp> +#include <QStringList> + +using namespace Qnx; +using namespace Qnx::Internal; + +QnxDeviceProcessList::QnxDeviceProcessList( + const ProjectExplorer::IDevice::ConstPtr &device, QObject *parent) + : ProjectExplorer::SshDeviceProcessList(device, parent) +{ +} + +QString QnxDeviceProcessList::listProcessesCommandLine() const +{ + return QLatin1String("pidin -F \"%a %A '/%n'\""); +} + +QList<ProjectExplorer::DeviceProcessItem> QnxDeviceProcessList::buildProcessList( + const QString &listProcessesReply) const +{ + QList<ProjectExplorer::DeviceProcessItem> processes; + QStringList lines = listProcessesReply.split(QLatin1Char('\n')); + if (lines.isEmpty()) + return processes; + + lines.pop_front(); // drop headers + QRegExp re(QLatin1String("\\s*(\\d+)\\s+(.*)'(.*)'")); + + foreach (const QString& line, lines) { + if (re.exactMatch(line)) { + const QStringList captures = re.capturedTexts(); + if (captures.size() == 4) { + const int pid = captures[1].toInt(); + const QString args = captures[2]; + const QString exe = captures[3]; + ProjectExplorer::DeviceProcessItem deviceProcess; + deviceProcess.pid = pid; + deviceProcess.exe = exe.trimmed(); + deviceProcess.cmdLine = args.trimmed(); + processes.append(deviceProcess); + } + } + } + + qSort(processes); + return processes; +} diff --git a/src/plugins/qnx/qnxdeviceprocesslist.h b/src/plugins/qnx/qnxdeviceprocesslist.h new file mode 100644 index 0000000000000000000000000000000000000000..7885daed3a847f94ee296f7fc5a04fcff7b37425 --- /dev/null +++ b/src/plugins/qnx/qnxdeviceprocesslist.h @@ -0,0 +1,57 @@ +/************************************************************************** +** +** Copyright (C) 2013 BlackBerry Limited. All rights reserved. +** +** Contact: BlackBerry Limited (blackberry-qt@qnx.com) +** Contact: KDAB (info@kdab.com) +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef QNX_INTERNAL_QNXDEVICEPROCESSLIST_H +#define QNX_INTERNAL_QNXDEVICEPROCESSLIST_H + +#include <projectexplorer/devicesupport/idevice.h> +#include <projectexplorer/devicesupport/sshdeviceprocesslist.h> + +namespace Qnx { +namespace Internal { + +class QnxDeviceProcessList : public ProjectExplorer::SshDeviceProcessList +{ + Q_OBJECT +public: + explicit QnxDeviceProcessList( + const ProjectExplorer::IDevice::ConstPtr &device, QObject *parent = 0); + +private: + virtual QString listProcessesCommandLine() const; + virtual QList<ProjectExplorer::DeviceProcessItem> buildProcessList( + const QString &listProcessesReply) const; +}; + +} // namespace Internal +} // namespace Qnx + +#endif // QNX_INTERNAL_QNXDEVICEPROCESSLIST_H