diff --git a/OsmAnd/res/layout/bottom_sheet_item_title.xml b/OsmAnd/res/layout/bottom_sheet_item_title.xml
index 20e13b51c9..2f740ed30a 100644
--- a/OsmAnd/res/layout/bottom_sheet_item_title.xml
+++ b/OsmAnd/res/layout/bottom_sheet_item_title.xml
@@ -7,6 +7,7 @@
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_title_height"
android:gravity="center_vertical"
+ android:minHeight="@dimen/bottom_sheet_title_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
android:textAppearance="@style/TextAppearance.ListItemTitle"
diff --git a/OsmAnd/res/layout/bottom_sheet_menu_base.xml b/OsmAnd/res/layout/bottom_sheet_menu_base.xml
new file mode 100644
index 0000000000..ce1ee74322
--- /dev/null
+++ b/OsmAnd/res/layout/bottom_sheet_menu_base.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OsmAnd/res/layout/fragment_add_waypoint_bottom_sheet_dialog.xml b/OsmAnd/res/layout/fragment_add_waypoint_bottom_sheet_dialog.xml
deleted file mode 100644
index 0aa0256853..0000000000
--- a/OsmAnd/res/layout/fragment_add_waypoint_bottom_sheet_dialog.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/OsmAnd/src/net/osmand/plus/base/MenuBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/base/MenuBottomSheetDialogFragment.java
index 0029563f61..695418a78a 100644
--- a/OsmAnd/src/net/osmand/plus/base/MenuBottomSheetDialogFragment.java
+++ b/OsmAnd/src/net/osmand/plus/base/MenuBottomSheetDialogFragment.java
@@ -4,24 +4,33 @@ import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
+import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
-import android.support.annotation.IdRes;
-import android.support.annotation.NonNull;
+import android.support.annotation.StringRes;
+import android.support.v4.content.ContextCompat;
+import android.view.ContextThemeWrapper;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
-import android.widget.ImageView;
+import android.widget.LinearLayout;
import android.widget.TextView;
import net.osmand.AndroidUtils;
+import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
+import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
import net.osmand.plus.helpers.AndroidUiHelper;
+import java.util.ArrayList;
+import java.util.List;
+
public abstract class MenuBottomSheetDialogFragment extends BottomSheetDialogFragment {
private static final String USED_ON_MAP_KEY = "used_on_map";
+ protected List items = new ArrayList<>();
+
protected boolean usedOnMap = true;
protected boolean nightMode;
@@ -103,27 +112,46 @@ public abstract class MenuBottomSheetDialogFragment extends BottomSheetDialogFra
});
}
- protected void setupItems(@NonNull final View mainView,
- @NonNull @IdRes int[] itemIds,
- @NonNull Drawable[] icons,
- @NonNull String[] titles,
- @NonNull String[] descriptions,
- @NonNull View.OnClickListener onClickListener) {
- for (int i = 0; i < itemIds.length; i++) {
- View item = mainView.findViewById(itemIds[i]);
- if (item != null) {
- if (icons[i] != null) {
- ((ImageView) item.findViewById(R.id.icon)).setImageDrawable(icons[i]);
- }
- if (titles[i] != null) {
- ((TextView) item.findViewById(R.id.title)).setText(titles[i]);
- }
- if (descriptions[i] != null) {
- ((TextView) item.findViewById(R.id.description)).setText(descriptions[i]);
- }
- item.setOnClickListener(onClickListener);
- }
+ protected View inflateMainView() {
+ OsmandApplication app = getMyApplication();
+ final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
+
+ View mainView = View.inflate(new ContextThemeWrapper(app, themeRes), R.layout.bottom_sheet_menu_base, null);
+ LinearLayout container = (LinearLayout) mainView.findViewById(R.id.items_container);
+
+ for (BaseBottomSheetItem item : items) {
+ item.inflate(app, container, nightMode);
}
+
+ int closeRowDividerColorId = getCloseRowDividerColorId();
+ if (closeRowDividerColorId != -1) {
+ mainView.findViewById(R.id.close_row_divider)
+ .setBackgroundColor(ContextCompat.getColor(getContext(), closeRowDividerColorId));
+ }
+ mainView.findViewById(R.id.close_row).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dismiss();
+ }
+ });
+ int closeRowTextId = getCloseRowTextId();
+ if (closeRowTextId != -1) {
+ ((TextView) mainView.findViewById(R.id.close_row_text)).setText(closeRowTextId);
+ }
+
+ setupHeightAndBackground(mainView, R.id.scroll_view);
+
+ return mainView;
+ }
+
+ @ColorRes
+ protected int getCloseRowDividerColorId() {
+ return -1;
+ }
+
+ @StringRes
+ protected int getCloseRowTextId() {
+ return -1;
}
@DrawableRes
diff --git a/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BaseBottomSheetItem.java b/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BaseBottomSheetItem.java
index c25a20e4a4..d86727cd50 100644
--- a/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BaseBottomSheetItem.java
+++ b/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BaseBottomSheetItem.java
@@ -1,51 +1,64 @@
package net.osmand.plus.base.bottomsheetmenu;
import android.support.annotation.LayoutRes;
+import android.view.ContextThemeWrapper;
import android.view.View;
+import android.view.ViewGroup;
+
+import net.osmand.plus.OsmandApplication;
+import net.osmand.plus.R;
public class BaseBottomSheetItem {
public static final int INVALID_POSITION = -1;
public static final int INVALID_ID = -1;
- private View customView;
+ protected View view;
@LayoutRes
private int layoutId;
private boolean disabled;
private View.OnClickListener onClickListener;
- private int position;
+ protected int position;
- public BaseBottomSheetItem(View customView,
+ public BaseBottomSheetItem(View view,
@LayoutRes int layoutId,
boolean disabled,
View.OnClickListener onClickListener,
int position) {
- this.customView = customView;
+ this.view = view;
this.layoutId = layoutId;
this.disabled = disabled;
this.onClickListener = onClickListener;
this.position = position;
}
- public View getCustomView() {
- return customView;
+ BaseBottomSheetItem() {
+
}
- @LayoutRes
- public int getLayoutId() {
- return layoutId;
+ public void inflate(OsmandApplication app, ViewGroup container, boolean nightMode) {
+ View view = getView(app, nightMode);
+ if (disabled) {
+ view.setEnabled(false);
+ view.setAlpha(.5f);
+ }
+ view.setOnClickListener(onClickListener);
+ if (position != INVALID_POSITION) {
+ container.addView(view, position);
+ } else {
+ container.addView(view);
+ }
}
- public boolean isDisabled() {
- return disabled;
- }
-
- public View.OnClickListener getOnClickListener() {
- return onClickListener;
- }
-
- public int getPosition() {
- return position;
+ private View getView(OsmandApplication app, boolean nightMode) {
+ if (view != null) {
+ return view;
+ }
+ if (layoutId != INVALID_ID) {
+ final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
+ return view = View.inflate(new ContextThemeWrapper(app, themeRes), layoutId, null);
+ }
+ throw new RuntimeException("BottomSheetItem must have specified view or layoutId.");
}
public static class Builder {
diff --git a/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BottomSheetItemWithDescription.java b/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BottomSheetItemWithDescription.java
index b1f78f5486..e4e42b6619 100644
--- a/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BottomSheetItemWithDescription.java
+++ b/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/BottomSheetItemWithDescription.java
@@ -2,16 +2,18 @@ package net.osmand.plus.base.bottomsheetmenu;
import android.graphics.drawable.Drawable;
import android.support.annotation.ColorRes;
-import android.support.annotation.DrawableRes;
import android.support.annotation.LayoutRes;
-import android.support.annotation.StringRes;
+import android.support.v4.content.ContextCompat;
import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import net.osmand.plus.OsmandApplication;
+import net.osmand.plus.R;
public class BottomSheetItemWithDescription extends SimpleBottomSheetItem {
private String description;
- @StringRes
- private int descriptionId;
@ColorRes
private int descriptionColorId;
@@ -21,39 +23,30 @@ public class BottomSheetItemWithDescription extends SimpleBottomSheetItem {
View.OnClickListener onClickListener,
int position,
Drawable icon,
- @DrawableRes int iconId,
- @ColorRes int iconColorId,
String title,
- @StringRes int titleId,
@ColorRes int titleColorId,
String description,
- @StringRes int descriptionId,
@ColorRes int descriptionColorId) {
- super(customView, layoutResId, clickable, onClickListener, position, icon, iconId, iconColorId, title, titleId, titleColorId);
+ super(customView, layoutResId, clickable, onClickListener, position, icon, title, titleColorId);
this.description = description;
- this.descriptionId = descriptionId;
this.descriptionColorId = descriptionColorId;
}
- public String getDescription() {
- return description;
- }
-
- @StringRes
- public int getDescriptionId() {
- return descriptionId;
- }
-
- @ColorRes
- public int getDescriptionColorId() {
- return descriptionColorId;
+ @Override
+ public void inflate(OsmandApplication app, ViewGroup container, boolean nightMode) {
+ super.inflate(app, container, nightMode);
+ if (description != null) {
+ TextView descriptionTv = (TextView) view.findViewById(R.id.description);
+ descriptionTv.setText(description);
+ if (descriptionColorId != INVALID_ID) {
+ descriptionTv.setTextColor(ContextCompat.getColor(app, descriptionColorId));
+ }
+ }
}
public static class Builder extends SimpleBottomSheetItem.Builder {
protected String description;
- @StringRes
- protected int descriptionId = INVALID_ID;
@ColorRes
protected int descriptionColorId = INVALID_ID;
@@ -62,11 +55,6 @@ public class BottomSheetItemWithDescription extends SimpleBottomSheetItem {
return this;
}
- public Builder setDescriptionId(@StringRes int descriptionId) {
- this.descriptionId = descriptionId;
- return this;
- }
-
public Builder setDescriptionColorId(@ColorRes int descriptionColorId) {
this.descriptionColorId = descriptionColorId;
return this;
@@ -79,13 +67,9 @@ public class BottomSheetItemWithDescription extends SimpleBottomSheetItem {
onClickListener,
position,
icon,
- iconId,
- iconColorId,
title,
- titleId,
titleColorId,
description,
- descriptionId,
descriptionColorId);
}
}
diff --git a/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/DividerHalfBottomSheetItem.java b/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/DividerHalfBottomSheetItem.java
new file mode 100644
index 0000000000..ad473ca65d
--- /dev/null
+++ b/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/DividerHalfBottomSheetItem.java
@@ -0,0 +1,60 @@
+package net.osmand.plus.base.bottomsheetmenu;
+
+import android.content.Context;
+import android.support.annotation.ColorRes;
+import android.support.v4.content.ContextCompat;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import net.osmand.AndroidUtils;
+import net.osmand.plus.OsmandApplication;
+import net.osmand.plus.R;
+
+public class DividerHalfBottomSheetItem extends BaseBottomSheetItem {
+
+ @ColorRes
+ private int colorId;
+
+ public DividerHalfBottomSheetItem(Context context) {
+ setupView(context, INVALID_ID, INVALID_POSITION);
+ }
+
+ public DividerHalfBottomSheetItem(Context context, @ColorRes int colorId) {
+ setupView(context, colorId, INVALID_POSITION);
+ }
+
+ public DividerHalfBottomSheetItem(Context context, @ColorRes int colorId, int position) {
+ setupView(context, colorId, position);
+ }
+
+ private void setupView(Context context, @ColorRes int colorId, int position) {
+ view = new View(context);
+ this.colorId = colorId;
+ this.position = position;
+ }
+
+ @Override
+ public void inflate(OsmandApplication app, ViewGroup container, boolean nightMode) {
+ super.inflate(app, container, nightMode);
+
+ int marginTopBottom = app.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_content_padding_small);
+ int marginLeft = app.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_divider_margin_start);
+ int height = AndroidUtils.dpToPx(app, 1);
+
+ LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) view.getLayoutParams();
+ params.setMargins(marginLeft, marginTopBottom, 0, marginTopBottom);
+ params.height = height;
+
+ view.setMinimumHeight(height);
+ view.setBackgroundColor(ContextCompat.getColor(app, getBgColorId(nightMode)));
+ }
+
+ @ColorRes
+ private int getBgColorId(boolean nightMode) {
+ if (colorId != INVALID_ID) {
+ return colorId;
+ }
+ return nightMode ? R.color.dashboard_divider_dark : R.color.dashboard_divider_light;
+ }
+}
diff --git a/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/SimpleBottomSheetItem.java b/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/SimpleBottomSheetItem.java
index d0e72734ce..509adae923 100644
--- a/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/SimpleBottomSheetItem.java
+++ b/OsmAnd/src/net/osmand/plus/base/bottomsheetmenu/SimpleBottomSheetItem.java
@@ -2,23 +2,20 @@ package net.osmand.plus.base.bottomsheetmenu;
import android.graphics.drawable.Drawable;
import android.support.annotation.ColorRes;
-import android.support.annotation.DrawableRes;
import android.support.annotation.LayoutRes;
-import android.support.annotation.StringRes;
+import android.support.v4.content.ContextCompat;
import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import net.osmand.plus.OsmandApplication;
+import net.osmand.plus.R;
public class SimpleBottomSheetItem extends BaseBottomSheetItem {
- public static final int CONTENT_ICON_COLOR = -1;
-
private Drawable icon;
- @DrawableRes
- private int iconId;
- @ColorRes
- private int iconColorId;
private String title;
- @StringRes
- private int titleId;
@ColorRes
private int titleColorId;
@@ -28,58 +25,33 @@ public class SimpleBottomSheetItem extends BaseBottomSheetItem {
View.OnClickListener onClickListener,
int position,
Drawable icon,
- @DrawableRes int iconId,
- @ColorRes int iconColorId,
String title,
- @StringRes int titleId,
@ColorRes int titleColorId) {
super(customView, layoutResId, clickable, onClickListener, position);
this.icon = icon;
- this.iconId = iconId;
- this.iconColorId = iconColorId;
this.title = title;
- this.titleId = titleId;
this.titleColorId = titleColorId;
}
- public Drawable getIcon() {
- return icon;
- }
-
- @DrawableRes
- public int getIconId() {
- return iconId;
- }
-
- @ColorRes
- public int getIconColorId() {
- return iconColorId;
- }
-
- public String getTitle() {
- return title;
- }
-
- @StringRes
- public int getTitleId() {
- return titleId;
- }
-
- @ColorRes
- public int getTitleColorId() {
- return titleColorId;
+ @Override
+ public void inflate(OsmandApplication app, ViewGroup container, boolean nightMode) {
+ super.inflate(app, container, nightMode);
+ if (icon != null) {
+ ((ImageView) view.findViewById(R.id.icon)).setImageDrawable(icon);
+ }
+ if (title != null) {
+ TextView titleTv = (TextView) view.findViewById(R.id.title);
+ titleTv.setText(title);
+ if (titleColorId != INVALID_ID) {
+ titleTv.setTextColor(ContextCompat.getColor(app, titleColorId));
+ }
+ }
}
public static class Builder extends BaseBottomSheetItem.Builder {
protected Drawable icon;
- @DrawableRes
- protected int iconId = INVALID_ID;
- @ColorRes
- protected int iconColorId = CONTENT_ICON_COLOR;
protected String title;
- @StringRes
- protected int titleId = INVALID_ID;
@ColorRes
protected int titleColorId = INVALID_ID;
@@ -88,26 +60,11 @@ public class SimpleBottomSheetItem extends BaseBottomSheetItem {
return this;
}
- public Builder setIconId(@DrawableRes int iconId) {
- this.iconId = iconId;
- return this;
- }
-
- public Builder setIconColorId(@ColorRes int iconColorId) {
- this.iconColorId = iconColorId;
- return this;
- }
-
public Builder setTitle(String title) {
this.title = title;
return this;
}
- public Builder setTitleId(@StringRes int titleId) {
- this.titleId = titleId;
- return this;
- }
-
public Builder setTitleColorId(@ColorRes int titleColorId) {
this.titleColorId = titleColorId;
return this;
@@ -120,10 +77,7 @@ public class SimpleBottomSheetItem extends BaseBottomSheetItem {
onClickListener,
position,
icon,
- iconId,
- iconColorId,
title,
- titleId,
titleColorId);
}
}
diff --git a/OsmAnd/src/net/osmand/plus/dialogs/AddWaypointBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/dialogs/AddWaypointBottomSheetDialogFragment.java
index 12858f5497..51cc2e7ee8 100644
--- a/OsmAnd/src/net/osmand/plus/dialogs/AddWaypointBottomSheetDialogFragment.java
+++ b/OsmAnd/src/net/osmand/plus/dialogs/AddWaypointBottomSheetDialogFragment.java
@@ -7,14 +7,10 @@ import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
import android.support.annotation.DrawableRes;
-import android.support.annotation.IdRes;
import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
-import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.TextView;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
@@ -23,6 +19,10 @@ import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.TargetPointsHelper.TargetPoint;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
+import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
+import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithDescription;
+import net.osmand.plus.base.bottomsheetmenu.DividerHalfBottomSheetItem;
+import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem;
public class AddWaypointBottomSheetDialogFragment extends MenuBottomSheetDialogFragment {
@@ -39,84 +39,97 @@ public class AddWaypointBottomSheetDialogFragment extends MenuBottomSheetDialogF
final PointDescription name = PointDescription.deserializeFromString(args.getString(POINT_DESCRIPTION_KEY), latLon);
final TargetPointsHelper targetPointsHelper = getMyApplication().getTargetPointsHelper();
- final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
- final View mainView = View.inflate(new ContextThemeWrapper(getContext(), themeRes),
- R.layout.fragment_add_waypoint_bottom_sheet_dialog, container);
+ BaseBottomSheetItem titleItem = new SimpleBottomSheetItem.Builder()
+ .setTitle(getString(R.string.new_destination_point_dialog))
+ .setLayoutId(R.layout.bottom_sheet_item_title)
+ .create();
+ items.add(titleItem);
- ((TextView) mainView.findViewById(R.id.title)).setText(R.string.new_destination_point_dialog);
-
- @IdRes int[] ids = new int[]{
- R.id.replace_dest_row,
- R.id.replace_start_row,
- R.id.subsequent_dest_row,
- R.id.first_intermediate_dest_row,
- R.id.last_intermediate_dest_row,
- R.id.close_row
- };
-
- Drawable[] icons = new Drawable[]{
- getIcon(R.drawable.list_destination, 0),
- getIcon(R.drawable.list_startpoint, 0),
- getSubsequentDestIcon(),
- getFirstIntermDestIcon(),
- getLastIntermDistIcon(),
- null
- };
-
- String[] titles = new String[]{
- getString(R.string.replace_destination_point),
- getString(R.string.make_as_start_point),
- getString(R.string.keep_and_add_destination_point),
- getString(R.string.add_as_first_destination_point),
- getString(R.string.add_as_last_destination_point),
- null
- };
-
- String[] descriptions = new String[]{
- getCurrentPointName(targetPointsHelper.getPointToNavigate(), false),
- getCurrentPointName(targetPointsHelper.getPointToStart(), true),
- getString(R.string.subsequent_dest_description),
- getString(R.string.first_intermediate_dest_description),
- getString(R.string.last_intermediate_dest_description),
- null
- };
-
- View.OnClickListener onClickListener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- int id = v.getId();
- if (id == R.id.replace_dest_row) {
- targetPointsHelper.navigateToPoint(latLon, true, -1, name);
- } else if (id == R.id.replace_start_row) {
- TargetPoint start = targetPointsHelper.getPointToStart();
- if (start != null) {
- targetPointsHelper.navigateToPoint(new LatLon(start.getLatitude(), start.getLongitude()),
- false, 0, start.getOriginalPointDescription());
+ BaseBottomSheetItem replaceDestItem = new BottomSheetItemWithDescription.Builder()
+ .setDescription(getCurrentPointName(targetPointsHelper.getPointToNavigate(), false))
+ .setIcon(getIcon(R.drawable.list_destination, 0))
+ .setTitle(getString(R.string.replace_destination_point))
+ .setLayoutId(R.layout.bottom_sheet_item_with_descr_56dp)
+ .setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ targetPointsHelper.navigateToPoint(latLon, true, -1, name);
+ dismiss();
}
- targetPointsHelper.setStartPoint(latLon, true, name);
- } else if (id == R.id.subsequent_dest_row) {
- targetPointsHelper.navigateToPoint(latLon, true,
- targetPointsHelper.getIntermediatePoints().size() + 1, name);
- } else if (id == R.id.first_intermediate_dest_row) {
- targetPointsHelper.navigateToPoint(latLon, true, 0, name);
- } else if (id == R.id.last_intermediate_dest_row) {
- targetPointsHelper.navigateToPoint(latLon, true, targetPointsHelper.getIntermediatePoints().size(), name);
- }
- dismiss();
- }
- };
+ })
+ .create();
+ items.add(replaceDestItem);
- setupItems(mainView, ids, icons, titles, descriptions, onClickListener);
+ BaseBottomSheetItem replaceStartItem = new BottomSheetItemWithDescription.Builder()
+ .setDescription(getCurrentPointName(targetPointsHelper.getPointToStart(), true))
+ .setIcon(getIcon(R.drawable.list_startpoint, 0))
+ .setTitle(getString(R.string.make_as_start_point))
+ .setLayoutId(R.layout.bottom_sheet_item_with_descr_56dp)
+ .setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ TargetPoint start = targetPointsHelper.getPointToStart();
+ if (start != null) {
+ targetPointsHelper.navigateToPoint(new LatLon(start.getLatitude(), start.getLongitude()),
+ false, 0, start.getOriginalPointDescription());
+ }
+ targetPointsHelper.setStartPoint(latLon, true, name);
+ dismiss();
+ }
+ })
+ .create();
+ items.add(replaceStartItem);
- if (nightMode) {
- int dividerColor = ContextCompat.getColor(getContext(), R.color.route_info_bottom_view_bg_dark);
- mainView.findViewById(R.id.current_dest_divider).setBackgroundColor(dividerColor);
- mainView.findViewById(R.id.cancel_divider).setBackgroundColor(dividerColor);
- }
+ items.add(new DividerHalfBottomSheetItem(getContext(), getCloseRowDividerColorId()));
- setupHeightAndBackground(mainView, R.id.scroll_view);
+ BaseBottomSheetItem subsequentDestItem = new BottomSheetItemWithDescription.Builder()
+ .setDescription(getString(R.string.subsequent_dest_description))
+ .setIcon(getSubsequentDestIcon())
+ .setTitle(getString(R.string.keep_and_add_destination_point))
+ .setLayoutId(R.layout.bottom_sheet_item_with_descr_56dp)
+ .setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ targetPointsHelper.navigateToPoint(latLon, true,
+ targetPointsHelper.getIntermediatePoints().size() + 1, name);
+ dismiss();
+ }
+ })
+ .create();
+ items.add(subsequentDestItem);
- return mainView;
+ BaseBottomSheetItem firstIntermItem = new BottomSheetItemWithDescription.Builder()
+ .setDescription(getString(R.string.first_intermediate_dest_description))
+ .setIcon(getFirstIntermDestIcon())
+ .setTitle(getString(R.string.add_as_first_destination_point))
+ .setLayoutId(R.layout.bottom_sheet_item_with_descr_56dp)
+ .setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ targetPointsHelper.navigateToPoint(latLon, true, 0, name);
+ dismiss();
+ }
+ })
+ .create();
+ items.add(firstIntermItem);
+
+ BaseBottomSheetItem lastIntermItem = new BottomSheetItemWithDescription.Builder()
+ .setDescription(getString(R.string.last_intermediate_dest_description))
+ .setIcon(getLastIntermDistIcon())
+ .setTitle(getString(R.string.add_as_last_destination_point))
+ .setLayoutId(R.layout.bottom_sheet_item_with_descr_56dp)
+ .setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ targetPointsHelper.navigateToPoint(latLon, true,
+ targetPointsHelper.getIntermediatePoints().size(), name);
+ dismiss();
+ }
+ })
+ .create();
+ items.add(lastIntermItem);
+
+ return inflateMainView();
}
@Override
@@ -125,6 +138,11 @@ public class AddWaypointBottomSheetDialogFragment extends MenuBottomSheetDialogF
closeContextMenu();
}
+ @Override
+ protected int getCloseRowDividerColorId() {
+ return nightMode ? R.color.route_info_bottom_view_bg_dark : -1;
+ }
+
@Override
protected Drawable getActiveIcon(@DrawableRes int id) {
return getIcon(id, nightMode ? R.color.ctx_menu_direction_color_dark : R.color.map_widget_blue);