From 6275a0003e35bad8d518baa1ce31dc18f5faf1ef Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Fri, 22 Jan 2016 17:04:43 +0300 Subject: [PATCH] ?edits command shows all edited features, ?eclear deletes them all. --- map/framework.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ map/framework.hpp | 3 ++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/map/framework.cpp b/map/framework.cpp index 00099e4a2c..35b8c9f2d3 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -978,6 +978,8 @@ bool Framework::Search(search::SearchParams const & params) #endif ParseSetGpsTrackMinAccuracyCommand(params.m_query); + if (ParseEditorDebugCommand(params)) + return true; m2::RectD const viewport = GetCurrentViewport(); @@ -2297,3 +2299,45 @@ void Framework::Load3dMode(bool & allow3d, bool & allow3dBuildings) if (!Settings::Get(kAllow3dBuildingsKey, allow3dBuildings)) allow3dBuildings = true; } + +namespace feature +{ +string GetPrintableTypes(FeatureType const & ft) +{ + return feature::TypesHolder(ft).DebugPrint(); +} +uint32_t GetBestType(FeatureType const & ft) +{ + return feature::TypesHolder(ft).GetBestType(); +} +} + +bool Framework::ParseEditorDebugCommand(search::SearchParams const & params) +{ + if (params.m_query == "?edits") + { + osm::Editor::Stats const stats = osm::Editor::Instance().GetStats(); + search::Results results; + results.AddResultNoChecks(search::Result("Uploaded: " + strings::to_string(stats.m_uploadedCount), "?edits")); + for (auto const & edit : stats.m_edits) + { + FeatureID const & fid = edit.first; + auto const feature = GetFeatureByID(fid); + string name; + feature->GetReadableName(name); + feature::TypesHolder const types(*feature); + search::Result::Metadata smd; + results.AddResultNoChecks(search::Result(fid, feature::GetCenter(*feature), name, edit.second, + types.DebugPrint(), types.GetBestType(), smd)); + } + params.m_callback(results); + params.m_callback(search::Results::GetEndMarker(false)); + return true; + } + else if (params.m_query == "?eclear") + { + osm::Editor::Instance().ClearAllLocalEdits(); + return true; + } + return false; +} diff --git a/map/framework.hpp b/map/framework.hpp index 8a073ddc35..a09a07acc1 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -469,7 +469,8 @@ public: private: // TODO(vng): Uncomment when needed. //void GetLocality(m2::PointD const & pt, search::AddressInfo & info) const; - + /// @returns true if command was handled by editor. + bool ParseEditorDebugCommand(search::SearchParams const & params); public: /// @returns address of nearby building with house number in approx 1km distance. search::AddressInfo GetMercatorAddressInfo(m2::PointD const & mercator) const;