diff --git a/src/ui/CommConfigurationWindow.cc b/src/ui/CommConfigurationWindow.cc index a000658dfa523e830a8270e8742e0c15c0dcd68f..9cb2370f90d6c398ba90e7ae5a004e05b4a08cfd 100644 --- a/src/ui/CommConfigurationWindow.cc +++ b/src/ui/CommConfigurationWindow.cc @@ -210,21 +210,32 @@ QAction* CommConfigurationWindow::getAction() void CommConfigurationWindow::setLinkType(int linktype) { #ifdef XBEELINK - // close old configuration window - this->window()->close(); + if(link->isConnected()) + { + // close old configuration window + this->window()->close(); + } + else + { + // delete old configuration window + this->remove(); + } + LinkInterface *tmpLink(NULL); switch(linktype) { case 4: { XbeeLink *xbee = new XbeeLink(); - MainWindow::instance()->addLink(xbee); + tmpLink = xbee; + MainWindow::instance()->addLink(tmpLink); break; } case 0: { SerialLink *serial = new SerialLink(); - MainWindow::instance()->addLink(serial); + tmpLink = serial; + MainWindow::instance()->addLink(tmpLink); break; } default: @@ -233,6 +244,16 @@ void CommConfigurationWindow::setLinkType(int linktype) break; } } + // trigger new window + QList actions = MainWindow::instance()->listLinkMenuActions(); + foreach (QAction* act, actions) + { + if (act->data().toInt() == LinkManager::instance()->getLinks().indexOf(tmpLink)) + { + act->trigger(); + break; + } + } #endif // XBEELINK } diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc index 1f39e4a270f82bdce497007c098cc9a21cd91032..882a23fca1e940582636539992d6a0f230aa1383 100644 --- a/src/ui/MainWindow.cc +++ b/src/ui/MainWindow.cc @@ -2002,3 +2002,7 @@ void MainWindow::loadDataView(QString fileName) } +QList MainWindow::listLinkMenuActions(void) +{ + return ui.menuNetwork->actions(); +} \ No newline at end of file diff --git a/src/ui/MainWindow.h b/src/ui/MainWindow.h index 6b21e2f43f479cf2c9a083edcb6f278ddb79d972..94098066b30587449d654a814664c0d3d8a31929 100644 --- a/src/ui/MainWindow.h +++ b/src/ui/MainWindow.h @@ -35,6 +35,7 @@ This file is part of the QGROUNDCONTROL project #include #include #include +#include #include "ui_MainWindow.h" #include "LinkManager.h" @@ -215,6 +216,9 @@ public slots: /** @brief Updates a QDockWidget's location */ void updateLocationSettings (Qt::DockWidgetArea location); +public: + QList listLinkMenuActions(void); + protected: MainWindow(QWidget *parent = 0);