diff --git a/src/ui/QGCToolBar.cc b/src/ui/QGCToolBar.cc index 520ac1c9d043d42a7ff258e0444c079a2c7a25e9..28c586df5b5e8109794b48f9bc28d1697bdbe1ee 100644 --- a/src/ui/QGCToolBar.cc +++ b/src/ui/QGCToolBar.cc @@ -33,6 +33,7 @@ QGCToolBar::QGCToolBar(QWidget *parent) : QToolBar(parent), mav(NULL), userBaudChoice(false), + userPortChoice(false), changed(true), batteryPercent(0), batteryVoltage(0), @@ -182,7 +183,7 @@ void QGCToolBar::createUI() baudcomboBox->setCurrentIndex(baudcomboBox->findData(57600)); addWidget(baudcomboBox); connect(baudcomboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(baudSelected(int))); - + connect(portComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(portSelected(int))); connectButton = new QPushButton(tr("Connect"), this); connectButton->setObjectName("connectButton"); @@ -254,9 +255,16 @@ void QGCToolBar::resetToolbarUI() void QGCToolBar::baudSelected(int index) { + Q_UNUSED(index); userBaudChoice = true; } +void QGCToolBar::portSelected(int index) +{ + Q_UNUSED(index); + userPortChoice = true; +} + void QGCToolBar::setPerspectiveChangeActions(const QList &actions) { if (actions.count() > 1) @@ -656,7 +664,6 @@ void QGCToolBar::removeLink(LinkInterface* link) } void QGCToolBar::updateComboBox() { -// portComboBox->clear(); if (currentLink) { SerialLink *slink = qobject_cast(currentLink); @@ -669,26 +676,31 @@ void QGCToolBar::updateComboBox() } } - if (slink->getPortName().trimmed().length() > 0) - { - portComboBox->setCurrentIndex(portComboBox->findData(slink->getPortName())); - portComboBox->setEditText(slink->getPortName()); - } - else - { - if (portlist.length() > 0) + if (!userPortChoice) { + if (slink->getPortName().trimmed().length() > 0) { - portComboBox->setEditText(portlist.last()); + int portIndex = portComboBox->findData(slink->getPortName()); + if (portIndex >= 0) { + portComboBox->setCurrentIndex(portIndex); + portComboBox->setEditText(slink->getPortName()); + } } else { - portComboBox->setEditText(tr("No serial port found")); + if (portlist.length() > 0) + { + portComboBox->setEditText(portlist.last()); + } + else + { + portComboBox->setEditText(tr("No serial port found")); + } } } if (!userBaudChoice) { int index = baudcomboBox->findData(slink->getBaudRate()); - if (index > 0) + if (index >= 0) baudcomboBox->setCurrentIndex(index); } } diff --git a/src/ui/QGCToolBar.h b/src/ui/QGCToolBar.h index 0b82f914739f6dc1453220134450f1afca657606..65495ec8ce339e63451b8fe1de7a41e757769749 100644 --- a/src/ui/QGCToolBar.h +++ b/src/ui/QGCToolBar.h @@ -93,6 +93,12 @@ public slots: */ void baudSelected(int index); + /** + * @brief User selected port + * @param index The current index of the combo box + */ + void portSelected(int index); + protected: void storeSettings(); void loadSettings(); @@ -117,6 +123,7 @@ protected: QComboBox *baudcomboBox; QTimer portBoxTimer; bool userBaudChoice; + bool userPortChoice; bool changed; float batteryPercent; float batteryVoltage;