From a01a6f9c48efa4d983e0fbc59c22cc4671a23034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=97=D0=B0=D1=86=D0=B5=D0=BF=D0=B8=D0=BD?= Date: Mon, 26 Feb 2018 18:48:57 +0300 Subject: [PATCH] [android] Added search cancel before another search start --- .../jni/com/mapswithme/maps/SearchEngine.cpp | 15 +++-------- .../src/com/mapswithme/maps/MwmActivity.java | 3 ++- .../FloatingSearchToolbarController.java | 4 +-- .../mapswithme/maps/search/SearchEngine.java | 25 +++++++++++++------ .../maps/search/SearchFragment.java | 7 +++--- 5 files changed, 28 insertions(+), 26 deletions(-) diff --git a/android/jni/com/mapswithme/maps/SearchEngine.cpp b/android/jni/com/mapswithme/maps/SearchEngine.cpp index a11b59c1ac..b27966ec55 100644 --- a/android/jni/com/mapswithme/maps/SearchEngine.cpp +++ b/android/jni/com/mapswithme/maps/SearchEngine.cpp @@ -598,28 +598,19 @@ extern "C" JNIEXPORT void JNICALL Java_com_mapswithme_maps_search_SearchEngine_nativeCancelInteractiveSearch(JNIEnv * env, jclass clazz) { - GetPlatform().RunTask(Platform::Thread::Gui, []() - { - g_framework->NativeFramework()->CancelSearch(search::Mode::Viewport); - }); + g_framework->NativeFramework()->CancelSearch(search::Mode::Viewport); } JNIEXPORT void JNICALL Java_com_mapswithme_maps_search_SearchEngine_nativeCancelEverywhereSearch(JNIEnv * env, jclass clazz) { - GetPlatform().RunTask(Platform::Thread::Gui, []() - { - g_framework->NativeFramework()->CancelSearch(search::Mode::Everywhere); - }); + g_framework->NativeFramework()->CancelSearch(search::Mode::Everywhere); } JNIEXPORT void JNICALL Java_com_mapswithme_maps_search_SearchEngine_nativeCancelAllSearches(JNIEnv * env, jclass clazz) { - GetPlatform().RunTask(Platform::Thread::Gui, []() - { - g_framework->NativeFramework()->CancelAllSearches(); - }); + g_framework->NativeFramework()->CancelAllSearches(); } JNIEXPORT jobjectArray JNICALL diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index 06bbbb9365..50c98cf973 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -480,7 +480,7 @@ public class MwmActivity extends BaseMwmFragmentActivity args.putBoolean(DownloaderActivity.EXTRA_OPEN_DOWNLOADED, openDownloaded); if (mIsFragmentContainer) { - SearchEngine.cancelAllSearches(); + SearchEngine.cancel(); mSearchController.refreshToolbar(); replaceFragment(MapManager.nativeIsLegacyMode() ? MigrationFragment.class : DownloaderFragment.class, args, null); } @@ -609,6 +609,7 @@ public class MwmActivity extends BaseMwmFragmentActivity private void runSearch() { + SearchEngine.cancel(); SearchEngine.searchInteractive(mSearchController.getQuery(), System.nanoTime(), false /* isMapAndTable */, mFilterController != null ? mFilterController.getFilter() : null, diff --git a/android/src/com/mapswithme/maps/search/FloatingSearchToolbarController.java b/android/src/com/mapswithme/maps/search/FloatingSearchToolbarController.java index 7a0a5ced59..f45d9f10b4 100644 --- a/android/src/com/mapswithme/maps/search/FloatingSearchToolbarController.java +++ b/android/src/com/mapswithme/maps/search/FloatingSearchToolbarController.java @@ -3,6 +3,7 @@ package com.mapswithme.maps.search; import android.app.Activity; import android.support.annotation.Nullable; import android.text.TextUtils; + import com.mapswithme.maps.MwmActivity; import com.mapswithme.maps.api.ParsedMwmRequest; import com.mapswithme.maps.widget.SearchToolbarController; @@ -85,8 +86,7 @@ public class FloatingSearchToolbarController extends SearchToolbarController private void cancelSearchApiAndHide(boolean clearText) { - SearchEngine.cancelApiCall(); - SearchEngine.cancelInteractiveSearch(); + SearchEngine.cancel(); if (clearText) clear(); diff --git a/android/src/com/mapswithme/maps/search/SearchEngine.java b/android/src/com/mapswithme/maps/search/SearchEngine.java index 7363db6bd7..745cf62f22 100644 --- a/android/src/com/mapswithme/maps/search/SearchEngine.java +++ b/android/src/com/mapswithme/maps/search/SearchEngine.java @@ -1,5 +1,6 @@ package com.mapswithme.maps.search; +import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -117,6 +118,7 @@ public enum SearchEngine implements NativeSearchListener, * @param timestamp Search results are filtered according to it after multiple requests. * @return whether search was actually started. */ + @MainThread public static boolean search(String query, long timestamp, boolean hasLocation, double lat, double lon, @Nullable HotelsFilter hotelsFilter, @Nullable BookingFilterParams bookingParams) @@ -130,6 +132,7 @@ public enum SearchEngine implements NativeSearchListener, return false; } + @MainThread public static void searchInteractive(@NonNull String query, @NonNull String locale, long timestamp, boolean isMapAndTable, @Nullable HotelsFilter hotelsFilter, @Nullable BookingFilterParams bookingParams) @@ -141,12 +144,14 @@ public enum SearchEngine implements NativeSearchListener, } catch (UnsupportedEncodingException ignored) { } } + @MainThread public static void searchInteractive(@NonNull String query, long timestamp, boolean isMapAndTable, @Nullable HotelsFilter hotelsFilter, @Nullable BookingFilterParams bookingParams) { searchInteractive(query, Language.getKeyboardLocale(), timestamp, isMapAndTable, hotelsFilter, bookingParams); } + @MainThread public static void searchMaps(String query, long timestamp) { try @@ -166,31 +171,35 @@ public enum SearchEngine implements NativeSearchListener, return sSavedQuery; } - public static void cancelApiCall() + @MainThread + public static void cancel() + { + cancelApiCall(); + cancelAllSearches(); + } + @MainThread + private static void cancelApiCall() { if (ParsedMwmRequest.hasRequest()) ParsedMwmRequest.setCurrentRequest(null); Framework.nativeClearApiPoints(); } + @MainThread public static void cancelInteractiveSearch() { sSavedQuery = ""; nativeCancelInteractiveSearch(); } - public static void cancelEverywhereSearch() - { - sSavedQuery = ""; - nativeCancelEverywhereSearch(); - } - - public static void cancelAllSearches() + @MainThread + private static void cancelAllSearches() { sSavedQuery = ""; nativeCancelAllSearches(); } + @MainThread public static void showResult(int index) { sSavedQuery = ""; diff --git a/android/src/com/mapswithme/maps/search/SearchFragment.java b/android/src/com/mapswithme/maps/search/SearchFragment.java index 7867f3a132..fc44add663 100644 --- a/android/src/com/mapswithme/maps/search/SearchFragment.java +++ b/android/src/com/mapswithme/maps/search/SearchFragment.java @@ -547,7 +547,7 @@ public class SearchFragment extends BaseMwmFragment { final String query = getQuery(); SearchRecents.add(query); - SearchEngine.cancelApiCall(); + SearchEngine.cancel(); if (!RoutingController.get().isWaitingPoiPick()) SearchEngine.showResult(resultIndex); @@ -598,8 +598,7 @@ public class SearchFragment extends BaseMwmFragment private void stopSearch() { - SearchEngine.cancelApiCall(); - SearchEngine.cancelAllSearches(); + SearchEngine.cancel(); updateSearchView(); } @@ -611,6 +610,8 @@ public class SearchFragment extends BaseMwmFragment private void runSearch() { + SearchEngine.cancel(); + HotelsFilter hotelsFilter = null; BookingFilterParams bookingFilterParams = null; if (mFilterController != null)