From a0d563db02a60ec6cac39acd1c41366da3485455 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Date: Sat, 10 Jan 2026 14:44:55 +0100 Subject: [PATCH] [android] Add switch to enable 3D mode from layers bottomsheet Signed-off-by: Jean-Baptiste --- .../maplayer/ToggleMapLayerFragment.java | 21 +++++++++++++++++++ .../res/layout/fragment_toggle_map_layer.xml | 14 ++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/app/organicmaps/maplayer/ToggleMapLayerFragment.java b/android/app/src/main/java/app/organicmaps/maplayer/ToggleMapLayerFragment.java index d54fb634b..fa727789d 100644 --- a/android/app/src/main/java/app/organicmaps/maplayer/ToggleMapLayerFragment.java +++ b/android/app/src/main/java/app/organicmaps/maplayer/ToggleMapLayerFragment.java @@ -1,24 +1,31 @@ package app.organicmaps.maplayer; import android.content.Context; +import android.content.SharedPreferences; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.CompoundButton; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; +import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import app.organicmaps.MwmApplication; import app.organicmaps.R; +import app.organicmaps.sdk.Framework; import app.organicmaps.sdk.maplayer.Mode; +import app.organicmaps.sdk.util.PowerManagment; import app.organicmaps.sdk.util.SharedPropertiesUtils; import app.organicmaps.util.ThemeSwitcher; import app.organicmaps.util.Utils; import app.organicmaps.util.bottomsheet.MenuBottomSheetFragment; import app.organicmaps.widget.recycler.SpanningLinearLayoutManager; import com.google.android.material.button.MaterialButton; +import com.google.android.material.materialswitch.MaterialSwitch; import java.util.ArrayList; import java.util.List; @@ -36,6 +43,20 @@ public class ToggleMapLayerFragment extends Fragment { View mRoot = inflater.inflate(R.layout.fragment_toggle_map_layer, container, false); + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()); + final int powerManagementValue = sharedPreferences.getInt(ContextCompat.getString(requireContext(), R.string.power_management), PowerManagment.HIGH); + final boolean _3DEnabled = sharedPreferences.getBoolean(ContextCompat.getString(requireContext(), R.string.pref_3d_buildings),true); + MaterialSwitch m3DSwitch = mRoot.findViewById(R.id._3d_button); + m3DSwitch.setChecked(_3DEnabled); + if (powerManagementValue != PowerManagment.HIGH) + { + m3DSwitch.setEnabled(true); + m3DSwitch.setOnCheckedChangeListener((CompoundButton buttonView, boolean isChecked) -> Framework.nativeSet3dMode(true, isChecked)); + } + else + { + m3DSwitch.setEnabled(false); + } mMapButtonsController = (MapButtonsController) requireActivity().getSupportFragmentManager().findFragmentById(R.id.map_buttons); MaterialButton mCloseButton = mRoot.findViewById(R.id.close_button); diff --git a/android/app/src/main/res/layout/fragment_toggle_map_layer.xml b/android/app/src/main/res/layout/fragment_toggle_map_layer.xml index 13a83e1ac..a791a24dc 100644 --- a/android/app/src/main/res/layout/fragment_toggle_map_layer.xml +++ b/android/app/src/main/res/layout/fragment_toggle_map_layer.xml @@ -42,8 +42,20 @@ android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="@dimen/margin_base" android:minHeight="@dimen/toggle_map_layer_frame_height" android:paddingStart="@dimen/margin_base" android:paddingEnd="@dimen/margin_base" /> + + + \ No newline at end of file