Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormpimenov <mpimenov@users.noreply.github.com>2016-07-05 13:32:46 +0300
committerGitHub <noreply@github.com>2016-07-05 13:32:46 +0300
commitf268bd2f16cc94df8b75c6e789b285ab8b7dd8da (patch)
treed7dd86fb73834dad63a567f9ef9e635e0e8f5c2d /indexer
parent9e3b811ff02173ff3eb763423cf78a2cb3f553ad (diff)
parent00c41b1753b06152fd67c758d463d1916a52209e (diff)
Merge pull request #3707 from milchakov/MAPSME-1303_edited_maps_removing_
[editor] Remove edits when remove the map
Diffstat (limited to 'indexer')
-rw-r--r--indexer/osm_editor.cpp20
-rw-r--r--indexer/osm_editor.hpp5
2 files changed, 24 insertions, 1 deletions
diff --git a/indexer/osm_editor.cpp b/indexer/osm_editor.cpp
index ecca7cb813..243b3097c0 100644
--- a/indexer/osm_editor.cpp
+++ b/indexer/osm_editor.cpp
@@ -32,7 +32,6 @@
#include "std/algorithm.hpp"
#include "std/chrono.hpp"
#include "std/future.hpp"
-#include "std/mutex.hpp"
#include "std/target_os.hpp"
#include "std/tuple.hpp"
#include "std/unordered_map.hpp"
@@ -339,6 +338,25 @@ void Editor::ClearAllLocalEdits()
Invalidate();
}
+void Editor::OnMapDeregistered(platform::LocalCountryFile const & localFile)
+{
+ // TODO: to add some synchronization mechanism for whole Editor class
+ lock_guard<mutex> g(m_mapDeregisteredMutex);
+
+ using TFeaturePair = decltype(m_features)::value_type;
+ // Cannot search by MwmId because country already removed. So, search by country name.
+ auto const matchedMwm =
+ find_if(begin(m_features), end(m_features), [&localFile](TFeaturePair const & item) {
+ return item.first.GetInfo()->GetCountryName() == localFile.GetCountryName();
+ });
+
+ if (m_features.end() != matchedMwm)
+ {
+ m_features.erase(matchedMwm);
+ Save(GetEditorFilePath());
+ }
+}
+
Editor::FeatureStatus Editor::GetFeatureStatus(MwmSet::MwmId const & mwmId, uint32_t index) const
{
// Most popular case optimization.
diff --git a/indexer/osm_editor.hpp b/indexer/osm_editor.hpp
index e3d3070493..e545470051 100644
--- a/indexer/osm_editor.hpp
+++ b/indexer/osm_editor.hpp
@@ -17,6 +17,7 @@
#include "std/ctime.hpp"
#include "std/function.hpp"
#include "std/map.hpp"
+#include "std/mutex.hpp"
#include "std/string.hpp"
#include "std/vector.hpp"
@@ -71,6 +72,8 @@ public:
LoadMapEdits();
}
+ void OnMapDeregistered(platform::LocalCountryFile const & localFile) override;
+
using TFeatureIDFunctor = function<void(FeatureID const &)>;
void ForEachFeatureInMwmRectAndScale(MwmSet::MwmId const & id,
TFeatureIDFunctor const & f,
@@ -215,6 +218,8 @@ private:
/// Notes to be sent to osm.
shared_ptr<editor::Notes> m_notes;
+ // Mutex which locks OnMapDeregistered method
+ mutex m_mapDeregisteredMutex;
}; // class Editor
string DebugPrint(Editor::FeatureStatus fs);