[editor] Correctly pass and check HouseNumber.

This commit is contained in:
Alex Zolotarev 2016-01-16 14:02:26 +03:00 committed by Sergey Yershov
parent 4fef575775
commit 627878e6ce
4 changed files with 16 additions and 9 deletions

View file

@ -1,5 +1,6 @@
#include "indexer/classificator.hpp"
#include "indexer/feature_decl.hpp"
#include "indexer/feature_impl.hpp"
#include "indexer/feature_meta.hpp"
#include "indexer/ftypes_matcher.hpp"
#include "indexer/index.hpp"
@ -409,7 +410,8 @@ void Editor::DeleteFeature(FeatureType const & feature)
//}
//} // namespace
void Editor::EditFeature(FeatureType const & editedFeature, string const & editedStreet)
void Editor::EditFeature(FeatureType const & editedFeature, string const & editedStreet,
string const & editedHouseNumber)
{
// TODO(AlexZ): Check if feature has not changed and reset status.
FeatureID const fid = editedFeature.GetID();
@ -419,8 +421,12 @@ void Editor::EditFeature(FeatureType const & editedFeature, string const & edite
// TODO: What if local client time is absolutely wrong?
fti.m_modificationTimestamp = time(nullptr);
if (!editedStreet.empty())
fti.m_street = editedStreet;
fti.m_street = editedStreet;
if (editedHouseNumber.empty())
fti.m_feature.SetHouseNumber(string());
else if (feature::IsHouseNumber(editedHouseNumber))
fti.m_feature.SetHouseNumber(editedHouseNumber);
// else TODO(AlexZ): Store edited house number as house name.
// TODO(AlexZ): Synchronize Save call/make it on a separate thread.
Save(GetEditorFilePath());

View file

@ -69,7 +69,9 @@ public:
/// Original feature with same FeatureID as newFeature is replaced by newFeature.
/// Please pass editedStreet only if it was changed by user.
void EditFeature(FeatureType const & editedFeature, string const & editedStreet = "");
void EditFeature(FeatureType const & editedFeature,
string const & editedStreet = "",
string const & editedHouseNumber = "");
vector<feature::Metadata::EType> EditableMetadataForType(FeatureType const & feature) const;
bool IsNameEditable(FeatureType const & feature) const;

View file

@ -339,7 +339,7 @@ void initFieldsMap()
return;
auto & metadata = feature->GetMetadata();
string streetName;
string streetName, houseNumber;
for (auto const & cell : cells)
{
switch (cell.first)
@ -378,7 +378,7 @@ void initFieldsMap()
}
case MWMPlacePageCellTypeBuilding:
{
feature->SetHouseNumber(cell.second);
houseNumber = cell.second;
break;
}
default:
@ -386,7 +386,7 @@ void initFieldsMap()
break;
}
}
osm::Editor::Instance().EditFeature(*feature);
osm::Editor::Instance().EditFeature(*feature, streetName, houseNumber);
}
#pragma mark - Getters

View file

@ -475,10 +475,9 @@ void DrawWidget::ShowPOIEditor(FeatureType & feature)
if (result == QDialog::Accepted)
{
feature.SetNames(dlg.GetEditedNames());
feature.SetHouseNumber(dlg.GetEditedHouseNumber());
feature.SetMetadata(dlg.GetEditedMetadata());
// TODO(AlexZ): Check that street was actually changed/edited.
editor.EditFeature(feature, dlg.GetEditedStreet());
editor.EditFeature(feature, dlg.GetEditedStreet(), dlg.GetEditedHouseNumber());
}
else if (result == QDialogButtonBox::DestructiveRole)
{