You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.1 KiB
74 lines
2.1 KiB
#include "QGCWaypointListMulti.h" |
|
#include "ui_QGCWaypointListMulti.h" |
|
#include "UASManager.h" |
|
|
|
void* QGCWaypointListMulti::_offlineUAS = NULL; |
|
|
|
QGCWaypointListMulti::QGCWaypointListMulti(QWidget *parent) : |
|
QWidget(parent), |
|
_ui(new Ui::QGCWaypointListMulti) |
|
{ |
|
_ui->setupUi(this); |
|
setMinimumSize(600, 80); |
|
|
|
connect(UASManager::instance(), &UASManager::UASCreated, this, &QGCWaypointListMulti::_systemCreated); |
|
connect(UASManager::instance(), &UASManager::activeUASSet, this, &QGCWaypointListMulti::_systemSetActive); |
|
|
|
WaypointList* list = new WaypointList(_ui->stackedWidget, UASManager::instance()->getActiveUASWaypointManager()); |
|
_lists.insert(_offlineUAS, list); |
|
_ui->stackedWidget->addWidget(list); |
|
|
|
if (UASManager::instance()->getActiveUAS()) { |
|
_systemCreated(UASManager::instance()->getActiveUAS()); |
|
_systemSetActive(UASManager::instance()->getActiveUAS()); |
|
} |
|
|
|
} |
|
|
|
QGCWaypointListMulti::~QGCWaypointListMulti() |
|
{ |
|
delete _ui; |
|
} |
|
|
|
void QGCWaypointListMulti::_systemDeleted(QObject* uas) |
|
{ |
|
// Do not dynamic cast or de-reference QObject, since object is either in destructor or may have already |
|
// been destroyed. |
|
|
|
if (uas) { |
|
WaypointList* list = _lists.value(uas, NULL); |
|
if (list) { |
|
delete list; |
|
_lists.remove(uas); |
|
} |
|
} |
|
} |
|
|
|
void QGCWaypointListMulti::_systemCreated(UASInterface* uas) |
|
{ |
|
WaypointList* list = new WaypointList(_ui->stackedWidget, uas->getWaypointManager()); |
|
_lists.insert(uas, list); |
|
_ui->stackedWidget->addWidget(list); |
|
// Ensure widget is deleted when system is deleted |
|
connect(uas, &QObject::destroyed, this, &QGCWaypointListMulti::_systemDeleted); |
|
} |
|
|
|
void QGCWaypointListMulti::_systemSetActive(UASInterface* uas) |
|
{ |
|
WaypointList* list = _lists.value(uas, NULL); |
|
if (list) { |
|
_ui->stackedWidget->setCurrentWidget(list); |
|
} |
|
} |
|
|
|
void QGCWaypointListMulti::changeEvent(QEvent *e) |
|
{ |
|
QWidget::changeEvent(e); |
|
switch (e->type()) { |
|
case QEvent::LanguageChange: |
|
_ui->retranslateUi(this); |
|
break; |
|
default: |
|
break; |
|
} |
|
}
|
|
|