1 #include <QApplication>
2 #include "common/coordinates.h"
6 static QString
deg2DMS(double val
)
12 double r2
= r1
- (min
/ 60.0);
14 double sec
= r2
* 3600.0;
16 return QString("%1°%2'%3\"").arg(deg
).arg(min
, 2, 10, QChar('0'))
17 .arg(sec
, 4, 'f', 1, QChar('0'));
20 static QString
deg2DMM(double val
)
23 double r1
= val
- deg
;
25 double min
= r1
* 60.0;
27 return QString("%1°%2'").arg(deg
).arg(min
, 6, 'f', 3, QChar('0'));
31 QString
Format::timeSpan(qreal time
, bool full
)
36 m
= (time
- (h
* 3600)) / 60;
37 s
= time
- (h
* 3600) - (m
* 60);
40 return QString("%1:%2:%3").arg(h
, 2, 10, QChar('0'))
41 .arg(m
, 2, 10, QChar('0')).arg(s
, 2, 10, QChar('0'));
43 return QString("%1:%2").arg(m
, 2, 10, QChar('0'))
44 .arg(s
, 2, 10, QChar('0'));
47 QString
Format::distance(qreal value
, Units units
)
49 QLocale
l(QLocale::system());
51 if (units
== Imperial
) {
53 return l
.toString(value
* M2FT
, 'f', 0) + UNIT_SPACE
54 + qApp
->translate("Format", "ft");
56 return l
.toString(value
* M2MI
, 'f', 1) + UNIT_SPACE
57 + qApp
->translate("Format", "mi");
58 } else if (units
== Nautical
) {
60 return l
.toString(value
* M2FT
, 'f', 0) + UNIT_SPACE
61 + qApp
->translate("Format", "ft");
63 return l
.toString(value
* M2NMI
, 'f', 1) + UNIT_SPACE
64 + qApp
->translate("Format", "nmi");
67 return l
.toString(value
, 'f', 0) + UNIT_SPACE
68 + qApp
->translate("Format", "m");
70 return l
.toString(value
* M2KM
, 'f', 1) + UNIT_SPACE
71 + qApp
->translate("Format", "km");
75 QString
Format::elevation(qreal value
, Units units
)
77 QLocale
l(QLocale::system());
80 return l
.toString(qRound(value
)) + UNIT_SPACE
81 + qApp
->translate("Format", "m");
83 return l
.toString(qRound(value
* M2FT
)) + UNIT_SPACE
84 + qApp
->translate("Format", "ft");
88 QString
Format::lon(const Coordinates
&c
, CoordinatesFormat type
)
90 QChar xH
= (c
.lon() < 0) ? 'W' : 'E';
94 return deg2DMM(qAbs(c
.lon())) + xH
;
96 return deg2DMS(qAbs(c
.lon())) + xH
;
98 QLocale
l(QLocale::system());
99 return l
.toString(qAbs(c
.lon()), 'f', 5) + xH
;
103 QString
Format::lat(const Coordinates
&c
, CoordinatesFormat type
)
105 QChar yH
= (c
.lat() < 0) ? 'S' : 'N';
109 return deg2DMM(qAbs(c
.lat())) + yH
;
111 return deg2DMS(qAbs(c
.lat())) + yH
;
113 QLocale
l(QLocale::system());
114 return l
.toString(qAbs(c
.lat()), 'f', 5) + yH
;
118 QString
Format::coordinates(const Coordinates
&c
, CoordinatesFormat type
)
120 return lat(c
, type
) + "," + QChar(0x00A0) + lon(c
, type
);