made alerts use unit setting for distance

This commit is contained in:
AdenKoperczak 2024-07-23 11:52:39 -04:00
parent c3a6d861bb
commit c072d24de0
2 changed files with 31 additions and 28 deletions

View file

@ -1,13 +1,16 @@
#include <scwx/qt/model/alert_model.hpp> #include <scwx/qt/model/alert_model.hpp>
#include <scwx/qt/config/county_database.hpp> #include <scwx/qt/config/county_database.hpp>
#include <scwx/qt/manager/text_event_manager.hpp> #include <scwx/qt/manager/text_event_manager.hpp>
#include <scwx/qt/settings/unit_settings.hpp>
#include <scwx/qt/types/qt_types.hpp> #include <scwx/qt/types/qt_types.hpp>
#include <scwx/qt/types/unit_types.hpp>
#include <scwx/qt/util/geographic_lib.hpp> #include <scwx/qt/util/geographic_lib.hpp>
#include <scwx/common/geographic.hpp> #include <scwx/common/geographic.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/strings.hpp> #include <scwx/util/strings.hpp>
#include <scwx/util/time.hpp> #include <scwx/util/time.hpp>
#include <format> #include <format>
#include <QApplication> #include <QApplication>
@ -73,7 +76,6 @@ public:
double, double,
types::TextEventHash<types::TextEventKey>> types::TextEventHash<types::TextEventKey>>
distanceMap_; distanceMap_;
scwx::common::DistanceType distanceDisplay_;
scwx::common::Coordinate previousPosition_; scwx::common::Coordinate previousPosition_;
}; };
@ -182,18 +184,19 @@ QVariant AlertModel::data(const QModelIndex& index, int role) const
case static_cast<int>(Column::Distance): case static_cast<int>(Column::Distance):
if (role == Qt::DisplayRole) if (role == Qt::DisplayRole)
{ {
if (p->distanceDisplay_ == scwx::common::DistanceType::Miles) const std::string distanceUnitName =
{ settings::UnitSettings::Instance().distance_units().GetValue();
return QString("%1 mi").arg( types::DistanceUnits distanceUnits =
static_cast<uint32_t>(p->distanceMap_.at(textEventKey) * types::GetDistanceUnitsFromName(distanceUnitName);
scwx::common::kMilesPerMeter)); double distanceScale = types::GetDistanceUnitsScale(distanceUnits);
} std::string abbreviation =
else types::GetDistanceUnitsAbbreviation(distanceUnits);
{
return QString("%1 km").arg( return QString("%1 %2")
static_cast<uint32_t>(p->distanceMap_.at(textEventKey) * .arg(static_cast<uint32_t>(p->distanceMap_.at(textEventKey) *
scwx::common::kKilometersPerMeter)); scwx::common::kKilometersPerMeter *
} distanceScale))
.arg(QString::fromStdString(abbreviation));
} }
else else
{ {
@ -419,7 +422,6 @@ AlertModelImpl::AlertModelImpl() :
textEventKeys_ {}, textEventKeys_ {},
geodesic_(util::GeographicLib::DefaultGeodesic()), geodesic_(util::GeographicLib::DefaultGeodesic()),
distanceMap_ {}, distanceMap_ {},
distanceDisplay_ {scwx::common::DistanceType::Miles},
previousPosition_ {} previousPosition_ {}
{ {
} }

View file

@ -1,6 +1,8 @@
#include <scwx/qt/model/radar_site_model.hpp> #include <scwx/qt/model/radar_site_model.hpp>
#include <scwx/qt/config/radar_site.hpp> #include <scwx/qt/config/radar_site.hpp>
#include <scwx/qt/settings/unit_settings.hpp>
#include <scwx/qt/types/qt_types.hpp> #include <scwx/qt/types/qt_types.hpp>
#include <scwx/qt/types/unit_types.hpp>
#include <scwx/qt/util/geographic_lib.hpp> #include <scwx/qt/util/geographic_lib.hpp>
#include <scwx/qt/util/json.hpp> #include <scwx/qt/util/json.hpp>
#include <scwx/common/geographic.hpp> #include <scwx/common/geographic.hpp>
@ -36,7 +38,6 @@ public:
radarSites_ {}, radarSites_ {},
geodesic_(util::GeographicLib::DefaultGeodesic()), geodesic_(util::GeographicLib::DefaultGeodesic()),
distanceMap_ {}, distanceMap_ {},
distanceDisplay_ {scwx::common::DistanceType::Miles},
previousPosition_ {} previousPosition_ {}
{ {
// Get all loaded radar sites // Get all loaded radar sites
@ -64,7 +65,6 @@ public:
const GeographicLib::Geodesic& geodesic_; const GeographicLib::Geodesic& geodesic_;
std::unordered_map<std::string, double> distanceMap_; std::unordered_map<std::string, double> distanceMap_;
scwx::common::DistanceType distanceDisplay_;
scwx::common::Coordinate previousPosition_; scwx::common::Coordinate previousPosition_;
QIcon starIcon_ {":/res/icons/font-awesome-6/star-solid.svg"}; QIcon starIcon_ {":/res/icons/font-awesome-6/star-solid.svg"};
@ -213,18 +213,19 @@ QVariant RadarSiteModel::data(const QModelIndex& index, int role) const
case static_cast<int>(Column::Distance): case static_cast<int>(Column::Distance):
if (role == Qt::DisplayRole) if (role == Qt::DisplayRole)
{ {
if (p->distanceDisplay_ == scwx::common::DistanceType::Miles) const std::string distanceUnitName =
{ settings::UnitSettings::Instance().distance_units().GetValue();
return QString("%1 mi").arg( types::DistanceUnits distanceUnits =
static_cast<uint32_t>(p->distanceMap_.at(site->id()) * types::GetDistanceUnitsFromName(distanceUnitName);
scwx::common::kMilesPerMeter)); double distanceScale = types::GetDistanceUnitsScale(distanceUnits);
} std::string abbreviation =
else types::GetDistanceUnitsAbbreviation(distanceUnits);
{
return QString("%1 km").arg( return QString("%1 %2")
static_cast<uint32_t>(p->distanceMap_.at(site->id()) * .arg(static_cast<uint32_t>(p->distanceMap_.at(site->id()) *
scwx::common::kKilometersPerMeter)); scwx::common::kKilometersPerMeter *
} distanceScale))
.arg(QString::fromStdString(abbreviation));
} }
else else
{ {