From cace5dfe38c2d0f38cd7a6966c071e2f0c31e9e5 Mon Sep 17 00:00:00 2001 From: Dmitry Donskoy Date: Fri, 7 Sep 2018 21:18:25 +0300 Subject: [PATCH] [android] Added support jni call when tip shown --- android/jni/com/mapswithme/maps/Framework.cpp | 9 +++ .../src/com/mapswithme/maps/Framework.java | 9 +++ .../com/mapswithme/maps/tips/TipsAction.java | 7 +++ .../mapswithme/maps/tips/TipsProvider.java | 62 ++++++++++++++++--- 4 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 android/src/com/mapswithme/maps/tips/TipsAction.java diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index b2e5e801ab..411d48b58a 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -42,6 +42,7 @@ #include "base/logging.hpp" #include "base/math.hpp" #include "base/sunrise_sunset.hpp" +#include "metrics/eye.hpp" #include #include @@ -1776,6 +1777,14 @@ Java_com_mapswithme_maps_Framework_nativeGetCurrentTipsApi(JNIEnv * env, jclass) return tipsApi.GetTip().is_initialized() ? static_cast(tipsApi.GetTip().get()) : -1; } +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_Framework_nativeTipsShown(JNIEnv * env, jclass, + jint type, jint event) +{ + auto const & typeValue = static_cast(type); + auto const & eventValue = static_cast(event); + eye::Eye::Event::TipShown(typeValue, eventValue); +} JNIEXPORT jboolean JNICALL Java_com_mapswithme_maps_Framework_nativeHasActiveSubscription(JNIEnv *, jclass) { diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index d0363b68ba..3110a7a400 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -24,6 +24,8 @@ import com.mapswithme.maps.routing.RoutePointInfo; import com.mapswithme.maps.routing.RoutingInfo; import com.mapswithme.maps.routing.TransitRouteInfo; import com.mapswithme.maps.search.FilterUtils; +import com.mapswithme.maps.tips.TipsAction; +import com.mapswithme.maps.tips.TipsProvider; import com.mapswithme.util.Constants; import com.mapswithme.util.log.Logger; import com.mapswithme.util.log.LoggerFactory; @@ -223,6 +225,11 @@ public class Framework return FilterUtils.RATING_ANY; } + public static void tipsShown(@NonNull TipsProvider tipsProvider) + { + nativeTipsShown(tipsProvider.ordinal(), TipsAction.ACTION_CLICKED.ordinal()); + } + public static native void nativeShowTrackRect(long track); public static native int nativeGetDrawScale(); @@ -476,4 +483,6 @@ public class Framework public static native boolean nativeHasActiveSubscription(); public static native int nativeGetCurrentTipsApi(); + + private static native void nativeTipsShown(int tipType, int event); } diff --git a/android/src/com/mapswithme/maps/tips/TipsAction.java b/android/src/com/mapswithme/maps/tips/TipsAction.java new file mode 100644 index 0000000000..44088e06cf --- /dev/null +++ b/android/src/com/mapswithme/maps/tips/TipsAction.java @@ -0,0 +1,7 @@ +package com.mapswithme.maps.tips; + +public enum TipsAction +{ + ACTION_CLICKED, + GOT_IT_CLICKED +} diff --git a/android/src/com/mapswithme/maps/tips/TipsProvider.java b/android/src/com/mapswithme/maps/tips/TipsProvider.java index add2b43079..aece1164c9 100644 --- a/android/src/com/mapswithme/maps/tips/TipsProvider.java +++ b/android/src/com/mapswithme/maps/tips/TipsProvider.java @@ -165,39 +165,85 @@ public enum TipsProvider { void onInterceptClick(@NonNull MwmActivity params); - class OpenBookmarksCatalog implements ClickInterceptor + abstract class AbstractClickInterceptor implements ClickInterceptor { + @NonNull + private final TipsProvider mTipsProvider; + + AbstractClickInterceptor(@NonNull TipsProvider tipsProvider) + { + mTipsProvider = tipsProvider; + } + + @NonNull + TipsProvider getType() + { + return mTipsProvider; + } + @Override - public void onInterceptClick(@NonNull MwmActivity params) + public final void onInterceptClick(@NonNull MwmActivity params) + { + Framework.tipsShown(getType()); + onInterceptClickInternal(params); + } + + protected abstract void onInterceptClickInternal(@NonNull MwmActivity params); + } + + class OpenBookmarksCatalog extends AbstractClickInterceptor + { + OpenBookmarksCatalog() + { + super(BOOKMARKS); + } + + @Override + public void onInterceptClickInternal(@NonNull MwmActivity params) { BookmarksCatalogActivity.startForResult(params, BookmarkCategoriesActivity.REQ_CODE_DOWNLOAD_BOOKMARK_CATEGORY); } } - class ActivateSubwayLayer implements ClickInterceptor + class ActivateSubwayLayer extends AbstractClickInterceptor { + ActivateSubwayLayer() + { + super(MAP_LAYERS); + } + @Override - public void onInterceptClick(@NonNull MwmActivity params) + public void onInterceptClickInternal(@NonNull MwmActivity params) { Mode.SUBWAY.setEnabled(params, true); params.onSubwayLayerSelected(); } } - class SearchHotels implements ClickInterceptor + class SearchHotels extends AbstractClickInterceptor { + SearchHotels() + { + super(SEARCH); + } + @Override - public void onInterceptClick(@NonNull MwmActivity params) + public void onInterceptClickInternal(@NonNull MwmActivity params) { params.showSearch(params.getString(R.string.hotel)); } } - class OpenDiscoveryScreen implements ClickInterceptor + class OpenDiscoveryScreen extends AbstractClickInterceptor { + OpenDiscoveryScreen() + { + super(DISCOVERY); + } + @Override - public void onInterceptClick(@NonNull MwmActivity params) + public void onInterceptClickInternal(@NonNull MwmActivity params) { params.showDiscovery(); }