Disable highlight items when show direction disabled

This commit is contained in:
PavelRatushny 2017-09-14 19:00:02 +03:00
parent 618f6f59e6
commit 8243477eea
4 changed files with 25 additions and 6 deletions

View file

@ -123,6 +123,12 @@ public class MapMarkersActiveFragment extends Fragment implements OsmAndCompassL
return null; return null;
} }
void setShowDirectionEnabled(boolean showDirectionEnabled) {
if (adapter != null) {
adapter.setShowDirectionEnabled(showDirectionEnabled);
}
}
void updateAdapter() { void updateAdapter() {
if (adapter != null) { if (adapter != null) {
adapter.notifyDataSetChanged(); adapter.notifyDataSetChanged();

View file

@ -215,8 +215,10 @@ public class MapMarkersDialogFragment extends android.support.v4.app.DialogFragm
final MapActivity mapActivity = getMapActivity(); final MapActivity mapActivity = getMapActivity();
@Override @Override
public void onMapMarkersModeChanged() { public void onMapMarkersModeChanged(boolean showDirectionEnabled) {
mapActivity.getMapLayers().getMapWidgetRegistry().updateMapMarkersMode(mapActivity); mapActivity.getMapLayers().getMapWidgetRegistry().updateMapMarkersMode(mapActivity);
activeFragment.setShowDirectionEnabled(showDirectionEnabled);
activeFragment.updateAdapter();
} }
}; };
} }

View file

@ -206,30 +206,34 @@ public class ShowDirectionBottomSheetDialogFragment extends BottomSheetDialogFra
public void onClick(View view) { public void onClick(View view) {
OsmandSettings.MapMarkersMode previousMode = getMyApplication().getSettings().MAP_MARKERS_MODE.get(); OsmandSettings.MapMarkersMode previousMode = getMyApplication().getSettings().MAP_MARKERS_MODE.get();
highlightSelectedItem(previousMode, false); highlightSelectedItem(previousMode, false);
boolean showDirectionEnabled = false;
switch (view.getId()) { switch (view.getId()) {
case R.id.top_bar_image: case R.id.top_bar_image:
case R.id.top_bar_row: case R.id.top_bar_row:
getMyApplication().getSettings().MAP_MARKERS_MODE.set(OsmandSettings.MapMarkersMode.TOOLBAR); getMyApplication().getSettings().MAP_MARKERS_MODE.set(OsmandSettings.MapMarkersMode.TOOLBAR);
highlightSelectedItem(OsmandSettings.MapMarkersMode.TOOLBAR, true); highlightSelectedItem(OsmandSettings.MapMarkersMode.TOOLBAR, true);
showDirectionEnabled = true;
break; break;
case R.id.widget_image: case R.id.widget_image:
case R.id.widget_row: case R.id.widget_row:
getMyApplication().getSettings().MAP_MARKERS_MODE.set(OsmandSettings.MapMarkersMode.WIDGETS); getMyApplication().getSettings().MAP_MARKERS_MODE.set(OsmandSettings.MapMarkersMode.WIDGETS);
highlightSelectedItem(OsmandSettings.MapMarkersMode.WIDGETS, true); highlightSelectedItem(OsmandSettings.MapMarkersMode.WIDGETS, true);
showDirectionEnabled = true;
break; break;
case R.id.none_row: case R.id.none_row:
getMyApplication().getSettings().MAP_MARKERS_MODE.set(OsmandSettings.MapMarkersMode.NONE); getMyApplication().getSettings().MAP_MARKERS_MODE.set(OsmandSettings.MapMarkersMode.NONE);
highlightSelectedItem(OsmandSettings.MapMarkersMode.NONE, true); highlightSelectedItem(OsmandSettings.MapMarkersMode.NONE, true);
showDirectionEnabled = false;
break; break;
} }
if (listener != null) { if (listener != null) {
listener.onMapMarkersModeChanged(); listener.onMapMarkersModeChanged(showDirectionEnabled);
} }
dismiss(); dismiss();
} }
}; };
interface ShowDirectionFragmentListener { interface ShowDirectionFragmentListener {
void onMapMarkersModeChanged(); void onMapMarkersModeChanged(boolean showDirectionEnabled);
} }
} }

View file

@ -14,6 +14,7 @@ import android.widget.TextView;
import net.osmand.data.LatLon; import net.osmand.data.LatLon;
import net.osmand.plus.IconsCache; import net.osmand.plus.IconsCache;
import net.osmand.plus.MapMarkersHelper.MapMarker; import net.osmand.plus.MapMarkersHelper.MapMarker;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.dashboard.DashLocationFragment; import net.osmand.plus.dashboard.DashLocationFragment;
@ -31,6 +32,7 @@ public class MapMarkersActiveAdapter extends RecyclerView.Adapter<MapMarkerItemV
private List<MapMarker> markers; private List<MapMarker> markers;
private MapMarkersActiveAdapterListener listener; private MapMarkersActiveAdapterListener listener;
private Snackbar snackbar; private Snackbar snackbar;
private boolean showDirectionEnabled;
private LatLon location; private LatLon location;
private Float heading; private Float heading;
@ -42,6 +44,11 @@ public class MapMarkersActiveAdapter extends RecyclerView.Adapter<MapMarkerItemV
this.mapActivity = mapActivity; this.mapActivity = mapActivity;
markers = mapActivity.getMyApplication().getMapMarkersHelper().getMapMarkers(); markers = mapActivity.getMyApplication().getMapMarkersHelper().getMapMarkers();
night = !mapActivity.getMyApplication().getSettings().isLightContent(); night = !mapActivity.getMyApplication().getSettings().isLightContent();
showDirectionEnabled = mapActivity.getMyApplication().getSettings().MAP_MARKERS_MODE.get() != OsmandSettings.MapMarkersMode.NONE;
}
public void setShowDirectionEnabled(boolean showDirectionEnabled) {
this.showDirectionEnabled = showDirectionEnabled;
} }
public void setAdapterListener(MapMarkersActiveAdapterListener listener) { public void setAdapterListener(MapMarkersActiveAdapterListener listener) {
@ -85,7 +92,7 @@ public class MapMarkersActiveAdapter extends RecyclerView.Adapter<MapMarkerItemV
int drawableResToUpdate; int drawableResToUpdate;
int markerColor = MapMarker.getColorId(marker.colorIndex); int markerColor = MapMarker.getColorId(marker.colorIndex);
LatLon markerLatLon = new LatLon(marker.getLatitude(), marker.getLongitude()); LatLon markerLatLon = new LatLon(marker.getLatitude(), marker.getLongitude());
if (pos < 2) { if (showDirectionEnabled && pos < 2) {
holder.setIconDirectionVisibility(View.GONE); holder.setIconDirectionVisibility(View.GONE);
holder.icon.setImageDrawable(iconsCache.getIcon(R.drawable.ic_arrow_marker_diretion, markerColor)); holder.icon.setImageDrawable(iconsCache.getIcon(R.drawable.ic_arrow_marker_diretion, markerColor));
@ -155,7 +162,7 @@ public class MapMarkersActiveAdapter extends RecyclerView.Adapter<MapMarkerItemV
mapActivity.getMyApplication().getMapMarkersHelper().moveMapMarkerToHistory(marker); mapActivity.getMyApplication().getMapMarkersHelper().moveMapMarkerToHistory(marker);
notifyItemRemoved(position); notifyItemRemoved(position);
if (position < 2 && getItemCount() > 1) { if (showDirectionEnabled && position < 2 && getItemCount() > 1) {
notifyItemChanged(1); notifyItemChanged(1);
} else if (position == getItemCount()) { } else if (position == getItemCount()) {
notifyItemChanged(position - 1); notifyItemChanged(position - 1);
@ -167,7 +174,7 @@ public class MapMarkersActiveAdapter extends RecyclerView.Adapter<MapMarkerItemV
public void onClick(View view) { public void onClick(View view) {
mapActivity.getMyApplication().getMapMarkersHelper().restoreMarkerFromHistory(marker, position); mapActivity.getMyApplication().getMapMarkersHelper().restoreMarkerFromHistory(marker, position);
notifyItemInserted(position); notifyItemInserted(position);
if (position < 2 && getItemCount() > 2) { if (showDirectionEnabled && position < 2 && getItemCount() > 2) {
notifyItemChanged(2); notifyItemChanged(2);
} else if (position == getItemCount() - 1) { } else if (position == getItemCount() - 1) {
notifyItemChanged(position - 1); notifyItemChanged(position - 1);