diff --git a/android/jni/com/mapswithme/maps/guides/GuidesManager.cpp b/android/jni/com/mapswithme/maps/guides/GuidesManager.cpp
index 12283145de..0da140c9cf 100644
--- a/android/jni/com/mapswithme/maps/guides/GuidesManager.cpp
+++ b/android/jni/com/mapswithme/maps/guides/GuidesManager.cpp
@@ -19,7 +19,7 @@ static void GuidesStateChanged(GuidesManager::GuidesState state,
JNIEXPORT void JNICALL
-Java_com_mapswithme_maps_maplayer_Guides_GuidesManager_nativeAddListener(JNIEnv *env, jclass clazz, jobject listener)
+Java_com_mapswithme_maps_maplayer_guides_GuidesManager_nativeAddListener(JNIEnv *env, jclass clazz, jobject listener)
{
CHECK(g_framework, ("Framework isn't created yet!"));
g_framework->SetGuidesListener(std::bind(&GuidesStateChanged,
@@ -28,7 +28,7 @@ Java_com_mapswithme_maps_maplayer_Guides_GuidesManager_nativeAddListener(JNIEnv
}
JNIEXPORT void JNICALL
-Java_com_mapswithme_maps_maplayer_Guides_GuidesManager_nativeRemoveListener(JNIEnv * env, jclass clazz)
+Java_com_mapswithme_maps_maplayer_guides_GuidesManager_nativeRemoveListener(JNIEnv * env, jclass clazz)
{
CHECK(g_framework, ("Framework isn't created yet!"));
g_framework->SetGuidesListener(nullptr);
diff --git a/android/res/layout-land/map_navigation_buttons.xml b/android/res/layout-land/map_navigation_buttons.xml
index 7fedd57991..eb666c6533 100644
--- a/android/res/layout-land/map_navigation_buttons.xml
+++ b/android/res/layout-land/map_navigation_buttons.xml
@@ -33,6 +33,15 @@
android:background="?nav_bg_isolines"
android:visibility="invisible"/>
+
+
+
+
+
+
>> createItems(
@NonNull Context context, @NonNull OnItemClickListener subwayListener,
@NonNull OnItemClickListener trafficListener,
- @NonNull OnItemClickListener isoLinesListener)
+ @NonNull OnItemClickListener isoLinesListener,
+ @NonNull OnItemClickListener guidesListener)
{
Pair> subway
= new Pair<>(BottomSheetItem.Subway.makeInstance(context), subwayListener);
@@ -26,6 +27,9 @@ public class LayersUtils
Pair> isoLines
= new Pair<>(BottomSheetItem.Isolines.makeInstance(context), isoLinesListener);
+ Pair> guides
+ = new Pair<>(BottomSheetItem.Guides.makeInstance(context), guidesListener);
+
return Arrays.asList(traffic, isoLines, subway);
}
}
diff --git a/android/src/com/mapswithme/maps/maplayer/MapLayerCompositeController.java b/android/src/com/mapswithme/maps/maplayer/MapLayerCompositeController.java
index dcae5047fc..cf719dffc5 100644
--- a/android/src/com/mapswithme/maps/maplayer/MapLayerCompositeController.java
+++ b/android/src/com/mapswithme/maps/maplayer/MapLayerCompositeController.java
@@ -29,11 +29,12 @@ public class MapLayerCompositeController implements MapLayerController
private final TutorialClickListener mOpenBottomDialogClickListener;
public MapLayerCompositeController(@NonNull TrafficButton traffic, @NonNull View subway,
- @NonNull View isoLines, @NonNull AppCompatActivity activity)
+ @NonNull View isoLines, @NonNull View guides,
+ @NonNull AppCompatActivity activity)
{
mOpenBottomDialogClickListener = new OpenBottomDialogClickListener(activity);
mActivity = activity;
- mLayers = createLayers(traffic, subway, isoLines, activity, mOpenBottomDialogClickListener);
+ mLayers = createLayers(traffic, subway, isoLines, guides, activity, mOpenBottomDialogClickListener);
mCurrentLayer = getCurrentLayer();
toggleMode(mCurrentLayer.getMode());
}
@@ -42,6 +43,7 @@ public class MapLayerCompositeController implements MapLayerController
private static List createLayers(@NonNull TrafficButton traffic,
@NonNull View subway,
@NonNull View isoLinesView,
+ @NonNull View guides,
@NonNull AppCompatActivity activity,
@NonNull View.OnClickListener dialogClickListener)
{
@@ -54,12 +56,17 @@ public class MapLayerCompositeController implements MapLayerController
isoLinesView.setOnClickListener(dialogClickListener);
DefaultMapLayerController isoLinesController = new DefaultMapLayerController(isoLinesView);
+ guides.setOnClickListener(dialogClickListener);
+ DefaultMapLayerController guidesController = new DefaultMapLayerController(guides);
+
ControllerAndMode subwayEntry = new ControllerAndMode(Mode.SUBWAY, Tutorial.SUBWAY,
subwayMapLayerController);
ControllerAndMode trafficEntry = new ControllerAndMode(Mode.TRAFFIC, null,
trafficButtonController);
ControllerAndMode isoLineEntry = new ControllerAndMode(Mode.ISOLINES, Tutorial.ISOLINES,
isoLinesController);
+ ControllerAndMode guidesEntry = new ControllerAndMode(Mode.GUIDES, Tutorial.ISOLINES,
+ guidesController);
List entries = new ArrayList<>();
entries.add(subwayEntry);
diff --git a/android/src/com/mapswithme/maps/maplayer/Mode.java b/android/src/com/mapswithme/maps/maplayer/Mode.java
index 9ef1adb971..5ca6054c67 100644
--- a/android/src/com/mapswithme/maps/maplayer/Mode.java
+++ b/android/src/com/mapswithme/maps/maplayer/Mode.java
@@ -3,6 +3,7 @@ package com.mapswithme.maps.maplayer;
import android.content.Context;
import androidx.annotation.NonNull;
+import com.mapswithme.maps.maplayer.guides.GuidesManager;
import com.mapswithme.maps.maplayer.isolines.IsolinesManager;
import com.mapswithme.maps.maplayer.subway.SubwayManager;
import com.mapswithme.maps.maplayer.traffic.TrafficManager;
@@ -31,6 +32,7 @@ public enum Mode
TrafficManager.INSTANCE.toggle();
SubwayManager.from(context).setEnabled(false);
IsolinesManager.from(context).setEnabled(false);
+ GuidesManager.from(context).setEnabled(false);
}
},
SUBWAY
@@ -53,6 +55,7 @@ public enum Mode
SubwayManager.from(context).toggle();
TrafficManager.INSTANCE.setEnabled(false);
IsolinesManager.from(context).setEnabled(false);
+ GuidesManager.from(context).setEnabled(false);
}
},
@@ -76,9 +79,34 @@ public enum Mode
IsolinesManager.from(context).toggle();
TrafficManager.INSTANCE.setEnabled(false);
SubwayManager.from(context).setEnabled(false);
+ GuidesManager.from(context).setEnabled(false);
+ }
+ },
+ GUIDES
+ {
+ @Override
+ public boolean isEnabled(@NonNull Context context)
+ {
+ return GuidesManager.from(context).isEnabled();
+ }
+
+ @Override
+ public void setEnabled(@NonNull Context context, boolean isEnabled)
+ {
+ GuidesManager.from(context).setEnabled(isEnabled);
+ }
+
+ @Override
+ public void toggle(@NonNull Context context)
+ {
+ GuidesManager.from(context).toggle();
+ IsolinesManager.from(context).setEnabled(false);
+ TrafficManager.INSTANCE.setEnabled(false);
+ SubwayManager.from(context).setEnabled(false);
}
};
+
public abstract boolean isEnabled(@NonNull Context context);
public abstract void setEnabled(@NonNull Context context, boolean isEnabled);
diff --git a/android/src/com/mapswithme/maps/maplayer/OnGuidesLayerToggleListener.java b/android/src/com/mapswithme/maps/maplayer/OnGuidesLayerToggleListener.java
new file mode 100644
index 0000000000..030753286d
--- /dev/null
+++ b/android/src/com/mapswithme/maps/maplayer/OnGuidesLayerToggleListener.java
@@ -0,0 +1,6 @@
+package com.mapswithme.maps.maplayer;
+
+public interface OnGuidesLayerToggleListener
+{
+ void onGuidesLayerSelected();
+}
diff --git a/android/src/com/mapswithme/maps/maplayer/ToggleMapLayerDialog.java b/android/src/com/mapswithme/maps/maplayer/ToggleMapLayerDialog.java
index cb58510603..58b91ec1c1 100644
--- a/android/src/com/mapswithme/maps/maplayer/ToggleMapLayerDialog.java
+++ b/android/src/com/mapswithme/maps/maplayer/ToggleMapLayerDialog.java
@@ -69,9 +69,11 @@ public class ToggleMapLayerDialog extends DialogFragment
false);
recycler.setLayoutManager(layoutManager);
mAdapter = new LayersAdapter();
- mAdapter.setLayerModes(LayersUtils.createItems(requireContext(), new SubwayItemClickListener(),
+ mAdapter.setLayerModes(LayersUtils.createItems(requireContext(),
+ new SubwayItemClickListener(),
new TrafficItemClickListener(),
- new IsolinesItemClickListener()));
+ new IsolinesItemClickListener(),
+ new GuidesItemClickListener()));
recycler.setAdapter(mAdapter);
}
@@ -133,4 +135,19 @@ public class ToggleMapLayerDialog extends DialogFragment
listener.onIsolinesLayerSelected();
}
}
+
+ private class GuidesItemClickListener extends DefaultClickListener
+ {
+ private GuidesItemClickListener()
+ {
+ super(mAdapter);
+ }
+
+ @Override
+ public void onItemClickInternal(@NonNull View v, @NonNull BottomSheetItem item)
+ {
+ OnGuidesLayerToggleListener listener = (OnGuidesLayerToggleListener) requireActivity();
+ listener.onGuidesLayerSelected();
+ }
+ }
}
diff --git a/android/src/com/mapswithme/maps/widget/menu/MainMenuOptionListener.java b/android/src/com/mapswithme/maps/widget/menu/MainMenuOptionListener.java
index ad661a5453..766a25af35 100644
--- a/android/src/com/mapswithme/maps/widget/menu/MainMenuOptionListener.java
+++ b/android/src/com/mapswithme/maps/widget/menu/MainMenuOptionListener.java
@@ -11,4 +11,5 @@ public interface MainMenuOptionListener
void onSubwayLayerOptionSelected();
void onTrafficLayerOptionSelected();
void onIsolinesLayerOptionSelected();
+ void onGuidesLayerOptionSelected();
}
diff --git a/android/src/com/mapswithme/maps/widget/menu/MainMenuRenderer.java b/android/src/com/mapswithme/maps/widget/menu/MainMenuRenderer.java
index bf80c2478b..753aeaf015 100644
--- a/android/src/com/mapswithme/maps/widget/menu/MainMenuRenderer.java
+++ b/android/src/com/mapswithme/maps/widget/menu/MainMenuRenderer.java
@@ -98,7 +98,8 @@ public class MainMenuRenderer implements MenuRenderer
mLayersAdapter.setLayerModes(LayersUtils.createItems(layersRecycler.getContext(),
new SubwayItemClickListener(),
new TrafficItemClickListener(),
- new IsolinesItemClickListener()));
+ new IsolinesItemClickListener(),
+ new GuidesItemClickListener()));
layersRecycler.setAdapter(mLayersAdapter);
}
@@ -163,4 +164,18 @@ public class MainMenuRenderer implements MenuRenderer
mListener.onIsolinesLayerOptionSelected();
}
}
+
+ private class GuidesItemClickListener extends DefaultClickListener
+ {
+ GuidesItemClickListener()
+ {
+ super(mLayersAdapter);
+ }
+
+ @Override
+ public void onItemClickInternal(@NonNull View v, @NonNull BottomSheetItem item)
+ {
+ mListener.onGuidesLayerOptionSelected();
+ }
+ }
}