From 7aa3ca2dcb8564e6ddc98661e9d3914a258eee81 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Mon, 26 Aug 2013 15:34:39 +0200 Subject: [PATCH] Fixed port to not auto-reset --- src/ui/QGCToolBar.cc | 38 +++++++++++++++++++++++++------------- src/ui/QGCToolBar.h | 7 +++++++ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/ui/QGCToolBar.cc b/src/ui/QGCToolBar.cc index 520ac1c9d..28c586df5 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 0b82f9147..65495ec8c 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; -- 2.22.0