From 6d9ee3a798f80f5816398589df396b8bafb6e78c Mon Sep 17 00:00:00 2001 From: Dmitry Kunin Date: Mon, 3 Jun 2013 11:40:48 +0300 Subject: [PATCH] [android] Codereview fixes. --- .../jni/com/mapswithme/core/jni_helper.hpp | 6 +++ android/jni/com/mapswithme/maps/Framework.cpp | 42 ++++++++++--------- android/jni/com/mapswithme/maps/Framework.hpp | 5 +-- .../maps/DownloadResourcesActivity.java | 15 +++---- .../src/com/mapswithme/maps/Framework.java | 3 +- 5 files changed, 40 insertions(+), 31 deletions(-) diff --git a/android/jni/com/mapswithme/core/jni_helper.hpp b/android/jni/com/mapswithme/core/jni_helper.hpp index a56968f6b4..522da2d532 100644 --- a/android/jni/com/mapswithme/core/jni_helper.hpp +++ b/android/jni/com/mapswithme/core/jni_helper.hpp @@ -30,11 +30,17 @@ namespace jni } jstring ToJavaString(JNIEnv * env, char const * s); + inline jstring ToJavaString(JNIEnv * env, string const & s) { return ToJavaString(env, s.c_str()); } + inline jstring ToJavaString(string const & s) + { + return ToJavaString(GetEnv(), s.c_str()); + } + string DescribeException(); shared_ptr make_global_ref(jobject obj); diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 23a82a0415..b18abf2896 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -590,15 +590,15 @@ namespace android m2::PointD pxPivot; BookmarkAndCategory bmAndCat; - m_apiPointActive = NativeFramework()->GetMapApiPoint(pt, m_activePoint); + bool const apiPointActivated = NativeFramework()->GetMapApiPoint(pt, m_activePoint); if (m_apiPointActivatedListener) - m_apiPointActivatedListener(m_apiPointActive, m_activePoint.m_lat, + m_apiPointActivatedListener(apiPointActivated, m_activePoint.m_lat, m_activePoint.m_lon, m_activePoint.m_title, m_activePoint.m_url); - if (m_apiPointActive) + if (apiPointActivated) { m2::PointD pivot(MercatorBounds::LonToX(m_activePoint.m_lon), MercatorBounds::LatToY(m_activePoint.m_lat)); @@ -790,8 +790,11 @@ namespace android m_doLoadState = false; url_api::Request request; + // if we have only one point + // and import is successful + // => show balloon if (m_work.SetViewportByURL(url, request) - && !request.m_points.size() == 1) + && request.m_points.size() == 1) { //we need it only for one-point-call @@ -833,15 +836,15 @@ extern "C" void CallOnApiPointActivatedListener(shared_ptr obj, bool activated, double lat, double lon, string name, string id) { - jmethodID methodID = jni::GetJavaMethodID(jni::GetEnv(), *obj.get(), - "onApiPointActivated", - "(ZDDLjava/lang/String;Ljava/lang/String;)V"); - if (methodID != 0) - { - jstring j_name = jni::ToJavaString(jni::GetEnv(), name); - jstring j_id = jni::ToJavaString(jni::GetEnv(), id); - jni::GetEnv()->CallVoidMethod(*obj.get(), methodID, activated, lat, lon, j_name, j_id); - } + JNIEnv * jniEnv = jni::GetEnv(); + const jmethodID methodID = jni::GetJavaMethodID(jniEnv, + *obj.get(), + "onApiPointActivated", + "(ZDDLjava/lang/String;Ljava/lang/String;)V"); + + jstring j_name = jni::ToJavaString(name); + jstring j_id = jni::ToJavaString(id); + jniEnv->CallVoidMethod(*obj.get(), methodID, activated, lat, lon, j_name, j_id); } JNIEXPORT jstring JNICALL @@ -858,12 +861,13 @@ extern "C" g_framework->SetViewportByUrl(jni::ToNativeString(url)); } - - JNIEXPORT void JNICALL - Java_com_mapswithme_maps_Framework_nativeSetApiPointActivatedListener(JNIEnv * env, jobject thiz, jobject l) - { - g_framework->AddApiPointActivatedListener(bind(&CallOnApiPointActivatedListener, jni::make_global_ref(l), _1, _2, _3, _4, _5)); - } + JNIEXPORT void JNICALL + Java_com_mapswithme_maps_Framework_nativeSetApiPointActivatedListener(JNIEnv * env, jobject thiz, jobject l) + { + g_framework->AddApiPointActivatedListener( + bind(&CallOnApiPointActivatedListener, jni::make_global_ref(l), + _1, _2, _3, _4, _5)); + } JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeRemoveApiPointActivatedListener(JNIEnv * env, jobject thiz) diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index 5f0984d5bc..63be748971 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -41,9 +41,8 @@ namespace android int m_mask; bool m_doLoadState; - bool m_apiPointActive; - url_scheme::ApiPoint m_activePoint; //Api point + url_scheme::ApiPoint m_activePoint; typedef function TOnApiPointActivatedListener; TOnApiPointActivatedListener m_apiPointActivatedListener; @@ -81,8 +80,6 @@ namespace android void CreateBookmarkBalloon(); BookmarkBalloon * GetBookmarkBalloon(); void OnPositionClicked(m2::PointD const & point); - - /// @todo used to keep track of current position for "my_position" balloon bool m_doUpdateBalloonPositionFromLocation; string m_searchQuery; diff --git a/android/src/com/mapswithme/maps/DownloadResourcesActivity.java b/android/src/com/mapswithme/maps/DownloadResourcesActivity.java index e1547ec13d..920dcac30a 100644 --- a/android/src/com/mapswithme/maps/DownloadResourcesActivity.java +++ b/android/src/com/mapswithme/maps/DownloadResourcesActivity.java @@ -682,21 +682,22 @@ public class DownloadResourcesActivity extends MapsWithMeBaseActivity @Override public boolean processIntent(Intent intent) { - //TODO get url and pass to core asynchronously final String apiUrl = intent.getStringExtra(Const.EXTRA_URL); if (apiUrl != null) { // We do not want to wait until parsing finish - new Thread() { + new Thread() + { @Override public void run() { Framework.passApiUrl(apiUrl); }; }.start(); + //TODO add synchronization for non-UI thread call + final MWMRequest request = MWMRequest.extractFromIntent(intent, getApplicationContext()); + MWMRequest.setCurrentRequest(request); + getMwmApplication().getAppStateManager().transitionTo(SuppotedState.API_REQUEST); + return true; } - final MWMRequest request = MWMRequest.extractFromIntent(intent, getApplicationContext()); - MWMRequest.setCurrentRequest(request); - getMwmApplication().getAppStateManager().transitionTo(SuppotedState.API_REQUEST); - - return true; + return false; } } diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index 0eeea673eb..2a3eb648d2 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -19,7 +19,8 @@ public class Framework return nativeGetNameAndAddress4Point(pixelX, pixelY); } - public static void passApiUrl(String url) { + public static void passApiUrl(String url) + { nativePassApiUrl(url); }