Skip to content

Commit

Permalink
Fix #19819
Browse files Browse the repository at this point in the history
  • Loading branch information
Chumva committed May 15, 2024
1 parent b1718ea commit bbb00be
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 6 deletions.
14 changes: 13 additions & 1 deletion OsmAnd/src/net/osmand/plus/quickaction/MapButtonsHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,8 @@ public List<QuickAction> collectQuickActionsByType(@NonNull QuickActionType type

public boolean isActionNameUnique(@NonNull List<QuickAction> actions, @NonNull QuickAction quickAction) {
for (QuickAction action : actions) {
if (quickAction.id != action.id && Algorithms.stringsEqual(quickAction.getName(app), action.getName(app))) {
if (quickAction.getId() != action.getId()
&& Algorithms.stringsEqual(quickAction.getName(app), action.getName(app))) {
return false;
}
}
Expand Down Expand Up @@ -398,6 +399,17 @@ public QuickActionButtonState getButtonStateById(@NonNull String id) {
return null;
}

@Nullable
public QuickActionButtonState getButtonStateByAction(@NonNull QuickAction action) {
long id = action.getId();
for (QuickActionButtonState buttonState : mapButtonStates) {
if (buttonState.getQuickAction(id) != null) {
return buttonState;
}
}
return null;
}

@NonNull
public QuickActionButtonState createNewButtonState() {
String id = DEFAULT_BUTTON_ID + "_" + System.currentTimeMillis();
Expand Down
17 changes: 12 additions & 5 deletions OsmAnd/src/net/osmand/plus/quickaction/SwitchableAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,11 @@
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.quickaction.QuickActionListFragment.OnStartDragListener;
import net.osmand.plus.utils.ColorUtilities;
import net.osmand.plus.views.MapLayers;
import net.osmand.plus.views.controls.ReorderItemTouchHelperCallback;
import net.osmand.plus.views.controls.ReorderItemTouchHelperCallback.OnItemMoveCallback;
import net.osmand.plus.views.controls.maphudbuttons.QuickActionButton;
import net.osmand.plus.views.layers.MapQuickActionLayer;
import net.osmand.plus.views.mapwidgets.configure.buttons.QuickActionButtonState;
import net.osmand.util.Algorithms;

import java.util.ArrayList;
Expand Down Expand Up @@ -160,11 +161,17 @@ protected Adapter getAdapter() {
public abstract String getNextSelectedItem(OsmandApplication app);

protected void showChooseDialog(@NonNull MapActivity mapActivity) {
MapLayers mapLayers = mapActivity.getMapLayers();
QuickActionButton selectedButton = mapLayers.getMapQuickActionLayer().getSelectedButton();
if (selectedButton != null) {
OsmandApplication app = mapActivity.getMyApplication();
MapQuickActionLayer layer = mapActivity.getMapLayers().getMapQuickActionLayer();

QuickActionButton button = layer.getSelectedButton();
QuickActionButtonState buttonState = button != null ? button.getButtonState() : null;
if (buttonState == null) {
buttonState = app.getMapButtonsHelper().getButtonStateByAction(this);
}
if (buttonState != null) {
FragmentManager manager = mapActivity.getSupportFragmentManager();
SelectMapViewQuickActionsBottomSheet.showInstance(manager, selectedButton.getButtonState(), id);
SelectMapViewQuickActionsBottomSheet.showInstance(manager, buttonState, id);
}
}

Expand Down

0 comments on commit bbb00be

Please sign in to comment.