ソースを参照

edited RegExp Time Validator and Time Line Edits

fiffty-50 4 年 前
コミット
431aacf99b
3 ファイル変更823 行追加627 行削除
  1. 180 18
      newflight.cpp
  2. 28 0
      newflight.h
  3. 615 609
      newflight.ui

+ 180 - 18
newflight.cpp

@@ -28,7 +28,9 @@
 #include <QSortFilterProxyModel>
 #include <QButtonGroup>
 
-
+/*
+ * Debug / WIP
+ */
 void NewFlight::on_verifyButton_clicked()//debug
 {
     /*on_newDoft_editingFinished();// - activate slots in case user has been active in last input before clicking submit
@@ -42,6 +44,12 @@ void NewFlight::on_verifyButton_clicked()//debug
     fillExtrasLineEdits();
 
 }
+void NewFlight::on_tabWidget_tabBarClicked(int index)
+{
+    if(index == 1){
+        nope();
+    }
+}
 /*
  * Initialise variables
  */
@@ -92,7 +100,7 @@ NewFlight::NewFlight(QWidget *parent) :
     QValidator *ICAOvalidator = new QRegExpValidator(icao_rx, this);
     ui->newDept->setValidator(ICAOvalidator);
     ui->newDest->setValidator(ICAOvalidator);
-    QRegExp timehhmm("([01]?[0-9]|2[0-3]):?[0-5][0-9]"); //allows time in 24h format with optional leading 0 and with or without seperator
+    QRegExp timehhmm("([01]?[0-9]?|2[0-3]):?[0-5][0-9]?"); //allows time in 24h format with optional leading 0 and with or without seperator
     QValidator *timeInputValidator = new QRegExpValidator(timehhmm, this);
     ui->newTofb->setValidator(timeInputValidator);
     ui->newTonb->setValidator(timeInputValidator);
@@ -147,20 +155,14 @@ void NewFlight::nope()
 
 /*!
  * \brief NewFlight::validateTimeInput verifies user input and formats to hh:mm
+ * if the output is not a valid time, an empty string is returned.
  * \param userinput from a QLineEdit
- * \return formatted QString "hh:mm"
+ * \return formatted QString "hh:mm" or Empty String
  */
 QString NewFlight::validateTimeInput(QString userinput)
 {
-    QString output;
-    QTime temptime;
-
-    if(userinput.length() <3)
-    {
-        QMessageBox timeformat(this);
-        timeformat.setText("Please enter a valid time. Any of these formats is valid:\n845 0845 8:45 08:45");
-        timeformat.exec();
-    }
+    QString output; //
+    QTime temptime; //empty time object is invalid by default
 
     bool containsSeperator = userinput.contains(":");
         if(userinput.length() == 4 && !containsSeperator)
@@ -184,7 +186,14 @@ QString NewFlight::validateTimeInput(QString userinput)
             temptime = QTime::fromString(userinput,"hh:mm");
         }
 
-        return temptime.toString("hh:mm");
+        output = temptime.toString("hh:mm");
+        if(output.isEmpty())
+        {
+            QMessageBox timeformat(this);
+            timeformat.setText("Please enter a valid time. Any of these formats is valid:\n845 0845 8:45 08:45");
+            timeformat.exec();
+        }
+        return output;
 }
 
 /*!
@@ -202,7 +211,7 @@ void NewFlight::fillExtrasLineEdits()
     // IFR
     // VFR
     // Night
-    if(ui->autoNightCheckBox->isChecked() && tofb.isValid() && tonb.isValid() && dept.length() == 4 && dest.length() == 4) {
+    if(tofb.isValid() && tonb.isValid() && dept.length() == 4 && dest.length() == 4) {
         QString deptDate = date.toString(Qt::ISODate) + 'T' + tofb.toString("hh:mm");
         qDebug() << "Departure Date: " << deptDate;
         QDateTime deptDateTime = QDateTime::fromString(deptDate,"yyyy-MM-ddThh:mm");
@@ -212,8 +221,6 @@ void NewFlight::fillExtrasLineEdits()
             //qDebug() << calc::calculateNightTime(dept, dest, deptDateTime, blocktime);
             //qDebug() << calc::minutes_to_string(QString::number(calc::calculateNightTime(dept, dest, deptDateTime, blocktime)));
             ui->nightTimeLineEdit->setText(calc::minutes_to_string(QString::number(calc::calculateNightTime(dept, dest, deptDateTime, blocktime))));
-    }else if(!ui->autoNightCheckBox->isChecked()) {
-        ui->nightTimeLineEdit->setText("");
     }
     // XC
     // PIC
@@ -338,7 +345,7 @@ void NewFlight::storeSettings()
     db::storesetting(109, QString::number(ui->AutolandCheckBox->isChecked()));
     db::storesetting(110, QString::number(ui->IfrCheckBox->isChecked()));
     db::storesetting(111, QString::number(ui->VfrCheckBox->isChecked()));
-    db::storesetting(112, QString::number(ui->autoNightCheckBox->isChecked()));
+    //db::storesetting(112, QString::number(ui->autoNightCheckBox->isChecked()));
 }
 void NewFlight::restoreSettings()
 {
@@ -355,7 +362,7 @@ void NewFlight::restoreSettings()
     ui->AutolandCheckBox->setChecked(db::retreiveSetting("109")[1].toInt());
     ui->IfrCheckBox->setChecked(db::retreiveSetting("110")[1].toInt());
     ui->VfrCheckBox->setChecked(db::retreiveSetting("111")[1].toInt());
-    ui->autoNightCheckBox->setChecked(db::retreiveSetting("112")[1].toInt());
+    //ui->autoNightCheckBox->setChecked(db::retreiveSetting("112")[1].toInt());
     //qDebug() << "restore Settings ifr to int: " << db::retreiveSetting("110")[1].toInt();
 
 /*
@@ -502,6 +509,13 @@ void NewFlight::on_newTofb_editingFinished()
 {
     ui->newTofb->setText(validateTimeInput(ui->newTofb->text()));
     tofb = QTime::fromString(ui->newTofb->text(),"hh:mm");
+
+    if(!tofb.isValid()){
+        ui->newTofb->setStyleSheet("border: 1px solid red");
+        ui->newTofb->setFocus();
+    }else{
+        ui->newTofb->setStyleSheet("");
+    }
     qDebug() << "New Time Off Blocks: " << tofb;
 }
 
@@ -509,6 +523,13 @@ void NewFlight::on_newTonb_editingFinished()
 {
     ui->newTonb->setText(validateTimeInput(ui->newTonb->text()));
     tonb = QTime::fromString(ui->newTonb->text(),"hh:mm");
+
+    if(!tonb.isValid()){
+        ui->newTonb->setStyleSheet("border: 1px solid red");
+        ui->newTonb->setFocus();
+    }else{
+        ui->newTonb->setStyleSheet("");
+    }
     qDebug() << "New Time On Blocks: " << tonb;
 }
 
@@ -715,7 +736,148 @@ void NewFlight::on_ApproachComboBox_currentTextChanged(const QString &arg1)
  */
 
 
+
+
+
+void NewFlight::on_spseTimeLineEdit_editingFinished()
+{
+    ui->spseTimeLineEdit->setText(validateTimeInput(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(validateTimeInput(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(validateTimeInput(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(validateTimeInput(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(validateTimeInput(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(validateTimeInput(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(validateTimeInput(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(validateTimeInput(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(validateTimeInput(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(validateTimeInput(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(validateTimeInput(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(validateTimeInput(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(validateTimeInput(ui->simTimeLineEdit->text()));
+    if(ui->simTimeLineEdit->text() == ""){
+        ui->simTimeLineEdit->setStyleSheet("border: 1px solid red");
+        ui->simTimeLineEdit->setFocus();
+    }else{
+        ui->simTimeLineEdit->setStyleSheet("");
+    }
 }

+ 28 - 0
newflight.h

@@ -99,8 +99,36 @@ private slots:
 
 
 
+
+
+    void on_tabWidget_tabBarClicked(int index);
+
+    void on_spseTimeLineEdit_editingFinished();
+
+    void on_spmeTimeLineEdit_editingFinished();
+
+    void on_mpTimeLineEdit_editingFinished();
+
+    void on_totalTimeLineEdit_editingFinished();
+
+    void on_ifrTimeLineEdit_editingFinished();
+
+    void on_vfrTimeLineEdit_editingFinished();
+
     void on_nightTimeLineEdit_editingFinished();
 
+    void on_xcTimeLineEdit_editingFinished();
+
+    void on_picTimeLineEdit_editingFinished();
+
+    void on_copTimeLineEdit_editingFinished();
+
+    void on_dualTimeLineEdit_editingFinished();
+
+    void on_fiTimeLineEdit_editingFinished();
+
+    void on_simTimeLineEdit_editingFinished();
+
 private:
     Ui::NewFlight *ui;
 };

ファイルの差分が大きいため隠しています
+ 615 - 609
newflight.ui


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません