Jelajahi Sumber

forgot to commit

...
Felix Turo 4 tahun lalu
induk
melakukan
8465dfb621

+ 14 - 2
mainwindow.cpp

@@ -63,6 +63,8 @@ MainWindow::MainWindow(QWidget *parent)
     aircraftWidget = new AircraftWidget(this);
     ui->stackedWidget->addWidget(aircraftWidget);
 
+    connectWidgets();
+
     // Startup Screen (Home Screen)
     // ui->stackedWidget->setCurrentWidget(homeWidget);
     // Debup Widget for now
@@ -128,6 +130,16 @@ void MainWindow::on_actionDebug_triggered()
     ui->stackedWidget->setCurrentWidget(debugWidget);
 }
 
+void MainWindow::connectWidgets()
+{
+    QObject::connect(experimental::aDB(), &experimental::ADataBase::commitSuccessful,
+                     logbookWidget, &LogbookWidget::onDatabaseChanged);
+    QObject::connect(experimental::aDB(), &experimental::ADataBase::commitSuccessful,
+                     pilotsWidget, &PilotsWidget::onDatabaseChanged);
+    QObject::connect(experimental::aDB(), &experimental::ADataBase::commitSuccessful,
+                     aircraftWidget, &AircraftWidget::onDatabaseChanged);
+}
+
 void MainWindow::on_actionSettings_triggered()
 {
     ui->stackedWidget->setCurrentWidget(settingsWidget);
@@ -145,7 +157,7 @@ void MainWindow::on_actionAircraft_triggered()
 
 void MainWindow::on_actionNewFlight_triggered()
 {
-    NewFlightDialog nf = NewFlightDialog(this, Db::createNew);
+    NewFlightDialog nf = NewFlightDialog(this);
     nf.exec();
 
 }
@@ -158,6 +170,6 @@ void MainWindow::on_actionNewAircraft_triggered()
 
 void MainWindow::on_actionNewPilot_triggered()
 {
-    NewPilotDialog np =NewPilotDialog(Db::createNew, this);
+    NewPilotDialog np = NewPilotDialog(Db::createNew, this);
     np.exec();
 }

+ 2 - 0
mainwindow.h

@@ -92,6 +92,8 @@ private:
 
     DebugWidget* debugWidget;
 
+    void connectWidgets();
+
 
 
 

+ 0 - 3
openPilotLog.pro

@@ -35,7 +35,6 @@ SOURCES += \
     src/experimental/aflightentry.cpp \
     src/experimental/apilotentry.cpp \
     src/experimental/atailentry.cpp \
-    src/experimental/expnewflightdialog.cpp \
     src/functions/acalc.cpp \
     src/functions/areadcsv.cpp \
     src/functions/astat.cpp \
@@ -74,7 +73,6 @@ HEADERS += \
     src/experimental/apilotentry.h \
     src/experimental/atailentry.h \
     src/experimental/decl.h \
-    src/experimental/expnewflightdialog.h \
     src/functions/acalc.h \
     src/functions/areadcsv.h \
     src/functions/astat.h \
@@ -95,7 +93,6 @@ HEADERS += \
 
 FORMS += \
     mainwindow.ui \
-    src/experimental/expnewflightdialog.ui \
     src/gui/dialogues/firstrundialog.ui \
     src/gui/dialogues/newflight.ui \
     src/gui/dialogues/newpilot.ui \

+ 27 - 0
src/experimental/adatabase.cpp

@@ -456,6 +456,33 @@ const QMap<QString, int> ADataBase::getIdMap(ADataBase::DatabaseTarget target)
     }
 }
 
+int ADataBase::getLastEntry(ADataBase::DatabaseTarget target)
+{
+    QString statement = "SELECT MAX(ROWID) FROM ";
+
+    switch (target) {
+    case pilots:
+        statement.append("pilots");
+        break;
+    case aircraft:
+        statement.append("aircraft");
+        break;
+    case tails:
+        statement.append("tails");
+        break;
+    default:
+        DEB("Not a valid completer target for this function.");
+        return 0;
+    }
+    auto query = QSqlQuery(statement);
+    if (query.first()) {
+        return query.value(0).toInt();
+    } else {
+        DEB("No entry found.");
+        return 0;
+    }
+}
+
 QVector<QString> ADataBase::customQuery(QString statement, int return_values)
 {
     QSqlQuery query(statement);

+ 2 - 0
src/experimental/adatabase.h

@@ -177,6 +177,8 @@ public:
      * \return
      */
     const QMap<QString, int> getIdMap(DatabaseTarget);
+
+    int getLastEntry(DatabaseTarget);
 signals:
     void commitSuccessful();
 

+ 25 - 17
src/gui/dialogues/newflight.ui

@@ -14,10 +14,10 @@
    <string>New Flight</string>
   </property>
   <layout class="QGridLayout" name="gridLayout_2">
-   <item row="0" column="0" colspan="3">
+   <item row="0" column="0" colspan="2">
     <widget class="QTabWidget" name="flightDataTabWidget">
      <property name="currentIndex">
-      <number>0</number>
+      <number>1</number>
      </property>
      <widget class="QWidget" name="flightDataTab">
       <attribute name="title">
@@ -819,6 +819,13 @@
          </property>
         </widget>
        </item>
+       <item row="0" column="3">
+        <widget class="QCheckBox" name="calendarCheckBox">
+         <property name="text">
+          <string>Calendar</string>
+         </property>
+        </widget>
+       </item>
       </layout>
       <zorder>placeLabel2</zorder>
       <zorder>deptLocLineEdit</zorder>
@@ -873,6 +880,7 @@
       <zorder>FlightNumberLabel</zorder>
       <zorder>doftDisplayLabel</zorder>
       <zorder>placeLabel1</zorder>
+      <zorder>calendarCheckBox</zorder>
      </widget>
      <widget class="QWidget" name="autoLoggingTab">
       <attribute name="title">
@@ -1413,26 +1421,28 @@
     </widget>
    </item>
    <item row="1" column="0">
-    <widget class="QPushButton" name="verifyButton">
+    <widget class="QPushButton" name="cancelButton">
+     <property name="styleSheet">
+      <string notr="true">color: rgb(164, 0, 0);</string>
+     </property>
      <property name="text">
-      <string>DebugButton</string>
+      <string>Cancel</string>
      </property>
     </widget>
    </item>
    <item row="1" column="1">
-    <widget class="QLineEdit" name="verifyEdit">
-     <property name="placeholderText">
-      <string>Debug Text</string>
+    <widget class="QPushButton" name="submitButton">
+     <property name="enabled">
+      <bool>false</bool>
      </property>
-    </widget>
-   </item>
-   <item row="1" column="2">
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
+     <property name="whatsThis">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Add your flight to the logbook.&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;You can only perform this action if all of the mandatory fields are filled.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
      </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     <property name="styleSheet">
+      <string notr="true">color: rgb(78, 154, 6);</string>
+     </property>
+     <property name="text">
+      <string>Submit</string>
      </property>
     </widget>
    </item>
@@ -1466,8 +1476,6 @@
   <tabstop>restoreDefaultButton</tabstop>
   <tabstop>manualEditingCheckBox</tabstop>
   <tabstop>tblkTimeLineEdit</tabstop>
-  <tabstop>verifyButton</tabstop>
-  <tabstop>verifyEdit</tabstop>
   <tabstop>calendarWidget</tabstop>
   <tabstop>flightDataTabWidget</tabstop>
  </tabstops>

File diff ditekan karena terlalu besar
+ 625 - 267
src/gui/dialogues/newflightdialog.cpp


+ 73 - 151
src/gui/dialogues/newflightdialog.h

@@ -32,47 +32,17 @@
 #include <QLineEdit>
 #include <QCalendarWidget>
 #include <QTabWidget>
-#include <QSqlRelationalTableModel>
+#include <QKeyEvent>
 
-
-#include "src/database/db.h"
-#include "src/classes/flight.h"
-#include "src/classes/aircraft.h"
-#include "src/classes/astrictrxvalidator.h"
-#include "src/classes/asettings.h"
-#include "src/functions/acalc.h"
-#include "src/experimental/adatabase.h"
-
-#include "src/gui/dialogues/newpilotdialog.h"
 #include "src/gui/dialogues/newtaildialog.h"
+#include "src/gui/dialogues/newpilotdialog.h"
 
-class SqlColumnNum{
-public:
-    SqlColumnNum() : _column(-1) {}
-    explicit
-    SqlColumnNum(int column) : _column(column) {}
-    int column() const { return _column; }
-private:
-    int _column;
-};
-
-class LineEditSettings {
-public:
-    LineEditSettings() = default;
-    explicit LineEditSettings(QRegularExpression input_valid_rgx, QRegularExpression input_invalid_rgx,
-                              SqlColumnNum sql_column)
-        : _input_valid_rgx(input_valid_rgx), _input_invalid_rgx(input_invalid_rgx),
-          _sql_column(sql_column) {}
-
-    const std::tuple<QRegularExpression, QRegularExpression, SqlColumnNum> getAll() const
-    {
-        return {_input_valid_rgx, _input_invalid_rgx, _sql_column};
-    }
-private:
-    QRegularExpression _input_valid_rgx = QRegularExpression("");
-    QRegularExpression _input_invalid_rgx = QRegularExpression("");
-    SqlColumnNum _sql_column = SqlColumnNum(-1);
-};
+#include "src/experimental/adatabase.h"
+#include "src/experimental/aflightentry.h"
+#include "src/experimental/apilotentry.h"
+#include "src/experimental/atailentry.h"
+#include "src/functions/acalc.h"
+#include "src/testing/atimer.h"
 
 namespace Ui {
 class NewFlight;
@@ -83,155 +53,107 @@ class NewFlightDialog : public QDialog
     Q_OBJECT
 
 public:
-    explicit NewFlightDialog(QWidget *parent, Db::editRole edRole);
-    explicit NewFlightDialog(QWidget *parent, Flight oldFlight, Db::editRole edRole);
-    explicit NewFlightDialog(QWidget *parent);
-    explicit NewFlightDialog(QWidget *parent, int old_flight);
+    explicit NewFlightDialog(QWidget *parent = nullptr);
+    explicit NewFlightDialog(int row_id, QWidget *parent = nullptr);
     ~NewFlightDialog();
 
-    //QStringList* getResult();
-
-private:
-
-    bool eventFilter(QObject* object, QEvent* event);
-
-    void setup();
-
-    void formFiller(Flight oldFlight);
-
-    void setupLineEdit(QLineEdit* line_edit, LineEditSettings settings);
-
-    void addNewPilotMessageBox(QLineEdit *parent);
-
-    void addNewAircraftMessageBox(QLineEdit *parent);
-
-    void readSettings();
-
-    void writeSettings();
-
-    void collectBasicData();
-
-    void collectAdditionalData();
-
-    void fillExtras();
-
-    bool verifyInput();
-
-    void onInputRejected(QLineEdit* line_edit, QRegularExpression rgx);
-
-    void onEditingFinishedCleanup(QLineEdit* line_edit);
-
-    void update();
-
-    bool isLessOrEqualToTotalTime(QString timeString);
+signals:
+    void goodInputReceived(QLineEdit*);
+    void badInputReceived(QLineEdit*);
+    void locationEditingFinished(QLineEdit*, QLabel*);
+    void timeEditingFinished(QLineEdit*);
+    void mandatoryLineEditsFilled();
 
 private slots:
 
-    void on_verifyButton_clicked(); //debug button
-
-    void on_deptTZ_currentTextChanged(const QString &arg1);
-    void on_destTZ_currentIndexChanged(const QString &arg1);
-
-    void on_tofbTimeLineEdit_editingFinished();
-    void on_tonbTimeLineEdit_editingFinished();
-    void on_tofbTimeLineEdit_inputRejected();
-    void on_tonbTimeLineEdit_inputRejected();
+    void onGoodInputReceived(QLineEdit*);
+    void onBadInputReceived(QLineEdit *);
+    void onTextChangedToUpper(const QString&);
+    void onPilotNameLineEdit_editingFinished();
+    void onLocLineEdit_editingFinished(QLineEdit*, QLabel*);
+    void onTimeLineEdit_editingFinished();
+    void onMandatoryLineEditsFilled();
+    void onCompleterHighlighted(const QString&);
+    void onCompleterActivated(const QString &);
+    void onDateClicked(const QDate &date);
+    void onDateSelected(const QDate &date);
+    void onDoftLineEditEntered();
 
     void on_deptLocLineEdit_editingFinished();
     void on_destLocLineEdit_editingFinished();
-    void on_destLocLineEdit_inputRejected();
-    void on_deptLocLineEdit_inputRejected();
-
-    void on_deptLocLineEdit_textEdited(const QString &arg1);
-    void on_destLocLineEdit_textEdited(const QString &arg1);
-
-    void on_doftTimeEdit_editingFinished();
-
-    void on_acftLineEdit_inputRejected();
     void on_acftLineEdit_editingFinished();
 
-    void on_picNameLineEdit_inputRejected();
-    void on_picNameLineEdit_editingFinished();
-    void on_secondPilotNameLineEdit_editingFinished();
-    void on_secondPilotNameLineEdit_inputRejected();
-    void on_thirdPilotNameLineEdit_editingFinished();
-    void on_thirdPilotNameLineEdit_inputRejected();
 
-    void on_setAsDefaultButton_clicked();
-    void on_restoreDefaultButton_clicked();
+/////// DEBUG
+    void onInputRejected();
+/////// DEBUG
 
-    void on_buttonBox_accepted();
-    void on_buttonBox_rejected();
+    void on_calendarCheckBox_stateChanged(int arg1);
 
-    void on_PilotFlyingCheckBox_stateChanged(int);
+    void on_doftLineEdit_editingFinished();
 
-    void on_ApproachComboBox_currentTextChanged(const QString &arg1);
+    void on_cancelButton_clicked();
 
-    void on_tSPSETimeLineEdit_editingFinished();
-    void on_tSPMETimeLineEdit_editingFinished();
+    void on_submitButton_clicked();
 
-    void on_tMPTimeLineEdit_editingFinished();
+    void on_setAsDefaultButton_clicked();
+
+    void on_restoreDefaultButton_clicked();
 
-    void on_tIFRTimeLineEdit_editingFinished();
-    void on_tNIGHTTimeLineEdit_editingFinished();
-    void on_tPICTimeLineEdit_editingFinished();
-    void on_tSICTimeLineEdit_editingFinished();
-    void on_tDUALTimeLineEdit_editingFinished();
-    void on_tFITimeLineEdit_editingFinished();
-    void on_FlightNumberLineEdit_textChanged(const QString &arg1);
+    void on_PilotFlyingCheckBox_stateChanged(int arg1);
 
+    void on_IfrCheckBox_stateChanged(int);
 
     void on_manualEditingCheckBox_stateChanged(int arg1);
 
-    void on_FunctionComboBox_currentTextChanged();
-
-    void on_tblkTimeLineEdit_editingFinished();
+    void on_ApproachComboBox_currentTextChanged(const QString &arg1);
 
-    void on_IfrCheckBox_stateChanged();
 
-    void on_TakeoffSpinBox_valueChanged(int arg1);
+    void on_FunctionComboBox_currentIndexChanged(int index);
 
-    void on_LandingSpinBox_valueChanged(int arg1);
+private:
+    Ui::NewFlight *ui;
 
-    void on_AutolandSpinBox_valueChanged(int arg1);
+    experimental::AFlightEntry flightEntry;
 
-    void on_TakeoffCheckBox_stateChanged(int arg1);
+    QList<QLineEdit*> mandatoryLineEdits;
+    QList<QLineEdit*> primaryTimeLineEdits;
+    QList<QLineEdit*> pilotsLineEdits;
 
-    void on_LandingCheckBox_stateChanged(int arg1);
+    QBitArray mandatoryLineEditsGood;
 
-    void on_AutolandCheckBox_stateChanged(int arg1);
+    QStringList pilotList;
+    QStringList tailsList;
+    QStringList airportList;
 
-    //void on_doftToolButton_clicked();
+    QMap<QString, int> pilotsIdMap;
+    QMap<QString, int> tailsIdMap;
+    QMap<QString, int> airportIcaoIdMap;
+    QMap<QString, int> airportIataIdMap;
+    QMap<QString, int> airportNameIdMap;
 
-    void date_clicked(const QDate &date);
+    bool eventFilter(QObject *object, QEvent *event);
 
-    void date_selected(const QDate &date);
+    bool updateEnabled;
 
-    void on_doftLineEdit_inputRejected();
+    bool isLessOrEqualThanBlockTime(const QString time_string);
 
-    void on_doftLineEdit_editingFinished();
+    void setup();
+    void readSettings();
+    void writeSettings();
+    void setupButtonGroups();
+    void setPopUpCalendarEnabled(bool state);
+    void setupRawInputValidation();
+    void setupLineEditSignalsAndSlots();
 
-    void on_doftLineEditEntered();
+    void formFiller();
 
-signals:
-    void mandatoryFieldsValid(NewFlightDialog* nf);
+    void fillDeductibleData();
+    experimental::TableData collectInput();
 
-private:
-    Db::editRole role;
-    Flight entry;
-    bool doUpdate;
-    Ui::NewFlight *ui;
-    QMap<QLineEdit*, int> lineEditBitMap;
-    QVector<QLineEdit*> mandatoryLineEdits;
-    QBitArray allOkBits;
-    QMessageBox messageBox;
-    QDate clickedDate;
-    // For Flight Object
-    QMap<QString, QString> airportMap;
-    QStringList airports;
-    QStringList pilots;
-    QStringList tails;
-    QMap<QString, QString> newData;
+    void addNewTail(QLineEdit*);
+    void addNewPilot(QLineEdit *);
 };
 
+
 #endif // NEWFLIGHT_H

+ 6 - 0
src/gui/widgets/aircraftwidget.cpp

@@ -144,6 +144,12 @@ void AircraftWidget::on_aircraftSearchLineEdit_textChanged(const QString &arg1)
     model->setFilter(ui->aircraftSearchComboBox->currentText() + " LIKE \"%" + arg1 + "%\"");
 }
 
+void AircraftWidget::onDatabaseChanged()
+{
+    //refresh view to reflect changes the user has made via a dialog.
+    model->select();
+}
+
 void AircraftWidget::tableView_selectionChanged()
 {
     if (this->findChild<NewTailDialog*>() != nullptr) {

+ 3 - 0
src/gui/widgets/aircraftwidget.h

@@ -55,6 +55,9 @@ private slots:
 
     void on_aircraftSearchLineEdit_textChanged(const QString &arg1);
 
+public slots:
+    void onDatabaseChanged();
+
 private:
     Ui::AircraftWidget *ui;
 

+ 6 - 2
src/gui/widgets/debugwidget.cpp

@@ -165,8 +165,12 @@ void DebugWidget::on_importCsvPushButton_clicked()
 void DebugWidget::on_debugPushButton_clicked()
 {
     using namespace experimental;
-    auto nf = new ExpNewFlightDialog(this);
-    nf->exec();
+
+    auto pilotsIdMap  = aDB()->getIdMap(ADataBase::pilots);
+    auto pilotList    = aDB()->getCompletionList(ADataBase::pilots);
+
+    DEB(pilotsIdMap.key(aDB()->getLastEntry(ADataBase::pilots)));
+    DEB(pilotList);
 
 
 }

+ 0 - 1
src/gui/widgets/debugwidget.h

@@ -17,7 +17,6 @@
 #include "src/experimental/adatabase.h"
 #include "src/experimental/aentry.h"
 #include "src/experimental/apilotentry.h"
-#include "src/experimental/expnewflightdialog.h"
 
 #include "src/testing/abenchmark.h"
 #include "src/testing/atimer.h"

+ 8 - 2
src/gui/widgets/logbookwidget.cpp

@@ -174,7 +174,7 @@ void LogbookWidget::flightsTableView_selectionChanged()//
 
 void LogbookWidget::on_newFlightButton_clicked()
 {
-    auto nf = new NewFlightDialog(this, Db::createNew);
+    auto nf = new NewFlightDialog(this);
     nf->setAttribute(Qt::WA_DeleteOnClose);
     nf->exec();
     displayModel->select();
@@ -183,7 +183,7 @@ void LogbookWidget::on_newFlightButton_clicked()
 void LogbookWidget::on_editFlightButton_clicked()
 {
     if(selectedFlights.length() == 1){
-        auto ef = new NewFlightDialog(this,Flight(selectedFlights.first()), Db::editExisting);
+        auto ef = new NewFlightDialog(selectedFlights.first(), this);
         ef->setAttribute(Qt::WA_DeleteOnClose);
         ef->exec();
         displayModel->select();
@@ -294,6 +294,12 @@ void LogbookWidget::on_flightSearchComboBox_currentIndexChanged(int)
     emit ui->showAllButton->clicked();
 }
 
+void LogbookWidget::onDatabaseChanged()
+{
+    //refresh view to reflect changes the user has made via a dialog.
+    displayModel->select();
+}
+
 void LogbookWidget::on_showAllButton_clicked()
 {
     ui->flightSearchLlineEdit->setText(QString());

+ 3 - 0
src/gui/widgets/logbookwidget.h

@@ -71,6 +71,9 @@ private slots:
 
     void on_flightSearchComboBox_currentIndexChanged(int);
 
+public slots:
+    void onDatabaseChanged();
+
 private:
     Ui::LogbookWidget *ui;
 

+ 6 - 0
src/gui/widgets/pilotswidget.cpp

@@ -71,6 +71,12 @@ void PilotsWidget::on_pilotSearchLineEdit_textChanged(const QString &arg1)
     model->setFilter("\"" + ui->pilotsSearchComboBox->currentText() + "\" LIKE \"%" + arg1 + "%\" AND ID > 1");
 }
 
+void PilotsWidget::onDatabaseChanged()
+{
+    //refresh view to reflect changes the user has made via a dialog.
+    model->select();
+}
+
 void PilotsWidget::tableView_selectionChanged()//const QItemSelection &index, const QItemSelection &
 {
     if (this->findChild<NewPilotDialog*>() != nullptr) {

+ 3 - 0
src/gui/widgets/pilotswidget.h

@@ -55,6 +55,9 @@ private slots:
 
     void on_pilotSearchLineEdit_textChanged(const QString &arg1);
 
+public slots:
+    void onDatabaseChanged();
+
 private:
     Ui::PilotsWidget *ui;
 

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini