123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074 |
- #include "newflight.h"
- #include "ui_newflight.h"
- #define DEBUG(expr) \
- qDebug() << "~DEBUG" << __func__ << expr
- void NewFlight::on_verifyButton_clicked()
- {
-
-
- qDebug() << parent();
- }
- void NewFlight::nope()
- {
- QMessageBox nope(this);
- nope.setText("This feature is not yet available!");
- nope.exec();
- }
- QVector<QString> flight;
- QDate date(QDate::currentDate());
- QString doft(QDate::currentDate().toString(Qt::ISODate));
- QString dept = "INVA";
- QString dest = "INVA";
- QTime tofb;
- QTime tonb;
- QTime tblk;
- QString pic = "-1";
- QString acft = "-1";
- QString secondPilot = "-1";
- QString thirdPilot = "-1";
- QString pilotFunction = "-1";
- QString pilotTask = "-1";
- QString takeoff = "0";
- QString landing = "0";
- QString autoland = "0";
- QString approachType = "-1";
- QString tSPSE = "00:00";
- QString tSPME = "00:00";
- QString tMP = "00:00";
- bool hasOldInput = dbFlight::checkScratchpad();
- const QString TIME_REGEX_PATTERN = "([01]?[0-9]?|2[0-3]):?[0-5][0-9]?";
- const QString IATA = "[a-zA-Z0-9]{3}";
- const QString ICAO = "[a-zA-Z0-9]{4}";
- const QString LOC_REGEX_PATTERN = IATA + "|" + ICAO;
- const QString AIRCRAFT_REGEX_PATTERN = "[\\w0-9]+-?([\\w0-9]?)+";
- const QString PILOT_NAME_REGEX_PATTERN = "[\\w]+,? ?[\\w]+";
- const QString TIME_INVALID_RGX = "[^\\d:]";
- const QString LOC_INVALID_RGX = "[^a-zA-Z0-9]";
- const QString AIRCRAFT_INVALID_RGX = "[^A-Z0-9\\-]";
- const QString PILOT_NAME_INVALID_RGX = "[^a-zA-Z, ]";
- const qint8 TIME_MAX_LENGTH = 5;
- const qint8 LOC_MAX_LENGTH = 4;
- const qint8 AIRCRAFT_MAX_LENGTH = 10;
- const qint8 PILOT_NAME_MAX_LENGTH = 15;
- static inline void setupLineEdit(QLineEdit* line_edit, QVector<QStringList> completionLists)
- {
- auto line_edit_objectName = line_edit->objectName();
- DEBUG("Setting validators for " << line_edit_objectName);
- static const
- QVector<std::tuple<QRegularExpression, QRegularExpression,
- qint8, QStringList>> objectName_inputValidation_rgxs = {
- {QRegularExpression("\\w+Time"), QRegularExpression(TIME_REGEX_PATTERN),
- TIME_MAX_LENGTH, completionLists[0]},
- {QRegularExpression("\\w+Loc"), QRegularExpression(LOC_REGEX_PATTERN),
- LOC_MAX_LENGTH, completionLists[1]},
- {QRegularExpression("\\w+Acft"), QRegularExpression(AIRCRAFT_REGEX_PATTERN),
- AIRCRAFT_MAX_LENGTH, completionLists[2]},
- {QRegularExpression("\\w+Name"), QRegularExpression(PILOT_NAME_REGEX_PATTERN),
- PILOT_NAME_MAX_LENGTH, completionLists[3]},
- };
- auto validator = new StrictRegularExpressionValidator();
- for(auto tuple : objectName_inputValidation_rgxs)
- {
- auto objName_rgx = std::get<0>(tuple);
- auto input_rgx = std::get<1>(tuple);
- auto max_length = std::get<2>(tuple);
- auto completer_list = std::get<3>(tuple);
- if(objName_rgx.match(line_edit_objectName).hasMatch())
- {
- validator->setRegularExpression(input_rgx);
- line_edit->setValidator(validator);
- line_edit->setMaxLength(max_length);
- QCompleter* completer = new QCompleter(completer_list, line_edit);
- completer->setCaseSensitivity(Qt::CaseInsensitive);
- completer->setCompletionMode(QCompleter::PopupCompletion);
- if(objName_rgx != QRegularExpression("\\w+Loc")){
- completer->setFilterMode(Qt::MatchContains);
- }
- line_edit->setCompleter(completer);
- return;
- }
- }
- DEBUG("Couldnt find QLineEdit" << line_edit_objectName);
- }
- void NewFlight::storeSettings()
- {
- qDebug() << "Storing Settings...";
- dbSettings::storeSetting(100, ui->FunctionComboBox->currentText());
- dbSettings::storeSetting(101, ui->ApproachComboBox->currentText());
- dbSettings::storeSetting(102, QString::number(ui->PilotFlyingCheckBox->isChecked()));
- dbSettings::storeSetting(103, QString::number(ui->PilotMonitoringCheckBox->isChecked()));
- dbSettings::storeSetting(104, QString::number(ui->TakeoffSpinBox->value()));
- dbSettings::storeSetting(105, QString::number(ui->TakeoffCheckBox->isChecked()));
- dbSettings::storeSetting(106, QString::number(ui->LandingSpinBox->value()));
- dbSettings::storeSetting(107, QString::number(ui->LandingCheckBox->isChecked()));
- dbSettings::storeSetting(108, QString::number(ui->AutolandSpinBox->value()));
- dbSettings::storeSetting(109, QString::number(ui->AutolandCheckBox->isChecked()));
- dbSettings::storeSetting(110, QString::number(ui->IfrCheckBox->isChecked()));
- dbSettings::storeSetting(111, QString::number(ui->VfrCheckBox->isChecked()));
- }
- void NewFlight::restoreSettings()
- {
- qDebug() << "Restoring Settings...";
- ui->FunctionComboBox->setCurrentText(dbSettings::retreiveSetting(100));
- ui->ApproachComboBox->setCurrentText(dbSettings::retreiveSetting(101));
- ui->PilotFlyingCheckBox->setChecked(dbSettings::retreiveSetting(102).toInt());
- ui->PilotMonitoringCheckBox->setChecked(dbSettings::retreiveSetting(103).toInt());
- ui->TakeoffSpinBox->setValue(dbSettings::retreiveSetting(104).toInt());
- ui->TakeoffCheckBox->setChecked(dbSettings::retreiveSetting(105).toInt());
- ui->LandingSpinBox->setValue(dbSettings::retreiveSetting(106).toInt());
- ui->LandingCheckBox->setChecked(dbSettings::retreiveSetting(107).toInt());
- ui->AutolandSpinBox->setValue(dbSettings::retreiveSetting(108).toInt());
- ui->AutolandCheckBox->setChecked(dbSettings::retreiveSetting(109).toInt());
- ui->IfrCheckBox->setChecked(dbSettings::retreiveSetting(110).toInt());
- ui->VfrCheckBox->setChecked(dbSettings::retreiveSetting(111).toInt());
- ui->flightNumberPrefixLabel->setText(dbSettings::retreiveSetting(50) + QLatin1Char('-'));
- }
- NewFlight::NewFlight(QWidget *parent, QVector<QStringList> completionLists) :
- QDialog(parent),
- ui(new Ui::NewFlight)
- {
- ui->setupUi(this);
-
- auto line_edits = ui->flightDataTab->findChildren<QLineEdit*>() +
- ui->extraTimes->findChildren<QLineEdit*>();
- for(auto line_edit : line_edits)
- {
- setupLineEdit(line_edit, completionLists);
- }
-
- QButtonGroup *FlightRulesGroup = new QButtonGroup(this);
- FlightRulesGroup->addButton(ui->IfrCheckBox);
- FlightRulesGroup->addButton(ui->VfrCheckBox);
- QButtonGroup *PilotTaskGroup = new QButtonGroup(this);
- PilotTaskGroup->addButton(ui->PilotFlyingCheckBox);
- PilotTaskGroup->addButton(ui->PilotMonitoringCheckBox);
- ui->deptTZ->setFocusPolicy(Qt::NoFocus);
- ui->destTZ->setFocusPolicy(Qt::NoFocus);
- ui->newDoft->setDate(QDate::currentDate());
-
- ui->newDeptLocLineEdit->setStyleSheet("border: 1px solid orange");
- ui->newDestLocLineEdit->setStyleSheet("border: 1px solid orange");
- ui->newDeptTimeLineEdit->setStyleSheet("border: 1px solid orange");
- ui->newDestTimeLineEdit->setStyleSheet("border: 1px solid orange");
- ui->newPicNameLineEdit->setStyleSheet("border: 1px solid orange");
- ui->newAcft->setStyleSheet("border: 1px solid orange");
- restoreSettings();
-
- qDebug() << "Hasoldinput? = " << hasOldInput;
- if(hasOldInput)
- {
- flight = dbFlight::retreiveScratchpad();
- qDebug() << "Re-Filling Form from Scratchpad";
- returnInput(flight);
- }
- ui->newDeptLocLineEdit->setFocus();
- }
- NewFlight::~NewFlight()
- {
- delete ui;
- }
- static void onInputRejected(QLineEdit* line_edit, QRegularExpression rgx){
- DEBUG("Input rejected" << line_edit->text());
- line_edit->setStyleSheet("border: 1px solid red");
- if(auto text = line_edit->text();
- rgx.match(text).hasMatch() == false)
- {
- line_edit->setText(line_edit->text());
- }
- }
- static void onEditingFinished(QLineEdit* line_edit){
- DEBUG("Input accepted" << line_edit->text() << line_edit->metaObject()->className());
- line_edit->setStyleSheet("");
- }
- void NewFlight::on_deptTZ_currentTextChanged(const QString &arg1)
- {
- if(arg1 == "Local"){nope();}
- ui->deptTZ->setCurrentIndex(0);
- }
- void NewFlight::on_destTZ_currentIndexChanged(const QString &arg1)
- {
- if(arg1 == "Local"){nope();}
- ui->destTZ->setCurrentIndex(0);
- }
- void NewFlight::on_newDeptLocLineEdit_inputRejected()
- {
- ui->newDeptLocLineEdit->setText(ui->newDeptLocLineEdit->text().toUpper());
- onInputRejected(ui->newDeptLocLineEdit, QRegularExpression(LOC_INVALID_RGX));
- }
- void NewFlight::on_newDeptLocLineEdit_textEdited(const QString &arg1)
- {
- ui->newDeptLocLineEdit->setText(arg1.toUpper());
- }
- void NewFlight::on_newDeptLocLineEdit_editingFinished()
- {
- QStringList locationList = dbAirport::retreiveIataIcaoList();
-
- auto line_edit = ui->newDeptLocLineEdit;
- onEditingFinished(line_edit);
- dept = line_edit->text();
-
- if(dept.length() == 3){
- int index = locationList.indexOf(dept);
- if(index == -1){
- DEBUG("Airport not found.");
- emit line_edit->inputRejected();
- }else{
- dept = locationList[index -1];
- }
- }
-
- if(dept.length() == 4 && locationList.indexOf(dept) == -1){
- DEBUG("Airport not found.");
- emit line_edit->inputRejected();
- }
- line_edit->setText(dept);
- DEBUG("Departure set: " << dept);
- }
- void NewFlight::on_newDeptTimeLineEdit_inputRejected()
- {
- onInputRejected(ui->newDeptTimeLineEdit, QRegularExpression(TIME_INVALID_RGX));
- }
- void NewFlight::on_newDeptTimeLineEdit_editingFinished()
- {
- ui->newDeptTimeLineEdit->setText(calc::formatTimeInput(ui->newDeptTimeLineEdit->text()));
- tofb = QTime::fromString(ui->newDeptTimeLineEdit->text(),"hh:mm");
- auto line_edit = ui->newDeptTimeLineEdit;
- onEditingFinished(line_edit);
- if(tofb.isValid()){
-
- DEBUG("Time Off Blocks is valid:" << tofb);
- }else{
- emit line_edit->inputRejected();
- }
- }
- void NewFlight::on_newDestLocLineEdit_inputRejected()
- {
- ui->newDestLocLineEdit->setText(ui->newDestLocLineEdit->text().toUpper());
- onInputRejected(ui->newDestLocLineEdit, QRegularExpression(LOC_INVALID_RGX));
- }
- void NewFlight::on_newDestLocLineEdit_textEdited(const QString &arg1)
- {
- ui->newDestLocLineEdit->setText(arg1.toUpper());
- }
- void NewFlight::on_newDestLocLineEdit_editingFinished()
- {
- QStringList locationList = dbAirport::retreiveIataIcaoList();
- auto line_edit = ui->newDestLocLineEdit;
- onEditingFinished(line_edit);
- dest = line_edit->text();
-
- if(dest.length() == 3){
- int index = locationList.indexOf(dest);
- if(index == -1){
- DEBUG("Airport not found.");
- emit line_edit->inputRejected();
- }else{
- dest = locationList[index -1];
- }
- }
-
- if(dest.length() == 4 && locationList.indexOf(dest) == -1){
- DEBUG("Airport not found.");
- emit line_edit->inputRejected();
- }
- line_edit->setText(dest);
- DEBUG("Destination set: " << dest);
- }
- void NewFlight::on_newDestTimeLineEdit_inputRejected()
- {
- onInputRejected(ui->newDestTimeLineEdit, QRegularExpression(TIME_INVALID_RGX));
- }
- void NewFlight::on_newDestTimeLineEdit_editingFinished()
- {
- ui->newDestTimeLineEdit->setText(calc::formatTimeInput(ui->newDestTimeLineEdit->text()));
- tonb = QTime::fromString(ui->newDestTimeLineEdit->text(),"hh:mm");
- auto line_edit = ui->newDestTimeLineEdit;
- onEditingFinished(line_edit);
- if(tonb.isValid()){
-
- DEBUG("Time On Blocks is valid:" << tonb);
- }else{
- emit line_edit->inputRejected();
- }
- }
- void NewFlight::on_newDoft_editingFinished()
- {
- date = ui->newDoft->date();
- doft = date.toString(Qt::ISODate);
- }
- void NewFlight::on_newAcft_inputRejected()
- {
- onInputRejected(ui->newAcft, QRegularExpression(AIRCRAFT_INVALID_RGX));
- }
- void NewFlight::on_newAcft_editingFinished()
- {
- acft = "-1";
- auto registrationList = dbAircraft::retreiveRegistrationList();
- auto line_edit = ui->newAcft;
- 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();
- 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);
- if (reply == QMessageBox::Yes) {
- NewAcft na(this);
- na.exec();
- ui->newAcft->setText("");
- ui->newAcft->setFocus();
- }
- }
- }
- void NewFlight::addNewPilotMessageBox()
- {
- QMessageBox::StandardButton reply;
- reply = QMessageBox::question(this, "No Pilot found",
- "No pilot found.\n Would you like to add a new pilot to the database?",
- QMessageBox::Yes|QMessageBox::No);
- if (reply == QMessageBox::Yes)
- {
- qDebug() << "Add new pilot selected";
- DEBUG("This feature is not yet available.");
-
- }
- }
- void NewFlight::on_newPicNameLineEdit_inputRejected()
- {
- onInputRejected(ui->newPicNameLineEdit, QRegularExpression(PILOT_NAME_INVALID_RGX));
- }
- void NewFlight::on_newPicNameLineEdit_editingFinished()
- {
- auto line_edit = ui->newPicNameLineEdit;
- pic = "-1";
- if(ui->newPicNameLineEdit->text() == "self")
- {
- pic = "self";
- DEBUG("Pilot selected: " << pic);
- }else
- {
- QStringList pilotList = dbPilots::retreivePilotList();
- QStringList match = pilotList.filter(line_edit->text(), Qt::CaseInsensitive);
- if(match.length()!= 0)
- {
- pic = match[0];
- line_edit->setText(pic);
- DEBUG("Pilot selected: " << pic);
- onEditingFinished(line_edit);
- }else
- {
- DEBUG("Pilot not found.");
- emit line_edit->inputRejected();
- addNewPilotMessageBox();
- }
- }
- }
- void NewFlight::on_secondPilotNameLineEdit_inputRejected()
- {
- onInputRejected(ui->secondPilotNameLineEdit, QRegularExpression(PILOT_NAME_INVALID_RGX));
- }
- void NewFlight::on_secondPilotNameLineEdit_editingFinished()
- {
- auto line_edit = ui->secondPilotNameLineEdit;
- secondPilot = "-1";
- if(ui->newPicNameLineEdit->text() == "self")
- {
- secondPilot = "self";
- DEBUG("Pilot selected: " << secondPilot);
- }else
- {
- QStringList pilotList = dbPilots::retreivePilotList();
- QStringList match = pilotList.filter(line_edit->text(), Qt::CaseInsensitive);
- if(match.length()!= 0)
- {
- secondPilot = match[0];
- line_edit->setText(secondPilot);
- DEBUG("Pilot selected: " << secondPilot);
- onEditingFinished(line_edit);
- }else
- {
- DEBUG("Pilot not found.");
- emit line_edit->inputRejected();
- addNewPilotMessageBox();
- }
- }
- }
- void NewFlight::on_thirdPilotNameLineEdit_inputRejected()
- {
- onInputRejected(ui->thirdPilotNameLineEdit, QRegularExpression(PILOT_NAME_INVALID_RGX));
- }
- void NewFlight::on_thirdPilotNameLineEdit_editingFinished()
- {
- auto line_edit = ui->thirdPilotNameLineEdit;
- thirdPilot = "-1";
- if(ui->newPicNameLineEdit->text() == "self")
- {
- thirdPilot = "self";
- DEBUG("Pilot selected: " << thirdPilot);
- }else
- {
- QStringList pilotList = dbPilots::retreivePilotList();
- QStringList match = pilotList.filter(line_edit->text(), Qt::CaseInsensitive);
- if(match.length()!= 0)
- {
- thirdPilot = match[0];
- line_edit->setText(thirdPilot);
- DEBUG("Pilot selected: " << thirdPilot);
- onEditingFinished(line_edit);
- }else
- {
- DEBUG("Pilot not found.");
- emit line_edit->inputRejected();
- addNewPilotMessageBox();
- }
- }
- }
- void NewFlight::on_FlightNumberLineEdit_editingFinished()
- {
- qDebug() << "tbd: FlightNumber slot";
-
-
- }
- void NewFlight::on_setAsDefaultButton_clicked()
- {
- storeSettings();
- }
- void NewFlight::on_restoreDefaultButton_clicked()
- {
- restoreSettings();
- }
- void NewFlight::on_PilotFlyingCheckBox_stateChanged(int)
- {
- if(ui->PilotFlyingCheckBox->isChecked()){
- ui->TakeoffSpinBox->setValue(1);
- ui->TakeoffCheckBox->setCheckState(Qt::Checked);
- ui->LandingSpinBox->setValue(1);
- ui->LandingCheckBox->setCheckState(Qt::Checked);
- }else if(!ui->PilotFlyingCheckBox->isChecked()){
- ui->TakeoffSpinBox->setValue(0);
- ui->TakeoffCheckBox->setCheckState(Qt::Unchecked);
- ui->LandingSpinBox->setValue(0);
- ui->LandingCheckBox->setCheckState(Qt::Unchecked);
- }
- }
- void NewFlight::on_ApproachComboBox_currentTextChanged(const QString &arg1)
- {
- if(arg1 == "ILS CAT III"){
- ui->AutolandCheckBox->setCheckState(Qt::Checked);
- ui->AutolandSpinBox->setValue(1);
- }else{
- ui->AutolandCheckBox->setCheckState(Qt::Unchecked);
- ui->AutolandSpinBox->setValue(0);
- }
- approachType = arg1;
- qDebug() << "Approach Type: " << approachType;
- }
- void NewFlight::on_spseTimeLineEdit_editingFinished()
- {
- ui->spseTimeLineEdit->setText(calc::formatTimeInput(ui->spseTimeLineEdit->text()));
- if(ui->spseTimeLineEdit->text() == ""){
- ui->spseTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->spseTimeLineEdit->setFocus();
- }else{
- ui->spseTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_spmeTimeLineEdit_editingFinished()
- {
- ui->spmeTimeLineEdit->setText(calc::formatTimeInput(ui->spmeTimeLineEdit->text()));
- if(ui->spmeTimeLineEdit->text() == ""){
- ui->spmeTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->spmeTimeLineEdit->setFocus();
- }else{
- ui->spmeTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_mpTimeLineEdit_editingFinished()
- {
- ui->mpTimeLineEdit->setText(calc::formatTimeInput(ui->mpTimeLineEdit->text()));
- if(ui->mpTimeLineEdit->text() == ""){
- ui->mpTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->mpTimeLineEdit->setFocus();
- }else{
- ui->mpTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_totalTimeLineEdit_editingFinished()
- {
- ui->totalTimeLineEdit->setText(calc::formatTimeInput(ui->totalTimeLineEdit->text()));
- if(ui->totalTimeLineEdit->text() == ""){
- ui->totalTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->totalTimeLineEdit->setFocus();
- }else{
- ui->totalTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_ifrTimeLineEdit_editingFinished()
- {
- ui->ifrTimeLineEdit->setText(calc::formatTimeInput(ui->ifrTimeLineEdit->text()));
- if(ui->ifrTimeLineEdit->text() == ""){
- ui->ifrTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->ifrTimeLineEdit->setFocus();
- }else{
- ui->ifrTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_vfrTimeLineEdit_editingFinished()
- {
- ui->vfrTimeLineEdit->setText(calc::formatTimeInput(ui->vfrTimeLineEdit->text()));
- if(ui->vfrTimeLineEdit->text() == ""){
- ui->vfrTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->vfrTimeLineEdit->setFocus();
- }else{
- ui->vfrTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_nightTimeLineEdit_editingFinished()
- {
- ui->nightTimeLineEdit->setText(calc::formatTimeInput(ui->nightTimeLineEdit->text()));
- if(ui->nightTimeLineEdit->text() == ""){
- ui->nightTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->nightTimeLineEdit->setFocus();
- }else{
- ui->nightTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_xcTimeLineEdit_editingFinished()
- {
- ui->xcTimeLineEdit->setText(calc::formatTimeInput(ui->xcTimeLineEdit->text()));
- if(ui->xcTimeLineEdit->text() == ""){
- ui->xcTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->xcTimeLineEdit->setFocus();
- }else{
- ui->xcTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_picTimeLineEdit_editingFinished()
- {
- ui->picTimeLineEdit->setText(calc::formatTimeInput(ui->picTimeLineEdit->text()));
- if(ui->picTimeLineEdit->text() == ""){
- ui->picTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->picTimeLineEdit->setFocus();
- }else{
- ui->picTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_copTimeLineEdit_editingFinished()
- {
- ui->copTimeLineEdit->setText(calc::formatTimeInput(ui->copTimeLineEdit->text()));
- if(ui->copTimeLineEdit->text() == ""){
- ui->copTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->copTimeLineEdit->setFocus();
- }else{
- ui->copTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_dualTimeLineEdit_editingFinished()
- {
- ui->dualTimeLineEdit->setText(calc::formatTimeInput(ui->dualTimeLineEdit->text()));
- if(ui->dualTimeLineEdit->text() == ""){
- ui->dualTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->dualTimeLineEdit->setFocus();
- }else{
- ui->dualTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_fiTimeLineEdit_editingFinished()
- {
- ui->fiTimeLineEdit->setText(calc::formatTimeInput(ui->fiTimeLineEdit->text()));
- if(ui->fiTimeLineEdit->text() == ""){
- ui->fiTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->fiTimeLineEdit->setFocus();
- }else{
- ui->fiTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_simTimeLineEdit_editingFinished()
- {
- ui->simTimeLineEdit->setText(calc::formatTimeInput(ui->simTimeLineEdit->text()));
- if(ui->simTimeLineEdit->text() == ""){
- ui->simTimeLineEdit->setStyleSheet("border: 1px solid red");
- ui->simTimeLineEdit->setFocus();
- }else{
- ui->simTimeLineEdit->setStyleSheet("");
- }
- }
- void NewFlight::on_buttonBox_accepted()
- {
- on_newDoft_editingFinished();
-
-
-
-
- on_newAcft_editingFinished();
- on_newPicNameLineEdit_editingFinished();
- QVector<QString> flight;
- flight = collectInput();
- if(verifyInput())
- {
- dbFlight::commitFlight(flight);
- qDebug() << flight << "Has been commited.";
- QMessageBox msgBox(this);
- msgBox.setText("Flight has been commited.");
- msgBox.exec();
- }else
- {
- qDebug() << "Invalid Input. No entry has been made in the database.";
- dbFlight::commitToScratchpad(flight);
- QMessageBox msgBox(this);
- msgBox.setText("Invalid entries detected. Please check your input.");
- msgBox.exec();
-
-
- }
- }
- void NewFlight::on_buttonBox_rejected()
- {
- qDebug() << "NewFlight: Rejected\n";
- }
- QVector<QString> NewFlight::collectInput()
- {
-
- QString doft = date.toString(Qt::ISODate);
- QTime tblk = calc::blocktime(tofb,tonb);
-
- flight = dbFlight::createFlightVectorFromInput(doft, dept, tofb, dest, tonb, tblk, pic, acft);
- qDebug() << "Created flight vector:" << flight;
- return flight;
- }
- bool NewFlight::verifyInput()
- {
- bool deptValid = false;
- bool tofbValid = false;
- bool destValid = false;
- bool tonbValid = false;
- bool tblkValid = false;
- bool picValid = false;
- bool acftValid = false;
- QTime tblk = calc::blocktime(tofb,tonb);
- int checktblk = calc::time_to_minutes(tblk);
- bool doftValid = true;
- qDebug() << "NewFlight::verifyInput() says: Date:" << doft << " - Valid?\t" << doftValid;
- deptValid = dbAirport::checkICAOValid(dept);
- qDebug() << "NewFlight::verifyInput() says: Departure is:\t" << dept << " - Valid?\t" << deptValid;
- destValid = dbAirport::checkICAOValid(dest);
- qDebug() << "NewFlight::verifyInput() says: Destination is:\t" << dest << " - Valid?\t" << destValid;
- tofbValid = (unsigned)(calc::time_to_minutes(tofb)-0) <= (1440-0) && tofb.toString("hh:mm") != "";
- qDebug() << "NewFlight::verifyInput() says: tofb is:\t\t" << tofb.toString("hh:mm") << " - Valid?\t" << tofbValid;
- tonbValid = (unsigned)(calc::time_to_minutes(tonb)-0) <= (1440-0) && tonb.toString("hh:mm") != "";
- qDebug() << "NewFlight::verifyInput() says: tonb is:\t\t" << tonb.toString("hh:mm")<< " - Valid?\t" << tonbValid;
- picValid = (pic.toInt() > 0);
- qDebug() << "NewFlight::verifyInput() says: pic is pilotd_id:\t" << pic << " - Valid?\t" << picValid;
- if(!picValid)
- {
- QMessageBox msgBox(this);
- msgBox.setText("You cannot log a flight without a valid pilot");
- msgBox.exec();
- }
- acftValid = (acft.toInt() > 0);
- qDebug() << "NewFlight::verifyInput() says: acft is tail_id:\t" << acft << " - Valid?\t" << acftValid;
- if(!acftValid)
- {
- QMessageBox msgBox(this);
- msgBox.setText("You cannot log a flight without a valid aircraft");
- msgBox.exec();
- }
- tblkValid = checktblk != 0;
- qDebug() << "NewFlight::verifyInput() says: tblk is:\t\t" << tblk.toString("hh:mm") << " - Valid?\t" << tblkValid;
- if(deptValid && tofbValid && destValid && tonbValid
- && tblkValid && picValid && acftValid)
- {
- qDebug() << "====================================================";
- qDebug() << "NewFlight::verifyInput() says: All checks passed! Very impressive. ";
- return 1;
- }else
- {
- qDebug() << "====================================================";
- qDebug() << "NewFlight::verifyInput() says: Flight is invalid.";
- return 0;
- }
- return 0;
- }
- void NewFlight::returnInput(QVector<QString> flight)
- {
-
- qDebug() << "return Input: " << flight;
- ui->newDoft->setDate(QDate::fromString(flight[1],Qt::ISODate));
- ui->newDeptLocLineEdit->setText(flight[2]);
- ui->newDeptTimeLineEdit->setText(flight[3]);
- ui->newDestLocLineEdit->setText(flight[4]);
- ui->newDestTimeLineEdit->setText(flight[5]);
-
- ui->newPicNameLineEdit->setText(dbPilots::retreivePilotNameFromID(flight[7]));
- ui->newAcft->setText(dbAircraft::retreiveRegistration(flight[8]));
- }
- void NewFlight::fillExtrasLineEdits()
- {
- QString blockTime = calc::blocktime(tofb,tonb).toString("hh:mm");
- DEBUG(blockTime);
- QVector<QString> aircraftDetails = dbAircraft::retreiveAircraftDetails(dbAircraft::retreiveAircraftId(acft));
- DEBUG("aircraftDetails: " << aircraftDetails);
- if(!aircraftDetails.isEmpty()){
-
- if(aircraftDetails[0] == "1" && aircraftDetails[2] == "1"){
- DEBUG("SPSE yes");
- tSPSE = blockTime;
- ui->spseTimeLineEdit->setText(blockTime);
- }
-
- if(aircraftDetails[0] == "1" && aircraftDetails[3] == "1"){
- DEBUG("SP ME yes");
- tSPME = blockTime;
- ui->spmeTimeLineEdit->setText(blockTime);
- }
-
- if(aircraftDetails[1] == "1"){
- DEBUG("Multipilot yes");
- tMP = blockTime;
- ui->mpTimeLineEdit->setText(blockTime);
- }
- }else{DEBUG("Aircraft Details Empty");}
-
- ui->totalTimeLineEdit->setText(blockTime);
-
- if(ui->IfrCheckBox->isChecked()){
- ui->ifrTimeLineEdit->setText(blockTime);
- ui->vfrTimeLineEdit->setText("");
- }
-
- if(ui->VfrCheckBox->isChecked()){
- ui->vfrTimeLineEdit->setText(blockTime);
- ui->ifrTimeLineEdit->setText("");
- }
-
- QString deptDate = date.toString(Qt::ISODate) + 'T' + tofb.toString("hh:mm");
- QDateTime deptDateTime = QDateTime::fromString(deptDate,"yyyy-MM-ddThh:mm");
- int tblk = calc::time_to_minutes(calc::blocktime(tofb,tonb));
- QString nightTime = calc::minutes_to_string(
- QString::number(
- calc::calculateNightTime(
- dept, dest, deptDateTime, tblk)));
- ui->nightTimeLineEdit->setText(nightTime);
-
- if(calc::greatCircleDistanceBetweenAirports(dept,dest) >= 50){
- qDebug() << "Cross-country Flight: nm = " << calc::greatCircleDistanceBetweenAirports(dept,dest);
- ui->xcTimeLineEdit->setText(blockTime);
- }else{ui->xcTimeLineEdit->setText("00:00");}
-
- switch (ui->FunctionComboBox->currentIndex()) {
- case 0:
- ui->picTimeLineEdit->setText(blockTime);
- ui->copTimeLineEdit->setText("");
- ui->dualTimeLineEdit->setText("");
- ui->fiTimeLineEdit->setText("");
- break;
- case 1:
- ui->picTimeLineEdit->setText("");
- ui->copTimeLineEdit->setText(blockTime);
- ui->dualTimeLineEdit->setText("");
- ui->fiTimeLineEdit->setText("");
- break;
- case 2:
- ui->picTimeLineEdit->setText("");
- ui->copTimeLineEdit->setText("");
- ui->dualTimeLineEdit->setText(blockTime);
- ui->fiTimeLineEdit->setText("");
- break;
- case 3:
- ui->picTimeLineEdit->setText("");
- ui->copTimeLineEdit->setText("");
- ui->dualTimeLineEdit->setText("");
- ui->fiTimeLineEdit->setText(blockTime);
- }
-
- }
- void NewFlight::on_tabWidget_currentChanged(int index)
- {
- if(index == 1){
- if(verifyInput()){
- fillExtrasLineEdits();
- }else{
- auto errorbox = new QMessageBox;
- errorbox->setText("Invalid Inputs. Unable to determine times automatically.\nPlease verify your inputs.");
- errorbox->exec();
- }
- }
- }
|