mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-02-03 09:44:01 -05:00
Remove APRS items from map on close.
This commit is contained in:
parent
a522653676
commit
e47689edda
@ -355,21 +355,31 @@ bool APRSGUI::handleMessage(const Message& message)
|
|||||||
MessageQueue *messageQueue = qobject_cast<MessageQueue*>(pipe->m_element);
|
MessageQueue *messageQueue = qobject_cast<MessageQueue*>(pipe->m_element);
|
||||||
SWGSDRangel::SWGMapItem *swgMapItem = new SWGSDRangel::SWGMapItem();
|
SWGSDRangel::SWGMapItem *swgMapItem = new SWGSDRangel::SWGMapItem();
|
||||||
|
|
||||||
|
QString name;
|
||||||
if (!aprs->m_objectName.isEmpty()) {
|
if (!aprs->m_objectName.isEmpty()) {
|
||||||
swgMapItem->setName(new QString(aprs->m_objectName));
|
name = aprs->m_objectName;
|
||||||
} else {
|
} else {
|
||||||
swgMapItem->setName(new QString(aprs->m_from));
|
name = aprs->m_from;
|
||||||
}
|
}
|
||||||
|
swgMapItem->setName(new QString(name));
|
||||||
|
|
||||||
swgMapItem->setLatitude(aprs->m_latitude);
|
swgMapItem->setLatitude(aprs->m_latitude);
|
||||||
swgMapItem->setLongitude(aprs->m_longitude);
|
swgMapItem->setLongitude(aprs->m_longitude);
|
||||||
swgMapItem->setAltitude(aprs->m_hasAltitude ? Units::feetToMetres(aprs->m_altitudeFt) : 0);
|
swgMapItem->setAltitude(aprs->m_hasAltitude ? Units::feetToMetres(aprs->m_altitudeFt) : 0);
|
||||||
swgMapItem->setAltitudeReference(1); // CLAMP_TO_GROUND
|
swgMapItem->setAltitudeReference(1); // CLAMP_TO_GROUND
|
||||||
|
swgMapItem->setFixedPosition(false);
|
||||||
|
if (aprs->m_hasTimestamp) {
|
||||||
|
swgMapItem->setPositionDateTime(new QString(aprs->m_timestamp.toString(Qt::ISODateWithMs)));
|
||||||
|
} else {
|
||||||
|
swgMapItem->setPositionDateTime(new QString(QDateTime::currentDateTime().toString(Qt::ISODateWithMs)));
|
||||||
|
}
|
||||||
|
// Need to set availableUntil for 3D track to be displayed
|
||||||
|
swgMapItem->setAvailableUntil(new QString(QDateTime::currentDateTime().addDays(1).toString(Qt::ISODateWithMs)));
|
||||||
if (aprs->m_objectKilled)
|
if (aprs->m_objectKilled)
|
||||||
{
|
{
|
||||||
swgMapItem->setImage(new QString(""));
|
swgMapItem->setImage(new QString(""));
|
||||||
swgMapItem->setText(new QString(""));
|
swgMapItem->setText(new QString(""));
|
||||||
|
m_mapItems.remove(name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -385,6 +395,9 @@ bool APRSGUI::handleMessage(const Message& message)
|
|||||||
m_settings.m_rainfallUnits == APRSSettings::MILLIMETRE
|
m_settings.m_rainfallUnits == APRSSettings::MILLIMETRE
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
|
if (!m_mapItems.contains(name)) {
|
||||||
|
m_mapItems.insert(name, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MainCore::MsgMapItem *msg = MainCore::MsgMapItem::create(m_aprs, swgMapItem);
|
MainCore::MsgMapItem *msg = MainCore::MsgMapItem::create(m_aprs, swgMapItem);
|
||||||
@ -577,9 +590,33 @@ APRSGUI::APRSGUI(PluginAPI* pluginAPI, FeatureUISet *featureUISet, Feature *feat
|
|||||||
|
|
||||||
APRSGUI::~APRSGUI()
|
APRSGUI::~APRSGUI()
|
||||||
{
|
{
|
||||||
|
QHashIterator<QString, bool> itr(m_mapItems);
|
||||||
|
while (itr.hasNext())
|
||||||
|
{
|
||||||
|
itr.next();
|
||||||
|
removeFromMap(itr.key());
|
||||||
|
}
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void APRSGUI::removeFromMap(const QString& name)
|
||||||
|
{
|
||||||
|
QList<ObjectPipe*> mapPipes;
|
||||||
|
MainCore::instance()->getMessagePipes().getMessagePipes(m_aprs, "mapitems", mapPipes);
|
||||||
|
|
||||||
|
for (const auto& pipe : mapPipes)
|
||||||
|
{
|
||||||
|
MessageQueue *messageQueue = qobject_cast<MessageQueue*>(pipe->m_element);
|
||||||
|
SWGSDRangel::SWGMapItem *swgMapItem = new SWGSDRangel::SWGMapItem();
|
||||||
|
|
||||||
|
swgMapItem->setName(new QString(name));
|
||||||
|
swgMapItem->setImage(new QString(""));
|
||||||
|
|
||||||
|
MainCore::MsgMapItem *msg = MainCore::MsgMapItem::create(m_aprs, swgMapItem);
|
||||||
|
messageQueue->push(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void APRSGUI::setWorkspaceIndex(int index)
|
void APRSGUI::setWorkspaceIndex(int index)
|
||||||
{
|
{
|
||||||
m_settings.m_workspaceIndex = index;
|
m_settings.m_workspaceIndex = index;
|
||||||
|
Loading…
Reference in New Issue
Block a user