|  | @@ -55,9 +55,49 @@ static const auto MANDATORY_LINE_EDITS_DISPLAY_NAMES = QMap<int, QString> {
 | 
	
		
			
				|  |  |      {6, QObject::tr("Aircraft Registration")}
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +// MandatoryLineEdits definition
 | 
	
		
			
				|  |  | +// Ugly but works
 | 
	
		
			
				|  |  | +NewFlightDialog::MandatoryLineEdits::MandatoryLineEdits(std::initializer_list<QLineEdit*> init_list)
 | 
	
		
			
				|  |  | +    : lineEdits(init_list), lineEditsValid(QBitArray(init_list.size()))
 | 
	
		
			
				|  |  | +{}
 | 
	
		
			
				|  |  | +void NewFlightDialog::MandatoryLineEdits::operator= (std::initializer_list<QLineEdit*> init_list)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    lineEdits = init_list;
 | 
	
		
			
				|  |  | +    lineEditsValid.resize(init_list.size());
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +bool NewFlightDialog::MandatoryLineEdits::contains(QLineEdit* line_edit)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    return lineEdits.contains(line_edit);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void NewFlightDialog::MandatoryLineEdits::validate(QLineEdit* line_edit)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    lineEditsValid.setBit(lineEdits.indexOf(line_edit), true);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void NewFlightDialog::MandatoryLineEdits::unvalidate(QLineEdit* line_edit)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    lineEditsValid.setBit(lineEdits.indexOf(line_edit), false);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +int NewFlightDialog::MandatoryLineEdits::countValid()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    return lineEditsValid.count(true);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +int NewFlightDialog::MandatoryLineEdits::size()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    return lineEditsValid.size();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +bool NewFlightDialog::MandatoryLineEdits::validAt(int idx)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    return lineEditsValid[idx];
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +bool NewFlightDialog::MandatoryLineEdits::allValid()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    return lineEditsValid.count(true) == lineEdits.size();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +QLineEdit* NewFlightDialog::MandatoryLineEdits::operator[] (int idx)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    return lineEdits[idx];
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ///////////////////////////////////////////////////////////////////////////////////////////////////
 | 
	
		
			
				|  |  |  ///                                      Construction                                           ///
 | 
	
	
		
			
				|  | @@ -255,6 +295,8 @@ void NewFlightDialog::setupRawInputValidation()
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // [G]: TODO cleanup
 | 
	
		
			
				|  |  |      // populate Mandatory Line Edits list and prepare QBitArray
 | 
	
		
			
				|  |  |      mandatoryLineEdits = {
 | 
	
		
			
				|  |  |          ui->doftLineEdit,
 | 
	
	
		
			
				|  | @@ -265,6 +307,7 @@ void NewFlightDialog::setupRawInputValidation()
 | 
	
		
			
				|  |  |          ui->picNameLineEdit,
 | 
	
		
			
				|  |  |          ui->acftLineEdit,
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      primaryTimeLineEdits = {
 | 
	
		
			
				|  |  |          ui->tofbTimeLineEdit,
 | 
	
		
			
				|  |  |          ui->tonbTimeLineEdit
 | 
	
	
		
			
				|  | @@ -275,7 +318,6 @@ void NewFlightDialog::setupRawInputValidation()
 | 
	
		
			
				|  |  |          ui->thirdPilotNameLineEdit
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    mandatoryLineEditsGood.resize(mandatoryLineEdits.size());
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void NewFlightDialog::setupSignalsAndSlots()
 | 
	
	
		
			
				|  | @@ -302,7 +344,7 @@ void NewFlightDialog::setupSignalsAndSlots()
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  #if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
 | 
	
		
			
				|  |  | -    for (const auto &line_edit : qAsConst(mandatoryLineEdits)) {
 | 
	
		
			
				|  |  | +    for (const auto &line_edit : qAsConst(mandatoryLineEdits.lineEdits)) {
 | 
	
		
			
				|  |  |          if(line_edit->objectName().contains(QStringLiteral("doft")))
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |          QObject::connect(line_edit->completer(), QOverload<const QString &>::of(&QCompleter::highlighted),
 | 
	
	
		
			
				|  | @@ -351,7 +393,7 @@ bool NewFlightDialog::eventFilter(QObject* object, QEvent* event)
 | 
	
		
			
				|  |  |      auto line_edit = qobject_cast<QLineEdit*>(object);
 | 
	
		
			
				|  |  |      if (line_edit != nullptr) {
 | 
	
		
			
				|  |  |          if (mandatoryLineEdits.contains(line_edit) && event->type() == QEvent::FocusIn) {
 | 
	
		
			
				|  |  | -            mandatoryLineEditsGood.setBit(mandatoryLineEdits.indexOf(line_edit), false);
 | 
	
		
			
				|  |  | +            mandatoryLineEdits.unvalidate(line_edit);
 | 
	
		
			
				|  |  |              DEB << "Editing " << line_edit->objectName();
 | 
	
		
			
				|  |  |              // set verification bit to false when entering a mandatory line edit
 | 
	
		
			
				|  |  |              return false;
 | 
	
	
		
			
				|  | @@ -386,7 +428,7 @@ bool NewFlightDialog::eventFilter(QObject* object, QEvent* event)
 | 
	
		
			
				|  |  |  void NewFlightDialog::fillDeductibleData()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      // check if mandatory line edits are valid
 | 
	
		
			
				|  |  | -    if (mandatoryLineEditsGood.count(true) != 7) {
 | 
	
		
			
				|  |  | +    if (!mandatoryLineEdits.allValid()) {
 | 
	
		
			
				|  |  |          return;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -437,7 +479,7 @@ void NewFlightDialog::fillDeductibleData()
 | 
	
		
			
				|  |  |          ui->tIFRLabel->setText(block_time_string);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      // Night
 | 
	
		
			
				|  |  | -    auto dept_date = ui->doftLineEdit->text() + 'T'
 | 
	
		
			
				|  |  | +    QString dept_date = ui->doftLineEdit->text() + 'T'
 | 
	
		
			
				|  |  |              + ATime::toString(tofb);
 | 
	
		
			
				|  |  |      auto dept_date_time = QDateTime::fromString(dept_date, QStringLiteral("yyyy-MM-ddThh:mm"));
 | 
	
		
			
				|  |  |      const int night_angle = ASettings::read(ASettings::FlightLogging::NightAngle).toInt();
 | 
	
	
		
			
				|  | @@ -527,7 +569,7 @@ RowData NewFlightDialog::collectInput()
 | 
	
		
			
				|  |  |          newData.insert(Opl::Db::FLIGHTS_TIFR, EMPTY_STRING);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      // Night
 | 
	
		
			
				|  |  | -    const auto dept_date = ui->doftLineEdit->text() + 'T'
 | 
	
		
			
				|  |  | +    const QString dept_date = ui->doftLineEdit->text() + 'T'
 | 
	
		
			
				|  |  |              + ATime::toString(tofb);
 | 
	
		
			
				|  |  |      const auto dept_date_time = QDateTime::fromString(dept_date, QStringLiteral("yyyy-MM-ddThh:mm"));
 | 
	
		
			
				|  |  |      const int night_angle = ASettings::read(ASettings::FlightLogging::NightAngle).toInt();
 | 
	
	
		
			
				|  | @@ -609,7 +651,7 @@ RowData NewFlightDialog::collectInput()
 | 
	
		
			
				|  |  |              newData.insert(Opl::Db::FLIGHTS_LDGDAY, 0);
 | 
	
		
			
				|  |  |              newData.insert(Opl::Db::FLIGHTS_LDGNIGHT, ui->LandingSpinBox->value());
 | 
	
		
			
				|  |  |          } else { //check
 | 
	
		
			
				|  |  | -            const auto dest_date = ui->doftLineEdit->text() + 'T'
 | 
	
		
			
				|  |  | +            const QString dest_date = ui->doftLineEdit->text() + 'T'
 | 
	
		
			
				|  |  |                      + ATime::toString(tonb);
 | 
	
		
			
				|  |  |              const auto dest_date_time = QDateTime::fromString(dest_date, QStringLiteral("yyyy-MM-ddThh:mm"));
 | 
	
		
			
				|  |  |              if (ACalc::isNight(ui->destLocLineEdit->text(), dest_date_time,  night_angle)) {
 | 
	
	
		
			
				|  | @@ -650,7 +692,7 @@ void NewFlightDialog::formFiller()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      for (const auto& data_key : flightEntry.getData().keys()) {
 | 
	
		
			
				|  |  |          auto rx = QRegularExpression(data_key + QStringLiteral("LineEdit"));//acftLineEdit
 | 
	
		
			
				|  |  | -        for(const auto& leName : line_edits_names){
 | 
	
		
			
				|  |  | +        for(const auto& leName : qAsConst(line_edits_names)){
 | 
	
		
			
				|  |  |              if(rx.match(leName).hasMatch())  {
 | 
	
		
			
				|  |  |                  //DEB << "Loc Match found: " << key << " - " << leName);
 | 
	
		
			
				|  |  |                  auto line_edit = this->findChild<QLineEdit *>(leName);
 | 
	
	
		
			
				|  | @@ -662,7 +704,7 @@ void NewFlightDialog::formFiller()
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          rx = QRegularExpression(data_key + QStringLiteral("Loc\\w+?"));
 | 
	
		
			
				|  |  | -        for(const auto& leName : line_edits_names){
 | 
	
		
			
				|  |  | +        for(const auto& leName : qAsConst(line_edits_names)){
 | 
	
		
			
				|  |  |              if(rx.match(leName).hasMatch())  {
 | 
	
		
			
				|  |  |                  //DEB << "Loc Match found: " << key << " - " << leName);
 | 
	
		
			
				|  |  |                  auto line_edit = this->findChild<QLineEdit *>(leName);
 | 
	
	
		
			
				|  | @@ -674,7 +716,7 @@ void NewFlightDialog::formFiller()
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          rx = QRegularExpression(data_key + QStringLiteral("Time\\w+?"));
 | 
	
		
			
				|  |  | -        for(const auto& leName : line_edits_names){
 | 
	
		
			
				|  |  | +        for(const auto& leName : qAsConst(line_edits_names)){
 | 
	
		
			
				|  |  |              if(rx.match(leName).hasMatch())  {
 | 
	
		
			
				|  |  |                  //DEB << "Time Match found: " << key << " - " << leName);
 | 
	
		
			
				|  |  |                  auto line_edits = this->findChild<QLineEdit *>(leName);
 | 
	
	
		
			
				|  | @@ -688,7 +730,7 @@ void NewFlightDialog::formFiller()
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          rx = QRegularExpression(data_key + QStringLiteral("Name\\w+?"));
 | 
	
		
			
				|  |  | -        for(const auto& leName : line_edits_names){
 | 
	
		
			
				|  |  | +        for(const auto& leName : qAsConst(line_edits_names)){
 | 
	
		
			
				|  |  |              if(rx.match(leName).hasMatch())  {
 | 
	
		
			
				|  |  |                  auto line_edits = this->findChild<QLineEdit *>(leName);
 | 
	
		
			
				|  |  |                  if(line_edits != nullptr){
 | 
	
	
		
			
				|  | @@ -756,14 +798,14 @@ void NewFlightDialog::formFiller()
 | 
	
		
			
				|  |  |          ui->AutolandSpinBox->setValue(AL);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    for(const auto& le : mandatoryLineEdits){
 | 
	
		
			
				|  |  | +    for(const auto& le : qAsConst(mandatoryLineEdits.lineEdits)){
 | 
	
		
			
				|  |  |          emit le->editingFinished();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  bool NewFlightDialog::isLessOrEqualThanBlockTime(const QString time_string)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    if (mandatoryLineEditsGood.count(true) != 7){
 | 
	
		
			
				|  |  | +    if (!mandatoryLineEdits.allValid()){
 | 
	
		
			
				|  |  |          QMessageBox message_box(this);
 | 
	
		
			
				|  |  |          message_box.setText(tr("Unable to determine total block time.<br>"
 | 
	
		
			
				|  |  |                                 "Please fill out all Mandatory Fields<br>"
 | 
	
	
		
			
				|  | @@ -864,14 +906,14 @@ void NewFlightDialog::on_cancelButton_clicked()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void NewFlightDialog::on_submitButton_clicked()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    for (const auto &line_edit : mandatoryLineEdits) {
 | 
	
		
			
				|  |  | +    for (const auto &line_edit : qAsConst(mandatoryLineEdits.lineEdits)) {
 | 
	
		
			
				|  |  |          emit line_edit->editingFinished();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    DEB << "editing finished emitted. good count: " << mandatoryLineEditsGood.count(true);
 | 
	
		
			
				|  |  | -    if (mandatoryLineEditsGood.count(true) != 7) {
 | 
	
		
			
				|  |  | +    DEB << "editing finished emitted. good count: " << mandatoryLineEdits.countValid();
 | 
	
		
			
				|  |  | +    if (!mandatoryLineEdits.allValid()) {
 | 
	
		
			
				|  |  |          QString missing_items;
 | 
	
		
			
				|  |  | -        for (int i=0; i < mandatoryLineEditsGood.size(); i++) {
 | 
	
		
			
				|  |  | -            if (!mandatoryLineEditsGood[i]){
 | 
	
		
			
				|  |  | +        for (int i=0; i < mandatoryLineEdits.size(); i++) {
 | 
	
		
			
				|  |  | +            if (!mandatoryLineEdits.validAt(i)){
 | 
	
		
			
				|  |  |                  missing_items.append(MANDATORY_LINE_EDITS_DISPLAY_NAMES.value(i) + "<br>");
 | 
	
		
			
				|  |  |                  mandatoryLineEdits[i]->setStyleSheet(QStringLiteral("border: 1px solid red"));
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -887,7 +929,7 @@ void NewFlightDialog::on_submitButton_clicked()
 | 
	
		
			
				|  |  |          return;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    DEB << "Submit Button clicked. Mandatory good (out of 7): " << mandatoryLineEditsGood.count(true);
 | 
	
		
			
				|  |  | +    DEB << "Submit Button clicked. Mandatory good " << mandatoryLineEdits.size() << "out of: " << mandatoryLineEdits.countValid();
 | 
	
		
			
				|  |  |      auto newData = collectInput();
 | 
	
		
			
				|  |  |      DEB << "Setting Data for flightEntry...";
 | 
	
		
			
				|  |  |      flightEntry.setData(newData);
 | 
	
	
		
			
				|  | @@ -918,14 +960,14 @@ void NewFlightDialog::onGoodInputReceived(QLineEdit *line_edit)
 | 
	
		
			
				|  |  |      line_edit->setStyleSheet("");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (mandatoryLineEdits.contains(line_edit))
 | 
	
		
			
				|  |  | -        mandatoryLineEditsGood.setBit(mandatoryLineEdits.indexOf(line_edit), true);
 | 
	
		
			
				|  |  | +        mandatoryLineEdits.validate(line_edit);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    if (mandatoryLineEditsGood.count(true) == 7)
 | 
	
		
			
				|  |  | +    if (mandatoryLineEdits.allValid())
 | 
	
		
			
				|  |  |          onMandatoryLineEditsFilled();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    DEB << "Mandatory good: " << mandatoryLineEditsGood.count(true)
 | 
	
		
			
				|  |  | -        << " (out of 7) " << mandatoryLineEditsGood;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    DEB << "Mandatory good: " << mandatoryLineEdits.countValid()
 | 
	
		
			
				|  |  | +        << " out of " << mandatoryLineEdits.size()
 | 
	
		
			
				|  |  | +        << " : " << mandatoryLineEdits.lineEdits;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void NewFlightDialog::onBadInputReceived(QLineEdit *line_edit)
 | 
	
	
		
			
				|  | @@ -933,8 +975,8 @@ void NewFlightDialog::onBadInputReceived(QLineEdit *line_edit)
 | 
	
		
			
				|  |  |      DEB << line_edit->objectName() << " - Bad input received - " << line_edit->text();
 | 
	
		
			
				|  |  |      line_edit->setStyleSheet(QStringLiteral("border: 1px solid red"));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    DEB << "Mandatory Good: " << mandatoryLineEditsGood.count(true) << " out of "
 | 
	
		
			
				|  |  | -        << mandatoryLineEditsGood.size() << ". Array: " << mandatoryLineEditsGood;
 | 
	
		
			
				|  |  | +    DEB << "Mandatory Good: " << mandatoryLineEdits.countValid() << " out of "
 | 
	
		
			
				|  |  | +        << mandatoryLineEdits.size() << ". Array: " << mandatoryLineEdits.lineEditsValid;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // capitalize input for dept, dest and registration input
 | 
	
	
		
			
				|  | @@ -952,14 +994,14 @@ void NewFlightDialog::onToUpperTriggered_textChanged(const QString &text)
 | 
	
		
			
				|  |  |  // update is disabled if the user chose to manually edit extra times
 | 
	
		
			
				|  |  |  void NewFlightDialog::onMandatoryLineEditsFilled()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    if (!(mandatoryLineEditsGood.count(true) == 7)) {
 | 
	
		
			
				|  |  | +    if (!mandatoryLineEdits.allValid()) {
 | 
	
		
			
				|  |  |          DEB << "erroneously called.";
 | 
	
		
			
				|  |  |          return;
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (updateEnabled)
 | 
	
		
			
				|  |  |          fillDeductibleData();
 | 
	
		
			
				|  |  | -    DEB << mandatoryLineEditsGood;
 | 
	
		
			
				|  |  | +    DEB << mandatoryLineEdits.lineEditsValid;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // make sure that when using keyboard to scroll through completer sugggestions, line edit is up to date
 | 
	
	
		
			
				|  | @@ -1256,13 +1298,13 @@ void NewFlightDialog::on_PilotFlyingCheckBox_stateChanged(int)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void NewFlightDialog::on_IfrCheckBox_stateChanged(int)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    if (mandatoryLineEditsGood.count(true) == 7 && updateEnabled)
 | 
	
		
			
				|  |  | +    if (mandatoryLineEdits.allValid() && updateEnabled)
 | 
	
		
			
				|  |  |          onMandatoryLineEditsFilled();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void NewFlightDialog::on_manualEditingCheckBox_stateChanged(int arg1)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    if (!(mandatoryLineEditsGood.count(true) == 7) && ui->manualEditingCheckBox->isChecked()) {
 | 
	
		
			
				|  |  | +    if (!(mandatoryLineEdits.allValid()) && ui->manualEditingCheckBox->isChecked()) {
 | 
	
		
			
				|  |  |          QMessageBox message_box(this);
 | 
	
		
			
				|  |  |          message_box.setText(tr("Before editing times manually, please fill out the required fields "
 | 
	
		
			
				|  |  |                                 "in the flight data tab, so that total time can be calculated."));
 | 
	
	
		
			
				|  | @@ -1280,7 +1322,7 @@ void NewFlightDialog::on_manualEditingCheckBox_stateChanged(int arg1)
 | 
	
		
			
				|  |  |              le->setStyleSheet("");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          updateEnabled = true;
 | 
	
		
			
				|  |  | -        if (mandatoryLineEditsGood.count(true) == 7 && updateEnabled)
 | 
	
		
			
				|  |  | +        if (mandatoryLineEdits.allValid() && updateEnabled)
 | 
	
		
			
				|  |  |              onMandatoryLineEditsFilled();
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |      case 2:
 |