24 #include "src/functions/alog.h"
31 inline const QString toString(
const QTime &time, Opl::Time::FlightTimeFormat format = Opl::Time::Default)
34 case Opl::Time::Default:
35 return time.toString(QStringLiteral(
"hh:mm"));
37 case Opl::Time::Decimal:
38 return QString::number(((time.hour() * 60 + time.minute() )/60.0),
'f', 2);
48 inline const QString toString(
int minutes_in, Opl::Time::FlightTimeFormat format = Opl::Time::Default)
51 case Opl::Time::Default:
53 QString hour = QString::number(minutes_in / 60);
54 if (hour.size() < 2) {
55 hour.prepend(QStringLiteral(
"0"));
57 QString minute = QString::number(minutes_in % 60);
58 if (minute.size() < 2) {
59 minute.prepend(QStringLiteral(
"0"));
61 return hour +
':' + minute;
63 case Opl::Time::Decimal:
65 int hour = minutes_in / 60;
66 double minute = (minutes_in % 60) / 60.0;
67 return QString::number((hour + minute),
'f', 2);
75 inline double toDecimalHours(
const QTime &time){
76 return (time.hour() * 60 + time.minute()) / 60.0;
79 inline QTime qTimefromMinutes(
int total_minutes)
81 int minute = total_minutes % 60;
82 int hour = total_minutes / 60;
84 return QTime(hour, minute, 0);
87 inline const QTime fromString(QString time_string, Opl::Time::FlightTimeFormat format = Opl::Time::Default)
90 case Opl::Time::Default:
91 return QTime::fromString(time_string, QStringLiteral(
"hh:mm"));
93 case Opl::Time::Decimal:
95 double decimal_time = time_string.toDouble();
96 int hour = decimal_time;
97 int minute = round((decimal_time - hour) * 60);
98 return QTime(hour, minute, 0);
106 inline const QTime fromString(
const char* time_string, Opl::Time::FlightTimeFormat format = Opl::Time::Default)
109 case Opl::Time::Default:
110 return QTime::fromString(time_string, QStringLiteral(
"hh:mm"));
112 case Opl::Time::Decimal:
114 double decimal_time = QString(time_string).toDouble();
115 int hour = decimal_time;
116 int minute = round((decimal_time - hour) * 60);
117 return QTime(hour, minute, 0);
125 inline int toMinutes(
const QTime &time) {
return time.hour() * 60 + time.minute();}
126 inline int toMinutes(
const QString &time_string) {
return toMinutes(fromString(time_string));}
128 inline QTime
blocktime(
const QTime &tofb,
const QTime &tonb)
130 QTime blocktime_out(0, 0);
133 int block_seconds = tofb.secsTo(tonb);
134 blocktime_out = blocktime_out.addSecs(block_seconds);
136 QTime midnight(0, 0);
137 int seconds = tofb.secsTo(midnight);
138 blocktime_out = blocktime_out.addSecs(seconds);
139 seconds = midnight.secsTo(tonb);
140 blocktime_out = blocktime_out.addSecs(seconds);
142 return blocktime_out;
145 inline QTime
blocktime(
const QString& tofb,
const QString& tonb)
147 QTime t_tofb = ATime::fromString(tofb);
148 QTime t_tonb = ATime::fromString(tonb);
156 inline int blockMinutes(
const QString& tofb,
const QString& tonb)
158 const QTime t_tofb = ATime::fromString(tofb);
159 const QTime t_tonb = ATime::fromString(tonb);
160 if (t_tofb.isValid() && t_tonb.isValid()) {
161 const auto tblk = ATime::blocktime(t_tofb, t_tonb);
162 return ATime::toMinutes(tblk);
171 inline int blockMinutes(
const QTime& tofb,
const QTime& tonb)
173 if (tofb.isValid() && tonb.isValid()) {
174 const auto tblk = ATime::blocktime(tofb, tonb);
175 return ATime::toMinutes(tblk);
191 bool contains_seperator = user_input.contains(
':');
192 if (user_input.length() == 4 && !contains_seperator) {
193 temp_time = QTime::fromString(user_input, QStringLiteral(
"hhmm"));
194 }
else if (user_input.length() == 3 && !contains_seperator) {
195 if (user_input.toInt() < 240) {
196 QString tempstring = user_input.prepend(QStringLiteral(
"0"));
197 temp_time = QTime::fromString(tempstring, QStringLiteral(
"hhmm"));
199 temp_time = QTime::fromString(user_input, QStringLiteral(
"Hmm"));
201 }
else if (user_input.length() == 4 && contains_seperator) {
202 temp_time = QTime::fromString(user_input, QStringLiteral(
"h:mm"));
203 }
else if (user_input.length() == 5 && contains_seperator) {
204 temp_time = QTime::fromString(user_input, QStringLiteral(
"hh:mm"));
207 auto output = temp_time.toString(QStringLiteral(
"hh:mm"));
209 if (output.isEmpty()) {
210 DEB <<
"Time input is invalid.";
QT_DEPRECATED QTime blocktime(QTime tofb, QTime tonb)
ACalc::blocktime Calculates Block Time for a given departure and arrival time.
Definition: acalc.h:44
QString formatTimeInput(QString user_input)
ACalc::formatTimeInput verifies user input and formats to hh:mm if the output is not a valid time,...
Definition: acalc.cpp:35