string Info::GetSubtitle() const { if (!IsFeature()) { if (IsBookmark()) return m_bookmarkCategoryName; return {}; } vector<string> values; // Bookmark category. if (IsBookmark()) values.push_back(m_bookmarkCategoryName); // Type. values.push_back(GetLocalizedType()); // Flats. string const flats = GetFlats(); if (!flats.empty()) values.push_back(flats); // Cuisines. for (string const & cuisine : GetLocalizedCuisines()) values.push_back(cuisine); // Stars. string const stars = FormatStars(); if (!stars.empty()) values.push_back(stars); // Operator. string const op = GetOperator(); if (!op.empty()) values.push_back(op); // Elevation. string const eleStr = GetElevationFormatted(); if (!eleStr.empty()) values.push_back(kMountainSymbol + eleStr); if (HasWifi()) values.push_back(m_localizedWifiString); return strings::JoinStrings(values, kSubtitleSeparator); }
kml::LocalizableString Info::FormatNewBookmarkName() const { kml::LocalizableString bookmarkName; if (IsFeature()) { m_name.ForEach([&bookmarkName](int8_t langCode, std::string const & localName) { if (!localName.empty()) bookmarkName[langCode] = localName; }); if (bookmarkName.empty() && IsBuilding() && !m_address.empty()) kml::SetDefaultStr(bookmarkName, m_address); } else if (!m_uiTitle.empty()) { kml::SetDefaultStr(bookmarkName, m_uiTitle); } return bookmarkName; }
bool Info::ShouldShowEditPlace() const { return m_canEditOrAdd && // TODO(mgsergio): Does IsFeature() imply !IsMyPosition()? !IsMyPosition() && IsFeature(); }
bool Info::ShouldShowAddPlace() const { auto const isPointOrBuilding = IsPointType() || IsBuilding(); return m_canEditOrAdd && !(IsFeature() && isPointOrBuilding); }
bool Info::ShouldShowAddPlace() const { return !IsSponsoredHotel() && (!IsFeature() || (!IsPointType() && !IsBuilding())); }
void Info::SetBookmarkId(kml::MarkId markId) { m_markId = markId; m_uiSubtitle = FormatSubtitle(IsFeature() /* withType */); }