|
@@ -22,197 +22,197 @@
|
|
|
#include <QTime>
|
|
|
#include "src/opl.h"
|
|
|
|
|
|
-namespace OPL::Time {
|
|
|
-
|
|
|
-/*!
|
|
|
- * \brief Converts a QTime to a String to be used in the UI
|
|
|
- */
|
|
|
-inline const QString toString(const QTime &time, OPL::FlightTimeFormat format = OPL::FlightTimeFormat::Default)
|
|
|
-{
|
|
|
- switch (format) {
|
|
|
- case OPL::FlightTimeFormat::Default:
|
|
|
- return time.toString(QStringLiteral("hh:mm"));
|
|
|
- break;
|
|
|
- case OPL::FlightTimeFormat::Decimal:
|
|
|
- return QString::number(((time.hour() * 60 + time.minute() )/60.0), 'f', 2);
|
|
|
- break;
|
|
|
- default:
|
|
|
- return QString();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/*!
|
|
|
- * \brief Converts an integer of minutes as received from the Datbase to a String
|
|
|
- */
|
|
|
-inline const QString toString(int minutes_in, OPL::FlightTimeFormat format = OPL::FlightTimeFormat::Default)
|
|
|
-{
|
|
|
- switch (format) {
|
|
|
- case OPL::FlightTimeFormat::Default:
|
|
|
- {
|
|
|
- QString hour = QString::number(minutes_in / 60);
|
|
|
- if (hour.size() < 2) {
|
|
|
- hour.prepend(QStringLiteral("0"));
|
|
|
- }
|
|
|
- QString minute = QString::number(minutes_in % 60);
|
|
|
- if (minute.size() < 2) {
|
|
|
- minute.prepend(QStringLiteral("0"));
|
|
|
- }
|
|
|
- return hour + QLatin1Char(':') + minute;
|
|
|
- }
|
|
|
- case OPL::FlightTimeFormat::Decimal:
|
|
|
- {
|
|
|
- int hour = minutes_in / 60;
|
|
|
- double minute = (minutes_in % 60) / 60.0;
|
|
|
- return QString::number((hour + minute), 'f', 2);
|
|
|
- }
|
|
|
- default:
|
|
|
- return QString();
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-inline double toDecimalHours(const QTime &time){
|
|
|
- return (time.hour() * 60 + time.minute()) / 60.0;
|
|
|
-}
|
|
|
-
|
|
|
-inline QTime qTimefromMinutes(int total_minutes)
|
|
|
-{
|
|
|
- int minute = total_minutes % 60;
|
|
|
- int hour = total_minutes / 60;
|
|
|
-
|
|
|
- return QTime(hour, minute, 0);
|
|
|
-}
|
|
|
-
|
|
|
-inline const QTime fromString(QString time_string, OPL::FlightTimeFormat format = OPL::FlightTimeFormat::Default)
|
|
|
-{
|
|
|
- switch (format) {
|
|
|
- case OPL::FlightTimeFormat::Default:
|
|
|
- return QTime::fromString(time_string, QStringLiteral("hh:mm"));
|
|
|
- break;
|
|
|
- case OPL::FlightTimeFormat::Decimal:
|
|
|
- {
|
|
|
- double decimal_time = time_string.toDouble();
|
|
|
- int hour = decimal_time;
|
|
|
- int minute = round((decimal_time - hour) * 60);
|
|
|
- return QTime(hour, minute, 0);
|
|
|
- break;
|
|
|
- }
|
|
|
- default:
|
|
|
- return QTime();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-inline const QTime fromString(const char* time_string, OPL::FlightTimeFormat format = OPL::FlightTimeFormat::Default)
|
|
|
-{
|
|
|
- switch (format) {
|
|
|
- case OPL::FlightTimeFormat::Default:
|
|
|
- return QTime::fromString(time_string, QStringLiteral("hh:mm"));
|
|
|
- break;
|
|
|
- case OPL::FlightTimeFormat::Decimal:
|
|
|
- {
|
|
|
- double decimal_time = QString(time_string).toDouble();
|
|
|
- int hour = decimal_time;
|
|
|
- int minute = round((decimal_time - hour) * 60);
|
|
|
- return QTime(hour, minute, 0);
|
|
|
- break;
|
|
|
- }
|
|
|
- default:
|
|
|
- return QTime();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-inline int toMinutes(const QTime &time) {return time.hour() * 60 + time.minute();}
|
|
|
-inline int toMinutes(const QString &time_string) {return toMinutes(fromString(time_string));}
|
|
|
-
|
|
|
-inline QTime blocktime(const QTime &tofb, const QTime &tonb)
|
|
|
-{
|
|
|
- QTime blocktime_out(0, 0); // initialise return value at midnight
|
|
|
-
|
|
|
- if (tonb > tofb) { // landing same day
|
|
|
- int block_seconds = tofb.secsTo(tonb);
|
|
|
- blocktime_out = blocktime_out.addSecs(block_seconds);
|
|
|
- } else { // landing next day
|
|
|
- QTime midnight(0, 0);
|
|
|
- int seconds = tofb.secsTo(midnight);
|
|
|
- blocktime_out = blocktime_out.addSecs(seconds);
|
|
|
- seconds = midnight.secsTo(tonb);
|
|
|
- blocktime_out = blocktime_out.addSecs(seconds);
|
|
|
- }
|
|
|
- return blocktime_out;
|
|
|
-}
|
|
|
-
|
|
|
-inline QTime blocktime(const QString& tofb, const QString& tonb)
|
|
|
-{
|
|
|
- QTime t_tofb = OPL::Time::fromString(tofb);
|
|
|
- QTime t_tonb = OPL::Time::fromString(tonb);
|
|
|
- return blocktime(t_tofb, t_tonb);
|
|
|
-}
|
|
|
-
|
|
|
-/*!
|
|
|
- * \brief blockMinutes calculates the total amount of minutes elapsed between
|
|
|
- * tofb and tonb
|
|
|
- */
|
|
|
-inline int blockMinutes(const QString& tofb, const QString& tonb)
|
|
|
-{
|
|
|
- const QTime t_tofb = OPL::Time::fromString(tofb);
|
|
|
- const QTime t_tonb = OPL::Time::fromString(tonb);
|
|
|
- if (t_tofb.isValid() && t_tonb.isValid()) {
|
|
|
- const auto tblk = OPL::Time::blocktime(t_tofb, t_tonb);
|
|
|
- return OPL::Time::toMinutes(tblk);
|
|
|
- } else
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-/*!
|
|
|
- * \brief blockMinutes calculates the total amount of minutes elapsed between
|
|
|
- * tofb and tonb
|
|
|
- */
|
|
|
-inline int blockMinutes(const QTime& tofb, const QTime& tonb)
|
|
|
-{
|
|
|
- if (tofb.isValid() && tonb.isValid()) {
|
|
|
- const auto tblk = OPL::Time::blocktime(tofb, tonb);
|
|
|
- return OPL::Time::toMinutes(tblk);
|
|
|
- } else
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-/*!
|
|
|
- * \brief 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
|
|
|
- */
|
|
|
-QT_DEPRECATED
|
|
|
-inline const QString formatTimeInput(QString user_input)
|
|
|
-{
|
|
|
- LOG << "DEPRECATED";
|
|
|
- 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, QStringLiteral("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(QStringLiteral("0"));
|
|
|
- temp_time = QTime::fromString(tempstring, QStringLiteral("hhmm"));
|
|
|
- } else {
|
|
|
- temp_time = QTime::fromString(user_input, QStringLiteral("Hmm"));
|
|
|
- }
|
|
|
- } else if (user_input.length() == 4 && contains_seperator) {
|
|
|
- temp_time = QTime::fromString(user_input, QStringLiteral("h:mm"));
|
|
|
- } else if (user_input.length() == 5 && contains_seperator) {
|
|
|
- temp_time = QTime::fromString(user_input, QStringLiteral("hh:mm"));
|
|
|
- }
|
|
|
-
|
|
|
- auto output = temp_time.toString(QStringLiteral("hh:mm"));
|
|
|
-
|
|
|
- if (output.isEmpty()) {
|
|
|
- DEB << "Time input is invalid.";
|
|
|
- }
|
|
|
- return output;
|
|
|
-}
|
|
|
-
|
|
|
-} // namespace OPL::Time
|
|
|
+//namespace OPL::Time {
|
|
|
+
|
|
|
+///*!
|
|
|
+// * \brief Converts a QTime to a String to be used in the UI
|
|
|
+// */
|
|
|
+//inline const QString toString(const QTime &time, OPL::FlightTimeFormat format = OPL::FlightTimeFormat::Default)
|
|
|
+//{
|
|
|
+// switch (format) {
|
|
|
+// case OPL::FlightTimeFormat::Default:
|
|
|
+// return time.toString(QStringLiteral("hh:mm"));
|
|
|
+// break;
|
|
|
+// case OPL::FlightTimeFormat::Decimal:
|
|
|
+// return QString::number(((time.hour() * 60 + time.minute() )/60.0), 'f', 2);
|
|
|
+// break;
|
|
|
+// default:
|
|
|
+// return QString();
|
|
|
+// }
|
|
|
+//}
|
|
|
+
|
|
|
+///*!
|
|
|
+// * \brief Converts an integer of minutes as received from the Datbase to a String
|
|
|
+// */
|
|
|
+//inline const QString toString(int minutes_in, OPL::FlightTimeFormat format = OPL::FlightTimeFormat::Default)
|
|
|
+//{
|
|
|
+// switch (format) {
|
|
|
+// case OPL::FlightTimeFormat::Default:
|
|
|
+// {
|
|
|
+// QString hour = QString::number(minutes_in / 60);
|
|
|
+// if (hour.size() < 2) {
|
|
|
+// hour.prepend(QStringLiteral("0"));
|
|
|
+// }
|
|
|
+// QString minute = QString::number(minutes_in % 60);
|
|
|
+// if (minute.size() < 2) {
|
|
|
+// minute.prepend(QStringLiteral("0"));
|
|
|
+// }
|
|
|
+// return hour + QLatin1Char(':') + minute;
|
|
|
+// }
|
|
|
+// case OPL::FlightTimeFormat::Decimal:
|
|
|
+// {
|
|
|
+// int hour = minutes_in / 60;
|
|
|
+// double minute = (minutes_in % 60) / 60.0;
|
|
|
+// return QString::number((hour + minute), 'f', 2);
|
|
|
+// }
|
|
|
+// default:
|
|
|
+// return QString();
|
|
|
+// }
|
|
|
+
|
|
|
+//}
|
|
|
+
|
|
|
+//inline double toDecimalHours(const QTime &time){
|
|
|
+// return (time.hour() * 60 + time.minute()) / 60.0;
|
|
|
+//}
|
|
|
+
|
|
|
+//inline QTime qTimefromMinutes(int total_minutes)
|
|
|
+//{
|
|
|
+// int minute = total_minutes % 60;
|
|
|
+// int hour = total_minutes / 60;
|
|
|
+
|
|
|
+// return QTime(hour, minute, 0);
|
|
|
+//}
|
|
|
+
|
|
|
+//inline const QTime fromString(QString time_string, OPL::FlightTimeFormat format = OPL::FlightTimeFormat::Default)
|
|
|
+//{
|
|
|
+// switch (format) {
|
|
|
+// case OPL::FlightTimeFormat::Default:
|
|
|
+// return QTime::fromString(time_string, QStringLiteral("hh:mm"));
|
|
|
+// break;
|
|
|
+// case OPL::FlightTimeFormat::Decimal:
|
|
|
+// {
|
|
|
+// double decimal_time = time_string.toDouble();
|
|
|
+// int hour = decimal_time;
|
|
|
+// int minute = round((decimal_time - hour) * 60);
|
|
|
+// return QTime(hour, minute, 0);
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// default:
|
|
|
+// return QTime();
|
|
|
+// }
|
|
|
+//}
|
|
|
+
|
|
|
+//inline const QTime fromString(const char* time_string, OPL::FlightTimeFormat format = OPL::FlightTimeFormat::Default)
|
|
|
+//{
|
|
|
+// switch (format) {
|
|
|
+// case OPL::FlightTimeFormat::Default:
|
|
|
+// return QTime::fromString(time_string, QStringLiteral("hh:mm"));
|
|
|
+// break;
|
|
|
+// case OPL::FlightTimeFormat::Decimal:
|
|
|
+// {
|
|
|
+// double decimal_time = QString(time_string).toDouble();
|
|
|
+// int hour = decimal_time;
|
|
|
+// int minute = round((decimal_time - hour) * 60);
|
|
|
+// return QTime(hour, minute, 0);
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// default:
|
|
|
+// return QTime();
|
|
|
+// }
|
|
|
+//}
|
|
|
+
|
|
|
+//inline int toMinutes(const QTime &time) {return time.hour() * 60 + time.minute();}
|
|
|
+//inline int toMinutes(const QString &time_string) {return toMinutes(fromString(time_string));}
|
|
|
+
|
|
|
+////inline QTime blocktime(const QTime &tofb, const QTime &tonb)
|
|
|
+////{
|
|
|
+//// QTime blocktime_out(0, 0); // initialise return value at midnight
|
|
|
+
|
|
|
+//// if (tonb > tofb) { // landing same day
|
|
|
+//// int block_seconds = tofb.secsTo(tonb);
|
|
|
+//// blocktime_out = blocktime_out.addSecs(block_seconds);
|
|
|
+//// } else { // landing next day
|
|
|
+//// QTime midnight(0, 0);
|
|
|
+//// int seconds = tofb.secsTo(midnight);
|
|
|
+//// blocktime_out = blocktime_out.addSecs(seconds);
|
|
|
+//// seconds = midnight.secsTo(tonb);
|
|
|
+//// blocktime_out = blocktime_out.addSecs(seconds);
|
|
|
+//// }
|
|
|
+//// return blocktime_out;
|
|
|
+////}
|
|
|
+
|
|
|
+////inline QTime blocktime(const QString& tofb, const QString& tonb)
|
|
|
+////{
|
|
|
+//// QTime t_tofb = OPL::Time::fromString(tofb);
|
|
|
+//// QTime t_tonb = OPL::Time::fromString(tonb);
|
|
|
+//// return blocktime(t_tofb, t_tonb);
|
|
|
+////}
|
|
|
+
|
|
|
+/////*!
|
|
|
+//// * \brief blockMinutes calculates the total amount of minutes elapsed between
|
|
|
+//// * tofb and tonb
|
|
|
+//// */
|
|
|
+////inline int blockMinutes(const QString& tofb, const QString& tonb)
|
|
|
+////{
|
|
|
+//// const QTime t_tofb = OPL::Time::fromString(tofb);
|
|
|
+//// const QTime t_tonb = OPL::Time::fromString(tonb);
|
|
|
+//// if (t_tofb.isValid() && t_tonb.isValid()) {
|
|
|
+//// const auto tblk = OPL::Time::blocktime(t_tofb, t_tonb);
|
|
|
+//// return OPL::Time::toMinutes(tblk);
|
|
|
+//// } else
|
|
|
+//// return 0;
|
|
|
+////}
|
|
|
+
|
|
|
+/////*!
|
|
|
+//// * \brief blockMinutes calculates the total amount of minutes elapsed between
|
|
|
+//// * tofb and tonb
|
|
|
+//// */
|
|
|
+////inline int blockMinutes(const QTime& tofb, const QTime& tonb)
|
|
|
+////{
|
|
|
+//// if (tofb.isValid() && tonb.isValid()) {
|
|
|
+//// const auto tblk = OPL::Time::blocktime(tofb, tonb);
|
|
|
+//// return OPL::Time::toMinutes(tblk);
|
|
|
+//// } else
|
|
|
+//// return 0;
|
|
|
+////}
|
|
|
+
|
|
|
+///*!
|
|
|
+// * \brief 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
|
|
|
+// */
|
|
|
+//QT_DEPRECATED
|
|
|
+//inline const QString formatTimeInput(QString user_input)
|
|
|
+//{
|
|
|
+// LOG << "DEPRECATED";
|
|
|
+// 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, QStringLiteral("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(QStringLiteral("0"));
|
|
|
+// temp_time = QTime::fromString(tempstring, QStringLiteral("hhmm"));
|
|
|
+// } else {
|
|
|
+// temp_time = QTime::fromString(user_input, QStringLiteral("Hmm"));
|
|
|
+// }
|
|
|
+// } else if (user_input.length() == 4 && contains_seperator) {
|
|
|
+// temp_time = QTime::fromString(user_input, QStringLiteral("h:mm"));
|
|
|
+// } else if (user_input.length() == 5 && contains_seperator) {
|
|
|
+// temp_time = QTime::fromString(user_input, QStringLiteral("hh:mm"));
|
|
|
+// }
|
|
|
+
|
|
|
+// auto output = temp_time.toString(QStringLiteral("hh:mm"));
|
|
|
+
|
|
|
+// if (output.isEmpty()) {
|
|
|
+// DEB << "Time input is invalid.";
|
|
|
+// }
|
|
|
+// return output;
|
|
|
+//}
|
|
|
+
|
|
|
+//} // namespace OPL::Time
|
|
|
|
|
|
#endif // TIME_H
|