Make markers scrollable
This commit is contained in:
parent
ac6b6bf788
commit
a6c3a87c39
2 changed files with 161 additions and 129 deletions
|
@ -14,6 +14,7 @@ import android.util.Pair;
|
||||||
import android.view.ContextThemeWrapper;
|
import android.view.ContextThemeWrapper;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.View.OnClickListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
@ -25,6 +26,7 @@ import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.FavouritesDbHelper;
|
import net.osmand.plus.FavouritesDbHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.MapMarkersHelper;
|
||||||
|
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.TargetPointsHelper;
|
import net.osmand.plus.TargetPointsHelper;
|
||||||
|
@ -52,9 +54,10 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
public static final String TAG = "AddPointBottomSheetDialog";
|
public static final String TAG = "AddPointBottomSheetDialog";
|
||||||
public static final String POINT_TYPE_KEY = "point_type";
|
public static final String POINT_TYPE_KEY = "point_type";
|
||||||
|
|
||||||
public static final int ADD_FAVOURITE_TO_ROUTE_REQUEST_CODE = 1;
|
public static final int ADD_FAVORITE_TO_ROUTE_REQUEST_CODE = 1;
|
||||||
|
|
||||||
public static final String FAVOURITES = "favourites";
|
public static final String FAVORITES = "favorites";
|
||||||
|
public static final String MARKERS = "markers";
|
||||||
|
|
||||||
private PointType pointType = PointType.START;
|
private PointType pointType = PointType.START;
|
||||||
private DialogListener listener;
|
private DialogListener listener;
|
||||||
|
@ -110,28 +113,28 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
case START:
|
case START:
|
||||||
createMyLocItem();
|
createMyLocItem();
|
||||||
createSelectOnTheMapItem();
|
createSelectOnTheMapItem();
|
||||||
createFavouritesScrollItem();
|
createFavoritesScrollItem();
|
||||||
createMarkersItem();
|
createMarkersScrollItem();
|
||||||
items.add(new DividerHalfItem(getContext()));
|
items.add(new DividerHalfItem(getContext()));
|
||||||
createSwitchStartAndEndItem();
|
createSwitchStartAndEndItem();
|
||||||
break;
|
break;
|
||||||
case TARGET:
|
case TARGET:
|
||||||
createSelectOnTheMapItem();
|
createSelectOnTheMapItem();
|
||||||
createFavouritesScrollItem();
|
createFavoritesScrollItem();
|
||||||
createMarkersItem();
|
createMarkersScrollItem();
|
||||||
items.add(new DividerHalfItem(getContext()));
|
items.add(new DividerHalfItem(getContext()));
|
||||||
createSwitchStartAndEndItem();
|
createSwitchStartAndEndItem();
|
||||||
break;
|
break;
|
||||||
case INTERMEDIATE:
|
case INTERMEDIATE:
|
||||||
createSelectOnTheMapItem();
|
createSelectOnTheMapItem();
|
||||||
createFavouritesScrollItem();
|
createFavoritesScrollItem();
|
||||||
createMarkersItem();
|
createMarkersScrollItem();
|
||||||
break;
|
break;
|
||||||
case HOME:
|
case HOME:
|
||||||
case WORK:
|
case WORK:
|
||||||
createSelectOnTheMapItem();
|
createSelectOnTheMapItem();
|
||||||
createFavouritesScrollItem();
|
createFavoritesScrollItem();
|
||||||
createMarkersItem();
|
createMarkersScrollItem();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -141,7 +144,7 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
@Override
|
@Override
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
if (requestCode == ADD_FAVOURITE_TO_ROUTE_REQUEST_CODE) {
|
if (requestCode == ADD_FAVORITE_TO_ROUTE_REQUEST_CODE) {
|
||||||
dismiss();
|
dismiss();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -168,7 +171,7 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
AndroidUtils.setBackground(getContext(), searchView.findViewById(R.id.second_divider),
|
AndroidUtils.setBackground(getContext(), searchView.findViewById(R.id.second_divider),
|
||||||
nightMode, R.color.dashboard_divider_light, R.color.dashboard_divider_dark);
|
nightMode, R.color.dashboard_divider_light, R.color.dashboard_divider_dark);
|
||||||
|
|
||||||
searchView.findViewById(R.id.first_item).setOnClickListener(new View.OnClickListener() {
|
searchView.findViewById(R.id.first_item).setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
MapActivity mapActivity = (MapActivity) getActivity();
|
MapActivity mapActivity = (MapActivity) getActivity();
|
||||||
|
@ -178,7 +181,7 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
dismiss();
|
dismiss();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
searchView.findViewById(R.id.second_item).setOnClickListener(new View.OnClickListener() {
|
searchView.findViewById(R.id.second_item).setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
MapActivity mapActivity = (MapActivity) getActivity();
|
MapActivity mapActivity = (MapActivity) getActivity();
|
||||||
|
@ -213,7 +216,7 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
.setIcon(getIcon(R.drawable.ic_action_location_color, 0))
|
.setIcon(getIcon(R.drawable.ic_action_location_color, 0))
|
||||||
.setTitle(getString(R.string.shared_string_my_location))
|
.setTitle(getString(R.string.shared_string_my_location))
|
||||||
.setLayoutId(R.layout.bottom_sheet_item_simple_56dp)
|
.setLayoutId(R.layout.bottom_sheet_item_simple_56dp)
|
||||||
.setOnClickListener(new View.OnClickListener() {
|
.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
OsmandApplication app = getMyApplication();
|
OsmandApplication app = getMyApplication();
|
||||||
|
@ -259,7 +262,7 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
.setIcon(getContentIcon(R.drawable.ic_show_on_map))
|
.setIcon(getContentIcon(R.drawable.ic_show_on_map))
|
||||||
.setTitle(getString(R.string.shared_string_select_on_map))
|
.setTitle(getString(R.string.shared_string_select_on_map))
|
||||||
.setLayoutId(R.layout.bottom_sheet_item_simple_56dp)
|
.setLayoutId(R.layout.bottom_sheet_item_simple_56dp)
|
||||||
.setOnClickListener(new View.OnClickListener() {
|
.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
MapActivity mapActivity = (MapActivity) getActivity();
|
MapActivity mapActivity = (MapActivity) getActivity();
|
||||||
|
@ -278,55 +281,21 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
items.add(selectOnTheMapItem);
|
items.add(selectOnTheMapItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createMarkersItem() {
|
private void createMarkersScrollItem() {
|
||||||
final OsmandApplication app = getMyApplication();
|
final OsmandApplication app = getMyApplication();
|
||||||
if (app == null) {
|
if (app != null) {
|
||||||
return;
|
List<Object> items = new ArrayList<>();
|
||||||
|
MarkersItemsAdapter adapter = new MarkersItemsAdapter(app, items);
|
||||||
|
adapter.setItemClickListener(getAdapterOnClickListener(items));
|
||||||
|
MapMarkersHelper helper = app.getMapMarkersHelper();
|
||||||
|
items.add(MARKERS);
|
||||||
|
items.addAll(helper.getMapMarkers());
|
||||||
|
BaseBottomSheetItem scrollItem = new HorizontalRecyclerBottomSheetItem.Builder()
|
||||||
|
.setAdapter(adapter)
|
||||||
|
.setLayoutId(R.layout.bottom_sheet_item_recyclerview)
|
||||||
|
.create();
|
||||||
|
this.items.add(scrollItem);
|
||||||
}
|
}
|
||||||
final View markersView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.bottom_sheet_double_item, null);
|
|
||||||
|
|
||||||
MapMarkersHelper markersHelper = app.getMapMarkersHelper();
|
|
||||||
List<MapMarkersHelper.MapMarker> markers = markersHelper.getMapMarkers();
|
|
||||||
MapMarkersHelper.MapMarker marker = null;
|
|
||||||
if (markers.size() > 0) {
|
|
||||||
marker = markers.get(0);
|
|
||||||
}
|
|
||||||
TextView firstTitle = (TextView) markersView.findViewById(R.id.first_title);
|
|
||||||
TextView secondTitle = (TextView) markersView.findViewById(R.id.second_title);
|
|
||||||
ImageView firstIcon = (ImageView) markersView.findViewById(R.id.first_icon);
|
|
||||||
ImageView secondIcon = (ImageView) markersView.findViewById(R.id.second_icon);
|
|
||||||
|
|
||||||
firstTitle.setText(R.string.shared_string_markers);
|
|
||||||
firstIcon.setImageDrawable(getActiveIcon(R.drawable.ic_action_flag_dark));
|
|
||||||
|
|
||||||
if (marker != null) {
|
|
||||||
secondTitle.setText(marker.getName(getContext()));
|
|
||||||
secondIcon.setImageDrawable(MapMarkerDialogHelper.getMapMarkerIcon(app, marker.colorIndex));
|
|
||||||
|
|
||||||
}
|
|
||||||
markersView.findViewById(R.id.first_item).setOnClickListener(new View.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
MapActivity mapActivity = (MapActivity) getActivity();
|
|
||||||
if (mapActivity != null) {
|
|
||||||
MapRouteInfoMenu menu = mapActivity.getMapRouteInfoMenu();
|
|
||||||
menu.selectMapMarker(-1, pointType);
|
|
||||||
dismiss();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
markersView.findViewById(R.id.second_item).setOnClickListener(new View.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
MapActivity mapActivity = (MapActivity) getActivity();
|
|
||||||
if (mapActivity != null) {
|
|
||||||
MapRouteInfoMenu menu = mapActivity.getMapRouteInfoMenu();
|
|
||||||
menu.selectMapMarker(0, pointType);
|
|
||||||
dismiss();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
items.add(new BaseBottomSheetItem.Builder().setCustomView(markersView).create());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createSwitchStartAndEndItem() {
|
private void createSwitchStartAndEndItem() {
|
||||||
|
@ -346,7 +315,7 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
BaseBottomSheetItem switchStartAndEndItem = new SimpleBottomSheetItem.Builder()
|
BaseBottomSheetItem switchStartAndEndItem = new SimpleBottomSheetItem.Builder()
|
||||||
.setIcon(getContentIcon(R.drawable.ic_action_change_navigation_points))
|
.setIcon(getContentIcon(R.drawable.ic_action_change_navigation_points))
|
||||||
.setCustomView(switchStartAndEndView)
|
.setCustomView(switchStartAndEndView)
|
||||||
.setOnClickListener(new View.OnClickListener() {
|
.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
MapActivity mapActivity = (MapActivity) getActivity();
|
MapActivity mapActivity = (MapActivity) getActivity();
|
||||||
|
@ -372,16 +341,16 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addMainScrollItems(List<Object> items) {
|
private void addMainScrollItems(List<Object> items) {
|
||||||
items.add(FAVOURITES);
|
items.add(FAVORITES);
|
||||||
items.add(PointType.HOME);
|
items.add(PointType.HOME);
|
||||||
items.add(PointType.WORK);
|
items.add(PointType.WORK);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createFavouritesScrollItem() {
|
private void createFavoritesScrollItem() {
|
||||||
final OsmandApplication app = getMyApplication();
|
final OsmandApplication app = getMyApplication();
|
||||||
if (app != null) {
|
if (app != null) {
|
||||||
List<Object> items = new ArrayList<>();
|
List<Object> items = new ArrayList<>();
|
||||||
final FavouritesItemsAdapter adapter = new FavouritesItemsAdapter(app, items);
|
final FavoritesItemsAdapter adapter = new FavoritesItemsAdapter(app, items);
|
||||||
adapter.setItemClickListener(getAdapterOnClickListener(items));
|
adapter.setItemClickListener(getAdapterOnClickListener(items));
|
||||||
final FavouritesDbHelper helper = app.getFavorites();
|
final FavouritesDbHelper helper = app.getFavorites();
|
||||||
if (helper.isFavoritesLoaded()) {
|
if (helper.isFavoritesLoaded()) {
|
||||||
|
@ -393,7 +362,7 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
public void onFavoritesLoaded() {
|
public void onFavoritesLoaded() {
|
||||||
MapActivity mapActivity = (MapActivity) getActivity();
|
MapActivity mapActivity = (MapActivity) getActivity();
|
||||||
if (mapActivity != null) {
|
if (mapActivity != null) {
|
||||||
loadFavoritesItems(adapter.items, helper);
|
loadFavoritesItems(adapter.getItems(), helper);
|
||||||
adapter.notifyDataSetChanged();
|
adapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -407,8 +376,8 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private View.OnClickListener getAdapterOnClickListener(final List<Object> items) {
|
private OnClickListener getAdapterOnClickListener(final List<Object> items) {
|
||||||
return new View.OnClickListener() {
|
return new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
MapActivity mapActivity = (MapActivity) getActivity();
|
MapActivity mapActivity = (MapActivity) getActivity();
|
||||||
|
@ -418,8 +387,16 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Object item = items.get(position);
|
Object item = items.get(position);
|
||||||
if (item.equals(FAVOURITES)) {
|
if (item.equals(FAVORITES)) {
|
||||||
openFavouritesDialog();
|
openFavoritesDialog();
|
||||||
|
} else if (item.equals(MARKERS)) {
|
||||||
|
MapRouteInfoMenu menu = mapActivity.getMapRouteInfoMenu();
|
||||||
|
menu.selectMapMarker(-1, pointType);
|
||||||
|
dismiss();
|
||||||
|
} else if (item instanceof MapMarker) {
|
||||||
|
MapRouteInfoMenu menu = mapActivity.getMapRouteInfoMenu();
|
||||||
|
menu.selectMapMarker((MapMarker) item, pointType);
|
||||||
|
dismiss();
|
||||||
} else {
|
} else {
|
||||||
TargetPointsHelper helper = mapActivity.getMyApplication().getTargetPointsHelper();
|
TargetPointsHelper helper = mapActivity.getMyApplication().getTargetPointsHelper();
|
||||||
Pair<LatLon, PointDescription> pair = getLocationAndDescrFromItem(item, helper);
|
Pair<LatLon, PointDescription> pair = getLocationAndDescrFromItem(item, helper);
|
||||||
|
@ -472,14 +449,14 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
return new Pair<>(ll, name);
|
return new Pair<>(ll, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openFavouritesDialog() {
|
private void openFavoritesDialog() {
|
||||||
MapActivity mapActivity = (MapActivity) getActivity();
|
MapActivity mapActivity = (MapActivity) getActivity();
|
||||||
if (mapActivity != null) {
|
if (mapActivity != null) {
|
||||||
FragmentManager fragmentManager = mapActivity.getSupportFragmentManager();
|
FragmentManager fragmentManager = mapActivity.getSupportFragmentManager();
|
||||||
FavouritesBottomSheetMenuFragment fragment = new FavouritesBottomSheetMenuFragment();
|
FavouritesBottomSheetMenuFragment fragment = new FavouritesBottomSheetMenuFragment();
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
args.putString(FavouritesBottomSheetMenuFragment.POINT_TYPE_KEY, pointType.name());
|
args.putString(FavouritesBottomSheetMenuFragment.POINT_TYPE_KEY, pointType.name());
|
||||||
fragment.setTargetFragment(AddPointBottomSheetDialog.this, ADD_FAVOURITE_TO_ROUTE_REQUEST_CODE);
|
fragment.setTargetFragment(AddPointBottomSheetDialog.this, ADD_FAVORITE_TO_ROUTE_REQUEST_CODE);
|
||||||
fragment.setArguments(args);
|
fragment.setArguments(args);
|
||||||
fragment.show(fragmentManager, FavouritesBottomSheetMenuFragment.TAG);
|
fragment.show(fragmentManager, FavouritesBottomSheetMenuFragment.TAG);
|
||||||
}
|
}
|
||||||
|
@ -506,17 +483,43 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class FavouritesItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
private class ItemViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
final TextView title;
|
||||||
|
final TextView description;
|
||||||
|
final ImageView icon;
|
||||||
|
|
||||||
|
ItemViewHolder(View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
title = (TextView) itemView.findViewById(R.id.title);
|
||||||
|
description = (TextView) itemView.findViewById(R.id.description);
|
||||||
|
icon = (ImageView) itemView.findViewById(R.id.icon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private abstract class ScrollItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
|
|
||||||
private final List<Object> items;
|
private final List<Object> items;
|
||||||
private OsmandApplication app;
|
private OsmandApplication app;
|
||||||
private View.OnClickListener listener;
|
private OnClickListener listener;
|
||||||
|
|
||||||
public FavouritesItemsAdapter(OsmandApplication app, List<Object> items) {
|
ScrollItemsAdapter(OsmandApplication app, List<Object> items) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
this.items = items;
|
this.items = items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OsmandApplication getApp() {
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Object> getItems() {
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OnClickListener getListener() {
|
||||||
|
return listener;
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
|
||||||
|
@ -533,76 +536,95 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
||||||
}
|
}
|
||||||
view.setLayoutParams(layoutParams);
|
view.setLayoutParams(layoutParams);
|
||||||
}
|
}
|
||||||
FavouritesViewHolder viewHolder = new FavouritesViewHolder(view);
|
ItemViewHolder viewHolder = new ItemViewHolder(view);
|
||||||
view.setTag(viewHolder);
|
view.setTag(viewHolder);
|
||||||
|
|
||||||
return viewHolder;
|
return viewHolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
|
||||||
if (holder instanceof FavouritesViewHolder) {
|
|
||||||
Object item = getItem(position);
|
|
||||||
FavouritesViewHolder favouritesViewHolder = (FavouritesViewHolder) holder;
|
|
||||||
if (item.equals(FAVOURITES)) {
|
|
||||||
favouritesViewHolder.title.setText(R.string.shared_string_favorites);
|
|
||||||
favouritesViewHolder.icon.setImageDrawable(getContentIcon(R.drawable.ic_action_fav_dark));
|
|
||||||
favouritesViewHolder.description.setVisibility(View.GONE);
|
|
||||||
} else {
|
|
||||||
if (item instanceof PointType) {
|
|
||||||
final TargetPointsHelper helper = app.getTargetPointsHelper();
|
|
||||||
TargetPointsHelper.TargetPoint point = null;
|
|
||||||
if (item == PointType.HOME) {
|
|
||||||
point = helper.getHomePoint();
|
|
||||||
favouritesViewHolder.title.setText(getString(R.string.home_button));
|
|
||||||
favouritesViewHolder.icon.setImageDrawable(getContentIcon(R.drawable.ic_action_home_dark));
|
|
||||||
} else if (item == PointType.WORK) {
|
|
||||||
point = helper.getWorkPoint();
|
|
||||||
favouritesViewHolder.title.setText(getString(R.string.work_button));
|
|
||||||
favouritesViewHolder.icon.setImageDrawable(getContentIcon(R.drawable.ic_action_work));
|
|
||||||
}
|
|
||||||
favouritesViewHolder.description.setText(point != null ? point.getPointDescription(app).getSimpleName(app, false) : getString(R.string.shared_string_add));
|
|
||||||
} else if (item instanceof FavouritePoint) {
|
|
||||||
FavouritePoint point = (FavouritePoint) getItem(position);
|
|
||||||
favouritesViewHolder.title.setText(point.getName());
|
|
||||||
if (point.getCategory().equals("")) {
|
|
||||||
favouritesViewHolder.description.setText(R.string.shared_string_favorites);
|
|
||||||
} else {
|
|
||||||
favouritesViewHolder.description.setText(point.getCategory());
|
|
||||||
}
|
|
||||||
int pointColor = point.getColor();
|
|
||||||
int color = pointColor == 0 || pointColor == Color.BLACK ? ContextCompat.getColor(app, R.color.color_favorite) : pointColor;
|
|
||||||
favouritesViewHolder.icon.setImageDrawable(app.getUIUtilities().getPaintedIcon(R.drawable.ic_action_fav_dark, color));
|
|
||||||
}
|
|
||||||
favouritesViewHolder.description.setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
return items.size();
|
return items.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object getItem(int position) {
|
public Object getItem(int position) {
|
||||||
return items.get(position);
|
return items.get(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setItemClickListener(View.OnClickListener listener) {
|
public void setItemClickListener(OnClickListener listener) {
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class FavouritesViewHolder extends RecyclerView.ViewHolder {
|
private class FavoritesItemsAdapter extends ScrollItemsAdapter {
|
||||||
|
|
||||||
final TextView title;
|
FavoritesItemsAdapter(OsmandApplication app, List<Object> items) {
|
||||||
final TextView description;
|
super(app, items);
|
||||||
final ImageView icon;
|
}
|
||||||
|
|
||||||
public FavouritesViewHolder(View itemView) {
|
@Override
|
||||||
super(itemView);
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
title = (TextView) itemView.findViewById(R.id.title);
|
OsmandApplication app = getApp();
|
||||||
description = (TextView) itemView.findViewById(R.id.description);
|
if (holder instanceof ItemViewHolder) {
|
||||||
icon = (ImageView) itemView.findViewById(R.id.icon);
|
Object item = getItem(position);
|
||||||
|
ItemViewHolder favoriteViewHolder = (ItemViewHolder) holder;
|
||||||
|
if (item.equals(FAVORITES)) {
|
||||||
|
favoriteViewHolder.title.setText(R.string.shared_string_favorites);
|
||||||
|
favoriteViewHolder.icon.setImageDrawable(getContentIcon(R.drawable.ic_action_fav_dark));
|
||||||
|
favoriteViewHolder.description.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (item instanceof PointType) {
|
||||||
|
final TargetPointsHelper helper = app.getTargetPointsHelper();
|
||||||
|
TargetPointsHelper.TargetPoint point = null;
|
||||||
|
if (item == PointType.HOME) {
|
||||||
|
point = helper.getHomePoint();
|
||||||
|
favoriteViewHolder.title.setText(getString(R.string.home_button));
|
||||||
|
favoriteViewHolder.icon.setImageDrawable(getContentIcon(R.drawable.ic_action_home_dark));
|
||||||
|
} else if (item == PointType.WORK) {
|
||||||
|
point = helper.getWorkPoint();
|
||||||
|
favoriteViewHolder.title.setText(getString(R.string.work_button));
|
||||||
|
favoriteViewHolder.icon.setImageDrawable(getContentIcon(R.drawable.ic_action_work));
|
||||||
|
}
|
||||||
|
favoriteViewHolder.description.setText(point != null ? point.getPointDescription(app).getSimpleName(app, false) : getString(R.string.shared_string_add));
|
||||||
|
} else if (item instanceof FavouritePoint) {
|
||||||
|
FavouritePoint point = (FavouritePoint) getItem(position);
|
||||||
|
favoriteViewHolder.title.setText(point.getName());
|
||||||
|
if (point.getCategory().equals("")) {
|
||||||
|
favoriteViewHolder.description.setText(R.string.shared_string_favorites);
|
||||||
|
} else {
|
||||||
|
favoriteViewHolder.description.setText(point.getCategory());
|
||||||
|
}
|
||||||
|
int pointColor = point.getColor();
|
||||||
|
int color = pointColor == 0 || pointColor == Color.BLACK ? ContextCompat.getColor(app, R.color.color_favorite) : pointColor;
|
||||||
|
favoriteViewHolder.icon.setImageDrawable(app.getUIUtilities().getPaintedIcon(R.drawable.ic_action_fav_dark, color));
|
||||||
|
}
|
||||||
|
favoriteViewHolder.description.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MarkersItemsAdapter extends ScrollItemsAdapter {
|
||||||
|
|
||||||
|
MarkersItemsAdapter(OsmandApplication app, List<Object> items) {
|
||||||
|
super(app, items);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
|
OsmandApplication app = getApp();
|
||||||
|
if (holder instanceof ItemViewHolder) {
|
||||||
|
Object item = getItem(position);
|
||||||
|
ItemViewHolder markerViewHolder = (ItemViewHolder) holder;
|
||||||
|
if (item.equals(MARKERS)) {
|
||||||
|
markerViewHolder.title.setText(R.string.shared_string_markers);
|
||||||
|
markerViewHolder.icon.setImageDrawable(getContentIcon(R.drawable.ic_action_flag_dark));
|
||||||
|
} else {
|
||||||
|
MapMarker marker = (MapMarker) getItem(position);
|
||||||
|
markerViewHolder.title.setText(marker.getName(getContext()));
|
||||||
|
markerViewHolder.icon.setImageDrawable(MapMarkerDialogHelper.getMapMarkerIcon(app, marker.colorIndex));
|
||||||
|
}
|
||||||
|
markerViewHolder.description.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1705,9 +1705,19 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
||||||
public void selectMapMarker(final int index, final PointType pointType) {
|
public void selectMapMarker(final int index, final PointType pointType) {
|
||||||
MapActivity mapActivity = getMapActivity();
|
MapActivity mapActivity = getMapActivity();
|
||||||
if (mapActivity != null) {
|
if (mapActivity != null) {
|
||||||
|
MapMarker m = null;
|
||||||
List<MapMarker> mapMarkers = mapActivity.getMyApplication().getMapMarkersHelper().getMapMarkers();
|
List<MapMarker> mapMarkers = mapActivity.getMyApplication().getMapMarkersHelper().getMapMarkers();
|
||||||
if (index != -1 && mapMarkers.size() > index) {
|
if (index != -1 && mapMarkers.size() > index) {
|
||||||
MapMarker m = mapMarkers.get(index);
|
m = mapMarkers.get(index);
|
||||||
|
}
|
||||||
|
selectMapMarker(m, pointType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void selectMapMarker(@Nullable final MapMarker m, @NonNull final PointType pointType) {
|
||||||
|
MapActivity mapActivity = getMapActivity();
|
||||||
|
if (mapActivity != null) {
|
||||||
|
if (m != null) {
|
||||||
LatLon point = new LatLon(m.getLatitude(), m.getLongitude());
|
LatLon point = new LatLon(m.getLatitude(), m.getLongitude());
|
||||||
TargetPointsHelper targets = mapActivity.getMyApplication().getTargetPointsHelper();
|
TargetPointsHelper targets = mapActivity.getMyApplication().getTargetPointsHelper();
|
||||||
switch (pointType) {
|
switch (pointType) {
|
||||||
|
|
Loading…
Reference in a new issue