From 96c27c1c5bc479cc1d91d4b8c04e18e05fb0d637 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 12 Jun 2017 01:29:27 +0200 Subject: [PATCH] Ref T80, improved completer * no invalid combined codes in list * sort by rank * refresh completer strings when new codes are added --- .../dbaircrafticaoselectorcomponent.cpp | 16 ++++++++++------ .../components/dbaircrafticaoselectorcomponent.h | 3 ++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp b/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp index 4bb8c1d5f..557fed827 100644 --- a/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp +++ b/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp @@ -177,11 +177,15 @@ namespace BlackGui const QStringList &CDbAircraftIcaoSelectorComponent::completerStrings() { - // done for performance reasons - // init only once, future instance can share thte list - // only to be called when data are read! - static const QStringList cs(sGui->getWebDataServices()->getAircraftIcaoCodes().toCompleterStrings(true, true, true)); - return cs; + const int c = sGui->getWebDataServices()->getAircraftIcaoCodesCount(); + if (c != m_completerStrings.size()) + { + CAircraftIcaoCodeList icaos(sGui->getWebDataServices()->getAircraftIcaoCodes()); + icaos.removeInvalidCombinedCodes(); + icaos.sortByDesignatorManufacturerAndRank(); + m_completerStrings = icaos.toCompleterStrings(true, true, true); + } + return m_completerStrings; } void CDbAircraftIcaoSelectorComponent::ps_codesRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) @@ -191,7 +195,7 @@ namespace BlackGui { if (count > 0) { - QCompleter *c = new QCompleter(completerStrings(), this); + QCompleter *c = new QCompleter(this->completerStrings(), this); c->setCaseSensitivity(Qt::CaseInsensitive); c->setCompletionMode(QCompleter::PopupCompletion); c->setMaxVisibleItems(10); diff --git a/src/blackgui/components/dbaircrafticaoselectorcomponent.h b/src/blackgui/components/dbaircrafticaoselectorcomponent.h index 3afbe21e9..94cb61ff4 100644 --- a/src/blackgui/components/dbaircrafticaoselectorcomponent.h +++ b/src/blackgui/components/dbaircrafticaoselectorcomponent.h @@ -118,10 +118,11 @@ namespace BlackGui QScopedPointer m_completerIcaoDescription; BlackMisc::Aviation::CAircraftIcaoCode m_currentIcao; Display m_display = DisplayIcaoAndId; + QStringList m_completerStrings; //!< the completer strings //! Get the completer strings //! \remark shared for performance reasons - static const QStringList &completerStrings(); + const QStringList &completerStrings(); }; } // ns } // ns