diff --git a/android/jni/CMakeLists.txt b/android/jni/CMakeLists.txt index 20fd773434..aeaac9eab9 100644 --- a/android/jni/CMakeLists.txt +++ b/android/jni/CMakeLists.txt @@ -39,6 +39,7 @@ set( # JNI sources com/mapswithme/core/jni_helper.cpp com/mapswithme/core/logging.cpp + com/mapswithme/maps/analytics/ExternalLibrariesMediator.cpp com/mapswithme/maps/bookmarks/data/Bookmark.cpp com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp com/mapswithme/maps/discovery/DiscoveryManager.cpp @@ -48,8 +49,6 @@ set( com/mapswithme/maps/editor/OpeningHours.cpp com/mapswithme/maps/editor/Editor.cpp com/mapswithme/maps/editor/OsmOAuth.cpp - com/mapswithme/maps/metrics/UserActionsLogger.cpp - com/mapswithme/maps/routing/RoutingOptions.cpp com/mapswithme/maps/Framework.cpp com/mapswithme/maps/LightFramework.cpp com/mapswithme/maps/LocationState.cpp @@ -57,8 +56,9 @@ set( com/mapswithme/maps/MapFragment.cpp com/mapswithme/maps/MapManager.cpp com/mapswithme/maps/MwmApplication.cpp - com/mapswithme/maps/analytics/ExternalLibrariesMediator.cpp + com/mapswithme/maps/metrics/UserActionsLogger.cpp com/mapswithme/maps/PrivateVariables.cpp + com/mapswithme/maps/routing/RoutingOptions.cpp com/mapswithme/maps/SearchEngine.cpp com/mapswithme/maps/SearchRecents.cpp com/mapswithme/maps/settings/UnitLocale.cpp diff --git a/android/jni/com/mapswithme/maps/routing/RoutingOptions.cpp b/android/jni/com/mapswithme/maps/routing/RoutingOptions.cpp index 0dbc565a63..9133c8d580 100644 --- a/android/jni/com/mapswithme/maps/routing/RoutingOptions.cpp +++ b/android/jni/com/mapswithme/maps/routing/RoutingOptions.cpp @@ -1,41 +1,45 @@ #include -#include #include +#include #include "routing/routing_options.hpp" -unsigned int makeValue(jint option) { return 1u << static_cast(option); } +routing::RoutingOptions::Road makeValue(jint option) +{ + uint8_t const road = static_cast(1u << static_cast(option)); + CHECK_LESS(road, static_cast(routing::RoutingOptions::Road::Max), ()); + return static_cast(road); +} extern "C" { - JNIEXPORT jboolean JNICALL Java_com_mapswithme_maps_routing_RoutingOptions_nativeHasOption( - JNIEnv * env, jclass clazz, jint option) - { - CHECK(g_framework, ("Framework isn't created yet!")); - routing::RoutingOptions routingOptions = routing::RoutingOptions::LoadCarOptionsFromSettings(); - routing::RoutingOptions::Road road = - static_cast(makeValue(option)); - return static_cast(routingOptions.Has(road)); - } - JNIEXPORT void JNICALL Java_com_mapswithme_maps_routing_RoutingOptions_nativeAddOption( - JNIEnv * env, jclass clazz, jint option) - { +JNIEXPORT jboolean JNICALL +Java_com_mapswithme_maps_routing_RoutingOptions_nativeHasOption(JNIEnv * env, jclass clazz, jint option) +{ CHECK(g_framework, ("Framework isn't created yet!")); routing::RoutingOptions routingOptions = routing::RoutingOptions::LoadCarOptionsFromSettings(); - routing::RoutingOptions::Road road = - static_cast(makeValue(option)); + routing::RoutingOptions::Road road = makeValue(option); + return static_cast(routingOptions.Has(road)); +} + +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_routing_RoutingOptions_nativeAddOption(JNIEnv * env, jclass clazz, jint option) +{ + CHECK(g_framework, ("Framework isn't created yet!")); + routing::RoutingOptions routingOptions = routing::RoutingOptions::LoadCarOptionsFromSettings(); + routing::RoutingOptions::Road road = makeValue(option); routingOptions.Add(road); routing::RoutingOptions::SaveCarOptionsToSettings(routingOptions); - } +} - JNIEXPORT void JNICALL Java_com_mapswithme_maps_routing_RoutingOptions_nativeRemoveOption( - JNIEnv * env, jclass clazz, jint option) - { + +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_routing_RoutingOptions_nativeRemoveOption(JNIEnv * env, jclass clazz, jint option) +{ CHECK(g_framework, ("Framework isn't created yet!")); routing::RoutingOptions routingOptions = routing::RoutingOptions::LoadCarOptionsFromSettings(); - routing::RoutingOptions::Road road = - static_cast(makeValue(option)); + routing::RoutingOptions::Road road = makeValue(option); routingOptions.Remove(road); routing::RoutingOptions::SaveCarOptionsToSettings(routingOptions); - } +} } diff --git a/android/res/menu/menu_tags_done.xml b/android/res/menu/menu_tags_done.xml deleted file mode 100644 index e43d9e1059..0000000000 --- a/android/res/menu/menu_tags_done.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index 31477c61ef..543b9f57c5 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -178,8 +178,8 @@ public class MwmActivity extends BaseMwmFragmentActivity private static final int REQ_CODE_SHOW_SIMILAR_HOTELS = 3; private static final int REQ_CODE_ERROR_CALCULATE_ROUTE = 4; private static final int REQ_CODE_ERROR_CALCULATE_ROUTE_FIRST_TIME = 5; - private static final String ERROR_CALCULATE_ROUTE = "error_calculate_route"; - private static final String ERROR_CALCULATE_ROUTE_FIRST_TIME = "`error_calculate_route_first_time"; + private static final String ERROR_CALCULATE_ROUTE_TAG = "error_calculate_route"; + private static final String ERROR_CALCULATE_ROUTE_FIRST_TIME_TAG = "`error_calculate_route_first_time"; // Map tasks that we run AFTER rendering initialized private final Stack mTasks = new Stack<>(); @@ -2708,7 +2708,7 @@ public class MwmActivity extends BaseMwmFragmentActivity .setReqCode(REQ_CODE_ERROR_CALCULATE_ROUTE) .setFragManagerStrategyType(com.mapswithme.maps.dialog.AlertDialog.FragManagerStrategyType.ACTIVITY_FRAGMENT_MANAGER) .build(); - dialog.show(getSupportFragmentManager(), ERROR_CALCULATE_ROUTE); + dialog.show(this, ERROR_CALCULATE_ROUTE_TAG); } public void showUnableCalculateRouteFirstTimeDialog() @@ -2721,6 +2721,6 @@ public class MwmActivity extends BaseMwmFragmentActivity .setReqCode(REQ_CODE_ERROR_CALCULATE_ROUTE_FIRST_TIME) .setFragManagerStrategyType(com.mapswithme.maps.dialog.AlertDialog.FragManagerStrategyType.ACTIVITY_FRAGMENT_MANAGER) .build(); - dialog.show(getSupportFragmentManager(), ERROR_CALCULATE_ROUTE_FIRST_TIME); + dialog.show(this, ERROR_CALCULATE_ROUTE_FIRST_TIME_TAG); } } diff --git a/android/src/com/mapswithme/maps/dialog/AlertDialog.java b/android/src/com/mapswithme/maps/dialog/AlertDialog.java index 14ef41d0b7..66b44a753d 100644 --- a/android/src/com/mapswithme/maps/dialog/AlertDialog.java +++ b/android/src/com/mapswithme/maps/dialog/AlertDialog.java @@ -10,6 +10,7 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatDialog; @@ -53,6 +54,20 @@ public class AlertDialog extends BaseMwmDialogFragment if (fm.findFragmentByTag(tag) != null) return; + showInternal(tag, fm); + } + + public void show(@NonNull FragmentActivity activity, @NonNull String tag) + { + FragmentManager fm = mFragmentManagerStrategy.resolve(activity); + if (fm.findFragmentByTag(tag) != null) + return; + + showInternal(tag, fm); + } + + private void showInternal(@NonNull String tag, @NonNull FragmentManager fm) + { FragmentTransaction transaction = fm.beginTransaction(); transaction.add(this, tag); transaction.commitAllowingStateLoss(); @@ -321,6 +336,13 @@ public class AlertDialog extends BaseMwmDialogFragment { return baseFragment.getChildFragmentManager(); } + + @NonNull + @Override + public FragmentManager resolve(@NonNull FragmentActivity activity) + { + throw new UnsupportedOperationException("Not supported here!"); + } } private static class ActivityFragmentManagerStrategy implements ResolveFragmentManagerStrategy @@ -329,7 +351,14 @@ public class AlertDialog extends BaseMwmDialogFragment @Override public FragmentManager resolve(@NonNull Fragment baseFragment) { - return baseFragment.getActivity().getSupportFragmentManager(); + return baseFragment.requireActivity().getSupportFragmentManager(); + } + + @NonNull + @Override + public FragmentManager resolve(@NonNull FragmentActivity activity) + { + return activity.getSupportFragmentManager(); } } diff --git a/android/src/com/mapswithme/maps/dialog/ResolveFragmentManagerStrategy.java b/android/src/com/mapswithme/maps/dialog/ResolveFragmentManagerStrategy.java index fe321507d3..f5db348bb4 100644 --- a/android/src/com/mapswithme/maps/dialog/ResolveFragmentManagerStrategy.java +++ b/android/src/com/mapswithme/maps/dialog/ResolveFragmentManagerStrategy.java @@ -2,10 +2,14 @@ package com.mapswithme.maps.dialog; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; interface ResolveFragmentManagerStrategy { @NonNull FragmentManager resolve(@NonNull Fragment baseFragment); + + @NonNull + FragmentManager resolve(@NonNull FragmentActivity activity); } diff --git a/android/src/com/mapswithme/maps/settings/DrivingOptionsActivity.java b/android/src/com/mapswithme/maps/settings/DrivingOptionsActivity.java index dc63a0a948..798aba6f55 100644 --- a/android/src/com/mapswithme/maps/settings/DrivingOptionsActivity.java +++ b/android/src/com/mapswithme/maps/settings/DrivingOptionsActivity.java @@ -17,7 +17,7 @@ public class DrivingOptionsActivity extends BaseMwmFragmentActivity return DrivingOptionsFragment.class; } - public static void startOptionMenuActivity(@NonNull FragmentActivity activity) + public static void start(@NonNull FragmentActivity activity) { Intent intent = new Intent(activity, DrivingOptionsActivity.class) .putExtra(BUNDLE_REQUIRE_OPTIONS_MENU, true); diff --git a/android/src/com/mapswithme/maps/settings/DrivingOptionsFragment.java b/android/src/com/mapswithme/maps/settings/DrivingOptionsFragment.java index 62ca00339e..e78a97d1ba 100644 --- a/android/src/com/mapswithme/maps/settings/DrivingOptionsFragment.java +++ b/android/src/com/mapswithme/maps/settings/DrivingOptionsFragment.java @@ -41,7 +41,7 @@ public class DrivingOptionsFragment extends BaseMwmToolbarFragment @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.menu_tags_done, menu); + inflater.inflate(R.menu.menu_done, menu); } @Override diff --git a/android/src/com/mapswithme/maps/ugc/routes/UgcRouteTagsFragment.java b/android/src/com/mapswithme/maps/ugc/routes/UgcRouteTagsFragment.java index 34c650ba4a..86f44bf2e7 100644 --- a/android/src/com/mapswithme/maps/ugc/routes/UgcRouteTagsFragment.java +++ b/android/src/com/mapswithme/maps/ugc/routes/UgcRouteTagsFragment.java @@ -123,7 +123,7 @@ public class UgcRouteTagsFragment extends BaseMwmFragment implements BookmarkMan @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.menu_tags_done, menu); + inflater.inflate(R.menu.menu_done, menu); } @Override