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:
authorAlex Zolotarev <alex@maps.me>2016-02-12 23:28:16 +0300
committerSergey Yershov <yershov@corp.mail.ru>2016-03-23 16:50:49 +0300
commit63d6d9ce2bb67e56f32be5ba3633bead88e68c67 (patch)
treeb0e1b192489054244d8c6620a90df63ec83704c0 /indexer/editable_map_object.cpp
parentbb6dc8f88bba8bd54f0fd95ac56b31966c5f8d90 (diff)
Editable feature designed to connect UI and editor’s core.
Diffstat (limited to 'indexer/editable_map_object.cpp')
-rw-r--r--indexer/editable_map_object.cpp151
1 files changed, 151 insertions, 0 deletions
diff --git a/indexer/editable_map_object.cpp b/indexer/editable_map_object.cpp
new file mode 100644
index 0000000000..8379dfc72d
--- /dev/null
+++ b/indexer/editable_map_object.cpp
@@ -0,0 +1,151 @@
+#include "indexer/classificator.hpp"
+#include "indexer/cuisines.hpp"
+#include "indexer/editable_map_object.hpp"
+
+#include "base/macros.hpp"
+
+namespace osm
+{
+bool EditableMapObject::IsNameEditable() const { return m_editableProperties.m_name; }
+bool EditableMapObject::IsAddressEditable() const { return m_editableProperties.m_address; }
+vector<Props> EditableMapObject::GetEditableProperties() const
+{
+ return MetadataToProps(m_editableProperties.m_metadata);
+}
+
+vector<feature::Metadata::EType> const & EditableMapObject::GetEditableFields() const
+{
+ return m_editableProperties.m_metadata;
+}
+
+StringUtf8Multilang const & EditableMapObject::GetName() const { return m_name; }
+vector<LocalizedName> EditableMapObject::GetLocalizedNames() const
+{
+ vector<LocalizedName> result;
+ m_name.ForEach([&result](int8_t code, string const & name) -> bool
+ {
+ result.push_back({code, StringUtf8Multilang::GetLangByCode(code),
+ StringUtf8Multilang::GetLangNameByCode(code), name});
+ return true;
+ });
+ return result;
+}
+
+vector<string> const & EditableMapObject::GetNearbyStreets() const { return m_nearbyStreets; }
+string const & EditableMapObject::GetHouseNumber() const { return m_houseNumber; }
+string EditableMapObject::GetPostcode() const
+{
+ return m_metadata.Get(feature::Metadata::FMD_POSTCODE);
+}
+
+string EditableMapObject::GetWikipedia() const
+{
+ return m_metadata.Get(feature::Metadata::FMD_WIKIPEDIA);
+}
+
+void EditableMapObject::SetEditableProperties(osm::EditableProperties const & props)
+{
+ m_editableProperties = props;
+}
+
+void EditableMapObject::SetName(StringUtf8Multilang const & name) { m_name = name; }
+void EditableMapObject::SetName(string const & name, int8_t langCode)
+{
+ if (!name.empty())
+ m_name.AddString(langCode, name);
+}
+
+void EditableMapObject::SetMercator(m2::PointD const & center) { m_mercator = center; }
+void EditableMapObject::SetStreet(string const & street) { m_street = street; }
+void EditableMapObject::SetNearbyStreets(vector<string> const & streets)
+{
+ m_nearbyStreets = streets;
+}
+void EditableMapObject::SetHouseNumber(string const & houseNumber) { m_houseNumber = houseNumber; }
+void EditableMapObject::SetPostcode(string const & postcode)
+{
+ m_metadata.Set(feature::Metadata::FMD_POSTCODE, postcode);
+}
+
+void EditableMapObject::SetPhone(string const & phone)
+{
+ m_metadata.Set(feature::Metadata::FMD_PHONE_NUMBER, phone);
+}
+
+void EditableMapObject::SetFax(string const & fax)
+{
+ m_metadata.Set(feature::Metadata::FMD_FAX_NUMBER, fax);
+}
+
+void EditableMapObject::SetEmail(string const & email)
+{
+ m_metadata.Set(feature::Metadata::FMD_EMAIL, email);
+}
+
+void EditableMapObject::SetWebsite(string const & website)
+{
+ m_metadata.Set(feature::Metadata::FMD_WEBSITE, website);
+ m_metadata.Drop(feature::Metadata::FMD_URL);
+}
+
+void EditableMapObject::SetInternet(Internet internet)
+{
+ m_metadata.Set(feature::Metadata::FMD_INTERNET, DebugPrint(internet));
+}
+
+void EditableMapObject::SetStars(int stars)
+{
+ if (stars > 0 && stars <= 7)
+ m_metadata.Set(feature::Metadata::FMD_STARS, strings::to_string(stars));
+ else
+ LOG(LWARNING, ("Ignored invalid value to Stars:", stars));
+}
+
+void EditableMapObject::SetOperator(string const & op)
+{
+ m_metadata.Set(feature::Metadata::FMD_OPERATOR, op);
+}
+
+void EditableMapObject::SetElevation(double ele)
+{
+ constexpr double kMaxElevationOnTheEarthInMeters = 10000;
+ constexpr double kMinElevationOnTheEarthInMeters = -15000;
+ if (ele < kMaxElevationOnTheEarthInMeters && ele > kMinElevationOnTheEarthInMeters)
+ m_metadata.Set(feature::Metadata::FMD_ELE, strings::to_string_dac(ele, 1));
+ else
+ LOG(LWARNING, ("Ignored invalid value to Elevation:", ele));
+}
+
+void EditableMapObject::SetWikipedia(string const & wikipedia)
+{
+ m_metadata.Set(feature::Metadata::FMD_WIKIPEDIA, wikipedia);
+}
+
+void EditableMapObject::SetFlats(string const & flats)
+{
+ m_metadata.Set(feature::Metadata::FMD_FLATS, flats);
+}
+
+void EditableMapObject::SetBuildingLevels(string const & buildingLevels)
+{
+ m_metadata.Set(feature::Metadata::FMD_BUILDING_LEVELS, buildingLevels);
+}
+
+string const & EditableMapObject::GetStreet() const { return m_street; }
+void EditableMapObject::SetCuisines(vector<string> const & cuisine)
+{
+ m_metadata.Set(feature::Metadata::FMD_CUISINE, strings::JoinStrings(cuisine, ';'));
+}
+
+void EditableMapObject::SetRawOSMCuisines(string const & cuisine)
+{
+ m_metadata.Set(feature::Metadata::FMD_CUISINE, cuisine);
+}
+
+void EditableMapObject::SetOpeningHours(string const & openingHours)
+{
+ m_metadata.Set(feature::Metadata::FMD_OPEN_HOURS, openingHours);
+}
+
+//feature::Metadata const & EditableMapObject::GetMetadata() const { return m_metadata; }
+} // namespace osm