/*
*openPilot Log - A FOSS Pilot Logbook Application
*Copyright (C) 2020 Felix Turowsky
*
*This program is free software: you can redistribute it and/or modify
*it under the terms of the GNU General Public License as published by
*the Free Software Foundation, either version 3 of the License, or
*(at your option) any later version.
*
*This program is distributed in the hope that it will be useful,
*but WITHOUT ANY WARRANTY; without even the implied warranty of
*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*GNU General Public License for more details.
*
*You should have received a copy of the GNU General Public License
*along with this program. If not, see .
*/
#include "newacft.h"
#include "ui_newacft.h"
#include "showaircraftlist.h"
#include
#include
#include
#include
#include
#include // test
QString registration = "invalid";
QString make = "invalid";
QString model = "invalid";
QString variant = "invalid";
QString aircraft_id = "0";
NewAcft::NewAcft(QWidget *parent) :
QDialog(parent),
ui(new Ui::NewAcft)
{
ui->setupUi(this);
}
NewAcft::~NewAcft()
{
delete ui;
}
void NewAcft::on_MakeLineEdit_textEdited(const QString &arg1)
{
QStringList makeList = dbAircraft::retreiveAircraftMake(arg1);
makeList.removeDuplicates();
QCompleter *makeCompleter = new QCompleter(makeList, this);
makeCompleter->setCaseSensitivity(Qt::CaseInsensitive);
makeCompleter->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
ui->MakeLineEdit->setCompleter(makeCompleter);
}
void NewAcft::on_MakeLineEdit_editingFinished()
{
QStringList makeList = dbAircraft::retreiveAircraftMake(ui->MakeLineEdit->text());
if(makeList.length() != 0)
{
make = makeList.first();
ui->MakeLineEdit->setText(make);
}else
{
QMessageBox msgBox;
msgBox.setText("No Airplane Maker with that name found.");
msgBox.exec();
ui->MakeLineEdit->setText("");
}
}
void NewAcft::on_ModelLineEdit_textEdited(const QString &arg1)
{
QStringList modelList = dbAircraft::retreiveAircraftModel(make, arg1);
modelList.removeDuplicates();
QCompleter *modelCompleter = new QCompleter(modelList, this);
modelCompleter->setCaseSensitivity(Qt::CaseInsensitive);
modelCompleter->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
ui->ModelLineEdit->setCompleter(modelCompleter);
}
void NewAcft::on_ModelLineEdit_editingFinished()
{
QStringList modelList = dbAircraft::retreiveAircraftModel(make, ui->ModelLineEdit->text());
if(modelList.length() != 0)
{
model = modelList.first();
ui->ModelLineEdit->setText(model);
}else
{
QMessageBox msgBox;
msgBox.setText("No Model (Type) with that name found.");
msgBox.exec();
ui->ModelLineEdit->setText("");
}
}
void NewAcft::on_VariantLineEdit_textEdited(const QString &arg1)
{
QStringList variantList = dbAircraft::retreiveAircraftVariant(make, model, arg1);
variantList.removeDuplicates();
QCompleter *variantCompleter = new QCompleter(variantList, this);
variantCompleter->setCaseSensitivity(Qt::CaseInsensitive);
variantCompleter->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
ui->VariantLineEdit->setCompleter(variantCompleter);
}
void NewAcft::on_VariantLineEdit_editingFinished()
{
QStringList VariantList = dbAircraft::retreiveAircraftVariant(make, model, ui->VariantLineEdit->text());
if(VariantList.length() != 0)
{
variant = VariantList.first();
ui->VariantLineEdit->setText(variant);
}else
{
QMessageBox msgBox;
msgBox.setText("No Variant found. Are you sure you want to proceed?");
msgBox.exec();
ui->VariantLineEdit->setText("");
}
}
void NewAcft::on_buttonBox_accepted()
{
qDebug() << "Accepted Button pressed";
aircraft_id = dbAircraft::retreiveAircraftIdFromMakeModelVariant(make, model, variant);
if(aircraft_id.contains("0") && aircraft_id.length() < 2)
{
QMessageBox nope;
nope.setText("EASA FCL.050 requires Pilots to record details of:\n\n"
"Make\t e.g. Boeing\nModel\t e.g. 737\nVariant\t e.g. 800\n\nRegistration\n\n"
"Please check or edit the aircraft database.");
nope.exec();
}else
{
dbAircraft::commitTailToDb(registration, aircraft_id, "");
NewAcft::reject();
}
}
void NewAcft::on_buttonBox_rejected()
{
make = "xxx";
model = "xxx";
variant = "xxx";
aircraft_id = "0";
NewAcft::reject();
}
void NewAcft::on_VerifyButton_clicked()
{
if(ui->EasaEnabledCheckBox->isChecked())
{
QString checkstring = "[ " + registration + " ] " + make + " " + model + "-" + variant;
ui->VerifyLineEdit->setText(checkstring);
}else
{
ui->VerifyLineEdit->setText("EASA FCL.050 compliance checks disabled.");
}
}
void NewAcft::on_RegistrationLineEdit_editingFinished()
{
registration = ui->RegistrationLineEdit->text();
}
void NewAcft::on_EasaEnabledCheckBox_stateChanged()
{
QMessageBox nope;
nope.setText("Data Input without Format checking may corrupt the database.");
nope.exec();
}
void NewAcft::on_showAllPushButton_clicked()
{
ShowAircraftList sa(this);
sa.exec();
}