From 58bab61890e8b8e919126e02c8499ae91dcf8a16 Mon Sep 17 00:00:00 2001 From: Harry Bond Date: Mon, 23 Jun 2025 02:03:24 +0100 Subject: [PATCH] [android] Hide currently active left button action from hamburger menu fixes #549 And add "About CoMaps" option in burger menu when using custom buttons Signed-off-by: Harry Bond --- CONTRIBUTORS | 1 + .../java/app/organicmaps/MwmActivity.java | 30 ++++++++++++------- .../leftbutton/LeftButtonsHolder.java | 10 +++++-- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index adfce91a1..193d6de9f 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -8,6 +8,7 @@ CoMaps contributors: -------------------------------------------------------------------------------- clover sage +Harry Bond -------------------------------------------------------------------------------- Organic Maps (formerly OMaps) contributors: diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java index 559a712bf..367fa84d4 100644 --- a/android/app/src/main/java/app/organicmaps/MwmActivity.java +++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java @@ -2584,20 +2584,28 @@ public class MwmActivity extends BaseMwmFragmentActivity { if (id.equals(MAIN_MENU_ID)) { + final String activeLeftButton = buttonsHolder.getActiveButtonCode(); ArrayList items = new ArrayList<>(); - items.add(new MenuBottomSheetItem(R.string.placepage_add_place_button, R.drawable.ic_plus, this::onAddPlaceOptionSelected)); - items.add(new MenuBottomSheetItem( - R.string.download_maps, - R.drawable.ic_download, - getDownloadMapsCounter(), - this::onDownloadMapsOptionSelected - )); - mDonatesUrl = Config.getDonateUrl(getApplicationContext()); - if (!TextUtils.isEmpty(mDonatesUrl)) + + if (!BUTTON_ADD_PLACE_CODE.equals(activeLeftButton)) + items.add(new MenuBottomSheetItem(R.string.placepage_add_place_button, R.drawable.ic_plus, this::onAddPlaceOptionSelected)); + + items.add(new MenuBottomSheetItem(R.string.download_maps, R.drawable.ic_download, getDownloadMapsCounter(), this::onDownloadMapsOptionSelected)); + + if (!Config.getDonateUrl(getApplicationContext()).isEmpty()) items.add(new MenuBottomSheetItem(R.string.donate, R.drawable.ic_donate, this::onDonateOptionSelected)); - items.add(new MenuBottomSheetItem(R.string.settings, R.drawable.ic_settings, this::onSettingsOptionSelected)); - items.add(new MenuBottomSheetItem(R.string.start_track_recording, R.drawable.ic_track_recording_off, -1, this::onTrackRecordingOptionSelected)); + + if (!BUTTON_SETTINGS_CODE.equals(activeLeftButton)) + items.add(new MenuBottomSheetItem(R.string.settings, R.drawable.ic_settings, this::onSettingsOptionSelected)); + + if (!BUTTON_RECORD_TRACK_CODE.equals(activeLeftButton)) + items.add(new MenuBottomSheetItem(R.string.start_track_recording, R.drawable.ic_track_recording_off, -1, this::onTrackRecordingOptionSelected)); + items.add(new MenuBottomSheetItem(R.string.share_my_location, R.drawable.ic_share, this::onShareLocationOptionSelected)); + + if (!BUTTON_HELP_CODE.equals(activeLeftButton)) + items.add(new MenuBottomSheetItem(R.string.about_menu_title, R.drawable.ic_question_mark, this::showHelp)); + return items; } return null; diff --git a/android/app/src/main/java/app/organicmaps/leftbutton/LeftButtonsHolder.java b/android/app/src/main/java/app/organicmaps/leftbutton/LeftButtonsHolder.java index 95029c4e1..67ac90de4 100644 --- a/android/app/src/main/java/app/organicmaps/leftbutton/LeftButtonsHolder.java +++ b/android/app/src/main/java/app/organicmaps/leftbutton/LeftButtonsHolder.java @@ -43,15 +43,21 @@ public class LeftButtonsHolder } @Nullable - public LeftButton getActiveButton() + public String getActiveButtonCode() { String activeButtonCode = prefs.getString(leftButtonPreferenceKey, DEFAULT_BUTTON_CODE); if (!TextUtils.isEmpty(activeButtonCode)) - return availableButtons.get(activeButtonCode); + return activeButtonCode; else return null; } + @Nullable + public LeftButton getActiveButton() + { + return availableButtons.get(getActiveButtonCode()); + } + public Collection getAllButtons() { return availableButtons.values();