Browse Source

Refactored Calc Class

class Calc is now namespace ACalc. Filenames, declarations adjusted. Some tweaks in functions themselves, changed naming of limited scope variables
Felix Turo 4 years ago
parent
commit
965ea429ba

+ 2 - 2
openPilotLog.pro

@@ -18,8 +18,8 @@ DEFINES += QT_DEPRECATED_WARNINGS
 SOURCES += \
     main.cpp \
     mainwindow.cpp \
+    src/classes/acalc.cpp \
     src/classes/aircraft.cpp \
-    src/classes/calc.cpp \
     src/classes/completionlist.cpp \
     src/classes/csv.cpp \
     src/classes/download.cpp \
@@ -50,8 +50,8 @@ SOURCES += \
 HEADERS += \
     debug.h \
     mainwindow.h \
+    src/classes/acalc.h \
     src/classes/aircraft.h \
-    src/classes/calc.h \
     src/classes/completionlist.h \
     src/classes/csv.h \
     src/classes/download.h \

+ 105 - 115
src/classes/calc.cpp → src/classes/acalc.cpp

@@ -15,41 +15,41 @@
  *You should have received a copy of the GNU General Public License
  *along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
-#include "calc.h"
+#include "acalc.h"
 #include "debug.h"
 
+using namespace ACalc;
+
 /*!
- * \brief Calc::blocktime Calculates Block Time for a given departure and arrival time
+ * \brief ACalc::blocktime Calculates Block Time for a given departure and arrival time
  * \param tofb QTime Time Off Blocks
  * \param tonb QTime Time On Blocks
  * \return Block Time in minutes
  */
-QTime Calc::blocktime(QTime tofb, QTime tonb)
+QTime ACalc::blocktime(QTime tofb, QTime tonb)
 {
-    if (tonb > tofb) { // landing same day
-        QTime blocktimeout(0, 0); // initialise return value at midnight
-        int blockseconds = tofb.secsTo(tonb); // returns seconds between 2 time objects
-        blocktimeout = blocktimeout.addSecs(blockseconds);
-        return blocktimeout;
+    QTime blocktime_out(0, 0); // initialise return value at midnight
 
+    if (tonb > tofb) { // landing same day
+        int blockseconds = tofb.secsTo(tonb);
+        blocktime_out = blocktime_out.addSecs(blockseconds);
     } else { // landing next day
         QTime midnight(0, 0);
-        QTime blocktimeout(0, 0); // initialise return value at midnight
-        int blockseconds = tofb.secsTo(midnight); // returns seconds passed until midnight
-        blocktimeout = blocktimeout.addSecs(blockseconds);
-        blockseconds = midnight.secsTo(tonb); // returns seconds passed after midnight
-        blocktimeout = blocktimeout.addSecs(blockseconds);
-        return blocktimeout;
+        int blockseconds = tofb.secsTo(midnight);
+        blocktime_out = blocktime_out.addSecs(blockseconds);
+        blockseconds = midnight.secsTo(tonb);
+        blocktime_out = blocktime_out.addSecs(blockseconds);
     }
+    return blocktime_out;
 }
 
 
 /*!
- * \brief Calc::minutes_to_string Converts database time to String Time
- * \param blockminutes int from database
+ * \brief ACalc::minutes_to_string Converts database time to String Time
+ * \param blockminutes from database
  * \return String hh:mm
  */
-QString Calc::minutesToString(QString blockminutes)
+QString ACalc::minutesToString(QString blockminutes)
 {
     int minutes = blockminutes.toInt();
     QString hour = QString::number(minutes / 60);
@@ -65,11 +65,11 @@ QString Calc::minutesToString(QString blockminutes)
 };
 
 /*!
- * \brief Calc::time_to_minutes converts QTime to int minutes
+ * \brief ACalc::time_to_minutes converts QTime to int minutes
  * \param time QTime
  * \return int time as number of minutes
  */
-int Calc::qTimeToMinutes(QTime time)
+int ACalc::QTimeToMinutes(QTime time)
 {
     QString timestring = time.toString("hh:mm");
     int minutes = (timestring.left(2).toInt()) * 60;
@@ -78,11 +78,11 @@ int Calc::qTimeToMinutes(QTime time)
 }
 
 /*!
- * \brief Calc::string_to_minutes Converts String Time to String Number of Minutes
+ * \brief ACalc::string_to_minutes Converts String Time to String Number of Minutes
  * \param timestring "hh:mm"
  * \return String number of minutes
  */
-int Calc::stringToMinutes(QString timestring)
+int ACalc::stringToMinutes(QString timestring)
 {
     int minutes = (timestring.left(2).toInt()) * 60;
     minutes += timestring.right(2).toInt();
@@ -120,7 +120,7 @@ int Calc::stringToMinutes(QString timestring)
  * \param rad
  * \return degrees
  */
-double Calc::radToDeg(double rad)
+double ACalc::radToDeg(double rad)
 {
     double deg = rad * (180 / M_PI);
     return deg;
@@ -131,7 +131,7 @@ double Calc::radToDeg(double rad)
  * \param deg
  * \return radians
  */
-double Calc::degToRad(double deg)
+double ACalc::degToRad(double deg)
 {
     double rad = deg * (M_PI / 180);
     return rad;
@@ -142,7 +142,7 @@ double Calc::degToRad(double deg)
  * \param rad
  * \return nautical miles
  */
-double Calc::radToNauticalMiles(double rad)
+double ACalc::radToNauticalMiles(double rad)
 {
     double nm = rad * 3440.06479482;
     return nm;
@@ -156,7 +156,7 @@ double Calc::radToNauticalMiles(double rad)
  * \param lon2 Location Longitude in degrees -180:180 W(-) E(+)
  * \return
  */
-double Calc::greatCircleDistance(double lat1, double lon1, double lat2, double lon2)
+double ACalc::greatCircleDistance(double lat1, double lon1, double lat2, double lon2)
 {
     // Converting Latitude and Longitude to Radians
     lat1 = degToRad(lat1);
@@ -165,53 +165,46 @@ double Calc::greatCircleDistance(double lat1, double lon1, double lat2, double l
     lon2 = degToRad(lon2);
 
     // Haversine Formula
-    double deltalon = lon2 - lon1;
-    double deltalat = lat2 - lat1;
+    double delta_lon = lon2 - lon1;
+    double delta_lat = lat2 - lat1;
 
-    double result = pow(sin(deltalat / 2), 2) +
-                    cos(lat1) * cos(lat2) * pow(sin(deltalon / 2), 2);
+    double result = pow(sin(delta_lat / 2), 2) +
+                    cos(lat1) * cos(lat2) * pow(sin(delta_lon / 2), 2);
     result = 2 * asin(sqrt(result));
     return result;
 }
 
 /*!
- * \brief Calc::greatCircleDistanceBetweenAirports Calculates Great
+ * \brief ACalc::greatCircleDistanceBetweenAirports Calculates Great
  * Circle distance between two coordinates, return in nautical miles.
  * \param dept ICAO 4-letter Airport Identifier
  * \param dest ICAO 4-letter Airport Identifier
  * \return Nautical Miles From Departure to Destination
  */
-double Calc::greatCircleDistanceBetweenAirports(QString dept, QString dest)
+double ACalc::greatCircleDistanceBetweenAirports(QString dept, QString dest)
 {
-    //db::multiSelect("airports", columns, "EDDF", "icao", db::exactMatch);
-    /*if(dbAirport::retreiveIcaoCoordinates(dept).isEmpty() || dbAirport::retreiveIcaoCoordinates(dest).isEmpty()){
-        qWarning() << "greatCircleDistance - invalid input. aborting.";
-        return 0;
-    }*/
-
-    QVector<QString> columns = {"lat", "long"};
-    QVector<QString> deptCoordinates = Db::multiSelect(columns, "airports", "icao", dept,
+    QVector<QString> dept_coordinates = Db::multiSelect({"lat", "long"}, "airports", "icao", dept,
                                                        Db::exactMatch);
-    QVector<QString> destCoordinates = Db::multiSelect(columns, "airports", "icao", dest,
+    QVector<QString> dest_coordinates = Db::multiSelect({"lat", "long"}, "airports", "icao", dest,
                                                        Db::exactMatch);
 
-    if (deptCoordinates.isEmpty() || destCoordinates.isEmpty()
+    if (dept_coordinates.isEmpty() || dest_coordinates.isEmpty()
        ) {
-        qDebug() << "greatCircleDistance - invalid input. aborting.";
+        DEB("invalid input. aborting.");
         return 0;
     }
 
-    double lat1 = degToRad(deptCoordinates[0].toDouble());
-    double lon1 = degToRad(deptCoordinates[1].toDouble());
-    double lat2 = degToRad(destCoordinates[0].toDouble());
-    double lon2 = degToRad(destCoordinates[1].toDouble());
+    double lat1 = degToRad(dept_coordinates[0].toDouble());
+    double lon1 = degToRad(dept_coordinates[1].toDouble());
+    double lat2 = degToRad(dest_coordinates[0].toDouble());
+    double lon2 = degToRad(dest_coordinates[1].toDouble());
 
     // Haversine Formula
-    double deltalon = lon2 - lon1;
-    double deltalat = lat2 - lat1;
+    double delta_lon = lon2 - lon1;
+    double delta_lat = lat2 - lat1;
 
-    double result = pow(sin(deltalat / 2), 2) +
-                    cos(lat1) * cos(lat2) * pow(sin(deltalon / 2), 2);
+    double result = pow(sin(delta_lat / 2), 2) +
+                    cos(lat1) * cos(lat2) * pow(sin(delta_lon / 2), 2);
     result = 2 * asin(sqrt(result));
     return radToNauticalMiles(result);
 }
@@ -226,7 +219,7 @@ double Calc::greatCircleDistanceBetweenAirports(QString dept, QString dest)
  * \param tblk Total Blocktime in minutes
  * \return coordinates {lat,lon} along the Great Circle Track
  */
-QVector<QVector<double>> Calc::intermediatePointsOnGreatCircle(double lat1, double lon1,
+QVector<QVector<double>> ACalc::intermediatePointsOnGreatCircle(double lat1, double lon1,
                                                                double lat2, double lon2, int tblk)
 {
     double d = greatCircleDistance(lat1, lon1, lat2, lon2); //Calculate distance (radians)
@@ -272,7 +265,7 @@ QVector<QVector<double>> Calc::intermediatePointsOnGreatCircle(double lat1, doub
  * \param lon - Location Longitude in degrees -180:180 W(-) E(+)
  * \return elevation - double of solar elevation in degrees.
  */
-double Calc::solarElevation(QDateTime utc_time_point, double lat, double lon)
+double ACalc::solarElevation(QDateTime utc_time_point, double lat, double lon)
 {
     double Alt =
         11; // I am taking 11 kilometers as an average cruising height for a commercial passenger airplane.
@@ -296,29 +289,29 @@ double Calc::solarElevation(QDateTime utc_time_point, double lat, double lon)
     double r = sqrt(pow(x, 2) + pow(y, 2));
     double v = atan2(y, x) * (180 / M_PI);
     // find the longitude of the sun
-    double solarlongitude = v + w;
+    double solar_longitude = v + w;
     // compute the ecliptic rectangular coordinates
-    double xeclip = r * cos(solarlongitude * (M_PI / 180));
-    double yeclip = r * sin(solarlongitude * (M_PI / 180));
-    double zeclip = 0.0;
+    double x_eclip = r * cos(solar_longitude * (M_PI / 180));
+    double y_eclip = r * sin(solar_longitude * (M_PI / 180));
+    double z_eclip = 0.0;
     //rotate these coordinates to equitorial rectangular coordinates
-    double xequat = xeclip;
-    double yequat = yeclip * cos(oblecl * (M_PI / 180)) + zeclip * sin(oblecl * (M_PI / 180));
-    double zequat = yeclip * sin(23.4406 * (M_PI / 180)) + zeclip * cos(oblecl * (M_PI / 180));
+    double x_equat = x_eclip;
+    double y_equat = y_eclip * cos(oblecl * (M_PI / 180)) + z_eclip * sin(oblecl * (M_PI / 180));
+    double z_equat = y_eclip * sin(23.4406 * (M_PI / 180)) + z_eclip * cos(oblecl * (M_PI / 180));
     // convert equatorial rectangular coordinates to RA and Decl:
-    r = sqrt(pow(xequat, 2) + pow(yequat, 2) + pow(zequat,
+    r = sqrt(pow(x_equat, 2) + pow(y_equat, 2) + pow(z_equat,
                                                    2)) - (Alt / 149598000); //roll up the altitude correction
-    double RA = atan2(yequat, xequat) * (180 / M_PI);
-    double delta = asin(zequat / r) * (180 / M_PI);
+    double RA = atan2(y_equat, x_equat) * (180 / M_PI);
+    double delta = asin(z_equat / r) * (180 / M_PI);
 
-    // GET UTH time
-    double UTH = utc_time_point.time().hour() + utc_time_point.time().minute() / 60.0 +
+    // GET UT in hours time
+    double uth = utc_time_point.time().hour() + utc_time_point.time().minute() / 60.0 +
                  utc_time_point.time().second() / 3600.0;
     // Calculate local siderial time
-    double GMST0 = fmod(L + 180, 360.0) / 15;
-    double SIDTIME = GMST0 + UTH + lon / 15;
+    double gmst0 = fmod(L + 180, 360.0) / 15;
+    double sid_time = gmst0 + uth + lon / 15;
     // Replace RA with hour angle HA
-    double HA = (SIDTIME * 15 - RA);
+    double HA = (sid_time * 15 - RA);
     // convert to rectangular coordinate system
     x = cos(HA * (M_PI / 180)) * cos(delta * (M_PI / 180));
     y = sin(HA * (M_PI / 180)) * cos(delta * (M_PI / 180));
@@ -341,49 +334,47 @@ double Calc::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 Calc::calculateNightTime(QString dept, QString dest, QDateTime departureTime, int tblk, int nightAngle)
+int ACalc::calculateNightTime(const QString &dept, const QString &dest, QDateTime departureTime, int tblk, int nightAngle)
 {
-    QVector<QString> columns = {"lat", "long"};
-    QVector<QString> deptCoordinates = Db::multiSelect(columns, "airports", "icao", dept,
+    QVector<QString> dept_coordinates = Db::multiSelect({"lat", "long"}, "airports", "icao", dept,
                                                        Db::exactMatch);
-    QVector<QString> destCoordinates = Db::multiSelect(columns, "airports", "icao", dest,
+    QVector<QString> dest_coordinates = Db::multiSelect({"lat", "long"}, "airports", "icao", dest,
                                                        Db::exactMatch);
 
-    if (deptCoordinates.isEmpty() || destCoordinates.isEmpty()
+    if (dept_coordinates.isEmpty() || dest_coordinates.isEmpty()
        ) {
-        qDebug() << "Calc::CalculateNightTime - invalid input. aborting.";
+        DEB("invalid input. aborting.");
         return 0;
     }
 
-    double deptLat = degToRad(deptCoordinates[0].toDouble());
-    double deptLon = degToRad(deptCoordinates[1].toDouble());
-    double destLat = degToRad(destCoordinates[0].toDouble());
-    double destLon = degToRad(destCoordinates[1].toDouble());
+    double dept_lat = degToRad(dept_coordinates[0].toDouble());
+    double dept_lon = degToRad(dept_coordinates[1].toDouble());
+    double dest_lat = degToRad(dest_coordinates[0].toDouble());
+    double dest_lon = degToRad(dest_coordinates[1].toDouble());
 /*
-    qDebug() << "Calc::CalculateNightTime deptLat = " << deptLat;
-    qDebug() << "Calc::CalculateNightTime deptLon = " << deptLon;
-    qDebug() << "Calc::CalculateNightTime destLat = " << destLat;
-    qDebug() << "Calc::CalculateNightTime destLon = " << destLon;
+    qDebug() << "ACalc::CalculateNightTime deptLat = " << deptLat;
+    qDebug() << "ACalc::CalculateNightTime deptLon = " << deptLon;
+    qDebug() << "ACalc::CalculateNightTime destLat = " << destLat;
+    qDebug() << "ACalc::CalculateNightTime destLon = " << destLon;
 */
-    QVector<QVector<double>> route = intermediatePointsOnGreatCircle(deptLat, deptLon, destLat, destLon,
+    QVector<QVector<double>> route = intermediatePointsOnGreatCircle(dept_lat, dept_lon, dest_lat, dest_lon,
                                                                      tblk);
 
-    int nightTime = 0;
+    int night_time = 0;
     for (int i = 0; i < tblk ; i++) {
         if (solarElevation(departureTime.addSecs(60 * i), radToDeg(route[i][0]),
                            radToDeg(route[i][1])) < nightAngle) {
-            nightTime ++;
+            night_time ++;
         }
     }
-    //qDebug() << "Calc::CalculateNightTime result for angle: "<< nightAngle
+    //qDebug() << "ACalc::CalculateNightTime result for angle: "<< nightAngle
     //         << " :" << nightTime << " minutes night flying time.";
-    return nightTime;
+    return night_time;
 }
 
-bool Calc::isNight(QString icao, QDateTime eventTime, int nightAngle)
+bool ACalc::isNight(QString icao, QDateTime event_time, int nightAngle)
 {
-    QVector<QString> columns = {"lat", "long"};
-    QVector<QString> coordinates = Db::multiSelect(columns, "airports", "icao", icao,
+    QVector<QString> coordinates = Db::multiSelect({"lat", "long"}, "airports", "icao", icao,
                                                        Db::exactMatch);
     if (coordinates.isEmpty()) {
         DEB("invalid input. aborting.");
@@ -393,7 +384,7 @@ bool Calc::isNight(QString icao, QDateTime eventTime, int nightAngle)
     double lat = degToRad(coordinates[0].toDouble());
     double lon = degToRad(coordinates[1].toDouble());
 
-    if(solarElevation(eventTime, lat, lon) < nightAngle){
+    if(solarElevation(event_time, lat, lon) < nightAngle){
         return true;
     } else {
         return false;
@@ -401,34 +392,34 @@ bool Calc::isNight(QString icao, QDateTime eventTime, int nightAngle)
 }
 
 /*!
- * \brief Calc::formatTimeInput verifies user input and formats to hh:mm
+ * \brief ACalc::formatTimeInput verifies user input and formats to hh:mm
  * if the output is not a valid time, an empty string is returned. Accepts
  * input as hh:mm, h:mm, hhmm or hmm.
  * \param userinput from a QLineEdit
  * \return formatted QString "hh:mm" or Empty String
  */
-QString Calc::formatTimeInput(QString userinput)
+QString ACalc::formatTimeInput(QString user_input)
 {
     QString output; //
-    QTime temptime; //empty time object is invalid by default
-
-    bool containsSeperator = userinput.contains(":");
-    if (userinput.length() == 4 && !containsSeperator) {
-        temptime = QTime::fromString(userinput, "hhmm");
-    } else if (userinput.length() == 3 && !containsSeperator) {
-        if (userinput.toInt() < 240) { //Qtime is invalid if time is between 000 and 240 for this case
-            QString tempstring = userinput.prepend("0");
-            temptime = QTime::fromString(tempstring, "hhmm");
+    QTime temp_time; //empty time object is invalid by default
+
+    bool contains_seperator = user_input.contains(":");
+    if (user_input.length() == 4 && !contains_seperator) {
+        temp_time = QTime::fromString(user_input, "hhmm");
+    } else if (user_input.length() == 3 && !contains_seperator) {
+        if (user_input.toInt() < 240) { //Qtime is invalid if time is between 000 and 240 for this case
+            QString tempstring = user_input.prepend("0");
+            temp_time = QTime::fromString(tempstring, "hhmm");
         } else {
-            temptime = QTime::fromString(userinput, "Hmm");
+            temp_time = QTime::fromString(user_input, "Hmm");
         }
-    } else if (userinput.length() == 4 && containsSeperator) {
-        temptime = QTime::fromString(userinput, "h:mm");
-    } else if (userinput.length() == 5 && containsSeperator) {
-        temptime = QTime::fromString(userinput, "hh:mm");
+    } else if (user_input.length() == 4 && contains_seperator) {
+        temp_time = QTime::fromString(user_input, "h:mm");
+    } else if (user_input.length() == 5 && contains_seperator) {
+        temp_time = QTime::fromString(user_input, "hh:mm");
     }
 
-    output = temptime.toString("hh:mm");
+    output = temp_time.toString("hh:mm");
     if (output.isEmpty()) {
         qDebug() << "Time input is invalid.";
     }
@@ -436,19 +427,19 @@ QString Calc::formatTimeInput(QString userinput)
 }
 
 /*!
- * \brief Calc::updateAutoTimes When the details of an aircraft are changed,
+ * \brief ACalc::updateAutoTimes When the details of an aircraft are changed,
  * this function recalculates deductable times for this aircraft and updates
  * the database accordingly.
  * \param acft An aircraft object.
  * \return
  */
-void Calc::updateAutoTimes(int acft_id)
+void ACalc::updateAutoTimes(int acft_id)
 {
     //find all flights for aircraft
-    auto flightList = Db::multiSelect(QVector<QString>{"flight_id"},"flights","acft",
+    auto flight_list = Db::multiSelect({"flight_id"},"flights","acft",
                                       QString::number(acft_id),Db::exactMatch);
     auto acft = Aircraft(acft_id);
-    for (const auto& item : flightList) {
+    for (const auto& item : flight_list) {
         auto flt = Flight(item.toInt());
 
         if(acft.data.value("singlepilot") == "1" && acft.data.value("singleengine") == "1") {
@@ -471,13 +462,12 @@ void Calc::updateAutoTimes(int acft_id)
     }
 }
 /*!
- * \brief Calc::updateNightTimes updates the night times in the database
+ * \brief ACalc::updateNightTimes updates the night times in the database
  */
-void Calc::updateNightTimes()
+void ACalc::updateNightTimes()
 {
     const int nightAngle = Settings::read("flightlogging/nightangle").toInt();
-    const QVector<QString> columns = {"flight_id"};
-    auto flights = Db::multiSelect(columns,"flights");
+    auto flights = Db::multiSelect({"flight_id"}, "flights");
     for (const auto& item : flights) {
         auto flt = new Flight(item.toInt());
         auto dateTime = QDateTime(QDate::fromString(flt->data.value("doft"),Qt::ISODate),

+ 76 - 0
src/classes/acalc.h

@@ -0,0 +1,76 @@
+/*
+ *openPilot Log - A FOSS Pilot Logbook Application
+ *Copyright (C) 2020  Felix Turowsky
+ *
+ *This program is free software: you can redistribute it and/or modify
+ *it under the terms of the GNU General Public License as published by
+ *the Free Software Foundation, either version 3 of the License, or
+ *(at your option) any later version.
+ *
+ *This program is distributed in the hope that it will be useful,
+ *but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *GNU General Public License for more details.
+ *
+ *You should have received a copy of the GNU General Public License
+ *along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#ifndef CALC_H
+#define CALC_H
+
+#include "src/database/db.h"
+#include "src/classes/aircraft.h"
+#include "src/classes/flight.h"
+#include "src/classes/settings.h"
+#include <QDateTime>
+#include <cmath>
+#include <QDebug>
+/*!
+ * \brief The calc class provides functionality for various calculations that are performed
+ * outside of the database. This includes tasks like converting different units and formats,
+ * or functions calculating block time or night time.
+ */
+namespace ACalc {
+
+QTime blocktime(QTime tofb, QTime tonb);
+
+QString minutesToString(QString blockminutes);
+
+int stringToMinutes(QString time);
+
+int QTimeToMinutes(QTime time);
+
+double radToDeg(double rad);
+
+double degToRad(double deg);
+
+double radToNauticalMiles(double rad);
+
+double greatCircleDistance(double lat1, double lon1, double lat2, double lon2);
+
+double greatCircleDistanceBetweenAirports(QString dept, QString dest);
+
+QVector<QVector<double>> intermediatePointsOnGreatCircle(double lat1,
+                                                         double lon1,
+                                                         double lat2,
+                                                         double lon2,
+                                                         int tblk);
+
+double solarElevation(QDateTime utc_time_point, double lat, double lon);
+
+int calculateNightTime(const QString &dept, const QString &dest, QDateTime departureTime, int tblk, int nightAngle);
+
+bool isNight(QString icao, QDateTime event_time, int nightAngle);
+
+QString formatTimeInput(QString user_input);
+
+void updateAutoTimes(int acft_id);
+
+void autoTimes(Flight, Aircraft);
+
+void updateNightTimes();
+} // namespace ACalc
+
+
+#endif // CALC_H

+ 0 - 78
src/classes/calc.h

@@ -1,78 +0,0 @@
-/*
- *openPilot Log - A FOSS Pilot Logbook Application
- *Copyright (C) 2020  Felix Turowsky
- *
- *This program is free software: you can redistribute it and/or modify
- *it under the terms of the GNU General Public License as published by
- *the Free Software Foundation, either version 3 of the License, or
- *(at your option) any later version.
- *
- *This program is distributed in the hope that it will be useful,
- *but WITHOUT ANY WARRANTY; without even the implied warranty of
- *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *GNU General Public License for more details.
- *
- *You should have received a copy of the GNU General Public License
- *along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-
-#ifndef CALC_H
-#define CALC_H
-
-#include "src/database/db.h"
-#include "src/classes/aircraft.h"
-#include "src/classes/flight.h"
-#include "src/classes/settings.h"
-#include <QDateTime>
-#include <cmath>
-#include <QDebug>
-/*!
- * \brief The calc class provides functionality for various calculations that are performed
- * outside of the database. This includes tasks like converting different units and formats,
- * or functions calculating block time or night time.
- */
-class Calc
-{
-public:
-
-    static QTime blocktime(QTime tofb, QTime tonb);
-
-    static QString minutesToString(QString blockminutes);
-
-    static int stringToMinutes(QString time);
-
-    static int qTimeToMinutes(QTime time);
-
-    static double radToDeg(double rad);
-
-    static double degToRad(double deg);
-
-    static double radToNauticalMiles(double rad);
-
-    static double greatCircleDistance(double lat1, double lon1, double lat2, double lon2);
-
-    static double greatCircleDistanceBetweenAirports(QString dept, QString dest);
-
-    static QVector<QVector<double>> intermediatePointsOnGreatCircle(double lat1,
-                                                                    double lon1,
-                                                                    double lat2,
-                                                                    double lon2,
-                                                                    int tblk);
-
-    static double solarElevation(QDateTime utc_time_point, double lat, double lon);
-
-    static int calculateNightTime(QString dept, QString dest, QDateTime departureTime, int tblk, int nightAngle);
-
-    static bool isNight(QString icao, QDateTime eventTime, int nightAngle);
-
-    static QString formatTimeInput(QString userinput);
-
-    static void updateAutoTimes(int acft_id);
-
-    static void autoTimes(Flight, Aircraft);
-
-    static void updateNightTimes();
-};
-
-
-#endif // CALC_H

+ 33 - 32
src/database/dbsetup.cpp

@@ -18,12 +18,12 @@
 #include "dbsetup.h"
 #include "debug.h"
 
-// Statements for creation of database tables, Revision 10
+// Statements for creation of database tables, Revision 12
 
 const QString createTablePilots = "CREATE TABLE \"pilots\" ( "
             "\"pilot_id\"       INTEGER NOT NULL, "
-            "\"piclastname\"	TEXT    NOT NULL, "
-            "\"picfirstname\"	TEXT, "
+            "\"piclastname\"    TEXT    NOT NULL, "
+            "\"picfirstname\"   TEXT, "
             "\"alias\"          TEXT, "
             "\"company\"        TEXT, "
             "\"employeeid\"     TEXT, "
@@ -34,15 +34,15 @@ const QString createTablePilots = "CREATE TABLE \"pilots\" ( "
 
 const QString createTableTails = "CREATE TABLE \"tails\" ( "
             "\"tail_id\"        INTEGER NOT NULL, "
-            "\"registration\"	TEXT NOT NULL, "
+            "\"registration\"   TEXT NOT NULL, "
             "\"company\"        TEXT, "
             "\"make\"           TEXT, "
             "\"model\"          TEXT, "
             "\"variant\"        TEXT, "
-            "\"singlepilot\"	INTEGER, "
+            "\"singlepilot\"    INTEGER, "
             "\"multipilot\"     INTEGER, "
-            "\"singleengine\"	INTEGER, "
-            "\"multiengine\"	INTEGER, "
+            "\"singleengine\"   INTEGER, "
+            "\"multiengine\"    INTEGER, "
             "\"unpowered\"      INTEGER, "
             "\"piston\"         INTEGER, "
             "\"turboprop\"      INTEGER, "
@@ -75,16 +75,16 @@ const QString createTableFlights = "CREATE TABLE \"flights\" ("
             "\"tDUAL\"          INTEGER, "
             "\"tFI\"            INTEGER, "
             "\"tSIM\"           INTEGER, "
-            "\"pilotFlying\"	INTEGER, "
+            "\"pilotFlying\"    INTEGER, "
             "\"toDay\"          INTEGER, "
             "\"toNight\"        INTEGER, "
             "\"ldgDay\"         INTEGER, "
             "\"ldgNight\"       INTEGER, "
             "\"autoland\"       INTEGER, "
-            "\"secondPilot\"	INTEGER, "
+            "\"secondPilot\"    INTEGER, "
             "\"thirdPilot\"     INTEGER, "
-            "\"ApproachType\"	TEXT, "
-            "\"FlightNumber\"	TEXT, "
+            "\"ApproachType\"   TEXT, "
+            "\"FlightNumber\"   TEXT, "
             "\"Remarks\"        TEXT, "
             "FOREIGN KEY(\"pic\")  REFERENCES \"pilots\"(\"pilot_id\") ON DELETE RESTRICT, "
             "FOREIGN KEY(\"acft\") REFERENCES \"tails\"(\"tail_id\")   ON DELETE RESTRICT, "
@@ -106,17 +106,17 @@ const QString createTableAirports = "CREATE TABLE \"airports\" ( "
             ")";
 
 const QString createTableAircraft = "CREATE TABLE \"aircraft\" ( "
-            "\"aircraft_id\"	INTEGER NOT NULL, "
+            "\"aircraft_id\"    INTEGER NOT NULL, "
             "\"make\"           TEXT, "
             "\"model\"          TEXT, "
             "\"variant\"        TEXT, "
             "\"name\"           TEXT, "
             "\"iata\"           TEXT, "
             "\"icao\"           TEXT, "
-            "\"singlepilot\"	INTEGER, "
+            "\"singlepilot\"    INTEGER, "
             "\"multipilot\"     INTEGER, "
-            "\"singleengine\"	INTEGER, "
-            "\"multiengine\"	INTEGER, "
+            "\"singleengine\"   INTEGER, "
+            "\"multiengine\"    INTEGER, "
             "\"unpowered\"      INTEGER, "
             "\"piston\"         INTEGER, "
             "\"turboprop\"      INTEGER, "
@@ -129,9 +129,9 @@ const QString createTableAircraft = "CREATE TABLE \"aircraft\" ( "
             ")";
 
 const QString createTableChangelog = "CREATE TABLE \"changelog\" ( "
-            "\"revision\"	INTEGER NOT NULL, "
-            "\"comment\"	TEXT, "
-            "\"date\"	NUMERIC, "
+            "\"revision\"   INTEGER NOT NULL, "
+            "\"comment\"    TEXT, "
+            "\"date\"       NUMERIC, "
             "PRIMARY KEY(\"revision\") "
             ")";
 
@@ -141,7 +141,7 @@ const QString createViewDefault = "CREATE VIEW viewDefault AS "
         "dept AS 'Dept', "
         "printf('%02d',(tofb/60))||':'||printf('%02d',(tofb%60)) AS 'Time', "
         "dest AS 'Dest', printf('%02d',(tonb/60))||':'||printf('%02d',(tonb%60)) AS 'Time ', "
-        "printf('%02d',(tblk/60))||':'||printf('%02d',(tblk%60)) AS 'Total', " 
+        "printf('%02d',(tblk/60))||':'||printf('%02d',(tblk%60)) AS 'Total', "
         "CASE "
         "WHEN pilot_id = 1 THEN alias "
         "ELSE piclastname||', '||substr(picfirstname, 1, 1)||'.' "
@@ -257,23 +257,24 @@ const QStringList templateTables= {
 
 bool DbSetup::createDatabase()
 {
-    /// [George]: Not necessary to heap allocate for such a trivial task
-    /// TODO: Since you want to be fancy well do it with some cheeky bit operations
-    /// for the lolz.
-    QVector<bool> returnValues;
-
     DEB("Creating tables...");
-    returnValues << createSchemata(tables);
+    if (!createSchemata(tables)) {
+        DEB("Creating tables has failed.");
+        return false;
+    }
+
     DEB("Creating views...");
-    returnValues << createSchemata(views);
-    DEB("Populating tables...");
-    returnValues << importDefaultData();
+    if (!createSchemata(views)) {
+        DEB("Creating views failed.");
+        return false;
+    }
 
-    for (const auto& allGood : returnValues) {
-        if (!allGood){
-            return false;
-        }
+    DEB("Populating tables...");
+    if (!importDefaultData()) {
+        DEB("Populating tables failed.");
+        return false;
     }
+
     DEB("Database successfully created!");
     return true;
 }

+ 1 - 0
src/gui/dialogues/firstrundialog.cpp

@@ -87,6 +87,7 @@ void FirstRunDialog::on_finishButton_clicked()
         }
         data.insert("piclastname",ui->piclastnameLineEdit->text());
         data.insert("picfirstname",ui->picfirstnameLineEdit->text());
+        data.insert("alias", Settings::read("userdata/displayselfas").toString());
         data.insert("employeeid",ui->employeeidLineEdit->text());
         data.insert("phone",ui->phoneLineEdit->text());
         data.insert("email",ui->emailLineEdit->text());

+ 38 - 38
src/gui/dialogues/newflightdialog.cpp

@@ -265,8 +265,8 @@ void NewFlightDialog::formFiller(Flight oldFlight)
                 //DEB("Time Match found: " << key << " - " << leName);
                 auto le = parent()->findChild<QLineEdit *>(leName);
                 if(le != nullptr){
-                    DEB("Setting " << le->objectName() << " to " << Calc::minutesToString(oldFlight.data.value(key)));
-                    le->setText(Calc::minutesToString(
+                    DEB("Setting " << le->objectName() << " to " << ACalc::minutesToString(oldFlight.data.value(key)));
+                    le->setText(ACalc::minutesToString(
                                 oldFlight.data.value(key)));
                     filled << leName;
                     line_edits_names.removeOne(leName);
@@ -551,8 +551,8 @@ void NewFlightDialog::collectBasicData()
     //Block Time
     auto tofb = QTime::fromString(ui->tofbTimeLineEdit->text(),"hh:mm");
     auto tonb = QTime::fromString(ui->tonbTimeLineEdit->text(),"hh:mm");
-    QString blockTime = Calc::blocktime(tofb, tonb).toString("hh:mm");
-    QString blockMinutes = QString::number(Calc::stringToMinutes(blockTime));
+    QString blockTime = ACalc::blocktime(tofb, tonb).toString("hh:mm");
+    QString blockMinutes = QString::number(ACalc::stringToMinutes(blockTime));
     newData.insert("tblk",blockMinutes);
 
     // Aircraft
@@ -633,8 +633,8 @@ void NewFlightDialog::collectAdditionalData()
     // Extra Times
     auto tofb = QTime::fromString(ui->tofbTimeLineEdit->text(),"hh:mm");
     auto tonb = QTime::fromString(ui->tonbTimeLineEdit->text(),"hh:mm");
-    QString blockTime = Calc::blocktime(tofb, tonb).toString("hh:mm");
-    QString blockMinutes = QString::number(Calc::stringToMinutes(blockTime));
+    QString blockTime = ACalc::blocktime(tofb, tonb).toString("hh:mm");
+    QString blockMinutes = QString::number(ACalc::stringToMinutes(blockTime));
 
     auto acft = Aircraft(newData.value("acft").toInt());
 
@@ -672,7 +672,7 @@ void NewFlightDialog::collectAdditionalData()
     const int nightAngle = Settings::read("flightlogging/nightangle").toInt();
 
     QString nightTime = QString::number(
-                        Calc::calculateNightTime(
+                        ACalc::calculateNightTime(
                         newData.value("dept"), newData.value("dest"),
                         deptDateTime, tblk, nightAngle));
     newData.insert("tNIGHT", nightTime);
@@ -724,7 +724,7 @@ void NewFlightDialog::collectAdditionalData()
             newData.insert("toDay", "0");
             newData.insert("toNight", QString::number(ui->TakeoffSpinBox->value()));
         } else { //check
-            if(Calc::isNight(ui->deptLocLineEdit->text(), deptDateTime,  nightAngle)){
+            if(ACalc::isNight(ui->deptLocLineEdit->text(), deptDateTime,  nightAngle)){
                 newData.insert("toDay", "0");
                 newData.insert("toNight", QString::number(ui->TakeoffSpinBox->value()));
             }else{
@@ -747,7 +747,7 @@ void NewFlightDialog::collectAdditionalData()
         } else { //check
             QString destDate = ui->doftLineEdit->text() + 'T' + tonb.toString("hh:mm");
             QDateTime destDateTime = QDateTime::fromString(destDate,"yyyy-MM-ddThh:mm");
-            if(Calc::isNight(ui->destLocLineEdit->text(), destDateTime,  nightAngle)){
+            if(ACalc::isNight(ui->destLocLineEdit->text(), destDateTime,  nightAngle)){
                 newData.insert("ldgDay", "0");
                 newData.insert("ldgNight", QString::number(ui->LandingSpinBox->value()));
             }else{
@@ -784,8 +784,8 @@ void NewFlightDialog::fillExtras()
     //Times
     auto tofb = QTime::fromString(ui->tofbTimeLineEdit->text(),"hh:mm");
     auto tonb = QTime::fromString(ui->tonbTimeLineEdit->text(),"hh:mm");
-    QString blockTime = Calc::blocktime(tofb, tonb).toString("hh:mm");
-    QString blockMinutes = QString::number(Calc::stringToMinutes(blockTime));
+    QString blockTime = ACalc::blocktime(tofb, tonb).toString("hh:mm");
+    QString blockMinutes = QString::number(ACalc::stringToMinutes(blockTime));
     ui->tblkTimeLineEdit->setText(blockTime);
     auto acft = Aircraft(newData.value("acft").toInt());
 
@@ -822,11 +822,11 @@ void NewFlightDialog::fillExtras()
     const int nightAngle = Settings::read("flightlogging/nightangle").toInt();
 
     QString nightTime = QString::number(
-                        Calc::calculateNightTime(
+                        ACalc::calculateNightTime(
                         newData.value("dept"), newData.value("dest"),
                         deptDateTime, tblk, nightAngle));
-    ui->tNIGHTTimeLineEdit->setText(Calc::minutesToString(nightTime));
-    ui->tNIGHTLabel->setText(Calc::minutesToString(nightTime));
+    ui->tNIGHTTimeLineEdit->setText(ACalc::minutesToString(nightTime));
+    ui->tNIGHTLabel->setText(ACalc::minutesToString(nightTime));
     // Function times
     switch (ui->FunctionComboBox->currentIndex()) {
     case 0://PIC
@@ -1116,7 +1116,7 @@ void NewFlightDialog::on_tofbTimeLineEdit_inputRejected()
 
 void NewFlightDialog::on_tofbTimeLineEdit_editingFinished()
 {
-    ui->tofbTimeLineEdit->setText(Calc::formatTimeInput(ui->tofbTimeLineEdit->text()));
+    ui->tofbTimeLineEdit->setText(ACalc::formatTimeInput(ui->tofbTimeLineEdit->text()));
     const auto time = QTime::fromString(ui->tofbTimeLineEdit->text(),"hh:mm");
 
     auto line_edit = ui->tofbTimeLineEdit;
@@ -1177,7 +1177,7 @@ void NewFlightDialog::on_tonbTimeLineEdit_inputRejected()
 
 void NewFlightDialog::on_tonbTimeLineEdit_editingFinished()
 {
-    ui->tonbTimeLineEdit->setText(Calc::formatTimeInput(ui->tonbTimeLineEdit->text()));
+    ui->tonbTimeLineEdit->setText(ACalc::formatTimeInput(ui->tonbTimeLineEdit->text()));
     auto line_edit = ui->tonbTimeLineEdit;
     const auto time = QTime::fromString(ui->tonbTimeLineEdit->text(),"hh:mm");
     if(time.isValid()){
@@ -1451,13 +1451,13 @@ inline bool NewFlightDialog::isLessOrEqualToTotalTime(QString timeString)
         mb->show();
         return false;
     } else {
-        int minutes = Calc::stringToMinutes(timeString);
+        int minutes = ACalc::stringToMinutes(timeString);
         if (minutes <= newData.value("tblk").toInt()) {
             return true;
         } else {
             auto mb = new QMessageBox(this);
             mb->setText("Cannot be more than Total Time of Flight:<br><br><center><b>"
-                        + Calc::minutesToString(newData.value("tblk"))
+                        + ACalc::minutesToString(newData.value("tblk"))
                         + "</b></center><br>");
             mb->show();
             return false;
@@ -1469,21 +1469,21 @@ inline bool NewFlightDialog::isLessOrEqualToTotalTime(QString timeString)
 void NewFlightDialog::on_tblkTimeLineEdit_editingFinished()
 {
     const auto &le = ui->tblkTimeLineEdit;
-    le->setText(Calc::formatTimeInput(le->text()));
+    le->setText(ACalc::formatTimeInput(le->text()));
     const auto &text = le->text();
 
-    newData.insert("tblk",QString::number(Calc::stringToMinutes(text)));
+    newData.insert("tblk",QString::number(ACalc::stringToMinutes(text)));
     le->setText(QString());
 }
 
 void NewFlightDialog::on_tSPSETimeLineEdit_editingFinished()
 {
     const auto &le = ui->tSPSETimeLineEdit;
-    le->setText(Calc::formatTimeInput(le->text()));
+    le->setText(ACalc::formatTimeInput(le->text()));
     const auto &text = le->text();
 
     if(isLessOrEqualToTotalTime(text)){
-        newData.insert("tSPSE",QString::number(Calc::stringToMinutes(text)));
+        newData.insert("tSPSE",QString::number(ACalc::stringToMinutes(text)));
     } else {
         le->setText(QString());
     }
@@ -1492,11 +1492,11 @@ void NewFlightDialog::on_tSPSETimeLineEdit_editingFinished()
 void NewFlightDialog::on_tSPMETimeLineEdit_editingFinished()
 {
     const auto &le = ui->tSPMETimeLineEdit;
-    le->setText(Calc::formatTimeInput(le->text()));
+    le->setText(ACalc::formatTimeInput(le->text()));
     const auto &text = le->text();
 
     if(isLessOrEqualToTotalTime(text)){
-        newData.insert("tSPME",QString::number(Calc::stringToMinutes(text)));
+        newData.insert("tSPME",QString::number(ACalc::stringToMinutes(text)));
     } else {
         le->setText(QString());
     }
@@ -1505,11 +1505,11 @@ void NewFlightDialog::on_tSPMETimeLineEdit_editingFinished()
 void NewFlightDialog::on_tMPTimeLineEdit_editingFinished()
 {
     const auto &le = ui->tMPTimeLineEdit;
-    le->setText(Calc::formatTimeInput(le->text()));
+    le->setText(ACalc::formatTimeInput(le->text()));
     const auto &text = le->text();
 
     if(isLessOrEqualToTotalTime(text)){
-        newData.insert("tMP",QString::number(Calc::stringToMinutes(text)));
+        newData.insert("tMP",QString::number(ACalc::stringToMinutes(text)));
     } else {
         le->setText(QString());
     }
@@ -1517,11 +1517,11 @@ void NewFlightDialog::on_tMPTimeLineEdit_editingFinished()
 void NewFlightDialog::on_tIFRTimeLineEdit_editingFinished()
 {
     const auto &le = ui->tIFRTimeLineEdit;
-    le->setText(Calc::formatTimeInput(le->text()));
+    le->setText(ACalc::formatTimeInput(le->text()));
     const auto &text = le->text();
 
     if(isLessOrEqualToTotalTime(text)){
-        newData.insert("tIFR",QString::number(Calc::stringToMinutes(text)));
+        newData.insert("tIFR",QString::number(ACalc::stringToMinutes(text)));
     } else {
         le->setText(QString());
     }
@@ -1530,11 +1530,11 @@ void NewFlightDialog::on_tIFRTimeLineEdit_editingFinished()
 void NewFlightDialog::on_tNIGHTTimeLineEdit_editingFinished()
 {
     const auto &le = ui->tNIGHTTimeLineEdit;
-    le->setText(Calc::formatTimeInput(le->text()));
+    le->setText(ACalc::formatTimeInput(le->text()));
     const auto &text = le->text();
 
     if(isLessOrEqualToTotalTime(text)){
-        newData.insert("tNIGHT",QString::number(Calc::stringToMinutes(text)));
+        newData.insert("tNIGHT",QString::number(ACalc::stringToMinutes(text)));
     } else {
         le->setText(QString());
     }
@@ -1543,11 +1543,11 @@ void NewFlightDialog::on_tNIGHTTimeLineEdit_editingFinished()
 void NewFlightDialog::on_tPICTimeLineEdit_editingFinished()
 {
     const auto &le = ui->tPICTimeLineEdit;
-    le->setText(Calc::formatTimeInput(le->text()));
+    le->setText(ACalc::formatTimeInput(le->text()));
     const auto &text = le->text();
 
     if(isLessOrEqualToTotalTime(text)){
-        newData.insert("tPIC",QString::number(Calc::stringToMinutes(text)));
+        newData.insert("tPIC",QString::number(ACalc::stringToMinutes(text)));
     } else {
         le->setText(QString());
     }
@@ -1556,11 +1556,11 @@ void NewFlightDialog::on_tPICTimeLineEdit_editingFinished()
 void NewFlightDialog::on_tSICTimeLineEdit_editingFinished()
 {
     const auto &le = ui->tSICTimeLineEdit;
-    le->setText(Calc::formatTimeInput(le->text()));
+    le->setText(ACalc::formatTimeInput(le->text()));
     const auto &text = le->text();
 
     if(isLessOrEqualToTotalTime(text)){
-        newData.insert("tSIC",QString::number(Calc::stringToMinutes(text)));
+        newData.insert("tSIC",QString::number(ACalc::stringToMinutes(text)));
     } else {
         le->setText(QString());
     }
@@ -1569,11 +1569,11 @@ void NewFlightDialog::on_tSICTimeLineEdit_editingFinished()
 void NewFlightDialog::on_tDUALTimeLineEdit_editingFinished()
 {
     const auto &le = ui->tDUALTimeLineEdit;
-    le->setText(Calc::formatTimeInput(le->text()));
+    le->setText(ACalc::formatTimeInput(le->text()));
     const auto &text = le->text();
 
     if(isLessOrEqualToTotalTime(text)){
-        newData.insert("tDUAL",QString::number(Calc::stringToMinutes(text)));
+        newData.insert("tDUAL",QString::number(ACalc::stringToMinutes(text)));
     } else {
         le->setText(QString());
     }
@@ -1582,11 +1582,11 @@ void NewFlightDialog::on_tDUALTimeLineEdit_editingFinished()
 void NewFlightDialog::on_tFITimeLineEdit_editingFinished()
 {
     const auto &le = ui->tFITimeLineEdit;
-    le->setText(Calc::formatTimeInput(le->text()));
+    le->setText(ACalc::formatTimeInput(le->text()));
     const auto &text = le->text();
 
     if(isLessOrEqualToTotalTime(text)){
-        newData.insert("tFI",QString::number(Calc::stringToMinutes(text)));
+        newData.insert("tFI",QString::number(ACalc::stringToMinutes(text)));
     } else {
         le->setText(QString());
     }

+ 1 - 1
src/gui/dialogues/newflightdialog.h

@@ -41,7 +41,7 @@
 #include "src/classes/strictrxvalidator.h"
 #include "src/classes/settings.h"
 #include "src/classes/completionlist.h"
-#include "src/classes/calc.h"
+#include "src/classes/acalc.h"
 
 #include "src/gui/dialogues/newpilotdialog.h"
 #include "src/gui/dialogues/newtaildialog.h"

+ 1 - 1
src/gui/dialogues/newtaildialog.cpp

@@ -234,7 +234,7 @@ void NewTailDialog::submitForm(Db::editRole edRole)
     case Db::editExisting:
         oldEntry.setData(newData);
         oldEntry.commit();
-        Calc::updateAutoTimes(oldEntry.position.second);
+        ACalc::updateAutoTimes(oldEntry.position.second);
         break;
     }
 }

+ 1 - 1
src/gui/dialogues/newtaildialog.h

@@ -27,7 +27,7 @@
 #include "src/classes/completionlist.h"
 #include "src/classes/aircraft.h"
 #include "src/classes/strictrxvalidator.h"
-#include "src/classes/calc.h"
+#include "src/classes/acalc.h"
 #include "src/database/entry.h"
 
 namespace Ui {

+ 1 - 1
src/gui/widgets/homewidget.h

@@ -24,7 +24,7 @@
 #include <QLineEdit>
 #include "src/database/db.h"
 #include "src/classes/stat.h"
-#include "src/classes/calc.h"
+#include "src/classes/acalc.h"
 #include "src/classes/completionlist.h"
 #include "src/gui/dialogues/newtaildialog.h"
 #include "src/classes/aircraft.h"