| 1101 | } |
| 1102 | |
| 1103 | kml::TrackId BookmarkManager::SaveTrackRecording(std::string trackName) |
| 1104 | { |
| 1105 | CHECK_THREAD_CHECKER(m_threadChecker, ()); |
| 1106 | auto const & tracker = GpsTracker::Instance(); |
| 1107 | CHECK(!tracker.IsEmpty(), ("Track recording should be not be empty")); |
| 1108 | |
| 1109 | kml::MultiGeometry geometry; |
| 1110 | geometry.m_lines.emplace_back(); |
| 1111 | geometry.m_timestamps.emplace_back(); |
| 1112 | auto & line = geometry.m_lines.back(); |
| 1113 | auto & timestamps = geometry.m_timestamps.back(); |
| 1114 | auto const trackSize = tracker.GetTrackSize(); |
| 1115 | line.reserve(trackSize); |
| 1116 | timestamps.reserve(trackSize); |
| 1117 | |
| 1118 | tracker.ForEachTrackPoint([&line, ×tamps](location::GpsInfo const & pt, size_t id) -> bool |
| 1119 | { |
| 1120 | line.emplace_back(mercator::FromLatLon(pt.m_latitude, pt.m_longitude), pt.m_altitude); |
| 1121 | timestamps.emplace_back(pt.m_timestamp); |
| 1122 | return true; |
| 1123 | }); |
| 1124 | |
| 1125 | kml::TrackData trackData; |
| 1126 | trackData.m_geometry = std::move(geometry); |
| 1127 | |
| 1128 | if (trackName.empty()) |
| 1129 | trackName = GenerateTrackRecordingName(); |
| 1130 | kml::SetDefaultStr(trackData.m_name, trackName); |
| 1131 | |
| 1132 | kml::ColorData colorData; |
| 1133 | colorData.m_rgba = GenerateTrackRecordingColor().GetRGBA(); |
| 1134 | kml::TrackLayer layer; |
| 1135 | layer.m_color = std::move(colorData); |
| 1136 | |
| 1137 | std::vector<kml::TrackLayer> m_layers; |
| 1138 | m_layers.emplace_back(layer); |
| 1139 | trackData.m_layers = std::move(m_layers); |
| 1140 | trackData.m_timestamp = kml::TimestampClock::now(); |
| 1141 | |
| 1142 | auto editSession = GetEditSession(); |
| 1143 | auto const track = editSession.CreateTrack(std::move(trackData)); |
| 1144 | auto const groupId = LastEditedBMCategory(); |
| 1145 | auto const trackId = track->GetId(); |
| 1146 | AttachTrack(trackId, groupId); |
| 1147 | return trackId; |
| 1148 | } |
| 1149 | |
| 1150 | std::string BookmarkManager::GenerateTrackRecordingName() const |
| 1151 | { |
no test coverage detected