diff --git a/android/jni/com/mapswithme/maps/UserMarkHelper.cpp b/android/jni/com/mapswithme/maps/UserMarkHelper.cpp index dcadb11597..b17dbbdd25 100644 --- a/android/jni/com/mapswithme/maps/UserMarkHelper.cpp +++ b/android/jni/com/mapswithme/maps/UserMarkHelper.cpp @@ -38,10 +38,9 @@ jobject CreateBanner(JNIEnv * env, bool hasBanner, string const & bannerTitleId, jobject CreateMapObject(JNIEnv * env, int mapObjectType, string const & title, string const & subtitle, double lat, double lon, string const & address, - Metadata const & metadata, string const & apiId, - bool hasBanner, string const & bannerTitleId, - string const & bannerMessageId, string const & bannerIconId, - string const & bannerUrl) + Metadata const & metadata, string const & apiId, bool hasBanner, + string const & bannerTitleId, string const & bannerMessageId, + string const & bannerIconId, string const & bannerUrl) { // public MapObject(@MapObjectType int mapObjectType, String title, String subtitle, double lat, // double lon, String address, String apiId, @NonNull Banner banner) @@ -53,14 +52,10 @@ jobject CreateMapObject(JNIEnv * env, int mapObjectType, string const & title, jobject jbanner = CreateBanner(env, hasBanner, bannerTitleId, bannerMessageId, bannerIconId, bannerUrl); - jobject mapObject = env->NewObject(g_mapObjectClazz, ctorId, - mapObjectType, - jni::ToJavaString(env, title), - jni::ToJavaString(env, subtitle), - jni::ToJavaString(env, address), - lat, lon, - jni::ToJavaString(env, apiId), - jbanner); + jobject mapObject = + env->NewObject(g_mapObjectClazz, ctorId, mapObjectType, jni::ToJavaString(env, title), + jni::ToJavaString(env, subtitle), jni::ToJavaString(env, address), lat, lon, + jni::ToJavaString(env, apiId), jbanner); InjectMetadata(env, g_mapObjectClazz, mapObject, metadata); return mapObject; @@ -70,7 +65,8 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info) { if (info.IsBookmark()) { - // public Bookmark(@IntRange(from = 0) int categoryId, @IntRange(from = 0) int bookmarkId, String name) + // public Bookmark(@IntRange(from = 0) int categoryId, @IntRange(from = 0) int bookmarkId, + // String name) static jmethodID const ctorId = jni::GetConstructorID( env, g_bookmarkClazz, "(IILjava/lang/String;Lcom/mapswithme/maps/bookmarks/data/Banner;)V"); @@ -80,20 +76,21 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info) auto const & bac = info.GetBookmarkAndCategory(); BookmarkCategory * cat = g_framework->NativeFramework()->GetBmCategory(bac.m_categoryIndex); - BookmarkData const & data = static_cast(cat->GetUserMark(bac.m_bookmarkIndex))->GetData(); + BookmarkData const & data = + static_cast(cat->GetUserMark(bac.m_bookmarkIndex))->GetData(); jni::TScopedLocalRef jName(env, jni::ToJavaString(env, data.GetName())); - jobject mapObject = env->NewObject(g_bookmarkClazz, ctorId, - static_cast(info.m_bac.m_categoryIndex), - static_cast(info.m_bac.m_bookmarkIndex), - jName.get(), jbanner); + jobject mapObject = + env->NewObject(g_bookmarkClazz, ctorId, static_cast(info.m_bac.m_categoryIndex), + static_cast(info.m_bac.m_bookmarkIndex), jName.get(), jbanner); if (info.IsFeature()) InjectMetadata(env, g_mapObjectClazz, mapObject, info.GetMetadata()); return mapObject; } ms::LatLon const ll = info.GetLatLon(); - search::AddressInfo const address = g_framework->NativeFramework()->GetAddressInfoAtPoint(info.GetMercator()); + search::AddressInfo const address = + g_framework->NativeFramework()->GetAddressInfoAtPoint(info.GetMercator()); // TODO(yunikkk): object can be POI + API + search result + bookmark simultaneously. // TODO(yunikkk): Should we pass localized strings here and in other methods as byte arrays? diff --git a/android/res/layout/place_page_banner.xml b/android/res/layout/place_page_banner.xml index 14781841a3..236aff904f 100644 --- a/android/res/layout/place_page_banner.xml +++ b/android/res/layout/place_page_banner.xml @@ -56,9 +56,7 @@ android:layout_toRightOf="@id/iv__banner_icon" android:textAppearance="@style/MwmTextAppearance.Body4" android:visibility="gone" - tools:text="Бесплатная курьерская доставка по России! - -Коллекции женской, мужской и детской одежды, обуви, + tools:text="Бесплатная курьерская доставка по России!\n\nКоллекции женской, мужской и детской одежды, обуви, а также товары для дома и спорта. Цены." tools:visibility="visible"/> diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index 43a87e9782..a646361824 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -1258,9 +1258,9 @@ public class MwmActivity extends BaseMwmFragmentActivity final RoutePoint from = data.mPoints[0]; final RoutePoint to = data.mPoints[1]; RoutingController.get().prepare(new MapObject(MapObject.API_POINT, from.mName, "", "", - from.mLat, from.mLon, "", Banner.empty()), + from.mLat, from.mLon, "", Banner.EMPTY), new MapObject(MapObject.API_POINT, to.mName, "", "", - to.mLat, to.mLon, "", Banner.empty())); + to.mLat, to.mLon, "", Banner.EMPTY)); return true; } diff --git a/android/src/com/mapswithme/maps/bookmarks/data/Banner.java b/android/src/com/mapswithme/maps/bookmarks/data/Banner.java index 741ea33ffe..b0dd1acb24 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/Banner.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/Banner.java @@ -7,41 +7,7 @@ import android.support.annotation.Nullable; public final class Banner implements Parcelable { - private final boolean mIsActive; - @Nullable - private final String mTitle; - @Nullable - private final String mMessage; - @Nullable - private final String mIconUrl; - @Nullable - private final String mUrl; - - @NonNull - public static Banner empty() - { - return new Banner(false, "", "", "", ""); - } - - public Banner(boolean isActive, @Nullable String title, @Nullable String message, - @Nullable String iconUrl, @Nullable String url) - { - mIsActive = isActive; - mTitle = title; - mMessage = message; -// mIconUrl = iconUrl; - mIconUrl = "https://lh6.ggpht.com/bVwOOcO1jm_bfvqtkUDEyyOl2PZ-ZLaxqzylW5NtM2NHSlLQAnC1t45gf6d6JX07XQ=w300"; - mUrl = url; - } - - protected Banner(Parcel in) - { - mIsActive = in.readByte() != 0; - mTitle = in.readString(); - mMessage = in.readString(); - mIconUrl = in.readString(); - mUrl = in.readString(); - } + public static final Banner EMPTY = new Banner(false, "", "", "", ""); public static final Creator CREATOR = new Creator() { @@ -58,6 +24,37 @@ public final class Banner implements Parcelable } }; + private final boolean mIsActive; + @Nullable + private final String mTitle; + @Nullable + private final String mMessage; + @Nullable + private final String mIconUrl; + @Nullable + private final String mUrl; + + public Banner(boolean isActive, @Nullable String title, @Nullable String message, + @Nullable String iconUrl, @Nullable String url) + { + mIsActive = isActive; + mTitle = title; + mMessage = message; + //TODO: uncomment this when cpp banner implementation will be done + //mIconUrl = iconUrl; + mIconUrl = "https://lh6.ggpht.com/bVwOOcO1jm_bfvqtkUDEyyOl2PZ-ZLaxqzylW5NtM2NHSlLQAnC1t45gf6d6JX07XQ=w300"; + mUrl = url; + } + + protected Banner(Parcel in) + { + mIsActive = in.readByte() != 0; + mTitle = in.readString(); + mMessage = in.readString(); + mIconUrl = in.readString(); + mUrl = in.readString(); + } + public boolean isActive() { return mIsActive; diff --git a/android/src/com/mapswithme/maps/location/LocationHelper.java b/android/src/com/mapswithme/maps/location/LocationHelper.java index 0a367b9e8a..62ef138726 100644 --- a/android/src/com/mapswithme/maps/location/LocationHelper.java +++ b/android/src/com/mapswithme/maps/location/LocationHelper.java @@ -305,7 +305,7 @@ public enum LocationHelper if (mMyPosition == null) mMyPosition = new MapObject(MapObject.MY_POSITION, "", "", "", mSavedLocation.getLatitude(), - mSavedLocation.getLongitude(), "", Banner.empty()); + mSavedLocation.getLongitude(), "", Banner.EMPTY); return mMyPosition; } diff --git a/android/src/com/mapswithme/maps/search/SearchFragment.java b/android/src/com/mapswithme/maps/search/SearchFragment.java index 01581629c6..d4487fd96e 100644 --- a/android/src/com/mapswithme/maps/search/SearchFragment.java +++ b/android/src/com/mapswithme/maps/search/SearchFragment.java @@ -353,7 +353,7 @@ public class SearchFragment extends BaseMwmFragment { //noinspection ConstantConditions final MapObject point = new MapObject(MapObject.SEARCH, result.name, - result.description.featureType, "", result.lat, result.lon, "", Banner.empty()); + result.description.featureType, "", result.lat, result.lon, "", Banner.EMPTY); RoutingController.get().onPoiSelected(point); } diff --git a/android/src/com/mapswithme/maps/widget/placepage/BannerController.java b/android/src/com/mapswithme/maps/widget/placepage/BannerController.java index 18bc2472fc..3843d999e8 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/BannerController.java +++ b/android/src/com/mapswithme/maps/widget/placepage/BannerController.java @@ -1,7 +1,6 @@ package com.mapswithme.maps.widget.placepage; import android.content.res.Resources; -import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; @@ -14,13 +13,13 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; -import com.mapswithme.maps.MwmApplication; import com.mapswithme.maps.R; import com.mapswithme.maps.bookmarks.data.Banner; import com.mapswithme.util.ConnectionState; import com.mapswithme.util.UiUtils; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static com.mapswithme.util.SharedPropertiesUtils.isShowcaseSwitchedOnLocal; final class BannerController implements View.OnClickListener { @@ -46,13 +45,7 @@ final class BannerController implements View.OnClickListener private final float mMarginBase; private final float mMarginHalfPlus; - private boolean mState = false; - - private static boolean isShowcaseSwitchedOn() - { - return PreferenceManager.getDefaultSharedPreferences(MwmApplication.get()) - .getBoolean(MwmApplication.get().getString(R.string.pref_showcase_switched_on), false); - } + private boolean mIsOpened = false; BannerController(@NonNull View bannerView, @Nullable OnBannerClickListener listener) { @@ -79,7 +72,7 @@ final class BannerController implements View.OnClickListener if (mMessage != null) mMessage.setText(banner.getMessage()); boolean showBanner = banner.isActive() && ConnectionState.isConnected() - && isShowcaseSwitchedOn(); + && isShowcaseSwitchedOnLocal(); UiUtils.showIf(showBanner, mFrame); if (UiUtils.isLandscape(mFrame.getContext())) open(); @@ -92,10 +85,10 @@ final class BannerController implements View.OnClickListener void open() { - if (!isShowing() || mBanner == null || mState) + if (!isShowing() || mBanner == null || mIsOpened) return; - mState = true; + mIsOpened = true; setFrameHeight(WRAP_CONTENT); setIconParams(mOpenIconSize, 0, mMarginBase); UiUtils.show(mMessage, mAdMarker); @@ -107,10 +100,10 @@ final class BannerController implements View.OnClickListener void close() { - if (!isShowing() || mBanner == null || !mState) + if (!isShowing() || mBanner == null || !mIsOpened) return; - mState = false; + mIsOpened = false; setFrameHeight((int) mCloseFrameHeight); setIconParams(mCloseIconSize, mMarginBase, mMarginHalfPlus); UiUtils.hide(mMessage, mAdMarker); diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java index 4bc813763d..2c9178674f 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java +++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java @@ -163,7 +163,6 @@ public class PlacePageView extends RelativeLayout private TextView mHotelRatingBase; //TODO: remove this after booking_api.cpp will be done private View mHotelMore; - // Banner @Nullable BannerController mBannerController; @@ -719,7 +718,7 @@ public class PlacePageView extends RelativeLayout @Override public void onBannerClick(@NonNull Banner banner) { -// TODO: go to banner url + // TODO (goblinr): go to banner url } @Override @@ -746,7 +745,7 @@ public class PlacePageView extends RelativeLayout mAnimationController = isBottom ? new BottomPlacePageAnimationController(this) : new LeftPlacePageAnimationController(this); if (isBottom) - ((BottomPlacePageAnimationController)mAnimationController).setBannerOpenListener(this); + ((BottomPlacePageAnimationController) mAnimationController).setBannerOpenListener(this); } public void restore() @@ -949,9 +948,8 @@ public class PlacePageView extends RelativeLayout UiUtils.showIf(!isPriceEmpty, mTvSponsoredPrice); } - Banner banner = mMapObject.getBanner(); if (mBannerController != null) - mBannerController.updateData(banner); + mBannerController.updateData(mMapObject.getBanner()); } private void refreshDetails() diff --git a/android/src/com/mapswithme/util/SharedPropertiesUtils.java b/android/src/com/mapswithme/util/SharedPropertiesUtils.java new file mode 100644 index 0000000000..f130826ca9 --- /dev/null +++ b/android/src/com/mapswithme/util/SharedPropertiesUtils.java @@ -0,0 +1,21 @@ +package com.mapswithme.util; + +import com.mapswithme.maps.MwmApplication; +import com.mapswithme.maps.R; + +import static com.mapswithme.maps.MwmApplication.prefs; + +public final class SharedPropertiesUtils +{ + public static boolean isShowcaseSwitchedOnLocal() + { + return prefs() + .getBoolean(MwmApplication.get().getString(R.string.pref_showcase_switched_on), false); + } + + //Utils class + private SharedPropertiesUtils() + { + throw new IllegalStateException("Try instantiate utility class SharedPropertiesUtils"); + } +} diff --git a/android/src/com/mapswithme/util/statistics/MytargetHelper.java b/android/src/com/mapswithme/util/statistics/MytargetHelper.java index 8de950f8c4..97775f4160 100644 --- a/android/src/com/mapswithme/util/statistics/MytargetHelper.java +++ b/android/src/com/mapswithme/util/statistics/MytargetHelper.java @@ -23,6 +23,7 @@ import java.net.URL; import java.util.List; import static com.mapswithme.maps.MwmApplication.prefs; +import static com.mapswithme.util.SharedPropertiesUtils.isShowcaseSwitchedOnLocal; public final class MytargetHelper { @@ -172,12 +173,6 @@ public final class MytargetHelper mShowcase.handleBannerClick(banner); } - private static boolean isShowcaseSwitchedOnLocal() - { - return PreferenceManager.getDefaultSharedPreferences(MwmApplication.get()) - .getBoolean(MwmApplication.get().getString(R.string.pref_showcase_switched_on), false); - } - public static boolean isShowcaseSwitchedOnServer() { return prefs().getBoolean(PREF_CHECK, true);