Updated how MarkerRecord works to make adding entryies easier

This commit is contained in:
AdenKoperczak 2024-10-05 09:40:43 -04:00
parent 74f3a15eb2
commit 84233868d6

View file

@ -47,22 +47,29 @@ public:
class MarkerManager::Impl::MarkerRecord class MarkerManager::Impl::MarkerRecord
{ {
public: public:
MarkerRecord(std::string name, double latitude, double longitude) : MarkerRecord(const std::string& name, double latitude, double longitude) :
name_ {name}, latitude_ {latitude}, longitude_ {longitude} markerInfo_ {types::MarkerInfo(name, latitude, longitude)}
{
}
MarkerRecord(const types::MarkerInfo& info) :
markerInfo_ {info}
{ {
} }
std::string name_; types::MarkerInfo toMarkerInfo()
double latitude_; {
double longitude_; return markerInfo_;
}
types::MarkerInfo markerInfo_;
friend void tag_invoke(boost::json::value_from_tag, friend void tag_invoke(boost::json::value_from_tag,
boost::json::value& jv, boost::json::value& jv,
const std::shared_ptr<MarkerRecord>& record) const std::shared_ptr<MarkerRecord>& record)
{ {
jv = {{kNameName_, record->name_}, jv = {{kNameName_, record->markerInfo_.name_},
{kLatitudeName_, record->latitude_}, {kLatitudeName_, record->markerInfo_.latitude_},
{kLongitudeName_, record->longitude_}}; {kLongitudeName_, record->markerInfo_.longitude_}};
} }
friend MarkerRecord tag_invoke(boost::json::value_to_tag<MarkerRecord>, friend MarkerRecord tag_invoke(boost::json::value_to_tag<MarkerRecord>,
@ -117,10 +124,10 @@ void MarkerManager::Impl::ReadMarkerSettings()
MarkerRecord record = MarkerRecord record =
boost::json::value_to<MarkerRecord>(markerEntry); boost::json::value_to<MarkerRecord>(markerEntry);
if (!record.name_.empty()) if (!record.markerInfo_.name_.empty())
{ {
markerRecords_.emplace_back(std::make_shared<MarkerRecord>( markerRecords_.emplace_back(
record.name_, record.latitude_, record.longitude_)); std::make_shared<MarkerRecord>(record.markerInfo_));
} }
} }
catch (const std::exception& ex) catch (const std::exception& ex)
@ -146,7 +153,7 @@ MarkerManager::Impl::GetMarkerByName(const std::string& name)
{ {
for (auto& markerRecord : markerRecords_) for (auto& markerRecord : markerRecords_)
{ {
if (markerRecord->name_ == name) if (markerRecord->markerInfo_.name_ == name)
{ {
return markerRecord; return markerRecord;
} }
@ -187,25 +194,21 @@ types::MarkerInfo MarkerManager::get_marker(size_t index)
{ {
std::shared_ptr<MarkerManager::Impl::MarkerRecord> markerRecord = std::shared_ptr<MarkerManager::Impl::MarkerRecord> markerRecord =
p->markerRecords_[index]; p->markerRecords_[index];
return types::MarkerInfo( return markerRecord->toMarkerInfo();
markerRecord->name_, markerRecord->latitude_, markerRecord->longitude_);
} }
types::MarkerInfo MarkerManager::get_marker(const std::string& name) types::MarkerInfo MarkerManager::get_marker(const std::string& name)
{ {
std::shared_ptr<MarkerManager::Impl::MarkerRecord> markerRecord = std::shared_ptr<MarkerManager::Impl::MarkerRecord> markerRecord =
p->GetMarkerByName(name); p->GetMarkerByName(name);
return types::MarkerInfo( return markerRecord->toMarkerInfo();
markerRecord->name_, markerRecord->latitude_, markerRecord->longitude_);
} }
void MarkerManager::set_marker(size_t index, const types::MarkerInfo& marker) void MarkerManager::set_marker(size_t index, const types::MarkerInfo& marker)
{ {
std::shared_ptr<MarkerManager::Impl::MarkerRecord> markerRecord = std::shared_ptr<MarkerManager::Impl::MarkerRecord> markerRecord =
p->markerRecords_[index]; p->markerRecords_[index];
markerRecord->name_ = marker.name_; markerRecord->markerInfo_ = marker;
markerRecord->latitude_ = marker.latitude_;
markerRecord->longitude_ = marker.longitude_;
} }
void MarkerManager::set_marker(const std::string& name, void MarkerManager::set_marker(const std::string& name,
@ -213,15 +216,12 @@ void MarkerManager::set_marker(const std::string& name,
{ {
std::shared_ptr<MarkerManager::Impl::MarkerRecord> markerRecord = std::shared_ptr<MarkerManager::Impl::MarkerRecord> markerRecord =
p->GetMarkerByName(name); p->GetMarkerByName(name);
markerRecord->name_ = marker.name_; markerRecord->markerInfo_ = marker;
markerRecord->latitude_ = marker.latitude_;
markerRecord->longitude_ = marker.longitude_;
} }
void MarkerManager::add_marker(const types::MarkerInfo& marker) void MarkerManager::add_marker(const types::MarkerInfo& marker)
{ {
p->markerRecords_.emplace_back(std::make_shared<Impl::MarkerRecord>( p->markerRecords_.emplace_back(std::make_shared<Impl::MarkerRecord>(marker));
marker.name_, marker.latitude_, marker.longitude_));
} }
void MarkerManager::move_marker(size_t from, size_t to) void MarkerManager::move_marker(size_t from, size_t to)