aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@nokia.com>2011-04-21 16:58:38 +0200
committerChristian Kandeler <christian.kandeler@nokia.com>2011-04-21 17:02:58 +0200
commit253f183df3c0d2d604e3e62a527462f20dc60870 (patch)
treea00417f5aa2a4e917201478aff16e09554c8de48
parentf0486a4bb2bbd5ee42f74cd7b6f595f3f1cc767c (diff)
Maemo: Introduce abstract base class for deploy steps targeting devices.
This will make it possible for a MaemoRunConfiguration to work with deploy steps that do not use Utils::SshConnection, but still want to make use of our device configurations.
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/abstractlinuxdevicedeploystep.cpp110
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/abstractlinuxdevicedeploystep.h102
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/abstractmaemodeploystep.cpp77
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/abstractmaemodeploystep.h17
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp1
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/maemodeploybymountstep.cpp2
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.cpp26
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.h6
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/maemodirectdeviceuploadstep.cpp2
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h2
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp21
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h4
-rw-r--r--src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri6
13 files changed, 278 insertions, 98 deletions
diff --git a/src/plugins/qt4projectmanager/qt-maemo/abstractlinuxdevicedeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/abstractlinuxdevicedeploystep.cpp
new file mode 100644
index 0000000000..57c004a162
--- /dev/null
+++ b/src/plugins/qt4projectmanager/qt-maemo/abstractlinuxdevicedeploystep.cpp
@@ -0,0 +1,110 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (info@qt.nokia.com)
+**
+**
+** GNU Lesser General Public License Usage
+**
+** 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, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+#include "abstractlinuxdevicedeploystep.h"
+
+#include "maemoconstants.h"
+#include "maemodeploystepwidget.h"
+#include "maemopertargetdeviceconfigurationlistmodel.h"
+#include "qt4maemodeployconfiguration.h"
+
+using namespace ProjectExplorer;
+
+namespace Qt4ProjectManager {
+namespace Internal {
+
+
+AbstractLinuxDeviceDeployStep::AbstractLinuxDeviceDeployStep(DeployConfiguration *dc)
+ : m_helper(qobject_cast<Qt4MaemoDeployConfiguration *>(dc))
+{
+}
+
+bool AbstractLinuxDeviceDeployStep::isDeploymentPossible(QString &whyNot) const
+{
+ if (!m_helper.deviceConfig()) {
+ whyNot = tr("No valid device set.");
+ return false;
+ }
+ return isDeploymentPossibleInternal(whyNot);
+}
+
+bool AbstractLinuxDeviceDeployStep::initialize(QString &errorMsg)
+{
+ if (!isDeploymentPossible(errorMsg))
+ return false;
+ m_helper.prepareDeployment();
+ return true;
+}
+
+
+LinuxDeviceDeployStepHelper::LinuxDeviceDeployStepHelper(Qt4MaemoDeployConfiguration *dc)
+ : m_deployConfiguration(dc)
+{
+ m_deviceConfig = dc->deviceConfigModel()->defaultDeviceConfig();
+ connect(dc->deviceConfigModel(), SIGNAL(updated()),
+ SLOT(handleDeviceConfigurationsUpdated()));
+}
+
+LinuxDeviceDeployStepHelper::~LinuxDeviceDeployStepHelper() {}
+
+void LinuxDeviceDeployStepHelper::handleDeviceConfigurationsUpdated()
+{
+ setDeviceConfig(MaemoDeviceConfigurations::instance()->internalId(m_deviceConfig));
+}
+
+void LinuxDeviceDeployStepHelper::setDeviceConfig(MaemoDeviceConfig::Id internalId)
+{
+ m_deviceConfig = deployConfiguration()->deviceConfigModel()->find(internalId);
+ emit deviceConfigChanged();
+}
+
+void LinuxDeviceDeployStepHelper::setDeviceConfig(int i)
+{
+ m_deviceConfig = deployConfiguration()->deviceConfigModel()->deviceAt(i);
+ emit deviceConfigChanged();
+}
+
+QVariantMap LinuxDeviceDeployStepHelper::toMap() const
+{
+ QVariantMap map;
+ map.insert(DeviceIdKey,
+ MaemoDeviceConfigurations::instance()->internalId(m_deviceConfig));
+ return map;
+}
+
+bool LinuxDeviceDeployStepHelper::fromMap(const QVariantMap &map)
+{
+ setDeviceConfig(map.value(DeviceIdKey, MaemoDeviceConfig::InvalidId).toULongLong());
+ return true;
+}
+
+} // namespace Internal
+} // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qt-maemo/abstractlinuxdevicedeploystep.h b/src/plugins/qt4projectmanager/qt-maemo/abstractlinuxdevicedeploystep.h
new file mode 100644
index 0000000000..6f32dd9a46
--- /dev/null
+++ b/src/plugins/qt4projectmanager/qt-maemo/abstractlinuxdevicedeploystep.h
@@ -0,0 +1,102 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (info@qt.nokia.com)
+**
+**
+** GNU Lesser General Public License Usage
+**
+** 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, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+#ifndef ABSTRACTLINUXDEVICEDEPLOYSTEP_H
+#define ABSTRACTLINUXDEVICEDEPLOYSTEP_H
+
+#include "maemodeviceconfigurations.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QSharedPointer>
+#include <QtCore/QVariantMap>
+
+namespace ProjectExplorer { class DeployConfiguration; }
+
+namespace Qt4ProjectManager {
+namespace Internal {
+class Qt4MaemoDeployConfiguration;
+
+
+class LinuxDeviceDeployStepHelper : public QObject
+{
+ Q_OBJECT
+public:
+ LinuxDeviceDeployStepHelper(Qt4MaemoDeployConfiguration *dc);
+ ~LinuxDeviceDeployStepHelper();
+
+ QSharedPointer<const MaemoDeviceConfig> deviceConfig() const { return m_deviceConfig; }
+ QSharedPointer<const MaemoDeviceConfig> cachedDeviceConfig() const { return m_cachedDeviceConfig; }
+ Qt4MaemoDeployConfiguration *deployConfiguration() const { return m_deployConfiguration; }
+
+ void setDeviceConfig(int i);
+ void prepareDeployment() { m_cachedDeviceConfig = m_deviceConfig; }
+
+ QVariantMap toMap() const;
+ bool fromMap(const QVariantMap &map);
+
+signals:
+ void deviceConfigChanged();
+
+private:
+ void setDeviceConfig(MaemoDeviceConfig::Id internalId);
+ Q_SLOT void handleDeviceConfigurationsUpdated();
+
+ QSharedPointer<const MaemoDeviceConfig> m_deviceConfig;
+ QSharedPointer<const MaemoDeviceConfig> m_cachedDeviceConfig;
+ Qt4MaemoDeployConfiguration * const m_deployConfiguration;
+};
+
+class AbstractLinuxDeviceDeployStep
+{
+ Q_DECLARE_TR_FUNCTIONS(AbstractLinuxDeviceDeployStep)
+public:
+ virtual ~AbstractLinuxDeviceDeployStep() {}
+
+ Qt4MaemoDeployConfiguration *maemoDeployConfig() const { return m_helper.deployConfiguration(); }
+ bool isDeploymentPossible(QString &whyNot) const;
+ LinuxDeviceDeployStepHelper &helper() { return m_helper; }
+ const LinuxDeviceDeployStepHelper &helper() const { return m_helper; }
+
+protected:
+ AbstractLinuxDeviceDeployStep(ProjectExplorer::DeployConfiguration *dc);
+
+ bool initialize(QString &errorMsg);
+
+private:
+ virtual bool isDeploymentPossibleInternal(QString &whynot) const=0;
+
+ LinuxDeviceDeployStepHelper m_helper;
+};
+
+} // namespace Internal
+} // namespace Qt4ProjectManager
+
+#endif // ABSTRACTLINUXDEVICEDEPLOYSTEP_H
diff --git a/src/plugins/qt4projectmanager/qt-maemo/abstractmaemodeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/abstractmaemodeploystep.cpp
index 6429567b1d..925267b147 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/abstractmaemodeploystep.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/abstractmaemodeploystep.cpp
@@ -87,14 +87,18 @@ private:
AbstractMaemoDeployStep::AbstractMaemoDeployStep(BuildStepList *parent,
- const QString &id) : BuildStep(parent, id)
+ const QString &id)
+ : BuildStep(parent, id),
+ AbstractLinuxDeviceDeployStep(deployConfiguration())
{
baseCtor();
}
AbstractMaemoDeployStep::AbstractMaemoDeployStep(BuildStepList *parent,
- AbstractMaemoDeployStep *other)
- : BuildStep(parent, other), m_lastDeployed(other->m_lastDeployed)
+ AbstractMaemoDeployStep *other)
+ : BuildStep(parent, other),
+ AbstractLinuxDeviceDeployStep(deployConfiguration()),
+ m_lastDeployed(other->m_lastDeployed)
{
baseCtor();
}
@@ -104,9 +108,16 @@ AbstractMaemoDeployStep::~AbstractMaemoDeployStep() { }
void AbstractMaemoDeployStep::baseCtor()
{
m_baseState = BaseInactive;
- m_deviceConfig = maemoDeployConfig()->deviceConfigModel()->defaultDeviceConfig();
- connect(maemoDeployConfig()->deviceConfigModel(), SIGNAL(updated()),
- SLOT(handleDeviceConfigurationsUpdated()));
+}
+
+bool AbstractMaemoDeployStep::init()
+{
+ QString errorMsg;
+ if (!initialize(errorMsg)) {
+ writeOutput(errorMsg, ErrorMessageOutput);
+ return false;
+ }
+ return true;
}
void AbstractMaemoDeployStep::run(QFutureInterface<bool> &fi)
@@ -126,8 +137,7 @@ QVariantMap AbstractMaemoDeployStep::toMap() const
{
QVariantMap map(BuildStep::toMap());
addDeployTimesToMap(map);
- map.insert(DeviceIdKey,
- MaemoDeviceConfigurations::instance()->internalId(m_deviceConfig));
+ map.unite(helper().toMap());
return map;
}
@@ -154,8 +164,9 @@ bool AbstractMaemoDeployStep::fromMap(const QVariantMap &map)
{
if (!BuildStep::fromMap(map))
return false;
+ if (!helper().fromMap(map))
+ return false;
getDeployTimesFromMap(map);
- setDeviceConfig(map.value(DeviceIdKey, MaemoDeviceConfig::InvalidId).toULongLong());
return true;
}
@@ -228,32 +239,6 @@ void AbstractMaemoDeployStep::setDeployed(const QString &host,
QDateTime::currentDateTime());
}
-void AbstractMaemoDeployStep::handleDeviceConfigurationsUpdated()
-{
- setDeviceConfig(MaemoDeviceConfigurations::instance()->internalId(m_deviceConfig));
-}
-
-void AbstractMaemoDeployStep::setDeviceConfig(MaemoDeviceConfig::Id internalId)
-{
- m_deviceConfig = maemoDeployConfig()->deviceConfigModel()->find(internalId);
- emit deviceConfigChanged();
-}
-
-void AbstractMaemoDeployStep::setDeviceConfig(int i)
-{
- m_deviceConfig = maemoDeployConfig()->deviceConfigModel()->deviceAt(i);
- emit deviceConfigChanged();
-}
-
-bool AbstractMaemoDeployStep::isDeploymentPossible(QString &whyNot) const
-{
- if (!m_deviceConfig) {
- whyNot = tr("No valid device set.");
- return false;
- }
- return isDeploymentPossibleInternal(whyNot);
-}
-
void AbstractMaemoDeployStep::start()
{
if (m_baseState != BaseInactive) {
@@ -262,18 +247,9 @@ void AbstractMaemoDeployStep::start()
return;
}
- m_cachedDeviceConfig = m_deviceConfig;
-
- QString message;
- if (!isDeploymentPossible(message)) {
- raiseError(tr("Cannot deploy: %1").arg(message));
- emit done();
- return;
- }
-
m_hasError = false;
- if (isDeploymentNeeded(m_cachedDeviceConfig->sshParameters().host)) {
- if (m_cachedDeviceConfig->type() == MaemoDeviceConfig::Emulator
+ if (isDeploymentNeeded(helper().cachedDeviceConfig()->sshParameters().host)) {
+ if (helper().cachedDeviceConfig()->type() == MaemoDeviceConfig::Emulator
&& !MaemoQemuManager::instance().qemuIsRunning()) {
MaemoQemuManager::instance().startRuntime();
raiseError(tr("Cannot deploy: Qemu was not running. "
@@ -296,7 +272,7 @@ void AbstractMaemoDeployStep::handleConnectionFailure()
return;
const QString errorMsg = m_baseState == Connecting
- ? MaemoGlobal::failedToConnectToServerMessage(m_connection, m_cachedDeviceConfig)
+ ? MaemoGlobal::failedToConnectToServerMessage(m_connection, helper().cachedDeviceConfig())
: tr("Connection error: %1").arg(m_connection->errorString());
raiseError(errorMsg);
setDeploymentFinished();
@@ -307,7 +283,7 @@ void AbstractMaemoDeployStep::connectToDevice()
ASSERT_STATE(QList<BaseState>() << BaseInactive);
setBaseState(Connecting);
- m_connection = SshConnectionManager::instance().acquireConnection(m_cachedDeviceConfig->sshParameters());
+ m_connection = SshConnectionManager::instance().acquireConnection(helper().cachedDeviceConfig()->sshParameters());
connect(m_connection.data(), SIGNAL(error(Utils::SshError)), this,
SLOT(handleConnectionFailure()));
if (m_connection->state() == SshConnection::Connected) {
@@ -407,11 +383,6 @@ const Qt4BuildConfiguration *AbstractMaemoDeployStep::qt4BuildConfiguration() co
return static_cast<Qt4BuildConfiguration *>(buildConfiguration());
}
-Qt4MaemoDeployConfiguration *AbstractMaemoDeployStep::maemoDeployConfig() const
-{
- return qobject_cast<Qt4MaemoDeployConfiguration *>(deployConfiguration());
-}
-
MaemoDeployEventHandler::MaemoDeployEventHandler(AbstractMaemoDeployStep *deployStep,
QFutureInterface<bool> &future)
: m_deployStep(deployStep), m_future(future), m_eventLoop(new QEventLoop),
diff --git a/src/plugins/qt4projectmanager/qt-maemo/abstractmaemodeploystep.h b/src/plugins/qt4projectmanager/qt-maemo/abstractmaemodeploystep.h
index 44787186f2..f53bb8d8fb 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/abstractmaemodeploystep.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/abstractmaemodeploystep.h
@@ -34,6 +34,7 @@
#ifndef ABSTRACTMAEMODEPLOYSTEP_H
#define ABSTRACTMAEMODEPLOYSTEP_H
+#include "abstractlinuxdevicedeploystep.h"
#include "maemodeployable.h"
#include "maemodeployables.h"
#include "maemodeviceconfigurations.h"
@@ -58,22 +59,18 @@ class AbstractMaemoPackageCreationStep;
class MaemoDeviceConfig;
class Qt4MaemoDeployConfiguration;
-class AbstractMaemoDeployStep : public ProjectExplorer::BuildStep
+class AbstractMaemoDeployStep
+ : public ProjectExplorer::BuildStep, public AbstractLinuxDeviceDeployStep
{
Q_OBJECT
public:
virtual ~AbstractMaemoDeployStep();
- QSharedPointer<const MaemoDeviceConfig> deviceConfig() const { return m_deviceConfig; }
- void setDeviceConfig(int i);
- Qt4MaemoDeployConfiguration *maemoDeployConfig() const;
- bool isDeploymentPossible(QString &whyNot) const;
Q_INVOKABLE void stop();
signals:
void done();
void error();
- void deviceConfigChanged();
protected:
AbstractMaemoDeployStep(ProjectExplorer::BuildStepList *bc,
@@ -98,7 +95,6 @@ protected:
const Qt4BuildConfiguration *qt4BuildConfiguration() const;
MaemoPortList freePorts(const QSharedPointer<const MaemoDeviceConfig> &devConfig) const;
QSharedPointer<Utils::SshConnection> connection() const { return m_connection; }
- QSharedPointer<const MaemoDeviceConfig> cachedDeviceConfig() const { return m_cachedDeviceConfig; }
private slots:
void start();
@@ -107,16 +103,14 @@ private slots:
void handleProgressReport(const QString &progressMsg);
void handleRemoteStdout(const QString &output);
void handleRemoteStderr(const QString &output);
- void handleDeviceConfigurationsUpdated();
private:
- virtual bool init() { return true; }
+ virtual bool init();
virtual void run(QFutureInterface<bool> &fi);
virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget();
virtual QVariantMap toMap() const;
virtual bool fromMap(const QVariantMap &map);
- virtual bool isDeploymentPossibleInternal(QString &whynot) const=0;
virtual bool isDeploymentNeeded(const QString &hostName) const=0;
virtual void startInternal()=0;
virtual void stopInternal()=0;
@@ -126,13 +120,10 @@ private:
void getDeployTimesFromMap(const QVariantMap &map);
void connectToDevice();
void setBaseState(BaseState newState);
- void setDeviceConfig(MaemoDeviceConfig::Id internalId);
QSharedPointer<Utils::SshConnection> m_connection;
typedef QPair<MaemoDeployable, QString> DeployablePerHost;
QHash<DeployablePerHost, QDateTime> m_lastDeployed;
- QSharedPointer<const MaemoDeviceConfig> m_deviceConfig;
- QSharedPointer<const MaemoDeviceConfig> m_cachedDeviceConfig;
BaseState m_baseState;
bool m_hasError;
};
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
index e9d97fb639..a232aacea1 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp
@@ -31,7 +31,6 @@
#include "maemodebugsupport.h"
-#include "abstractmaemodeploystep.h"
#include "maemodeployables.h"
#include "maemoglobal.h"
#include "maemosshrunner.h"
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploybymountstep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploybymountstep.cpp
index 748657acc2..bcc0fae477 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploybymountstep.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploybymountstep.cpp
@@ -154,7 +154,7 @@ void AbstractMaemoDeployByMountStep::mount()
{
m_extendedState = Mounting;
m_mounter->setupMounts(connection(), mountSpecifications(),
- freePorts(cachedDeviceConfig()), qt4BuildConfiguration());
+ freePorts(helper().cachedDeviceConfig()), qt4BuildConfiguration());
}
QString AbstractMaemoDeployByMountStep::deployMountPoint() const
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.cpp
index afca943d8b..2fba35ce36 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.cpp
@@ -33,7 +33,7 @@
#include "maemodeploystepwidget.h"
#include "ui_maemodeploystepwidget.h"
-#include "abstractmaemodeploystep.h"
+#include "abstractlinuxdevicedeploystep.h"
#include "maemodeviceconfigurations.h"
#include "maemosettingspages.h"
#include "maemoglobal.h"
@@ -51,14 +51,14 @@
namespace Qt4ProjectManager {
namespace Internal {
-MaemoDeployStepWidget::MaemoDeployStepWidget(AbstractMaemoDeployStep *step) :
+MaemoDeployStepWidget::MaemoDeployStepWidget(AbstractLinuxDeviceDeployStep *step) :
ProjectExplorer::BuildStepConfigWidget(),
ui(new Ui::MaemoDeployStepWidget),
m_step(step)
{
ui->setupUi(this);
ProjectExplorer::BuildStepList * const list
- = qobject_cast<ProjectExplorer::BuildStepList *>(step->parent());
+ = step->maemoDeployConfig()->stepList();
connect(list, SIGNAL(stepInserted(int)), SIGNAL(updateSummary()));
connect(list, SIGNAL(stepMoved(int,int)), SIGNAL(updateSummary()));
connect(list, SIGNAL(stepRemoved(int)), SIGNAL(updateSummary()));
@@ -74,7 +74,8 @@ MaemoDeployStepWidget::~MaemoDeployStepWidget()
void MaemoDeployStepWidget::init()
{
ui->deviceConfigComboBox->setModel(m_step->maemoDeployConfig()->deviceConfigModel());
- connect(m_step, SIGNAL(deviceConfigChanged()), SLOT(handleDeviceUpdate()));
+ connect(&m_step->helper(), SIGNAL(deviceConfigChanged()),
+ SLOT(handleDeviceUpdate()));
handleDeviceUpdate();
connect(ui->deviceConfigComboBox, SIGNAL(activated(int)), this,
SLOT(setCurrentDeviceConfig(int)));
@@ -84,7 +85,7 @@ void MaemoDeployStepWidget::init()
void MaemoDeployStepWidget::handleDeviceUpdate()
{
- const MaemoDeviceConfig::ConstPtr &devConf = m_step->deviceConfig();
+ const MaemoDeviceConfig::ConstPtr &devConf = m_step->helper().deviceConfig();
const MaemoDeviceConfig::Id internalId
= MaemoDeviceConfigurations::instance()->internalId(devConf);
const int newIndex = m_step->maemoDeployConfig()->deviceConfigModel()
@@ -96,8 +97,10 @@ void MaemoDeployStepWidget::handleDeviceUpdate()
void MaemoDeployStepWidget::handleStepToBeRemoved(int step)
{
ProjectExplorer::BuildStepList * const list
- = qobject_cast<ProjectExplorer::BuildStepList *>(m_step->parent());
- if (list->steps().at(step) == m_step)
+ = m_step->maemoDeployConfig()->stepList();
+ const AbstractLinuxDeviceDeployStep * const alds
+ = dynamic_cast<AbstractLinuxDeviceDeployStep *>(list->steps().at(step));
+ if (alds && alds == m_step)
disconnect(list, 0, this, 0);
}
@@ -110,7 +113,7 @@ QString MaemoDeployStepWidget::summaryText() const
+ QLatin1String("</font>");
}
return tr("<b>Deploy to device</b>: %1")
- .arg(MaemoGlobal::deviceConfigurationName(m_step->deviceConfig()));
+ .arg(MaemoGlobal::deviceConfigurationName(m_step->helper().deviceConfig()));
}
QString MaemoDeployStepWidget::displayName() const
@@ -120,10 +123,11 @@ QString MaemoDeployStepWidget::displayName() const
void MaemoDeployStepWidget::setCurrentDeviceConfig(int index)
{
- disconnect(m_step, SIGNAL(deviceConfigChanged()), this,
+ disconnect(&m_step->helper(), SIGNAL(deviceConfigChanged()), this,
+ SLOT(handleDeviceUpdate()));
+ m_step->helper().setDeviceConfig(index);
+ connect(&m_step->helper(), SIGNAL(deviceConfigChanged()),
SLOT(handleDeviceUpdate()));
- m_step->setDeviceConfig(index);
- connect(m_step, SIGNAL(deviceConfigChanged()), SLOT(handleDeviceUpdate()));
updateSummary();
}
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.h
index 1134353bb6..8fa86955ac 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.h
@@ -43,14 +43,14 @@ QT_END_NAMESPACE
namespace Qt4ProjectManager {
namespace Internal {
-class AbstractMaemoDeployStep;
+class AbstractLinuxDeviceDeployStep;
class MaemoDeployStepWidget : public ProjectExplorer::BuildStepConfigWidget
{
Q_OBJECT
public:
- MaemoDeployStepWidget(AbstractMaemoDeployStep *step);
+ MaemoDeployStepWidget(AbstractLinuxDeviceDeployStep *step);
~MaemoDeployStepWidget();
private:
@@ -64,7 +64,7 @@ private:
virtual QString displayName() const;
Ui::MaemoDeployStepWidget *ui;
- AbstractMaemoDeployStep * const m_step;
+ AbstractLinuxDeviceDeployStep *const m_step;
};
} // namespace Internal
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodirectdeviceuploadstep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodirectdeviceuploadstep.cpp
index 1165ccb91d..7d8f330e8e 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodirectdeviceuploadstep.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodirectdeviceuploadstep.cpp
@@ -153,7 +153,7 @@ void MaemoDirectDeviceUploadStep::handleMkdirFinished(int exitStatus)
raiseError(tr("Failed to upload file '%1'.").arg(nativePath));
setFinished();
} else if (fi.isDir()) {
- setDeployed(cachedDeviceConfig()->sshParameters().host, d);
+ setDeployed(helper().cachedDeviceConfig()->sshParameters().host, d);
m_filesToUpload.removeFirst();
uploadNextFile();
} else {
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h
index 7f784e109a..49dd226d09 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h
@@ -130,7 +130,7 @@ public:
for (int i = 0; i < buildSteps.count(); ++i) {
if (buildSteps.at(i) == laterBuildStep)
return 0;
- if (T * const step = qobject_cast<T *>(buildSteps.at(i)))
+ if (T * const step = dynamic_cast<T *>(buildSteps.at(i)))
return step;
}
return 0;
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
index 1a9d452594..2048b00f3c 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
@@ -32,7 +32,7 @@
#include "maemorunconfiguration.h"
-#include "abstractmaemodeploystep.h"
+#include "abstractlinuxdevicedeploystep.h"
#include "maemodeployables.h"
#include "maemoglobal.h"
#include "maemoqemumanager.h"
@@ -213,8 +213,8 @@ QString MaemoRunConfiguration::defaultDisplayName()
MaemoDeviceConfig::ConstPtr MaemoRunConfiguration::deviceConfig() const
{
- const AbstractMaemoDeployStep * const step = deployStep();
- return step ? step->deviceConfig() : MaemoDeviceConfig::ConstPtr();
+ const AbstractLinuxDeviceDeployStep * const step = deployStep();
+ return step ? step->helper().deviceConfig() : MaemoDeviceConfig::ConstPtr();
}
const MaemoToolChain *MaemoRunConfiguration::toolchain() const
@@ -236,9 +236,9 @@ Qt4MaemoDeployConfiguration *MaemoRunConfiguration::deployConfig() const
return qobject_cast<Qt4MaemoDeployConfiguration *>(target()->activeDeployConfiguration());
}
-AbstractMaemoDeployStep *MaemoRunConfiguration::deployStep() const
+AbstractLinuxDeviceDeployStep *MaemoRunConfiguration::deployStep() const
{
- return MaemoGlobal::earlierBuildStep<AbstractMaemoDeployStep>(deployConfig(), 0);
+ return MaemoGlobal::earlierBuildStep<AbstractLinuxDeviceDeployStep>(deployConfig(), 0);
}
const QString MaemoRunConfiguration::sysRoot() const
@@ -303,8 +303,9 @@ QString MaemoRunConfiguration::remoteExecutableFilePath() const
MaemoPortList MaemoRunConfiguration::freePorts() const
{
const Qt4BuildConfiguration * const bc = activeQt4BuildConfiguration();
- return bc
- ? MaemoGlobal::freePorts(deployStep()->deviceConfig(), bc->qtVersion())
+ const AbstractLinuxDeviceDeployStep * const step = deployStep();
+ return bc && step
+ ? MaemoGlobal::freePorts(deployStep()->helper().deviceConfig(), bc->qtVersion())
: MaemoPortList();
}
@@ -360,10 +361,10 @@ void MaemoRunConfiguration::handleDeployConfigChanged()
SLOT(handleDeployConfigChanged()), Qt::UniqueConnection);
connect(activeDeployConf->stepList(), SIGNAL(stepRemoved(int)),
SLOT(handleDeployConfigChanged()), Qt::UniqueConnection);
- AbstractMaemoDeployStep * const step
- = MaemoGlobal::earlierBuildStep<AbstractMaemoDeployStep>(activeDeployConf, 0);
+ AbstractLinuxDeviceDeployStep * const step
+ = MaemoGlobal::earlierBuildStep<AbstractLinuxDeviceDeployStep>(activeDeployConf, 0);
if (step) {
- connect(step, SIGNAL(deviceConfigChanged()),
+ connect(&step->helper(), SIGNAL(deviceConfigChanged()),
SLOT(updateDeviceConfigurations()), Qt::UniqueConnection);
}
}
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h
index d145364885..14f6532efd 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h
@@ -57,7 +57,7 @@ namespace Internal {
class Qt4ProFileNode;
class AbstractQt4MaemoTarget;
-class AbstractMaemoDeployStep;
+class AbstractLinuxDeviceDeployStep;
class MaemoDeviceConfigListModel;
class MaemoManager;
class MaemoRemoteMountsModel;
@@ -89,7 +89,6 @@ public:
Qt4BuildConfiguration *activeQt4BuildConfiguration() const;
Qt4MaemoDeployConfiguration *deployConfig() const;
- AbstractMaemoDeployStep *deployStep() const;
MaemoRemoteMountsModel *remoteMounts() const { return m_remoteMounts; }
const MaemoToolChain *toolchain() const;
@@ -151,6 +150,7 @@ private slots:
private:
void init();
void handleParseState(bool success);
+ AbstractLinuxDeviceDeployStep *deployStep() const;
QString m_proFilePath;
mutable QString m_gdbPath;
diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri b/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri
index d42d24ad40..24893a582a 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri
+++ b/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri
@@ -59,7 +59,8 @@ HEADERS += \
$$PWD/abstractmaemodeploystep.h \
$$PWD/maemodeploybymountstep.h \
$$PWD/maemouploadandinstalldeploystep.h \
- $$PWD/maemodirectdeviceuploadstep.h
+ $$PWD/maemodirectdeviceuploadstep.h \
+ $$PWD/abstractlinuxdevicedeploystep.h
SOURCES += \
$$PWD/maemoconfigtestdialog.cpp \
@@ -119,7 +120,8 @@ SOURCES += \
$$PWD/abstractmaemodeploystep.cpp \
$$PWD/maemodeploybymountstep.cpp \
$$PWD/maemouploadandinstalldeploystep.cpp \
- $$PWD/maemodirectdeviceuploadstep.cpp
+ $$PWD/maemodirectdeviceuploadstep.cpp \
+ $$PWD/abstractlinuxdevicedeploystep.cpp
FORMS += \
$$PWD/maemoconfigtestdialog.ui \