From a96e017917697fc070bd298b029dbbe9244e619e Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Wed, 20 Apr 2022 11:56:22 -0500 Subject: [PATCH] Add mapbox_api_key to settings --- scwx-qt/source/scwx/qt/main/main_window.cpp | 4 ++++ .../scwx/qt/settings/general_settings.cpp | 22 ++++++++++++++++--- .../scwx/qt/settings/general_settings.hpp | 7 +++--- scwx-qt/source/scwx/qt/util/json.cpp | 18 +++++++++++++-- scwx-qt/source/scwx/qt/util/json.hpp | 3 ++- scwx-qt/ts/scwx_en_US.ts | 2 +- test/data | 2 +- 7 files changed, 47 insertions(+), 11 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 3e3fd0b0..9c771097 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -57,7 +57,11 @@ public: } } + std::string mapboxApiKey = + manager::SettingsManager::general_settings()->mapbox_api_key(); + settings_.resetToTemplate(QMapboxGLSettings::MapboxSettings); + settings_.setApiKey(QString {mapboxApiKey.c_str()}); settings_.setCacheDatabasePath(QString {cacheDbPath.c_str()}); settings_.setCacheDatabaseMaximumSize(20 * 1024 * 1024); } diff --git a/scwx-qt/source/scwx/qt/settings/general_settings.cpp b/scwx-qt/source/scwx/qt/settings/general_settings.cpp index bc921075..330ae641 100644 --- a/scwx-qt/source/scwx/qt/settings/general_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/general_settings.cpp @@ -15,6 +15,7 @@ static const auto logger_ = scwx::util::Logger::Create(logPrefix_); static const std::string DEFAULT_DEFAULT_RADAR_SITE = "KLSX"; static const int64_t DEFAULT_GRID_WIDTH = 1; static const int64_t DEFAULT_GRID_HEIGHT = 1; +static const std::string DEFAULT_MAPBOX_API_KEY = "?"; static const int64_t GRID_WIDTH_MINIMUM = 1; static const int64_t GRID_WIDTH_MAXIMUM = 2; @@ -24,7 +25,7 @@ static const int64_t GRID_HEIGHT_MAXIMUM = 2; class GeneralSettingsImpl { public: - explicit GeneralSettingsImpl() {} + explicit GeneralSettingsImpl() { SetDefaults(); } ~GeneralSettingsImpl() {} @@ -33,11 +34,13 @@ public: defaultRadarSite_ = DEFAULT_DEFAULT_RADAR_SITE; gridWidth_ = DEFAULT_GRID_WIDTH; gridHeight_ = DEFAULT_GRID_HEIGHT; + mapboxApiKey_ = DEFAULT_MAPBOX_API_KEY; } std::string defaultRadarSite_; int64_t gridWidth_; int64_t gridHeight_; + std::string mapboxApiKey_; }; GeneralSettings::GeneralSettings() : p(std::make_unique()) @@ -49,7 +52,7 @@ GeneralSettings::GeneralSettings(GeneralSettings&&) noexcept = default; GeneralSettings& GeneralSettings::operator=(GeneralSettings&&) noexcept = default; -const std::string& GeneralSettings::default_radar_site() const +std::string GeneralSettings::default_radar_site() const { return p->defaultRadarSite_; } @@ -64,6 +67,11 @@ int64_t GeneralSettings::grid_width() const return p->gridWidth_; } +std::string GeneralSettings::mapbox_api_key() const +{ + return p->mapboxApiKey_; +} + boost::json::value GeneralSettings::ToJson() const { boost::json::object json; @@ -71,6 +79,7 @@ boost::json::value GeneralSettings::ToJson() const json["default_radar_site"] = p->defaultRadarSite_; json["grid_width"] = p->gridWidth_; json["grid_height"] = p->gridHeight_; + json["mapbox_api_key"] = p->mapboxApiKey_; return json; } @@ -110,6 +119,12 @@ GeneralSettings::Load(const boost::json::value* json, bool& jsonDirty) DEFAULT_GRID_HEIGHT, GRID_HEIGHT_MINIMUM, GRID_HEIGHT_MAXIMUM); + jsonDirty |= + !util::json::FromJsonString(json->as_object(), + "mapbox_api_key", + generalSettings->p->mapboxApiKey_, + DEFAULT_MAPBOX_API_KEY, + 1); } else { @@ -133,7 +148,8 @@ bool operator==(const GeneralSettings& lhs, const GeneralSettings& rhs) { return (lhs.p->defaultRadarSite_ == rhs.p->defaultRadarSite_ && lhs.p->gridWidth_ == rhs.p->gridWidth_ && - lhs.p->gridHeight_ == rhs.p->gridHeight_); + lhs.p->gridHeight_ == rhs.p->gridHeight_ && + lhs.p->mapboxApiKey_ == rhs.p->mapboxApiKey_); } } // namespace settings diff --git a/scwx-qt/source/scwx/qt/settings/general_settings.hpp b/scwx-qt/source/scwx/qt/settings/general_settings.hpp index a2595fbb..4a384b87 100644 --- a/scwx-qt/source/scwx/qt/settings/general_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/general_settings.hpp @@ -26,9 +26,10 @@ public: GeneralSettings(GeneralSettings&&) noexcept; GeneralSettings& operator=(GeneralSettings&&) noexcept; - const std::string& default_radar_site() const; - int64_t grid_height() const; - int64_t grid_width() const; + std::string default_radar_site() const; + int64_t grid_height() const; + int64_t grid_width() const; + std::string mapbox_api_key() const; boost::json::value ToJson() const; diff --git a/scwx-qt/source/scwx/qt/util/json.cpp b/scwx-qt/source/scwx/qt/util/json.cpp index 0a512b7e..e649a338 100644 --- a/scwx-qt/source/scwx/qt/util/json.cpp +++ b/scwx-qt/source/scwx/qt/util/json.cpp @@ -92,7 +92,8 @@ bool FromJsonInt64(const boost::json::object& json, bool FromJsonString(const boost::json::object& json, const std::string& key, std::string& value, - const std::string& defaultValue) + const std::string& defaultValue, + size_t minLength) { const boost::json::value* jv = json.if_contains(key); bool dirty = true; @@ -102,7 +103,20 @@ bool FromJsonString(const boost::json::object& json, if (jv->is_string()) { value = boost::json::value_to(*jv); - dirty = false; + + if (value.length() >= minLength) + { + dirty = false; + } + else + { + logger_->warn( + "{} is shorter than {} characters, setting to default: {}", + key, + minLength, + defaultValue); + value = defaultValue; + } } else { diff --git a/scwx-qt/source/scwx/qt/util/json.hpp b/scwx-qt/source/scwx/qt/util/json.hpp index 5a57891a..e55f16e2 100644 --- a/scwx-qt/source/scwx/qt/util/json.hpp +++ b/scwx-qt/source/scwx/qt/util/json.hpp @@ -22,7 +22,8 @@ bool FromJsonInt64(const boost::json::object& json, bool FromJsonString(const boost::json::object& json, const std::string& key, std::string& value, - const std::string& defaultValue); + const std::string& defaultValue, + size_t minLength = 0); boost::json::value ReadJsonFile(const std::string& path); void WriteJsonFile(const std::string& path, diff --git a/scwx-qt/ts/scwx_en_US.ts b/scwx-qt/ts/scwx_en_US.ts index 35c2eac2..3c815d9c 100644 --- a/scwx-qt/ts/scwx_en_US.ts +++ b/scwx-qt/ts/scwx_en_US.ts @@ -102,7 +102,7 @@ scwx::qt::main::MainWindow - + Unrecognized NEXRAD Product: diff --git a/test/data b/test/data index ede24dd1..288b2cb9 160000 --- a/test/data +++ b/test/data @@ -1 +1 @@ -Subproject commit ede24dd1b4e1f7f4591217769b74f80ca6ebbcf1 +Subproject commit 288b2cb9b2dd540d44f684229973a97e61c79911