|
@@ -80,7 +80,7 @@ const QString TIME_REGEX_PATTERN = "([01]?[0-9]?|2[0-3]):?[0-5][0-9]?";//
|
|
|
const QString IATA = "[\\w]{3}";
|
|
|
const QString ICAO = "[\\w0-9]{4}";
|
|
|
const QString LOC_REGEX_PATTERN = IATA + "|" + ICAO;
|
|
|
-const QString AIRCRAFT_REGEX_PATTERN = "([\\w0-9]+-)?[\\w0-9]+";
|
|
|
+const QString AIRCRAFT_REGEX_PATTERN = "[\\w0-9]+-?([\\w0-9]?)+";
|
|
|
const QString PILOT_NAME_REGEX_PATTERN = "[\\w]+,? ?[\\w]+";
|
|
|
|
|
|
/// Invalid characters (validators keep text even if it returns Invalid, see `onInputRejected` below)
|
|
@@ -175,7 +175,9 @@ void NewFlight::restoreSettings()
|
|
|
* Window Construction
|
|
|
*/
|
|
|
|
|
|
-NewFlight::NewFlight(QWidget *parent, QStringList locationList) :
|
|
|
+NewFlight::NewFlight(QWidget *parent, QStringList locationList,
|
|
|
+ QStringList registrationList,
|
|
|
+ QStringList pilotNameList) :
|
|
|
QDialog(parent),
|
|
|
ui(new Ui::NewFlight)
|
|
|
{
|
|
@@ -189,11 +191,17 @@ NewFlight::NewFlight(QWidget *parent, QStringList locationList) :
|
|
|
}
|
|
|
|
|
|
// Airport Line Edits Auto Completion
|
|
|
- QCompleter *locationCompleter = new QCompleter(locationList);
|
|
|
+ auto *locationCompleter = new QCompleter(locationList);
|
|
|
locationCompleter->setCaseSensitivity(Qt::CaseInsensitive);
|
|
|
locationCompleter->setCompletionMode(QCompleter::PopupCompletion);
|
|
|
ui->newDeptLocLineEdit->setCompleter(locationCompleter);
|
|
|
ui->newDestLocLineEdit->setCompleter(locationCompleter);
|
|
|
+ // Aircraft Line Edits Auto Completion
|
|
|
+ auto *aircraftCompleter = new QCompleter(registrationList);
|
|
|
+ aircraftCompleter->setCaseSensitivity(Qt::CaseInsensitive);
|
|
|
+ aircraftCompleter->setCompletionMode(QCompleter::PopupCompletion);
|
|
|
+ aircraftCompleter->setFilterMode(Qt::MatchContains);
|
|
|
+ ui->newAcft->setCompleter(aircraftCompleter);
|
|
|
// To Do: Aircraft and Pilot Names Completer
|
|
|
|
|
|
// Groups for CheckBoxes
|
|
@@ -408,55 +416,29 @@ void NewFlight::on_newDoft_editingFinished()
|
|
|
|
|
|
/// Aircraft
|
|
|
|
|
|
-void NewFlight::on_newAcft_textEdited(const QString &arg1)
|
|
|
+void NewFlight::on_newAcft_inputRejected()
|
|
|
{
|
|
|
- if(arg1.length()>1)
|
|
|
- {
|
|
|
- QStringList acftList = dbAircraft::newAcftGetString(arg1);
|
|
|
- QCompleter *acftCompleter = new QCompleter(acftList, this);
|
|
|
- acftCompleter->setCaseSensitivity(Qt::CaseInsensitive);
|
|
|
- acftCompleter->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
|
|
|
- ui->newAcft->setCompleter(acftCompleter);
|
|
|
- }
|
|
|
+ onInputRejected(ui->newAcft, QRegularExpression(AIRCRAFT_INVALID_RGX));
|
|
|
}
|
|
|
|
|
|
void NewFlight::on_newAcft_editingFinished()
|
|
|
{
|
|
|
acft = "-1";// set invalid
|
|
|
+ QString registration;
|
|
|
|
|
|
- if(ui->newAcft->text().contains(" "))// is input from QCompleter
|
|
|
- {
|
|
|
- QStringList input = ui->newAcft->text().split(" ");
|
|
|
- QString registration = input[0].trimmed();
|
|
|
- QStringList result = dbAircraft::newAcftGetString(registration);
|
|
|
- if(result.length() > 0)
|
|
|
- {
|
|
|
- ui->newAcft->setText(result[0]);
|
|
|
- acft = dbAircraft::retreiveTailId(registration);
|
|
|
- }else
|
|
|
- {
|
|
|
- acft = "-1";
|
|
|
- }
|
|
|
- }else // is input from user
|
|
|
- {
|
|
|
- QString input = ui->newAcft->text();
|
|
|
- QStringList result = dbAircraft::newAcftGetString(input);
|
|
|
- if(result.length() > 0)
|
|
|
- {
|
|
|
- ui->newAcft->setText(result[0]);
|
|
|
+ auto registrationList = dbAircraft::retreiveRegistrationList();
|
|
|
+ auto line_edit = ui->newAcft;
|
|
|
|
|
|
- QStringList input = ui->newAcft->text().split(" ");
|
|
|
- QString registration = input[0].trimmed();
|
|
|
- acft = dbAircraft::retreiveTailId(registration);
|
|
|
- }else
|
|
|
- {
|
|
|
- acft = "-1";
|
|
|
- }
|
|
|
- }
|
|
|
+ QStringList match = registrationList.filter(line_edit->text(), Qt::CaseInsensitive);
|
|
|
|
|
|
+ if(match.length() != 0) {
|
|
|
+ acft = match[0];
|
|
|
+ line_edit->setText(acft);
|
|
|
+ onEditingFinished(line_edit);
|
|
|
+ }else{
|
|
|
+ DEBUG("Registration not in List!");
|
|
|
+ emit line_edit->inputRejected();
|
|
|
|
|
|
- if(acft == "-1")
|
|
|
- {
|
|
|
QMessageBox::StandardButton reply;
|
|
|
reply = QMessageBox::question(this, "No aircraft found", "No aircraft found.\n Would you like to add a new aircraft to the database?",
|
|
|
QMessageBox::Yes|QMessageBox::No);
|
|
@@ -466,10 +448,7 @@ void NewFlight::on_newAcft_editingFinished()
|
|
|
ui->newAcft->setText("");
|
|
|
ui->newAcft->setFocus();
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
- qDebug() << "Editing finished. Acft: " << acft;
|
|
|
}
|
|
|
|
|
|
/// Pilot(s)
|
|
@@ -1104,3 +1083,5 @@ void NewFlight::on_tabWidget_currentChanged(int index)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|