18 #ifndef NewFlightDialog_H
19 #define NewFlightDialog_H
27 #include "src/functions/atime.h"
28 #include "src/database/database.h"
29 #include "src/database/dbcompletiondata.h"
31 #include "src/database/row.h"
37 enum ValidationItem {doft = 0, dept = 1, dest = 2, tofb = 3, tonb = 4, pic = 5, acft = 6};
48 void validate(ValidationItem item) { validationArray[item] =
true;};
49 void validate(
int index) { validationArray[index] =
true;};
50 void invalidate(ValidationItem item) { validationArray[item] =
false;}
51 void invalidate(
int index) { validationArray[index] =
false;}
52 inline bool allValid()
const {
return validationArray.count(
true) == 7;};
53 inline bool timesValid()
const {
return validationArray[ValidationItem::tofb] && validationArray[ValidationItem::tonb];}
54 inline bool locationsValid()
const {
return validationArray[ValidationItem::dept] && validationArray[ValidationItem::dest];}
55 inline bool nightDataValid()
const {
return timesValid() && locationsValid() && validationArray[ValidationItem::doft];}
56 inline bool acftValid()
const {
return validationArray[ValidationItem::acft];}
57 inline bool validAt(
int index)
const {
return validationArray[index];}
58 inline bool validAt(ValidationItem item)
const {
return validationArray[item];}
61 void printValidationStatus()
const {
62 QString deb_string(
"\033[mValidation State:\tdoft\tdept\tdest\ttofb\ttonb\tpic\tacft\n");
63 deb_string +=
"\t\t\t\t";
64 for (
int i = 0; i < 7; i++) {
65 if (validationArray[i])
66 deb_string +=
"\t\033[32m" + QString::number(validationArray[i]);
68 deb_string +=
"\t\033[31m" + QString::number(validationArray[i]);
70 deb_string += QLatin1String(
"\u001b[38;5;75m");
71 qDebug().noquote() << deb_string;
74 QBitArray validationArray = QBitArray(7);
125 Ui::NewFlightDialog *ui;
139 static const inline QList<QLineEdit*>* timeLineEdits;
143 static const inline QList<QLineEdit*>* locationLineEdits;
147 static const inline QList<QLineEdit*>* pilotNameLineEdits;
152 static const inline QList<QLineEdit*>* mandatoryLineEdits;
153 static const inline QLatin1String
self = QLatin1String(
"self");
156 void setupRawInputValidation();
157 void setupSignalsAndSlots();
159 void fillWithEntryData();
166 void onGoodInputReceived(QLineEdit *line_edit);
172 void onBadInputReceived(QLineEdit *line_edit);
174 void updateBlockTimeLabel();
175 void updateNightCheckBoxes();
176 void setNightCheckboxes();
178 bool addNewTail(QLineEdit& parent_line_edit);
179 bool addNewPilot(QLineEdit& parent_line_edit);
182 bool checkPilotFunctionsValid();
183 RowData_T prepareFlightEntryData();
187 void toUpper(
const QString& text);
188 void onTimeLineEdit_editingFinished();
189 void onPilotNameLineEdit_editingFinshed();
190 void onLocationLineEdit_editingFinished();
191 void on_acftLineEdit_editingFinished();
192 void on_doftLineEdit_editingFinished();
193 void on_buttonBox_accepted();
194 void on_pilotFlyingCheckBox_stateChanged(
int arg1);
195 void on_approachComboBox_currentTextChanged(
const QString &arg1);
196 void on_functionComboBox_currentIndexChanged(
int index);
199 bool eventFilter(QObject*
object, QEvent* event)
override;
The NewFlightDialog is used to add or edit entries from the flights table in the database.
Definition: newflightdialog.h:106
bool eventFilter(QObject *object, QEvent *event) override
NewFlightDialog::eventFilter invalidates mandatory line edits on focus in.
Definition: newflightdialog.cpp:165
NewFlightDialog(OPL::DbCompletionData &completion_data, QWidget *parent=nullptr)
NewFlightDialog - Creates a NewFlightDialog that can be used to add a new flight entry to the logbook...
Definition: newflightdialog.cpp:34
Provides data for QCompleters and QHashs.
Definition: dbcompletiondata.h:33
The ValidationState class encapsulates a QBitArray that has a bit set (or unset) depending on wether ...
Definition: newflightdialog.h:44