From 870b7b59900f8fe3ced469e58c6ea301c1cbbb72 Mon Sep 17 00:00:00 2001 From: Ilya Zverev Date: Thu, 1 Dec 2016 13:43:33 +0300 Subject: [PATCH 1/2] [banners] Fix android build, remove default icon --- android/assets/banners.txt | 1 + android/script/replace_links.bat | 1 + indexer/banners.cpp | 24 ++++++++++++++---------- map/place_page_info.cpp | 12 ++++++++---- 4 files changed, 24 insertions(+), 14 deletions(-) create mode 120000 android/assets/banners.txt diff --git a/android/assets/banners.txt b/android/assets/banners.txt new file mode 120000 index 0000000000..207c3f461a --- /dev/null +++ b/android/assets/banners.txt @@ -0,0 +1 @@ +../../data/banners.txt \ No newline at end of file diff --git a/android/script/replace_links.bat b/android/script/replace_links.bat index 810344f440..557b1d4783 100644 --- a/android/script/replace_links.bat +++ b/android/script/replace_links.bat @@ -2,6 +2,7 @@ cd .. rm -rf assets/ mkdir assets +cp ../data/banners.txt assets/ cp ../data/categories.txt assets/ cp ../data/classificator.txt assets/ cp ../data/colors.txt assets/ diff --git a/indexer/banners.cpp b/indexer/banners.cpp index 509d069f4b..6f5471c85c 100644 --- a/indexer/banners.cpp +++ b/indexer/banners.cpp @@ -51,13 +51,9 @@ string Banner::GetProperty(string const & name) const return {}; } -Banner::Banner(string const & id) : m_id(id) +Banner::Banner(string const & id) + : m_id(id), m_messageBase("banner" + id), m_activeAfter(time(nullptr)), m_activeBefore(kEternity) { - m_messageBase = "banner_" + id; - m_iconName = m_messageBase + ".png"; - m_defaultUrl = ""; - m_activeAfter = time(nullptr); - m_activeBefore = kEternity; } bool Banner::IsActive() const @@ -216,9 +212,17 @@ Banner const & BannerSet::GetBannerForFeature(FeatureType const & ft) const void BannerSet::LoadBanners() { - auto reader = GetPlatform().GetReader(BANNERS_FILE); - ReaderStreamBuf buffer(move(reader)); - istream s(&buffer); - ReadBanners(s); + try + { + auto reader = GetPlatform().GetReader(BANNERS_FILE); + ReaderStreamBuf buffer(move(reader)); + istream s(&buffer); + ReadBanners(s); + } + catch (FileAbsentException const &) + { + LOG(LWARNING, ("No", BANNERS_FILE, "found")); + return; + } } } // namespace banner diff --git a/map/place_page_info.cpp b/map/place_page_info.cpp index d843e7a671..508e35d8f2 100644 --- a/map/place_page_info.cpp +++ b/map/place_page_info.cpp @@ -169,25 +169,29 @@ string Info::GetApproximatePricing() const string Info::GetBannerTitleId() const { - CHECK(!m_banner.IsEmpty(), ()); + if (m_banner.IsEmpty()) + return {}; return m_banner.GetMessageBase() + "_title"; } string Info::GetBannerMessageId() const { - CHECK(!m_banner.IsEmpty(), ()); + if (m_banner.IsEmpty()) + return {}; return m_banner.GetMessageBase() + "_message"; } string Info::GetBannerIconId() const { - CHECK(!m_banner.IsEmpty(), ()); + if (m_banner.IsEmpty()) + return {}; return m_banner.GetIconName(); } string Info::GetBannerUrl() const { - CHECK(!m_banner.IsEmpty(), ()); + if (m_banner.IsEmpty()) + return {}; return m_banner.GetFormattedUrl(m_metadata.Get(feature::Metadata::FMD_BANNER_URL)); } From 692de5901f5168a884c2387b6392621381819d68 Mon Sep 17 00:00:00 2001 From: alexzatsepin Date: Thu, 1 Dec 2016 16:06:54 +0300 Subject: [PATCH 2/2] [android] Fixed the crash while tapping on map object which hasn't banner --- android/jni/com/mapswithme/maps/UserMarkHelper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/jni/com/mapswithme/maps/UserMarkHelper.cpp b/android/jni/com/mapswithme/maps/UserMarkHelper.cpp index ba4491f18e..4f42d1a90d 100644 --- a/android/jni/com/mapswithme/maps/UserMarkHelper.cpp +++ b/android/jni/com/mapswithme/maps/UserMarkHelper.cpp @@ -47,7 +47,7 @@ jobject CreateMapObject(JNIEnv * env, int mapObjectType, string const & title, "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;DDLjava/lang/" "String;Lcom/mapswithme/maps/bookmarks/data/Banner;)V"); - jobject jbanner; + jobject jbanner = nullptr; if (hasBanner) jbanner = CreateBanner(env, bannerTitleId, bannerMessageId, bannerIconId, bannerUrl); @@ -69,7 +69,7 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info) static jmethodID const ctorId = jni::GetConstructorID( env, g_bookmarkClazz, "(IILjava/lang/String;Lcom/mapswithme/maps/bookmarks/data/Banner;)V"); - jobject jbanner; + jobject jbanner = nullptr; if (info.HasBanner()) jbanner = CreateBanner(env, info.GetBannerTitleId(), info.GetBannerMessageId(), info.GetBannerIconId(), info.GetBannerUrl());