diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp index 46d562a1a4bd6910925ce11ba973faf2ac0aa0a9..d61b8f89ad611f2669e019b266f88f13b85d5bf3 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp @@ -32,6 +32,7 @@ #include "maemoconstants.h" #include "maemodeployables.h" #include "maemodeploystepwidget.h" +#include "maemodeviceconfiglistmodel.h" #include "maemoglobal.h" #include "maemopackagecreationstep.h" #include "maemorunconfiguration.h" @@ -79,6 +80,7 @@ MaemoDeployStep::~MaemoDeployStep() void MaemoDeployStep::ctor() { + m_deviceConfigModel = new MaemoDeviceConfigListModel(this); } bool MaemoDeployStep::init() @@ -104,6 +106,7 @@ QVariantMap MaemoDeployStep::toMap() const { QVariantMap map(BuildStep::toMap()); addDeployTimesToMap(map); + map.unite(m_deviceConfigModel->toMap()); return map; } @@ -131,6 +134,7 @@ bool MaemoDeployStep::fromMap(const QVariantMap &map) if (!BuildStep::fromMap(map)) return false; getDeployTimesFromMap(map); + m_deviceConfigModel->fromMap(map); return true; } @@ -213,11 +217,15 @@ void MaemoDeployStep::setDeployed(const QString &host, MaemoDeviceConfig MaemoDeployStep::deviceConfig() const { - // TODO: For lib template, get info from config widget - const RunConfiguration * const rc = - buildConfiguration()->target()->activeRunConfiguration(); - return rc ? qobject_cast<const MaemoRunConfiguration *>(rc)->deviceConfig() - : MaemoDeviceConfig(); + return deviceConfigModel()->current(); +} + +MaemoDeviceConfigListModel *MaemoDeployStep::deviceConfigModel() const +{ + const MaemoRunConfiguration * const rc = + qobject_cast<const MaemoRunConfiguration *>(buildConfiguration() + ->target()->activeRunConfiguration()); + return rc ? rc->deviceConfigModel() : m_deviceConfigModel; } void MaemoDeployStep::start() diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h index 5a11ab166b044625c281a767bc0686ba3032d960..0307614aeca3090a8c2ea24e5f63065c3844a87a 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.h @@ -55,6 +55,7 @@ class SshRemoteProcess; namespace Qt4ProjectManager { namespace Internal { class MaemoDeployables; +class MaemoDeviceConfigListModel; class MaemoPackageCreationStep; class MaemoDeployStep : public ProjectExplorer::BuildStep @@ -65,6 +66,7 @@ public: MaemoDeployStep(ProjectExplorer::BuildConfiguration *bc); virtual ~MaemoDeployStep(); MaemoDeviceConfig deviceConfig() const; + MaemoDeviceConfigListModel *deviceConfigModel() const; bool currentlyNeedsDeployment(const QString &host, const MaemoDeployable &deployable) const; void setDeployed(const QString &host, const MaemoDeployable &deployable); @@ -119,6 +121,7 @@ private: bool m_stopped; typedef QPair<MaemoDeployable, QString> DeployablePerHost; QHash<DeployablePerHost, QDateTime> m_lastDeployed; + MaemoDeviceConfigListModel *m_deviceConfigModel; }; class MaemoDeployEventHandler : public QObject diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.cpp index 33c61dc9de08a4fd965744ed00a147327964352b..9a6d66c8e94d1784b00f6f56f3162042059d8684 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.cpp @@ -5,6 +5,7 @@ #include "maemodeployablelistmodel.h" #include "maemodeployablelistwidget.h" #include "maemodeployables.h" +#include "maemodeviceconfiglistmodel.h" #include "maemorunconfiguration.h" #include <projectexplorer/buildconfiguration.h> @@ -32,17 +33,33 @@ MaemoDeployStepWidget::~MaemoDeployStepWidget() void MaemoDeployStepWidget::init() { - const ProjectExplorer::RunConfiguration * const rc = - m_step->buildConfiguration()->target()->activeRunConfiguration(); - if (rc) { - connect(qobject_cast<const MaemoRunConfiguration *>(rc), - SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target *)), - this, SLOT(handleDeviceUpdate())); - } + connectDeviceConfigModel(); + connect(m_step->buildConfiguration()->target(), + SIGNAL(activeRunConfigurationChanged(ProjectExplorer::RunConfiguration*)), + this, SLOT(connectDeviceConfigModel())); + connect(ui->deviceConfigComboBox, SIGNAL(activated(int)), this, + SLOT(setCurrentDeviceConfig(int))); +} + +void MaemoDeployStepWidget::connectDeviceConfigModel() +{ + const MaemoDeviceConfigListModel * const oldModel + = qobject_cast<MaemoDeviceConfigListModel *>(ui->deviceConfigComboBox->model()); + if (oldModel) + disconnect(oldModel, 0, this, 0); + MaemoDeviceConfigListModel * const devModel = m_step->deviceConfigModel(); + ui->deviceConfigComboBox->setModel(devModel); + connect(devModel, SIGNAL(currentChanged()), this, + SLOT(handleDeviceUpdate())); + connect(devModel, SIGNAL(modelReset()), this, + SLOT(handleDeviceUpdate())); + handleDeviceUpdate(); } void MaemoDeployStepWidget::handleDeviceUpdate() { + ui->deviceConfigComboBox->setCurrentIndex(m_step->deviceConfigModel() + ->currentIndex()); emit updateSummary(); } @@ -68,5 +85,10 @@ void MaemoDeployStepWidget::handleModelsCreated() } } +void MaemoDeployStepWidget::setCurrentDeviceConfig(int index) +{ + m_step->deviceConfigModel()->setCurrentIndex(index); +} + } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.h index bfa631fda5139b9b2e4a9d2e494f44ff135d91b4..d5eff9ee7ec8273f132fa18b9063845442e7c69a 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.h @@ -22,13 +22,15 @@ public: ~MaemoDeployStepWidget(); private: + Q_SLOT void handleDeviceUpdate(); Q_SLOT void handleModelsCreated(); + Q_SLOT void handleDeviceConfigModelChanged(); + Q_SLOT void setCurrentDeviceConfig(int index); + virtual void init(); virtual QString summaryText() const; virtual QString displayName() const; - Q_SLOT void handleDeviceUpdate(); - Ui::MaemoDeployStepWidget *ui; MaemoDeployStep * const m_step; }; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.ui b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.ui index b0cc2d640886fff314dd5295f86d3cb91f2b2906..94afe4a4abede714477103f727dd449786c5ad3f 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.ui +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystepwidget.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>400</width> - <height>300</height> + <width>469</width> + <height>330</height> </rect> </property> <property name="windowTitle"> @@ -15,7 +15,34 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="QLabel" name="label"> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="deviceConfigLabel"> + <property name="text"> + <string>Device configuration:</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="deviceConfigComboBox"/> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="installLabel"> <property name="toolTip"> <string>These show the INSTALLS settings from the project file(s).</string> </property> diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfiglistmodel.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfiglistmodel.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a0e00b23436f0df5be45b5f6c6a730e740632178 --- /dev/null +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfiglistmodel.cpp @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Creator. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** 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, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "maemodeviceconfiglistmodel.h" + +#include "maemoconstants.h" + +namespace Qt4ProjectManager { +namespace Internal { + +MaemoDeviceConfigListModel::MaemoDeviceConfigListModel(QObject *parent) + : QAbstractListModel(parent), m_currentIndex(-1) +{ + const MaemoDeviceConfigurations &devConfs + = MaemoDeviceConfigurations::instance(); + if (devConfs.devConfigs().isEmpty()) + setInvalid(); + else + setCurrentIndex(0); + connect(&devConfs, SIGNAL(updated()), this, + SLOT(handleDeviceConfigListChange())); +} + +void MaemoDeviceConfigListModel::setCurrentIndex(int index) +{ + if (index != m_currentIndex) { + m_currentIndex = index; + m_currentId = MaemoDeviceConfigurations::instance().devConfigs() + .at(m_currentIndex).internalId; + emit currentChanged(); + } +} + +void MaemoDeviceConfigListModel::resetCurrentIndex() +{ + const QList<MaemoDeviceConfig> &devConfigs + = MaemoDeviceConfigurations::instance().devConfigs(); + if (devConfigs.isEmpty()) { + setInvalid(); + return; + } + + for (int i = 0; i < devConfigs.count(); ++i) { + if (devConfigs.at(i).internalId == m_currentId) { + setCurrentIndex(i); + return; + } + } + setCurrentIndex(0); +} + +void MaemoDeviceConfigListModel::setInvalid() +{ + m_currentIndex = -1; + m_currentId = MaemoDeviceConfig::InvalidId; + emit currentChanged(); +} + +MaemoDeviceConfig MaemoDeviceConfigListModel::current() const +{ + return MaemoDeviceConfigurations::instance().find(m_currentId); +} + +QVariantMap MaemoDeviceConfigListModel::toMap() const +{ + QVariantMap map; + map.insert(DeviceIdKey, current().internalId); + return map; +} + +void MaemoDeviceConfigListModel::fromMap(const QVariantMap &map) +{ + const quint64 oldId = m_currentId; + m_currentId = map.value(DeviceIdKey, 0).toULongLong(); + resetCurrentIndex(); + if (oldId != m_currentId) + emit currentChanged(); +} + +void MaemoDeviceConfigListModel::handleDeviceConfigListChange() +{ + resetCurrentIndex(); + reset(); + emit currentChanged(); +} + +int MaemoDeviceConfigListModel::rowCount(const QModelIndex &parent) const +{ + return parent.isValid() ? 0 + : MaemoDeviceConfigurations::instance().devConfigs().count(); +} + +QVariant MaemoDeviceConfigListModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid() || index.row() >= rowCount() + || role != Qt::DisplayRole) + return QString(); + return MaemoDeviceConfigurations::instance().devConfigs().at(index.row()).name; +} + +} // namespace Internal +} // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfiglistmodel.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfiglistmodel.h new file mode 100644 index 0000000000000000000000000000000000000000..033fbf83d91671c4c82329b6e8734d34be6f7ccd --- /dev/null +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfiglistmodel.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Creator. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** 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, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MAEMODEVICECONFIGLISTMODEL_H +#define MAEMODEVICECONFIGLISTMODEL_H + +#include "maemodeviceconfigurations.h" + +#include <QtCore/QAbstractListModel> +#include <QtCore/QVariantMap> + +namespace Qt4ProjectManager { +namespace Internal { + +class MaemoDeviceConfigListModel : public QAbstractListModel +{ + Q_OBJECT +public: + explicit MaemoDeviceConfigListModel(QObject *parent = 0); + void setCurrentIndex(int index); + MaemoDeviceConfig current() const; + int currentIndex() const { return m_currentIndex; } + + QVariantMap toMap() const; + void fromMap(const QVariantMap &map); + + virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; + virtual QVariant data(const QModelIndex &index, int role) const; + +signals: + void currentChanged(); + +private: + Q_SLOT void handleDeviceConfigListChange(); + void resetCurrentIndex(); + void setInvalid(); + + quint64 m_currentId; + int m_currentIndex; +}; + + +} // namespace Internal +} // namespace Qt4ProjectManager + +#endif // MAEMODEVICECONFIGLISTMODEL_H diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.h index 463911f817d6b557b93f0b6dece979fc8ff55b45..332b4047f26cff73d8eae2ed5071d8a820b1b422 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.h @@ -58,6 +58,8 @@ public: void save(QSettings &settings) const; bool isValid() const; + static const quint64 InvalidId = 0; + Core::SshConnectionParameters server; QString name; DeviceType type; @@ -69,7 +71,6 @@ private: int defaultGdbServerPort(DeviceType type) const; QString defaultHost(DeviceType type) const; - static const quint64 InvalidId = 0; }; class DevConfNameMatcher diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp index eb32c1d2c9877688699d5c6992d287716bce54a4..958d28109115a58c92289e04f2739650828cfb66 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp @@ -31,6 +31,7 @@ #include "maemodeployables.h" #include "maemodeploystep.h" +#include "maemodeviceconfiglistmodel.h" #include "maemoglobal.h" #include "maemorunconfigurationwidget.h" #include "maemotoolchain.h" @@ -68,7 +69,6 @@ MaemoRunConfiguration::MaemoRunConfiguration(Qt4Target *parent, : RunConfiguration(parent, source) , m_proFilePath(source->m_proFilePath) , m_gdbPath(source->m_gdbPath) - , m_devConfig(source->m_devConfig) , m_arguments(source->m_arguments) { init(); @@ -76,10 +76,13 @@ MaemoRunConfiguration::MaemoRunConfiguration(Qt4Target *parent, void MaemoRunConfiguration::init() { + m_devConfigModel = new MaemoDeviceConfigListModel(this); setDisplayName(QFileInfo(m_proFilePath).completeBaseName()); updateDeviceConfigurations(); - connect(&MaemoDeviceConfigurations::instance(), SIGNAL(updated()), this, + connect(m_devConfigModel, SIGNAL(currentChanged()), this, + SLOT(updateDeviceConfigurations())); + connect(m_devConfigModel, SIGNAL(modelReset()), this, SLOT(updateDeviceConfigurations())); connect(qt4Target()->qt4Project(), @@ -128,10 +131,10 @@ void MaemoRunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFil QVariantMap MaemoRunConfiguration::toMap() const { QVariantMap map(RunConfiguration::toMap()); - map.insert(DeviceIdKey, m_devConfig.internalId); map.insert(ArgumentsKey, m_arguments); const QDir dir = QDir(target()->project()->projectDirectory()); map.insert(ProFileKey, dir.relativeFilePath(m_proFilePath)); + map.unite(m_devConfigModel->toMap()); return map; } @@ -140,24 +143,22 @@ bool MaemoRunConfiguration::fromMap(const QVariantMap &map) if (!RunConfiguration::fromMap(map)) return false; - setDeviceConfig(MaemoDeviceConfigurations::instance(). - find(map.value(DeviceIdKey, 0).toInt())); m_arguments = map.value(ArgumentsKey).toStringList(); const QDir dir = QDir(target()->project()->projectDirectory()); m_proFilePath = dir.filePath(map.value(ProFileKey).toString()); + m_devConfigModel->fromMap(map); return true; } -void MaemoRunConfiguration::setDeviceConfig(const MaemoDeviceConfig &devConf) +MaemoDeviceConfig MaemoRunConfiguration::deviceConfig() const { - m_devConfig = devConf; - emit deviceConfigurationChanged(target()); + return m_devConfigModel->current(); } -MaemoDeviceConfig MaemoRunConfiguration::deviceConfig() const +MaemoDeviceConfigListModel *MaemoRunConfiguration::deviceConfigModel() const { - return m_devConfig; + return m_devConfigModel; } const MaemoToolChain *MaemoRunConfiguration::toolchain() const @@ -251,16 +252,7 @@ void MaemoRunConfiguration::setArguments(const QStringList &args) void MaemoRunConfiguration::updateDeviceConfigurations() { - const MaemoDeviceConfigurations &configManager - = MaemoDeviceConfigurations::instance(); - if (!m_devConfig.isValid()) { - const QList<MaemoDeviceConfig> &configList = configManager.devConfigs(); - if (!configList.isEmpty()) - m_devConfig = configList.first(); - } else { - m_devConfig = configManager.find(m_devConfig.internalId); - } - emit deviceConfigurationsUpdated(target()); + emit deviceConfigurationChanged(target()); } } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h index 1aa8814bf8c650cdf74ccdeec3a843e4113fb323..875c02056c035c039c8c8206d5946a341de00de3 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h @@ -47,15 +47,16 @@ class Qt4Project; namespace Internal { -class MaemoManager; -class MaemoToolChain; class Qt4BuildConfiguration; class Qt4ProFileNode; class Qt4Target; +class MaemoDeviceConfigListModel; class MaemoDeployStep; +class MaemoManager; class MaemoPackageCreationStep; class MaemoRunConfigurationFactory; +class MaemoToolChain; class MaemoRunConfiguration : public ProjectExplorer::RunConfiguration { @@ -81,8 +82,8 @@ public: const QString targetRoot() const; const QStringList arguments() const; void setArguments(const QStringList &args); - void setDeviceConfig(const MaemoDeviceConfig &deviceConfig); MaemoDeviceConfig deviceConfig() const; + MaemoDeviceConfigListModel *deviceConfigModel() const; QString runtimeGdbServerPort() const; const QString gdbCmd() const; @@ -91,7 +92,6 @@ public: virtual QVariantMap toMap() const; signals: - void deviceConfigurationsUpdated(ProjectExplorer::Target *target); void deviceConfigurationChanged(ProjectExplorer::Target *target); void targetInformationChanged() const; @@ -109,8 +109,7 @@ private: QString m_proFilePath; mutable QString m_gdbPath; - - MaemoDeviceConfig m_devConfig; + MaemoDeviceConfigListModel *m_devConfigModel; QStringList m_arguments; }; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp index 5d53ce6f057171cd2dfbe737c0d7b300a8b9e791..67ab8f6fb8b300873f1d5f8eeee10386d24699b2 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp @@ -34,7 +34,7 @@ #include "maemorunconfigurationwidget.h" -#include "maemodeviceconfigurations.h" +#include "maemodeviceconfiglistmodel.h" #include "maemomanager.h" #include "maemorunconfiguration.h" #include "maemosettingspage.h" @@ -70,6 +70,7 @@ MaemoRunConfigurationWidget::MaemoRunConfigurationWidget( QHBoxLayout *devConfLayout = new QHBoxLayout(devConfWidget); m_devConfBox = new QComboBox; m_devConfBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); + m_devConfBox->setModel(runConfiguration->deviceConfigModel()); devConfLayout->setMargin(0); devConfLayout->addWidget(m_devConfBox); QLabel *addDevConfLabel= new QLabel(tr("<a href=\"%1\">Manage device configurations</a>") @@ -88,16 +89,15 @@ MaemoRunConfigurationWidget::MaemoRunConfigurationWidget( m_argsLineEdit = new QLineEdit(m_runConfiguration->arguments().join(" ")); mainLayout->addRow(tr("Arguments:"), m_argsLineEdit); - resetDeviceConfigurations(); - connect(m_runConfiguration, SIGNAL(deviceConfigurationsUpdated(ProjectExplorer::Target *)), - this, SLOT(resetDeviceConfigurations())); - + handleCurrentDeviceConfigChanged(); connect(m_configNameLineEdit, SIGNAL(textEdited(QString)), this, SLOT(configNameEdited(QString))); connect(m_argsLineEdit, SIGNAL(textEdited(QString)), this, SLOT(argumentsEdited(QString))); - connect(m_devConfBox, SIGNAL(activated(QString)), this, - SLOT(deviceConfigurationChanged(QString))); + connect(m_devConfBox, SIGNAL(activated(int)), this, + SLOT(setCurrentDeviceConfig(int))); + connect(runConfiguration->deviceConfigModel(), SIGNAL(currentChanged()), + this, SLOT(handleCurrentDeviceConfigChanged())); connect(m_runConfiguration, SIGNAL(targetInformationChanged()), this, SLOT(updateTargetInformation())); connect(addDevConfLabel, SIGNAL(linkActivated(QString)), this, @@ -121,25 +121,6 @@ void MaemoRunConfigurationWidget::updateTargetInformation() m_executableLabel->setText(m_runConfiguration->localExecutableFilePath()); } -void MaemoRunConfigurationWidget::deviceConfigurationChanged(const QString &name) -{ - const MaemoDeviceConfig &devConfig - = MaemoDeviceConfigurations::instance().find(name); - m_runConfiguration->setDeviceConfig(devConfig); -} - -void MaemoRunConfigurationWidget::resetDeviceConfigurations() -{ - m_devConfBox->clear(); - const QList<MaemoDeviceConfig> &devConfs = - MaemoDeviceConfigurations::instance().devConfigs(); - foreach (const MaemoDeviceConfig &devConf, devConfs) - m_devConfBox->addItem(devConf.name); - m_devConfBox->addItem(MaemoDeviceConfig().name); - const MaemoDeviceConfig &devConf = m_runConfiguration->deviceConfig(); - m_devConfBox->setCurrentIndex(m_devConfBox->findText(devConf.name)); -} - void MaemoRunConfigurationWidget::showSettingsDialog(const QString &link) { if (link == QLatin1String("deviceconfig")) { @@ -151,5 +132,16 @@ void MaemoRunConfigurationWidget::showSettingsDialog(const QString &link) } } +void MaemoRunConfigurationWidget::handleCurrentDeviceConfigChanged() +{ + m_devConfBox->setCurrentIndex(m_runConfiguration->deviceConfigModel() + ->currentIndex()); +} + +void MaemoRunConfigurationWidget::setCurrentDeviceConfig(int index) +{ + m_runConfiguration->deviceConfigModel()->setCurrentIndex(index); +} + } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h index e2d9db3df920a40b61ad984ef2066ba8a822be3e..6607e59047db47d58c4296d73dabf221069b8057 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h @@ -46,7 +46,6 @@ QT_END_NAMESPACE namespace Qt4ProjectManager { namespace Internal { -class MaemoDeviceConfig; class MaemoRunConfiguration; class MaemoRunConfigurationWidget : public QWidget @@ -59,10 +58,10 @@ public: private slots: void configNameEdited(const QString &text); void argumentsEdited(const QString &args); - void deviceConfigurationChanged(const QString &name); - void resetDeviceConfigurations(); void showSettingsDialog(const QString &link); void updateTargetInformation(); + void handleCurrentDeviceConfigChanged(); + void setCurrentDeviceConfig(int index); private: QLineEdit *m_configNameLineEdit; diff --git a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp index 3afa0095ec1f887f2d839970c6286759ac61ee9b..36e929498c78f082cf3a6b5892f1ca2099ac451d 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp @@ -199,8 +199,10 @@ void QemuRuntimeManager::projectRemoved(ProjectExplorer::Project *project) void QemuRuntimeManager::projectChanged(ProjectExplorer::Project *project) { - if (project) + if (project) { toggleStarterButton(project->activeTarget()); + deviceConfigurationChanged(project->activeTarget()); + } } bool targetIsMaemo(const QString &id) @@ -265,8 +267,10 @@ void QemuRuntimeManager::targetRemoved(ProjectExplorer::Target *target) void QemuRuntimeManager::targetChanged(ProjectExplorer::Target *target) { - if (target) + if (target) { toggleStarterButton(target); + deviceConfigurationChanged(target); + } } void QemuRuntimeManager::runConfigurationAdded(ProjectExplorer::RunConfiguration *rc) @@ -610,12 +614,8 @@ void QemuRuntimeManager::toggleDeviceConnections(MaemoRunConfiguration *mrc, if (_connect) { // handle device configuration changes connect(mrc, SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target*)), this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); - connect(mrc, SIGNAL(deviceConfigurationsUpdated(ProjectExplorer::Target*)), - this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); } else { disconnect(mrc, SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target*)), this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); - disconnect(mrc, SIGNAL(deviceConfigurationsUpdated(ProjectExplorer::Target*)), - this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); } } diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri b/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri index 1e732cad2f48e428bbc311d0ff34926cb25a3b7d..7dfe9acfd73efa7cd6b151a77e24d8fc9c89f9ad 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri +++ b/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri @@ -25,7 +25,8 @@ HEADERS += \ $$PWD/maemodeploystepfactory.h \ $$PWD/maemoglobal.h \ $$PWD/maemosshrunner.h \ - $$PWD/maemodebugsupport.h + $$PWD/maemodebugsupport.h \ + $$PWD/maemodeviceconfiglistmodel.h SOURCES += \ $$PWD/maemoconfigtestdialog.cpp \ @@ -52,7 +53,8 @@ SOURCES += \ $$PWD/maemodeploystepfactory.cpp \ $$PWD/maemoglobal.cpp \ $$PWD/maemosshrunner.cpp \ - $$PWD/maemodebugsupport.cpp + $$PWD/maemodebugsupport.cpp \ + $$PWD/maemodeviceconfiglistmodel.cpp FORMS += \ $$PWD/maemoconfigtestdialog.ui \