8 #include "ui_airportcompleter.h"
16 using namespace swift::misc::aviation;
20 CAirportCompleter::CAirportCompleter(QWidget *parent) : QFrame(parent), ui(new Ui::
CAirportCompleter)
26 &CAirportCompleter::onAirportsChanged);
27 connect(ui->le_Icao, &QLineEdit::editingFinished,
this, &CAirportCompleter::onIcaoChanged);
28 connect(ui->le_Name, &QLineEdit::editingFinished,
this, &CAirportCompleter::onNameChanged);
29 connect(ui->le_Location, &QLineEdit::editingFinished,
this, &CAirportCompleter::onLocationChanged);
30 this->onAirportsChanged();
37 if (m_current == airport) {
return; }
49 ui->le_Icao->setReadOnly(readOnly);
50 ui->le_Location->setReadOnly(readOnly);
51 ui->le_Name->setReadOnly(readOnly);
58 ui->le_Location->clear();
62 void CAirportCompleter::onIcaoChanged()
70 void CAirportCompleter::onNameChanged()
72 const QString name(ui->le_Name->text());
78 void CAirportCompleter::onLocationChanged()
80 const QString location(ui->le_Location->text());
81 if (m_current.
getLocation() == location) {
return; }
86 void CAirportCompleter::onAirportsChanged()
90 ui->le_Icao->setCompleter(
new QCompleter(airports.
allIcaoCodes(
true), ui->le_Icao));
92 ui->le_Location->setCompleter(
95 if (ui->le_Icao->completer()->popup())
97 ui->le_Icao->completer()->setCaseSensitivity(Qt::CaseInsensitive);
98 ui->le_Icao->completer()->popup()->setObjectName(
"AirportCompleter.Icao");
100 ui->le_Icao->completer()->popup()->fontMetrics().size(Qt::TextSingleLine,
"FooBa").width();
101 ui->le_Icao->completer()->popup()->setMinimumWidth(w5chars * 5);
103 if (ui->le_Name->completer()->popup())
105 ui->le_Name->completer()->setCaseSensitivity(Qt::CaseInsensitive);
106 ui->le_Name->completer()->popup()->setObjectName(
"AirportCompleter.Name");
108 ui->le_Name->completer()->popup()->fontMetrics().size(Qt::TextSingleLine,
"FooBa").width();
109 ui->le_Name->completer()->popup()->setMinimumWidth(w5chars * 10);
111 if (ui->le_Location->completer()->popup())
113 ui->le_Location->completer()->setCaseSensitivity(Qt::CaseInsensitive);
114 ui->le_Location->completer()->popup()->setObjectName(
"AirportCompleter.Location");
116 ui->le_Location->completer()->popup()->fontMetrics().size(Qt::TextSingleLine,
"FooBa").width();
117 ui->le_Location->completer()->popup()->setMinimumWidth(w5chars * 10);
124 if (CAirportIcaoCode::isValidIcaoDesignator(icao,
true))
bool hasWebDataServices() const
Web data services available?
CWebDataServices * getWebDataServices() const
Get the web data services.
swift::misc::aviation::CAirport getAirportForIcaoDesignator(const QString &icao) const
Get airport for ICAO designator.
swift::misc::aviation::CAirportList getAirports() const
Get airports.
swift::misc::aviation::CAirport getAirportForNameOrLocation(const QString &nameOrLocation) const
Get airport for name of location.
Airport completer, UI element so select by ICAO, name or location.
virtual ~CAirportCompleter()
Destructor.
void clear()
Clear the form.
void setReadOnly(bool readOnly)
Read only.
void setAirport(const swift::misc::aviation::CAirport &airport)
Set airport.
void changedAirport(const swift::misc::aviation::CAirport &airport)
Airport has been changed.
QString getIcaoText() const
The raw ICAO code text.
Value object encapsulating information about an airpot.
virtual bool isNull() const
NULL airport?
const QString & getLocation() const
Get location (e.g. "London")
const QString & getDescriptiveName() const
Get descriptive name.
const QString & getIcaoAsString() const
Get ICAO code as string.
Value object for a list of airports.
QStringList allIcaoCodes(bool sorted) const
All ICAO codes.
QStringList allDescriptivesNames(bool sorted) const
All names.
QStringList allLocationsPlusOptionalDescription(bool sorted) const
All locations plus optional description.
SWIFT_GUI_EXPORT swift::gui::CGuiApplication * sGui
Single instance of GUI application object.
Backend services of the swift project, like dealing with the network or the simulators.
High level reusable GUI components.