diff options
author | Christian Kandeler <christian.kandeler@nokia.com> | 2011-07-14 15:38:16 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@nokia.com> | 2011-07-14 15:47:35 +0200 |
commit | 2bdc5c79c6b1193b6fb2e70a8ba24b7306c0121f (patch) | |
tree | 0d6dbd7da1902eb8c685462e9bd806bd6b4d414a /src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp | |
parent | 82bbac7f906948278b666a78a402099d65bfd1dd (diff) | |
download | qt-creator-2bdc5c79c6b1193b6fb2e70a8ba24b7306c0121f.tar.gz |
RemoteLinux: Separate generic and MADDE-specific deploy configurations.
Change-Id: If06ee9fbf91a50bcb6c7b79a824f3f74f92b98d2
Reviewed-on: http://codereview.qt.nokia.com/1671
Reviewed-by: Christian Kandeler <christian.kandeler@nokia.com>
Diffstat (limited to 'src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp')
-rw-r--r-- | src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp b/src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp new file mode 100644 index 0000000000..d1ad7ea376 --- /dev/null +++ b/src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp @@ -0,0 +1,158 @@ +/************************************************************************** +** +** 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 info@qt.nokia.com. +** +**************************************************************************/ +#include "remotelinuxdeployconfiguration.h" + +#include "deploymentinfo.h" +#include "linuxdeviceconfigurations.h" +#include "maemodeployconfigurationwidget.h" +#include "maemopertargetdeviceconfigurationlistmodel.h" + +#include <qt4projectmanager/qt4target.h> + +using namespace ProjectExplorer; +using namespace Qt4ProjectManager; + +namespace RemoteLinux { +namespace Internal { +namespace { +const char DeviceIdKey[] = "Qt4ProjectManager.MaemoRunConfiguration.DeviceId"; +} // anonymous namespace +} // namespace Internal + +using namespace Internal; + +RemoteLinuxDeployConfiguration::RemoteLinuxDeployConfiguration(ProjectExplorer::Target *target, + const QString &id, const QString &defaultDisplayName, const QString &supportedOsType) + : DeployConfiguration(target, id) +{ + setDefaultDisplayName(defaultDisplayName); + + // A DeploymentInfo object is only dependent on the active build + // configuration and therefore can (and should) be shared among all + // deploy steps. The per-target device configurations model is + // similarly only dependent on the target. + const QList<DeployConfiguration *> &deployConfigs + = this->target()->deployConfigurations(); + foreach (const DeployConfiguration * const dc, deployConfigs) { + const RemoteLinuxDeployConfiguration * const mdc + = qobject_cast<const RemoteLinuxDeployConfiguration *>(dc); + if (mdc) { + m_deploymentInfo = mdc->deploymentInfo(); + m_devConfModel = mdc->m_devConfModel; + break; + } + } + if (!m_deploymentInfo) { + m_deploymentInfo = QSharedPointer<DeploymentInfo>(new DeploymentInfo(qobject_cast<Qt4BaseTarget *>(target))); + m_devConfModel = QSharedPointer<MaemoPerTargetDeviceConfigurationListModel> + (new MaemoPerTargetDeviceConfigurationListModel(0, supportedOsType)); + } + + initialize(); +} + +RemoteLinuxDeployConfiguration::RemoteLinuxDeployConfiguration(ProjectExplorer::Target *target, + RemoteLinuxDeployConfiguration *source) : DeployConfiguration(target, source) +{ + m_deploymentInfo = source->deploymentInfo(); + m_devConfModel = source->deviceConfigModel(); + initialize(); +} + +RemoteLinuxDeployConfiguration::~RemoteLinuxDeployConfiguration() {} + +void RemoteLinuxDeployConfiguration::initialize() +{ + m_deviceConfiguration = deviceConfigModel()->defaultDeviceConfig(); + connect(deviceConfigModel().data(), SIGNAL(updated()), + SLOT(handleDeviceConfigurationListUpdated())); +} + +void RemoteLinuxDeployConfiguration::handleDeviceConfigurationListUpdated() +{ + setDeviceConfig(LinuxDeviceConfigurations::instance()->internalId(m_deviceConfiguration)); +} + +void RemoteLinuxDeployConfiguration::setDeviceConfig(LinuxDeviceConfiguration::Id internalId) +{ + m_deviceConfiguration = deviceConfigModel()->find(internalId); + emit deviceConfigurationListChanged(); + emit currentDeviceConfigurationChanged(); +} + +bool RemoteLinuxDeployConfiguration::fromMap(const QVariantMap &map) +{ + if (!DeployConfiguration::fromMap(map)) + return false; + setDeviceConfig(map.value(QLatin1String(DeviceIdKey), + LinuxDeviceConfiguration::InvalidId).toULongLong()); + return true; +} + +QVariantMap RemoteLinuxDeployConfiguration::toMap() const +{ + QVariantMap map = DeployConfiguration::toMap(); + map.insert(QLatin1String(DeviceIdKey), + LinuxDeviceConfigurations::instance()->internalId(m_deviceConfiguration)); + return map; +} + +void RemoteLinuxDeployConfiguration::setDeviceConfiguration(int index) +{ + const LinuxDeviceConfiguration::ConstPtr &newDevConf = deviceConfigModel()->deviceAt(index); + if (m_deviceConfiguration != newDevConf) { + m_deviceConfiguration = newDevConf; + emit currentDeviceConfigurationChanged(); + } +} + +DeployConfigurationWidget *RemoteLinuxDeployConfiguration::configurationWidget() const +{ + return new MaemoDeployConfigurationWidget; +} + +QSharedPointer<DeploymentInfo> RemoteLinuxDeployConfiguration::deploymentInfo() const +{ + return m_deploymentInfo; +} + +QSharedPointer<MaemoPerTargetDeviceConfigurationListModel> RemoteLinuxDeployConfiguration::deviceConfigModel() const +{ + return m_devConfModel; +} + +LinuxDeviceConfiguration::ConstPtr RemoteLinuxDeployConfiguration::deviceConfiguration() const +{ + return m_deviceConfiguration; +} + +} // namespace RemoteLinux |