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:
authorVladiMihaylenko <vxmihaylenko@gmail.com>2017-04-24 18:10:57 +0300
committerIlya Grechuhin <i.grechuhin@gmail.com>2017-04-25 11:48:26 +0300
commit668cfd0f21825e175d422f2ea327e08d86dfbdec (patch)
tree9d5f2926ec58087564ac172306ed48ad780eecca /storage
parentaec19c9b1ef640204a5ac4849777944d7701ca72 (diff)
Fixed problem with disputed countries status.
Diffstat (limited to 'storage')
-rw-r--r--storage/storage.cpp12
-rw-r--r--storage/storage.hpp3
2 files changed, 10 insertions, 5 deletions
diff --git a/storage/storage.cpp b/storage/storage.cpp
index 69d900493b..515b0ce6dc 100644
--- a/storage/storage.cpp
+++ b/storage/storage.cpp
@@ -1196,7 +1196,9 @@ void Storage::GetChildrenInGroups(TCountryId const & parent, TCountriesVec & dow
TCountriesVec allDisputedTerritories;
parentNode->ForEachChild([&](TCountryTreeNode const & childNode) {
vector<pair<TCountryId, NodeStatus>> disputedTerritoriesAndStatus;
- StatusAndError const childStatus = GetNodeStatusInfo(childNode, disputedTerritoriesAndStatus);
+ StatusAndError const childStatus = GetNodeStatusInfo(childNode,
+ disputedTerritoriesAndStatus,
+ true /* isDisputedTerritoriesCounted */);
TCountryId const & childValue = childNode.Value().Name();
ASSERT_NOT_EQUAL(childStatus.status, NodeStatus::Undefined, ());
@@ -1298,7 +1300,7 @@ void Storage::DeleteNode(TCountryId const & countryId)
StatusAndError Storage::GetNodeStatus(TCountryTreeNode const & node) const
{
vector<pair<TCountryId, NodeStatus>> disputedTerritories;
- return GetNodeStatusInfo(node, disputedTerritories);
+ return GetNodeStatusInfo(node, disputedTerritories, false /* isDisputedTerritoriesCounted */);
}
bool Storage::IsDisputed(TCountryTreeNode const & node) const
@@ -1309,7 +1311,8 @@ bool Storage::IsDisputed(TCountryTreeNode const & node) const
}
StatusAndError Storage::GetNodeStatusInfo(
- TCountryTreeNode const & node, vector<pair<TCountryId, NodeStatus>> & disputedTerritories) const
+ TCountryTreeNode const & node, vector<pair<TCountryId, NodeStatus>> & disputedTerritories,
+ bool isDisputedTerritoriesCounted) const
{
// Leaf node status.
if (node.ChildrenCount() == 0)
@@ -1327,7 +1330,8 @@ StatusAndError Storage::GetNodeStatusInfo(
auto groupStatusCalculator = [&](TCountryTreeNode const & nodeInSubtree) {
StatusAndError const statusAndError =
ParseStatus(CountryStatusEx(nodeInSubtree.Value().Name()));
- if (IsDisputed(nodeInSubtree))
+
+ if (IsDisputed(nodeInSubtree) && isDisputedTerritoriesCounted)
{
disputedTerritories.push_back(make_pair(nodeInSubtree.Value().Name(), statusAndError.status));
return;
diff --git a/storage/storage.hpp b/storage/storage.hpp
index 1a96a2a171..57e9c8a92f 100644
--- a/storage/storage.hpp
+++ b/storage/storage.hpp
@@ -607,7 +607,8 @@ private:
/// Returns status for a node (group node or not).
/// Fills |disputedTeritories| with all disputed teritories in subtree with the root == |node|.
StatusAndError GetNodeStatusInfo(TCountryTreeNode const & node,
- vector<pair<TCountryId, NodeStatus>> & disputedTeritories) const;
+ vector<pair<TCountryId, NodeStatus>> & disputedTeritories,
+ bool isDisputedTerritoriesCounted) const;
void NotifyStatusChanged(TCountryId const & countryId);
void NotifyStatusChangedForHierarchy(TCountryId const & countryId);