Ref T180, check callsign completer agains shared values

* avoid unnecessary loads via DBus
* fixes wrong m_validCallsign values (not updated)
* no signal when edited but no value changed
This commit is contained in:
Klaus Basan
2017-11-05 05:06:05 +01:00
parent 2d9bcc3e06
commit 4972fe0af2
2 changed files with 8 additions and 6 deletions

View File

@@ -51,7 +51,7 @@ namespace BlackGui
{ {
const QString csString = ui->le_Callsign->text().trimmed().toUpper(); const QString csString = ui->le_Callsign->text().trimmed().toUpper();
if (!this->isValidKnownCallsign(csString)) { return CCallsign(); } if (!this->isValidKnownCallsign(csString)) { return CCallsign(); }
return CCallsign(csString); return CCallsign(csString, CCallsign::Aircraft);
} }
QString CCallsignCompleter::getRawCallsignString() const QString CCallsignCompleter::getRawCallsignString() const
@@ -70,8 +70,8 @@ namespace BlackGui
if (!sGui || sGui->isShuttingDown()) { return; } if (!sGui || sGui->isShuttingDown()) { return; }
if (!sGui->getIContextNetwork()) { return; } if (!sGui->getIContextNetwork()) { return; }
if (completer()->wasUpdatedWithinTime(1500)) { return; } // avoid context call via DBus if (completer()->wasUpdatedWithinTime(1500)) { return; } // avoid context call via DBus
m_validCallsigns = sGui->getIContextNetwork()->getAircraftInRangeCallsigns(); const CCallsignSet validCallsigns = sGui->getIContextNetwork()->getAircraftInRangeCallsigns();
const QStringList modelData = m_validCallsigns.getCallsignStrings(true); const QStringList modelData = validCallsigns.getCallsignStrings(true);
completer()->updateData(modelData, 2000); completer()->updateData(modelData, 2000);
ui->led_Status->setTriState(500); ui->led_Status->setTriState(500);
} }
@@ -79,6 +79,8 @@ namespace BlackGui
void CCallsignCompleter::onEditingFinished() void CCallsignCompleter::onEditingFinished()
{ {
const CCallsign cs = this->getCallsign(); const CCallsign cs = this->getCallsign();
if (cs.asString() == m_lastValue) { return; } // avoid unnecessary signals
m_lastValue = cs.asString();
emit this->editingFinished(); emit this->editingFinished();
if (cs.isValid()) if (cs.isValid())
{ {
@@ -106,9 +108,9 @@ namespace BlackGui
bool CCallsignCompleter::isValidKnownCallsign(const QString &callsignString) const bool CCallsignCompleter::isValidKnownCallsign(const QString &callsignString) const
{ {
if (m_validCallsigns.isEmpty()) { return false; }
if (!CCallsign::isValidAircraftCallsign(callsignString)) { return false; } if (!CCallsign::isValidAircraftCallsign(callsignString)) { return false; }
return m_validCallsigns.contains(CCallsign(callsignString)); if (!completer()) { return false; }
return completer()->contains(callsignString);
} }
CSharedStringListCompleter *CCallsignCompleter::completer() CSharedStringListCompleter *CCallsignCompleter::completer()

View File

@@ -68,8 +68,8 @@ namespace BlackGui
static CSharedStringListCompleter *completer(); static CSharedStringListCompleter *completer();
QScopedPointer <Ui::CCallsignCompleter> ui; QScopedPointer <Ui::CCallsignCompleter> ui;
BlackMisc::Aviation::CCallsignSet m_validCallsigns;
BlackMisc::CDigestSignal m_dsAircraftsInRangeChanged { this, &CCallsignCompleter::onChangedAircraftInRange, 5000, 5 }; BlackMisc::CDigestSignal m_dsAircraftsInRangeChanged { this, &CCallsignCompleter::onChangedAircraftInRange, 5000, 5 };
QString m_lastValue;
}; };
} // ns } // ns
} // ns } // ns