File indexing completed on 2024-04-28 15:39:05
0001 // SPDX-FileCopyrightText: 2020 Tobias Leupold <tl at stonemx dot de> 0002 // 0003 // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 0005 // Local includes 0006 #include "CoordinatesFormatter.h" 0007 #include "KGeoTag.h" 0008 #include "Coordinates.h" 0009 0010 // KDE includes 0011 #include <KLocalizedString> 0012 0013 // Qt includes 0014 #include <QLocale> 0015 0016 // C++ includes 0017 #include <cmath> 0018 0019 CoordinatesFormatter::CoordinatesFormatter(QObject *parent, QLocale *locale) 0020 : QObject(parent), 0021 m_locale(locale) 0022 { 0023 } 0024 0025 QString CoordinatesFormatter::formatLonLat(double value) const 0026 { 0027 return m_locale->toString(std::abs(value), 'f', KGeoTag::degreesPrecision); 0028 } 0029 0030 QString CoordinatesFormatter::lon(const Coordinates &coordinates) const 0031 { 0032 return i18nc("Formatted longitude with a cardinal direction", "%1° %2", 0033 formatLonLat(coordinates.lon()), 0034 coordinates.lon() >= 0 ? i18nc("Abbreviated cardinal direction \"East\"", "E") 0035 : i18nc("Abbreviated cardinal direction \"West\"", "W")); 0036 } 0037 0038 QString CoordinatesFormatter::lat(const Coordinates &coordinates) const 0039 { 0040 return i18nc("Formatted latitude with a cardinal direction", "%1° %2", 0041 formatLonLat(coordinates.lat()), 0042 coordinates.lat() >= 0 ? i18nc("Abbreviated cardinal direction \"North\"", "N") 0043 : i18nc("Abbreviated cardinal direction \"South\"", "S")); 0044 } 0045 0046 QString CoordinatesFormatter::alt(const Coordinates &coordinates) const 0047 { 0048 return m_locale->toString(coordinates.alt(), 'f', KGeoTag::altitudePrecision); 0049 }