From 9f9b4c35265e541c931bc3db5ba120c819520f7b Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 12 May 2019 22:35:23 +0200 Subject: [PATCH] Callsign completer signal for entered callsign * digest signals * validChangedCallsignEntered --- src/blackgui/components/aircraftpartshistory.cpp | 2 +- src/blackgui/components/callsigncompleter.cpp | 7 ++++--- src/blackgui/components/callsigncompleter.h | 13 +++++++++---- src/blackgui/components/interpolationcomponent.cpp | 2 +- src/blackgui/components/interpolationlogdisplay.cpp | 2 +- .../components/modelmatcherlogcomponent.cpp | 2 +- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/blackgui/components/aircraftpartshistory.cpp b/src/blackgui/components/aircraftpartshistory.cpp index badac6e70..8a2371985 100644 --- a/src/blackgui/components/aircraftpartshistory.cpp +++ b/src/blackgui/components/aircraftpartshistory.cpp @@ -40,7 +40,7 @@ namespace BlackGui m_timerUpdateHistory.setInterval(2 * 1000); this->initGui(); m_text.setDefaultStyleSheet(CStatusMessageList::htmlStyleSheet()); - connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validCallsignEntered, this, &CAircraftPartsHistory::callsignEntered); + connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validChangedCallsignEntered, this, &CAircraftPartsHistory::callsignEntered); connect(ui->cb_PartsHistoryEnabled, &QCheckBox::toggled, this, &CAircraftPartsHistory::toggleHistoryEnabled); if (this->hasContexts()) diff --git a/src/blackgui/components/callsigncompleter.cpp b/src/blackgui/components/callsigncompleter.cpp index 6e15b615e..390f4508b 100644 --- a/src/blackgui/components/callsigncompleter.cpp +++ b/src/blackgui/components/callsigncompleter.cpp @@ -91,12 +91,13 @@ namespace BlackGui void CCallsignCompleter::onEditingFinished() { const CCallsign cs = this->getCallsign(); - if (cs.asString() == m_lastValue) { return; } // avoid unnecessary signals + const bool changed = (cs.asString() == m_lastValue); m_lastValue = cs.asString(); - emit this->editingFinished(); + m_dsEditingFinished.inputSignal(); if (cs.isValid()) { - emit this->validCallsignEntered(); + m_dsValidCallsignEntered.inputSignal(); + if (changed) { emit this->validChangedCallsignEntered(); } } } diff --git a/src/blackgui/components/callsigncompleter.h b/src/blackgui/components/callsigncompleter.h index c4a5aee9d..68050164d 100644 --- a/src/blackgui/components/callsigncompleter.h +++ b/src/blackgui/components/callsigncompleter.h @@ -38,7 +38,7 @@ namespace BlackGui explicit CCallsignCompleter(QWidget *parent = nullptr); //! Dtor - virtual ~CCallsignCompleter(); + virtual ~CCallsignCompleter() override; //! Get the entered callsign BlackMisc::Aviation::CCallsign getCallsign(bool onlyKnownCallsign = true) const; @@ -56,11 +56,14 @@ namespace BlackGui void setReadOnly(bool readOnly); signals: - //! Callsign entered - void validCallsignEntered(); + //! Changed callsign entered + void validChangedCallsignEntered(); + + //! Changed callsign entered + void validCallsignEnteredDigest(); //! Editing finished - void editingFinished(); + void editingFinishedDigest(); private: void updateCallsignsFromContext(); @@ -74,6 +77,8 @@ namespace BlackGui QScopedPointer ui; BlackMisc::CDigestSignal m_dsAircraftsInRangeChanged { this, &CCallsignCompleter::onChangedAircraftInRange, 5000, 5 }; + BlackMisc::CDigestSignal m_dsEditingFinished { this, &CCallsignCompleter::editingFinishedDigest, 500, 3 }; + BlackMisc::CDigestSignal m_dsValidCallsignEntered { this, &CCallsignCompleter::validCallsignEnteredDigest, 500, 3 }; QString m_lastValue; }; } // ns diff --git a/src/blackgui/components/interpolationcomponent.cpp b/src/blackgui/components/interpolationcomponent.cpp index 9bc9b4585..7366ce7f8 100644 --- a/src/blackgui/components/interpolationcomponent.cpp +++ b/src/blackgui/components/interpolationcomponent.cpp @@ -29,7 +29,7 @@ namespace BlackGui ui->tw_InterpolationSetup->setCurrentIndex(0); connect(ui->comp_InterpolationSetup, &CInterpolationSetupComponent::requestRenderingRestrictionsWidget, this, &CInterpolationComponent::requestRenderingRestrictionsWidget); - connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validCallsignEntered, this, &CInterpolationComponent::displayInterpolationMessages); + connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validChangedCallsignEntered, this, &CInterpolationComponent::displayInterpolationMessages); connect(ui->pb_ReloadInterpolationMessages, &QPushButton::released, this, &CInterpolationComponent::displayInterpolationMessages); } diff --git a/src/blackgui/components/interpolationlogdisplay.cpp b/src/blackgui/components/interpolationlogdisplay.cpp index 9566f3aa7..c19c7d22a 100644 --- a/src/blackgui/components/interpolationlogdisplay.cpp +++ b/src/blackgui/components/interpolationlogdisplay.cpp @@ -55,7 +55,7 @@ namespace BlackGui ui->tvp_InboundAircraftSituations->setWithMenuRequestElevation(true); connect(&m_updateTimer, &QTimer::timeout, this, &CInterpolationLogDisplay::updateLog); - connect(ui->comp_CallsignCompleter, &CCallsignCompleter::editingFinished, this, &CInterpolationLogDisplay::onCallsignEntered); + connect(ui->comp_CallsignCompleter, &CCallsignCompleter::editingFinishedDigest, this, &CInterpolationLogDisplay::onCallsignEntered); connect(ui->hs_UpdateTime, &QSlider::valueChanged, this, &CInterpolationLogDisplay::onSliderChanged); connect(ui->pb_StartStop, &QPushButton::released, this, &CInterpolationLogDisplay::toggleStartStop); connect(ui->pb_ResetLastSent, &QPushButton::released, this, &CInterpolationLogDisplay::resetLastSentValues); diff --git a/src/blackgui/components/modelmatcherlogcomponent.cpp b/src/blackgui/components/modelmatcherlogcomponent.cpp index 64250c59d..5161a0fe8 100644 --- a/src/blackgui/components/modelmatcherlogcomponent.cpp +++ b/src/blackgui/components/modelmatcherlogcomponent.cpp @@ -34,7 +34,7 @@ namespace BlackGui { ui->setupUi(this); m_text.setDefaultStyleSheet(CStatusMessageList::htmlStyleSheet()); - connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validCallsignEntered, this, &CModelMatcherLogComponent::callsignEntered); + connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validCallsignEnteredDigest, this, &CModelMatcherLogComponent::callsignEntered); } CModelMatcherLogComponent::~CModelMatcherLogComponent()