From a8bea59d88503cca5b2c61310ee4e5622b1fef29 Mon Sep 17 00:00:00 2001
From: Christian Kandeler <christian.kandeler@nokia.com>
Date: Thu, 13 Jan 2011 15:00:48 +0100
Subject: [PATCH] Maemo: Allow user to set default device configuration.

Task-number: QTCREATORBUG-3486
---
 .../qt-maemo/maemodeviceconfigurations.cpp    | 21 +++++++++++++++++++
 .../qt-maemo/maemodeviceconfigurations.h      |  2 ++
 ...aemodeviceconfigurationssettingswidget.cpp | 10 +++++++++
 .../maemodeviceconfigurationssettingswidget.h |  1 +
 ...maemodeviceconfigurationssettingswidget.ui | 10 +++++++++
 5 files changed, 44 insertions(+)

diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.cpp
index acbb5be2da1..80ee2c66f8f 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.cpp
@@ -432,6 +432,27 @@ void MaemoDeviceConfigurations::setPortsSpec(int i, const QString &portsSpec)
     m_devConfigs.at(i)->m_portsSpec = portsSpec;
 }
 
+void MaemoDeviceConfigurations::setDefaultDevice(int idx)
+{
+    Q_ASSERT(idx >= 0 && idx < rowCount());
+    if (m_devConfigs.at(idx)->m_isDefault)
+        return;
+    QModelIndex oldDefaultIndex;
+    for(int i = 0; i < m_devConfigs.count(); ++i) {
+        const MaemoDeviceConfig::Ptr &oldDefaultDev = m_devConfigs.at(i);
+        if (oldDefaultDev->m_isDefault) {
+            oldDefaultDev->m_isDefault = false;
+            oldDefaultIndex = index(i, 0);
+            break;
+        }
+    }
+    Q_ASSERT(oldDefaultIndex.isValid());
+    emit dataChanged(oldDefaultIndex, oldDefaultIndex);
+    m_devConfigs.at(idx)->m_isDefault = true;
+    const QModelIndex newDefaultIndex = index(idx, 0);
+    emit dataChanged(newDefaultIndex, newDefaultIndex);
+}
+
 MaemoDeviceConfigurations::MaemoDeviceConfigurations(QObject *parent)
     : QAbstractListModel(parent)
 {
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.h
index 7f889a27cdb..c221267a949 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurations.h
@@ -104,6 +104,7 @@ public:
     QString name() const { return m_name; }
     DeviceType type() const { return m_type; }
     QString portsSpec() const { return m_portsSpec; }
+    bool isDefault() const { return m_isDefault; }
     Id internalId() const { return m_internalId; }
     static QString portsRegExpr();
 
@@ -164,6 +165,7 @@ public:
     void setDeviceType(int i, const MaemoDeviceConfig::DeviceType type);
     void setSshParameters(int i, const Core::SshConnectionParameters &params);
     void setPortsSpec(int i, const QString &portsSpec);
+    void setDefaultDevice(int index);
 
     virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
     virtual QVariant data(const QModelIndex &index,
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.cpp
index 33a4e60d80f..3f5e4c0ee53 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.cpp
@@ -164,6 +164,8 @@ void MaemoDeviceConfigurationsSettingsWidget::initGui()
     connect(m_ui->configurationComboBox, SIGNAL(currentIndexChanged(int)),
         SLOT(currentConfigChanged(int)));
     currentConfigChanged(currentIndex());
+    connect(m_ui->defaultDeviceButton, SIGNAL(clicked()),
+        SLOT(setDefaultDevice()));
 }
 
 void MaemoDeviceConfigurationsSettingsWidget::addConfig()
@@ -194,6 +196,7 @@ void MaemoDeviceConfigurationsSettingsWidget::deleteConfig()
 void MaemoDeviceConfigurationsSettingsWidget::displayCurrent()
 {
     const MaemoDeviceConfig::ConstPtr &current = currentConfig();
+    m_ui->defaultDeviceButton->setEnabled(!current->isDefault());
     const SshConnectionParameters &sshParams = current->sshParameters();
     if (current->type() == MaemoDeviceConfig::Physical)
         m_ui->deviceButton->setChecked(true);
@@ -356,6 +359,12 @@ void MaemoDeviceConfigurationsSettingsWidget::setDefaultKeyFilePath()
     m_devConfigs->setDefaultSshKeyFilePath(m_ui->keyFileLineEdit->path());
 }
 
+void MaemoDeviceConfigurationsSettingsWidget::setDefaultDevice()
+{
+    m_devConfigs->setDefaultDevice(currentIndex());
+    m_ui->defaultDeviceButton->setEnabled(false);
+}
+
 void MaemoDeviceConfigurationsSettingsWidget::setPrivateKey(const QString &path)
 {
     m_ui->keyFileLineEdit->setPath(path);
@@ -456,6 +465,7 @@ void MaemoDeviceConfigurationsSettingsWidget::currentConfigChanged(int index)
         m_ui->remoteProcessesButton->setEnabled(false);
         clearDetails();
         m_ui->detailsWidget->setEnabled(false);
+        m_ui->defaultDeviceButton->setEnabled(false);
     } else {
         m_ui->removeConfigButton->setEnabled(true);
         m_ui->testConfigButton->setEnabled(true);
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.h
index a97bdab4ec8..e073c3df720 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.h
@@ -85,6 +85,7 @@ private slots:
     void handleFreePortsChanged();
     void showRemoteProcesses();
     void setDefaultKeyFilePath();
+    void setDefaultDevice();
 
     // For configuration testing.
     void testConfig();
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.ui b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.ui
index 7a302805116..a86d0af11d8 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.ui
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeviceconfigurationssettingswidget.ui
@@ -422,6 +422,16 @@
        </property>
       </widget>
      </item>
+     <item>
+      <widget class="QPushButton" name="defaultDeviceButton">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="text">
+        <string>Set As Default</string>
+       </property>
+      </widget>
+     </item>
      <item>
       <spacer name="verticalSpacer">
        <property name="orientation">
-- 
GitLab