6 #include <QStringListModel>
8 #include "ui_callsigncompleter.h"
18 using namespace swift::misc::aviation;
19 using namespace swift::misc::network;
20 using namespace swift::misc::simulation;
22 using namespace swift::core::context;
26 CCallsignCompleter::CCallsignCompleter(QWidget *parent) : QFrame(parent), ui(new Ui::
CCallsignCompleter)
28 Q_ASSERT_X(
sGui, Q_FUNC_INFO,
"Need sGui");
32 ui->le_Callsign->setValidator(ucv);
33 ui->le_Callsign->setCompleter(*completer());
34 ui->led_Status->setToolTips(
"connected",
"disconnected");
35 ui->led_Status->setShape(CLedWidget::Rounded);
36 ui->led_Status->setToolTips(
"network connected",
"network disconnected",
"data");
37 ui->led_Status->setShape(CLedWidget::Rounded);
38 connect(ui->le_Callsign, &QLineEdit::editingFinished,
this, &CCallsignCompleter::onEditingFinished);
39 connect(
sGui->
getIContextNetwork(), &IContextNetwork::changedAircraftInRange, &m_dsAircraftsInRangeChanged,
40 &CDigestSignal::inputSignal);
42 &CCallsignCompleter::onChangedConnectionStatus, Qt::QueuedConnection);
50 const QString csString = ui->le_Callsign->text().trimmed().toUpper();
52 onlyKnownCallsign ? this->isValidKnownCallsign(csString) : CCallsign::isValidAircraftCallsign(csString);
54 return CCallsign(csString, CCallsign::Aircraft);
63 const QString csString = ui->le_Callsign->text().trimmed().toUpper();
64 return this->isValidKnownCallsign(csString);
69 if (ui->le_Callsign->isReadOnly() == readOnly) {
return; }
70 ui->le_Callsign->setReadOnly(readOnly);
71 this->setStyleSheet(this->styleSheet());
74 void CCallsignCompleter::updateCallsignsFromContext()
78 if (completer()->wasUpdatedWithinTime(1500)) {
return; }
95 ui->led_Status->setTriState(500);
98 void CCallsignCompleter::onEditingFinished()
101 const bool changed = (cs.
asString() == m_lastValue);
111 void CCallsignCompleter::onChangedAircraftInRange() { this->updateCallsignsFromContext(); }
117 ui->led_Status->setOn(connected);
118 ui->le_Callsign->clear();
119 ui->le_Callsign->setEnabled(connected);
120 if (!connected) { completer()->
clearData(); }
123 bool CCallsignCompleter::isValidKnownCallsign(
const QString &callsignString)
const
125 if (!CCallsign::isValidAircraftCallsign(callsignString)) {
return false; }
126 if (!completer()) {
return false; }
127 return completer()->
contains(callsignString);
130 CSharedStringListCompleter *CCallsignCompleter::completer()
132 static CSharedStringListCompleter *c =
new CSharedStringListCompleter();
const context::IContextOwnAircraft * getIContextOwnAircraft() const
Direct access to contexts if a CCoreFacade has been initialized.
const context::IContextNetwork * getIContextNetwork() const
Direct access to contexts if a CCoreFacade has been initialized.
bool isShuttingDown() const
Is application shutting down?
virtual swift::misc::aviation::CCallsignSet getAircraftInRangeCallsigns() const =0
Aircraft callsigns.
virtual swift::misc::simulation::CSimulatedAircraftList getAircraftInRange() const =0
Aircraft list.
virtual swift::misc::simulation::CSimulatedAircraft getOwnAircraft() const =0
Get own aircraft.
bool contains(const QString &value, Qt::CaseSensitivity cs=Qt::CaseInsensitive) const
Contains the string completer the given value.
bool updateData(const QStringList &data, int cacheTimeMs)
Update data.
void clearData()
Clear completer data.
Completer for aircraft callsigns.
void setReadOnly(bool readOnly)
Set read only.
virtual ~CCallsignCompleter()
Dtor.
QString getRawCallsignString() const
String as entered.
void setCallsign(const swift::misc::aviation::CCallsign &cs)
Prefill wit callsign.
bool hasValidCallsign() const
Is valid callsign?
swift::misc::aviation::CCallsign getCallsign(bool onlyKnownCallsign=true) const
Get the entered callsign.
void validChangedCallsignEntered()
Changed callsign entered.
iterator insert(const_iterator hint, const T &value)
For compatibility with std::inserter.
void inputSignal()
Received input signal, or manually trigger.
Value object encapsulating information of a callsign.
const QString & asString() const
Get callsign (normalized)
bool isEmpty() const
Is empty?
bool isValid() const
Valid callsign?
Value object for a set of callsigns.
QStringList getCallsignStrings(bool sorted=false) const
The callsign strings.
Value object encapsulating information about a connection status.
bool isConnected() const
Query status.
const aviation::CCallsign & getCallsign() const
Get callsign.
aviation::CCallsignSet getCallsignsWithSynchronizedParts() const
Callsigns of aircraft with synchronized parts.
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.
Free functions in swift::misc.