Browse Source

Small UI Fixes

Fixed a bug in NewFlightDialog where autocompleted Tails would not map correctly to a foreign key leading to inability to write to database.
Felix Turowsky 2 years ago
parent
commit
7f802ee0a0

+ 50 - 42
mainwindow.cpp

@@ -42,50 +42,10 @@ MainWindow::MainWindow(QWidget *parent)
     , ui(new Ui::MainWindow)
 {
     ui->setupUi(this);
-    setupToolbar();
-    setActionIcons(OPL::Style::getStyleType());
-
-    // connect to the Database
-    if (OPL::Paths::databaseFileInfo().size() == 0)
-        onDatabaseInvalid();
-
-    if(!DB->connect()){
-        WARN(tr("Error establishing database connection. The following error has ocurred:<br><br>%1")
-             .arg(DB->lastError.text()));
-    }
-
-    DBCache->init();
-
-    // Construct Widgets
-    homeWidget = new HomeWidget(this);
-    ui->stackedWidget->addWidget(homeWidget);
-    logbookWidget = new LogbookWidget(this);
-    ui->stackedWidget->addWidget(logbookWidget);
-    aircraftWidget = new TailsWidget(this);
-    ui->stackedWidget->addWidget(aircraftWidget);
-    pilotsWidget = new PilotsWidget(this);
-    ui->stackedWidget->addWidget(pilotsWidget);
+    init();
 
-    airportWidget = new AirportWidget(this);
-    ui->stackedWidget->addWidget(airportWidget);
-    settingsWidget = new SettingsWidget(this);
-    ui->stackedWidget->addWidget(settingsWidget);
-    debugWidget = new DebugWidget(this);
-    ui->stackedWidget->addWidget(debugWidget);
-
-    connectWidgets();
-
-    // Startup Screen (Home Screen)
+    // set Startup Screen (Home Screen)
     ui->stackedWidget->setCurrentWidget(homeWidget);
-
-    // check database version (Debug)
-    //if (DB->dbRevision() < DB->getMinimumDatabaseRevision()) {
-    //    QString message = tr("Your database is out of date."
-    //                         "Minimum required revision: %1<br>"
-    //                         "You have revision: %2<br>")
-    //                         .arg(DB->getMinimumDatabaseRevision(), DB->dbRevision());
-    //    WARN(message);
-    //}
 }
 
 MainWindow::~MainWindow()
@@ -93,6 +53,15 @@ MainWindow::~MainWindow()
     delete ui;
 }
 
+void MainWindow::init()
+{
+    connectDatabase();
+    initialiseWidgets();
+    setupToolbar();
+    connectWidgets();
+    setActionIcons(OPL::Style::getStyleType());
+}
+
 void MainWindow::setupToolbar()
 {
     // Create and set up the toolbar
@@ -112,6 +81,45 @@ void MainWindow::setupToolbar()
     addToolBar(Qt::ToolBarArea::LeftToolBarArea, toolBar);
 }
 
+void MainWindow::initialiseWidgets()
+{
+    // Construct Widgets
+    homeWidget = new HomeWidget(this);
+    ui->stackedWidget->addWidget(homeWidget);
+
+    logbookWidget = new LogbookWidget(this);
+    ui->stackedWidget->addWidget(logbookWidget);
+
+    aircraftWidget = new TailsWidget(this);
+    ui->stackedWidget->addWidget(aircraftWidget);
+
+    pilotsWidget = new PilotsWidget(this);
+    ui->stackedWidget->addWidget(pilotsWidget);
+
+    airportWidget = new AirportWidget(this);
+    ui->stackedWidget->addWidget(airportWidget);
+
+    settingsWidget = new SettingsWidget(this);
+    ui->stackedWidget->addWidget(settingsWidget);
+
+    debugWidget = new DebugWidget(this);
+    ui->stackedWidget->addWidget(debugWidget);
+}
+
+void MainWindow::connectDatabase()
+{
+    // connect to the Database
+    if (OPL::Paths::databaseFileInfo().size() == 0)
+        onDatabaseInvalid();
+
+    if(!DB->connect()){
+        WARN(tr("Error establishing database connection. The following error has ocurred:<br><br>%1")
+             .arg(DB->lastError.text()));
+    }
+    DBCache->init();
+    // Load Cache
+}
+
 void MainWindow::setActionIcons(OPL::Style::StyleType style)
 {
     switch (style){

+ 3 - 0
mainwindow.h

@@ -135,7 +135,10 @@ private:
 
     bool airportDbIsDirty = false;
 
+    void init();
     void setupToolbar();
+    void initialiseWidgets();
+    void connectDatabase();
     void setActionIcons(OPL::Style::StyleType style = OPL::Style::StyleType::Light);
 
     void nope();

+ 3 - 3
src/functions/calc.cpp

@@ -164,7 +164,7 @@ QVector<QVector<double>> OPL::Calc::intermediatePointsOnGreatCircle(double lat1,
 }
 
 
-double OPL::Calc::solarElevation(QDateTime utc_time_point, double lat, double lon)
+double OPL::Calc::solarElevation(const QDateTime &utc_time_point, double lat, double lon)
 {
     double Alt = 11; // Assuming 11 kilometers as an average cruising height for a commercial passenger airplane.
     // convert current DateTime Object to a J2000 value used in the Calculation
@@ -223,7 +223,7 @@ double OPL::Calc::solarElevation(QDateTime utc_time_point, double lat, double lo
 }
 
 
-int OPL::Calc::calculateNightTime(const QString &dept, const QString &dest, QDateTime departureTime, int tblk, int night_angle)
+int OPL::Calc::calculateNightTime(const QString &dept, const QString &dest, const QDateTime &departureTime, int tblk, int night_angle)
 {
 
     const QString statement = QLatin1String("SELECT lat, long FROM airports WHERE icao = '")
@@ -269,7 +269,7 @@ int OPL::Calc::calculateNightTime(const QString &dept, const QString &dest, QDat
     return night_time;
 }
 
-bool OPL::Calc::isNight(const QString &icao, QDateTime event_time, int night_angle)
+bool OPL::Calc::isNight(const QString &icao, const QDateTime &event_time, int night_angle)
 {
     const QString statement = QLatin1String("SELECT lat, long FROM airports WHERE icao = '")
             + icao

+ 6 - 9
src/functions/calc.h

@@ -40,8 +40,7 @@ namespace OPL::Calc {
  */
 inline double radToDeg(double rad)
 {
-    double deg = rad * (180 / M_PI);
-    return deg;
+    return rad * (180 / M_PI);
 }
 
 /*!
@@ -51,8 +50,7 @@ inline double radToDeg(double rad)
  */
 inline double degToRad(double deg)
 {
-    double rad = deg * (M_PI / 180);
-    return rad;
+    return deg * (M_PI / 180);
 }
 
 /*!
@@ -62,8 +60,7 @@ inline double degToRad(double deg)
  */
 inline double radToNauticalMiles(double rad)
 {
-    double nm = rad * 3440.06479482;
-    return nm;
+    return rad * 3440.06479482;
 }
 
 /*!
@@ -116,7 +113,7 @@ QVector<QVector<double>> intermediatePointsOnGreatCircle(double lat1,
  * \param lon - Location Longitude in degrees -180:180 W(-) E(+)
  * \return elevation - double of solar elevation in degrees.
  */
-double solarElevation(QDateTime utc_time_point, double lat, double lon);
+double solarElevation(const QDateTime& utc_time_point, double lat, double lon);
 
 /*!
  * \brief Calculates which portion of a flight was conducted in night conditions.
@@ -128,9 +125,9 @@ double solarElevation(QDateTime utc_time_point, double lat, double lon);
  * Default -6 (end of civil evening twilight)
  * \return Total number of minutes under night flying conditions
  */
-int calculateNightTime(const QString &dept, const QString &dest, QDateTime departureTime, int tblk, int nightAngle);
+int calculateNightTime(const QString &dept, const QString &dest, const QDateTime& departureTime, int tblk, int nightAngle);
 
-bool isNight(const QString &icao, QDateTime event_time, int night_angle);
+bool isNight(const QString &icao, const QDateTime &event_time, int night_angle);
 
 QString formatTimeInput(QString user_input);
 

+ 5 - 2
src/gui/dialogues/newflightdialog.cpp

@@ -552,6 +552,10 @@ void NewFlightDialog::on_acftLineEdit_editingFinished()
     if(!verifyUserInput(line_edit, TailInput(line_edit->text())))
         if(!addNewTail(*line_edit))
             onBadInputReceived(line_edit);
+
+    const auto space = QLatin1Char(' ');
+    if(line_edit->text().contains(space))
+        line_edit->setText(line_edit->text().split(space)[0]); // strip out autocomplete suggestion
 }
 
 void NewFlightDialog::on_doftLineEdit_editingFinished()
@@ -600,7 +604,6 @@ void NewFlightDialog::on_approachComboBox_currentTextChanged(const QString &arg1
  */
 void NewFlightDialog::on_functionComboBox_currentIndexChanged(int index)
 {
-    DEB << "Current Index: " << index;
     if (index == static_cast<int>(OPL::PilotFunction::PIC)) {
         ui->picNameLineEdit->setText(self);
         emit ui->picNameLineEdit->editingFinished();
@@ -688,7 +691,7 @@ void NewFlightDialog::on_buttonBox_accepted()
         return;
 
     // If input verification passed, collect input and submit to database
-    auto newData = prepareFlightEntryData();
+    const auto newData = prepareFlightEntryData();
     DEB << "Old Data: ";
     DEB << flightEntry;
 

+ 6 - 3
src/gui/dialogues/newsimdialog.cpp

@@ -95,8 +95,10 @@ void NewSimDialog::on_totalTimeLineEdit_editingFinished()
         if(fixed == QString()) {
             ui->totalTimeLineEdit->setText(QString());
             ui->totalTimeLineEdit->setStyleSheet(OPL::Styles::RED_BORDER);
-        } else
+        } else {
             ui->totalTimeLineEdit->setText(fixed);
+            ui->totalTimeLineEdit->setStyleSheet(QString());
+        }
     }
 }
 
@@ -131,8 +133,9 @@ bool NewSimDialog::verifyInput(QString& error_msg)
         return false;
     }
     // Time
-    const QString time_string = OPL::Time::formatTimeInput(ui->totalTimeLineEdit->text());
-    const QTime time = OPL::Time::fromString(time_string);
+    if(!TimeInput(ui->totalTimeLineEdit->text()).isValid())
+        return false;
+    const QTime time = OPL::Time::fromString(ui->totalTimeLineEdit->text());
 
     if (!time.isValid()) {
         ui->totalTimeLineEdit->setStyleSheet(OPL::Styles::RED_BORDER);

+ 3 - 0
src/gui/dialogues/newsimdialog.ui

@@ -70,6 +70,9 @@
        <height>0</height>
       </size>
      </property>
+     <property name="placeholderText">
+      <string>00:00</string>
+     </property>
     </widget>
    </item>
    <item row="1" column="0">