From a67842c3d31d93cb58e61cefde0f83078b9b53da Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Tue, 5 Nov 2019 15:11:05 +0300 Subject: [PATCH] [jni][android][onboarding] tip data source is added --- android/jni/CMakeLists.txt | 1 + .../mapswithme/maps/onboarding/Onboarding.cpp | 24 +++++++++ android/multidex-config.txt | 1 + .../maps/onboarding/OnboardingTip.java | 54 +++++++++++++++++++ 4 files changed, 80 insertions(+) create mode 100644 android/jni/com/mapswithme/maps/onboarding/Onboarding.cpp create mode 100644 android/src/com/mapswithme/maps/onboarding/OnboardingTip.java diff --git a/android/jni/CMakeLists.txt b/android/jni/CMakeLists.txt index d972c2feef..26c9a85b52 100644 --- a/android/jni/CMakeLists.txt +++ b/android/jni/CMakeLists.txt @@ -57,6 +57,7 @@ set( com/mapswithme/maps/MapManager.cpp com/mapswithme/maps/MwmApplication.cpp com/mapswithme/maps/metrics/UserActionsLogger.cpp + com/mapswithme/maps/onboarding/Onboarding.cpp com/mapswithme/maps/PrivateVariables.cpp com/mapswithme/maps/promo/Promo.cpp com/mapswithme/maps/routing/RoutingOptions.cpp diff --git a/android/jni/com/mapswithme/maps/onboarding/Onboarding.cpp b/android/jni/com/mapswithme/maps/onboarding/Onboarding.cpp new file mode 100644 index 0000000000..319b39193a --- /dev/null +++ b/android/jni/com/mapswithme/maps/onboarding/Onboarding.cpp @@ -0,0 +1,24 @@ +#include "com/mapswithme/core/jni_helper.hpp" + +#include "map/onboarding.hpp" + +extern "C" +{ +JNIEXPORT jobject JNICALL +Java_com_mapswithme_maps_onboarding_OnboardingTip_nativeGetTip(JNIEnv * env, jclass) +{ + if (!onboarding::CanShowTipButton()) + return nullptr; + + static jclass g_tipClass = + jni::GetGlobalClassRef(env, "com/mapswithme/maps/onboarding/OnboardingTip"); + static jmethodID g_tipConstructor = + jni::GetConstructorID(env, g_tipClass, "(ILjava/lang/String;)V"); + + auto const tip = onboarding::GetTip(); + + jni::TScopedLocalRef url(env, jni::ToJavaString(env, tip.m_url)); + + return env->NewObject(g_tipClass, g_tipConstructor, static_cast(tip.m_type), url.get()); +} +} // extern "C" diff --git a/android/multidex-config.txt b/android/multidex-config.txt index 5880499393..f86f710c6e 100644 --- a/android/multidex-config.txt +++ b/android/multidex-config.txt @@ -3,6 +3,7 @@ com/mapswithme/maps/bookmarks/data/Bookmark.class com/mapswithme/maps/bookmarks/data/FeatureId.class com/mapswithme/maps/bookmarks/data/MapObject.class com/mapswithme/maps/location/PlatformSocket.class +com/mapswithme/maps/onboarding/OnboardingTip.class com/mapswithme/maps/search/PopularityProvider.class com/mapswithme/maps/ugc/UGC$Rating.class com/mapswithme/util/HttpClient$Params.class diff --git a/android/src/com/mapswithme/maps/onboarding/OnboardingTip.java b/android/src/com/mapswithme/maps/onboarding/OnboardingTip.java new file mode 100644 index 0000000000..9e45e7127f --- /dev/null +++ b/android/src/com/mapswithme/maps/onboarding/OnboardingTip.java @@ -0,0 +1,54 @@ +package com.mapswithme.maps.onboarding; + +import androidx.annotation.IntDef; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +public class OnboardingTip +{ + // The order is important, must corresponds to + // OnboardingTip::Type enum at map/onboarding.hpp. + public static final int DISCOVER_CATALOG= 0; + public static final int DOWNLOAD_SAMPLES = 1; + public static final int BUY_SUBSCRIPTION = 2; + + @Retention(RetentionPolicy.SOURCE) + @IntDef({ DISCOVER_CATALOG, DOWNLOAD_SAMPLES, BUY_SUBSCRIPTION}) + @interface ScreenType {} + + @ScreenType + private int mType; + @NonNull + private String mUrl; + + @SuppressWarnings("unused") + OnboardingTip(@ScreenType int type, @NonNull String url) + { + mType = type; + mUrl = url; + } + + @ScreenType + public int getType() + { + return mType; + } + + @NonNull + public String getUrl() + { + return mUrl; + } + + @Nullable + public static OnboardingTip get() + { + return nativeGetTip(); + } + + @Nullable + private static native OnboardingTip nativeGetTip(); +}