summaryrefslogtreecommitdiff
path: root/src/plugins/remotelinux
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2013-06-27 17:12:08 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-07-02 15:02:48 +0200
commit5bca241afb51e89688b88e0dfb6580a5cf23372e (patch)
tree662b933af89d2fe4c76eb1b470239274e7264b88 /src/plugins/remotelinux
parentd6062643c3994059233fc5e3b082932842c20a81 (diff)
downloadqt-creator-5bca241afb51e89688b88e0dfb6580a5cf23372e.tar.gz
Device support: Make device testing a "well-known" concept.
This entails the following: - Rename AbstractLinuxDeviceTester to DeviceTester and move it up into ProjectExplorer. The class stays unchanged, as there was nothing Linux-specific about it. The same goes for the associated dialog. - Move the createDeviceTester() function from LinuxDevice to IDevice and introduce IDevice::hasDeviceTester() to enable generic code to make use of this feature. - Move device testing out of the list of opaque device-specific actions; instead, the device settings widget now uses the device tester directly, if applicable. Rationale: - Device testing, just like remote process listing (if not more so), is a general concept that implementors of device classes will probably want to implement (and they should be encouraged to do so). Without the mechanism provided here, they would all need to put basically the same code into the actionIds(), displayNameForActionId() and executeAction() functions. This patch is the natural extension of b90e3bbd8bea27ad915a4d9033e0d5bda26f5667. Change-Id: I94f2badb4ceeda9f5cd3b066c13626bb4f65505d Reviewed-by: hjk <hjk121@nokiamail.com> Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/plugins/remotelinux')
-rw-r--r--src/plugins/remotelinux/genericlinuxdeviceconfigurationwizard.cpp6
-rw-r--r--src/plugins/remotelinux/linuxdevice.cpp13
-rw-r--r--src/plugins/remotelinux/linuxdevice.h4
-rw-r--r--src/plugins/remotelinux/linuxdevicetestdialog.cpp114
-rw-r--r--src/plugins/remotelinux/linuxdevicetestdialog.h67
-rw-r--r--src/plugins/remotelinux/linuxdevicetestdialog.ui71
-rw-r--r--src/plugins/remotelinux/linuxdevicetester.cpp7
-rw-r--r--src/plugins/remotelinux/linuxdevicetester.h24
-rw-r--r--src/plugins/remotelinux/remotelinux.pro3
-rw-r--r--src/plugins/remotelinux/remotelinux.qbs3
-rw-r--r--src/plugins/remotelinux/remotelinux_constants.h1
11 files changed, 9 insertions, 304 deletions
diff --git a/src/plugins/remotelinux/genericlinuxdeviceconfigurationwizard.cpp b/src/plugins/remotelinux/genericlinuxdeviceconfigurationwizard.cpp
index c33bef0c8e..8ad502a052 100644
--- a/src/plugins/remotelinux/genericlinuxdeviceconfigurationwizard.cpp
+++ b/src/plugins/remotelinux/genericlinuxdeviceconfigurationwizard.cpp
@@ -31,8 +31,6 @@
#include "genericlinuxdeviceconfigurationwizardpages.h"
#include "linuxdevice.h"
-#include "linuxdevicetestdialog.h"
-#include "linuxdevicetester.h"
#include "remotelinux_constants.h"
#include <utils/portlist.h>
@@ -91,10 +89,6 @@ IDevice::Ptr GenericLinuxDeviceConfigurationWizard::device()
Core::Id(Constants::GenericLinuxOsType), IDevice::Hardware);
device->setFreePorts(Utils::PortList::fromString(QLatin1String("10000-10100")));
device->setSshParameters(sshParams);
- // Might be called after accept.
- QWidget *parent = isVisible() ? this : static_cast<QWidget *>(0);
- LinuxDeviceTestDialog dlg(device, new GenericLinuxDeviceTester(this), parent);
- dlg.exec();
return device;
}
diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp
index 8c530ac3ac..98625199a0 100644
--- a/src/plugins/remotelinux/linuxdevice.cpp
+++ b/src/plugins/remotelinux/linuxdevice.cpp
@@ -30,7 +30,7 @@
#include "linuxdevice.h"
#include "genericlinuxdeviceconfigurationwidget.h"
-#include "linuxdevicetestdialog.h"
+#include "linuxdevicetester.h"
#include "publickeydeploymentdialog.h"
#include "remotelinux_constants.h"
@@ -192,16 +192,13 @@ ProjectExplorer::IDeviceWidget *LinuxDevice::createWidget()
QList<Core::Id> LinuxDevice::actionIds() const
{
- return QList<Core::Id>() << Core::Id(Constants::GenericTestDeviceActionId)
- << Core::Id(Constants::GenericDeployKeyToDeviceActionId);
+ return QList<Core::Id>() << Core::Id(Constants::GenericDeployKeyToDeviceActionId);
}
QString LinuxDevice::displayNameForActionId(Core::Id actionId) const
{
QTC_ASSERT(actionIds().contains(actionId), return QString());
- if (actionId == Constants::GenericTestDeviceActionId)
- return tr("Test");
if (actionId == Constants::GenericDeployKeyToDeviceActionId)
return tr("Deploy Public Key...");
return QString(); // Can't happen.
@@ -213,9 +210,7 @@ void LinuxDevice::executeAction(Core::Id actionId, QWidget *parent) const
QDialog *d = 0;
const LinuxDevice::ConstPtr device = sharedFromThis().staticCast<const LinuxDevice>();
- if (actionId == Constants::GenericTestDeviceActionId)
- d = new LinuxDeviceTestDialog(device, createDeviceTester(), parent);
- else if (actionId == Constants::GenericDeployKeyToDeviceActionId)
+ if (actionId == Constants::GenericDeployKeyToDeviceActionId)
d = PublicKeyDeploymentDialog::createDialog(device, parent);
if (d)
d->exec();
@@ -264,7 +259,7 @@ DeviceProcessList *LinuxDevice::createProcessListModel(QObject *parent) const
return new LinuxDeviceProcessList(sharedFromThis(), parent);
}
-AbstractLinuxDeviceTester *LinuxDevice::createDeviceTester() const
+DeviceTester *LinuxDevice::createDeviceTester() const
{
return new GenericLinuxDeviceTester;
}
diff --git a/src/plugins/remotelinux/linuxdevice.h b/src/plugins/remotelinux/linuxdevice.h
index 0ec84cd44e..7e8224a475 100644
--- a/src/plugins/remotelinux/linuxdevice.h
+++ b/src/plugins/remotelinux/linuxdevice.h
@@ -41,7 +41,6 @@ namespace Utils { class PortList; }
namespace RemoteLinux {
namespace Internal { class LinuxDevicePrivate; }
-class AbstractLinuxDeviceTester;
class REMOTELINUX_EXPORT LinuxDeviceProcessSupport : public ProjectExplorer::DeviceProcessSupport
{
@@ -74,7 +73,8 @@ public:
ProjectExplorer::PortsGatheringMethod::Ptr portsGatheringMethod() const;
bool canCreateProcessModel() const { return true; }
ProjectExplorer::DeviceProcessList *createProcessListModel(QObject *parent) const;
- virtual AbstractLinuxDeviceTester *createDeviceTester() const;
+ bool hasDeviceTester() const { return true; }
+ ProjectExplorer::DeviceTester *createDeviceTester() const;
protected:
LinuxDevice() {}
diff --git a/src/plugins/remotelinux/linuxdevicetestdialog.cpp b/src/plugins/remotelinux/linuxdevicetestdialog.cpp
deleted file mode 100644
index 63605db74d..0000000000
--- a/src/plugins/remotelinux/linuxdevicetestdialog.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** 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 "linuxdevicetestdialog.h"
-#include "ui_linuxdevicetestdialog.h"
-
-#include <QBrush>
-#include <QColor>
-#include <QFont>
-#include <QPushButton>
-#include <QTextCharFormat>
-
-namespace RemoteLinux {
-namespace Internal {
-class LinuxDeviceTestDialogPrivate {
-public:
- LinuxDeviceTestDialogPrivate(AbstractLinuxDeviceTester *tester)
- : deviceTester(tester), finished(false)
- {
- }
-
- Ui::LinuxDeviceTestDialog ui;
- AbstractLinuxDeviceTester * const deviceTester;
- bool finished;
-};
-
-} // namespace Internal
-
-using namespace Internal;
-
-LinuxDeviceTestDialog::LinuxDeviceTestDialog(const ProjectExplorer::IDevice::ConstPtr &deviceConfiguration,
- AbstractLinuxDeviceTester *deviceTester, QWidget *parent)
- : QDialog(parent), d(new LinuxDeviceTestDialogPrivate(deviceTester))
-{
- d->ui.setupUi(this);
-
- d->deviceTester->setParent(this);
- connect(d->deviceTester, SIGNAL(progressMessage(QString)), SLOT(handleProgressMessage(QString)));
- connect(d->deviceTester, SIGNAL(errorMessage(QString)), SLOT(handleErrorMessage(QString)));
- connect(d->deviceTester, SIGNAL(finished(RemoteLinux::AbstractLinuxDeviceTester::TestResult)),
- SLOT(handleTestFinished(RemoteLinux::AbstractLinuxDeviceTester::TestResult)));
- d->deviceTester->testDevice(deviceConfiguration);
-}
-
-LinuxDeviceTestDialog::~LinuxDeviceTestDialog()
-{
- delete d;
-}
-
-void LinuxDeviceTestDialog::reject()
-{
- if (!d->finished)
- d->deviceTester->stopTest();
- QDialog::reject();
-}
-
-void LinuxDeviceTestDialog::handleProgressMessage(const QString &message)
-{
- addText(message, QLatin1String("black"), false);
-}
-
-void LinuxDeviceTestDialog::handleErrorMessage(const QString &message)
-{
- addText(message, QLatin1String("red"), false);
-}
-
-void LinuxDeviceTestDialog::handleTestFinished(AbstractLinuxDeviceTester::TestResult result)
-{
- d->finished = true;
- d->ui.buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Close"));
-
- if (result == AbstractLinuxDeviceTester::TestSuccess)
- addText(tr("Device test finished successfully."), QLatin1String("blue"), true);
- else
- addText(tr("Device test failed."), QLatin1String("red"), true);
-}
-
-void LinuxDeviceTestDialog::addText(const QString &text, const QString &color, bool bold)
-{
- QTextCharFormat format = d->ui.textEdit->currentCharFormat();
- format.setForeground(QBrush(QColor(color)));
- QFont font = format.font();
- font.setBold(bold);
- format.setFont(font);
- d->ui.textEdit->setCurrentCharFormat(format);
- d->ui.textEdit->appendPlainText(text);
-}
-
-} // namespace RemoteLinux
diff --git a/src/plugins/remotelinux/linuxdevicetestdialog.h b/src/plugins/remotelinux/linuxdevicetestdialog.h
deleted file mode 100644
index 1ac3535735..0000000000
--- a/src/plugins/remotelinux/linuxdevicetestdialog.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** 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 LINUXDEVICETESTDIALOG_H
-#define LINUXDEVICETESTDIALOG_H
-
-#include "linuxdevicetester.h"
-#include "remotelinux_export.h"
-
-#include <QDialog>
-
-namespace RemoteLinux {
-namespace Internal {
-class LinuxDeviceTestDialogPrivate;
-} // namespace Internal
-
-class REMOTELINUX_EXPORT LinuxDeviceTestDialog : public QDialog
-{
- Q_OBJECT
-
-public:
- // Note: The dialog takes ownership of deviceTester
- LinuxDeviceTestDialog(const ProjectExplorer::IDevice::ConstPtr &deviceConfiguration,
- AbstractLinuxDeviceTester * deviceTester, QWidget *parent = 0);
- ~LinuxDeviceTestDialog();
-
- void reject();
-
-private slots:
- void handleProgressMessage(const QString &message);
- void handleErrorMessage(const QString &message);
- void handleTestFinished(RemoteLinux::AbstractLinuxDeviceTester::TestResult result);
-
-private:
- void addText(const QString &text, const QString &color, bool bold);
-
- Internal::LinuxDeviceTestDialogPrivate * const d;
-};
-
-} // namespace RemoteLinux
-
-#endif // LINUXDEVICETESTDIALOG_H
diff --git a/src/plugins/remotelinux/linuxdevicetestdialog.ui b/src/plugins/remotelinux/linuxdevicetestdialog.ui
deleted file mode 100644
index 4160d13452..0000000000
--- a/src/plugins/remotelinux/linuxdevicetestdialog.ui
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>RemoteLinux::Internal::LinuxDeviceTestDialog</class>
- <widget class="QDialog" name="RemoteLinux::Internal::LinuxDeviceTestDialog">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>607</width>
- <height>580</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Device Test</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QPlainTextEdit" name="textEdit">
- <property name="readOnly">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Cancel</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>RemoteLinux::Internal::LinuxDeviceTestDialog</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>248</x>
- <y>254</y>
- </hint>
- <hint type="destinationlabel">
- <x>157</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>RemoteLinux::Internal::LinuxDeviceTestDialog</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>316</x>
- <y>260</y>
- </hint>
- <hint type="destinationlabel">
- <x>286</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/src/plugins/remotelinux/linuxdevicetester.cpp b/src/plugins/remotelinux/linuxdevicetester.cpp
index 9f2fa97143..7b30be03a9 100644
--- a/src/plugins/remotelinux/linuxdevicetester.cpp
+++ b/src/plugins/remotelinux/linuxdevicetester.cpp
@@ -61,13 +61,8 @@ public:
using namespace Internal;
-AbstractLinuxDeviceTester::AbstractLinuxDeviceTester(QObject *parent) : QObject(parent)
-{
-}
-
-
GenericLinuxDeviceTester::GenericLinuxDeviceTester(QObject *parent)
- : AbstractLinuxDeviceTester(parent), d(new GenericLinuxDeviceTesterPrivate)
+ : DeviceTester(parent), d(new GenericLinuxDeviceTesterPrivate)
{
}
diff --git a/src/plugins/remotelinux/linuxdevicetester.h b/src/plugins/remotelinux/linuxdevicetester.h
index 4ecd8b9af1..8c3070b0bf 100644
--- a/src/plugins/remotelinux/linuxdevicetester.h
+++ b/src/plugins/remotelinux/linuxdevicetester.h
@@ -44,27 +44,7 @@ namespace Internal {
class GenericLinuxDeviceTesterPrivate;
}
-class REMOTELINUX_EXPORT AbstractLinuxDeviceTester : public QObject
-{
- Q_OBJECT
-
-public:
- enum TestResult { TestSuccess, TestFailure };
-
- virtual void testDevice(const ProjectExplorer::IDevice::ConstPtr &deviceConfiguration) = 0;
- virtual void stopTest() = 0;
-
-signals:
- void progressMessage(const QString &message);
- void errorMessage(const QString &message);
- void finished(RemoteLinux::AbstractLinuxDeviceTester::TestResult result);
-
-protected:
- explicit AbstractLinuxDeviceTester(QObject *parent = 0);
-};
-
-
-class REMOTELINUX_EXPORT GenericLinuxDeviceTester : public AbstractLinuxDeviceTester
+class REMOTELINUX_EXPORT GenericLinuxDeviceTester : public ProjectExplorer::DeviceTester
{
Q_OBJECT
@@ -85,7 +65,7 @@ private slots:
void handlePortListReady();
private:
- void setFinished(TestResult result);
+ void setFinished(ProjectExplorer::DeviceTester::TestResult result);
Internal::GenericLinuxDeviceTesterPrivate * const d;
};
diff --git a/src/plugins/remotelinux/remotelinux.pro b/src/plugins/remotelinux/remotelinux.pro
index 311cb6d127..62b3061f40 100644
--- a/src/plugins/remotelinux/remotelinux.pro
+++ b/src/plugins/remotelinux/remotelinux.pro
@@ -35,7 +35,6 @@ HEADERS += \
packageuploader.h \
linuxdevicetester.h \
remotelinux_constants.h \
- linuxdevicetestdialog.h \
remotelinuxenvironmentreader.h \
sshkeydeployer.h \
typespecificdeviceconfigurationlistmodel.h \
@@ -81,7 +80,6 @@ SOURCES += \
remotelinuxpackageinstaller.cpp \
packageuploader.cpp \
linuxdevicetester.cpp \
- linuxdevicetestdialog.cpp \
remotelinuxenvironmentreader.cpp \
sshkeydeployer.cpp \
typespecificdeviceconfigurationlistmodel.cpp \
@@ -98,7 +96,6 @@ SOURCES += \
FORMS += \
genericlinuxdeviceconfigurationwizardsetuppage.ui \
- linuxdevicetestdialog.ui \
remotelinuxdeployconfigurationwidget.ui \
genericlinuxdeviceconfigurationwidget.ui \
remotelinuxcheckforfreediskspacestepwidget.ui
diff --git a/src/plugins/remotelinux/remotelinux.qbs b/src/plugins/remotelinux/remotelinux.qbs
index 1458b756a3..7e6ad2b0d2 100644
--- a/src/plugins/remotelinux/remotelinux.qbs
+++ b/src/plugins/remotelinux/remotelinux.qbs
@@ -46,9 +46,6 @@ QtcPlugin {
"genericremotelinuxdeploystepfactory.h",
"linuxdevice.cpp",
"linuxdevice.h",
- "linuxdevicetestdialog.cpp",
- "linuxdevicetestdialog.h",
- "linuxdevicetestdialog.ui",
"linuxdevicetester.cpp",
"linuxdevicetester.h",
"packageuploader.cpp",
diff --git a/src/plugins/remotelinux/remotelinux_constants.h b/src/plugins/remotelinux/remotelinux_constants.h
index 0cfdfa5200..42041f3ce5 100644
--- a/src/plugins/remotelinux/remotelinux_constants.h
+++ b/src/plugins/remotelinux/remotelinux_constants.h
@@ -34,7 +34,6 @@ namespace Constants {
const char GenericLinuxOsType[] = "GenericLinuxOsType";
-const char GenericTestDeviceActionId[] = "RemoteLinux.GenericTestDeviceAction";
const char GenericDeployKeyToDeviceActionId[] = "RemoteLinux.GenericDeployKeyToDeviceAction";
const char EMBEDDED_LINUX_QT[] = "RemoteLinux.EmbeddedLinuxQt";