From 46828f074e3024c9c8b0eee539a586c45e19bb99 Mon Sep 17 00:00:00 2001 From: Roman Romanov Date: Wed, 14 Jun 2017 08:22:34 +0400 Subject: [PATCH 1/6] [android] RoutingPlanController refactoring. --- .../routing/RoutingBottomMenuController.java | 263 ++++++++++++++++++ .../maps/routing/RoutingPlanController.java | 237 ++-------------- .../routing/RoutingPlanInplaceController.java | 10 - 3 files changed, 285 insertions(+), 225 deletions(-) create mode 100644 android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java diff --git a/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java b/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java new file mode 100644 index 0000000000..6a3a9974df --- /dev/null +++ b/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java @@ -0,0 +1,263 @@ +package com.mapswithme.maps.routing; + +import android.app.Activity; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.location.Location; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.StringRes; +import android.support.v4.content.ContextCompat; +import android.support.v4.view.PagerAdapter; +import android.support.v4.view.ViewPager; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import com.mapswithme.maps.Framework; +import com.mapswithme.maps.MwmActivity; +import com.mapswithme.maps.R; +import com.mapswithme.maps.bookmarks.data.MapObject; +import com.mapswithme.maps.location.LocationHelper; +import com.mapswithme.maps.uber.UberAdapter; +import com.mapswithme.maps.uber.UberInfo; +import com.mapswithme.maps.uber.UberLinks; +import com.mapswithme.maps.widget.DotPager; +import com.mapswithme.util.Graphics; +import com.mapswithme.util.UiUtils; +import com.mapswithme.util.Utils; +import com.mapswithme.util.statistics.AlohaHelper; +import com.mapswithme.util.statistics.Statistics; + +import java.util.List; +import java.util.Locale; + +final class RoutingBottomMenuController +{ + private static final String STATE_ALTITUDE_CHART_SHOWN = "altitude_chart_shown"; + private static final String STATE_TAXI_INFO = "taxi_info"; + + @NonNull + private final Activity mContext; + @NonNull + private final View mAltitudeChartFrame; + @NonNull + private final View mUberFrame; + @NonNull + private final TextView mError; + @NonNull + private final Button mStart; + @NonNull + private final ImageView mAltitudeChart; + @NonNull + private final TextView mAltitudeDifference; + @NonNull + private final View mNumbersFrame; + + @Nullable + private UberInfo mUberInfo; + @Nullable + private UberInfo.Product mUberProduct; + + RoutingBottomMenuController(@NonNull Activity context, + @NonNull View altitudeChartFrame, + @NonNull View uberFrame, + @NonNull TextView error, + @NonNull Button start, + @NonNull ImageView altitudeChart, + @NonNull TextView altitudeDifference, + @NonNull View numbersFrame) + { + mContext = context; + mAltitudeChartFrame = altitudeChartFrame; + mUberFrame = uberFrame; + mError = error; + mStart = start; + mAltitudeChart = altitudeChart; + mAltitudeDifference = altitudeDifference; + mNumbersFrame = numbersFrame; + UiUtils.hide(mAltitudeChartFrame, mUberFrame); + } + + void showAltitudeChartAndRoutingDetails() + { + UiUtils.hide(mError, mUberFrame); + + showRouteAltitudeChart(); + showRoutingDetails(); + UiUtils.show(mAltitudeChartFrame); + } + + void hideAltitudeChartAndRoutingDetails() + { + if (UiUtils.isHidden(mAltitudeChartFrame)) + return; + + UiUtils.hide(mAltitudeChartFrame); + } + + void showUberInfo(@NonNull UberInfo info) + { + UiUtils.hide(mError, mAltitudeChartFrame); + + final List products = info.getProducts(); + mUberInfo = info; + mUberProduct = products.get(0); + final PagerAdapter adapter = new UberAdapter(mContext, products); + DotPager pager = new DotPager.Builder(mContext, (ViewPager) mUberFrame.findViewById(R.id.pager), + adapter) + .setIndicatorContainer((ViewGroup) mUberFrame.findViewById(R.id.indicator)) + .setPageChangedListener(new DotPager.OnPageChangedListener() + { + @Override + public void onPageChanged(int position) + { + mUberProduct = products.get(position); + } + }).build(); + pager.show(); + + setStartButton(); + UiUtils.show(mUberFrame); + } + + void setStartButton() + { + if (RoutingController.get().isTaxiRouterType()) + { + final boolean isUberInstalled = Utils.isUberInstalled(mContext); + mStart.setText(isUberInstalled ? R.string.taxi_order : R.string.install_app); + mStart.setOnClickListener(new View.OnClickListener() + { + @Override + public void onClick(View v) + { + if (mUberProduct != null) + { + UberLinks links = RoutingController.get().getUberLink(mUberProduct.getProductId()); + if (links != null) + { + Utils.launchUber(mContext, links); + trackUberStatistics(isUberInstalled); + } + } + } + }); + } else + { + mStart.setText(mContext.getText(R.string.p2p_start)); + mStart.setOnClickListener(new View.OnClickListener() + { + @Override + public void onClick(View v) + { + ((MwmActivity)mContext).closeMenu(Statistics.EventName.ROUTING_START, AlohaHelper.ROUTING_START, new Runnable() + { + @Override + public void run() + { + RoutingController.get().start(); + } + }); + } + }); + } + + UiUtils.updateAccentButton(mStart); + showStartButton(true); + } + + void showError(@StringRes int message) + { + UiUtils.hide(mUberFrame, mAltitudeChartFrame); + mError.setText(message); + mError.setVisibility(View.VISIBLE); + showStartButton(false); + } + + void showStartButton(boolean show) + { + UiUtils.showIf(show, mStart); + } + + void saveRoutingPanelState(@NonNull Bundle outState) + { + outState.putBoolean(STATE_ALTITUDE_CHART_SHOWN, UiUtils.isVisible(mAltitudeChartFrame)); + outState.putParcelable(STATE_TAXI_INFO, mUberInfo); + } + + void restoreRoutingPanelState(@NonNull Bundle state) + { + if (state.getBoolean(STATE_ALTITUDE_CHART_SHOWN)) + showAltitudeChartAndRoutingDetails(); + + UberInfo info = state.getParcelable(STATE_TAXI_INFO); + if (info != null) + showUberInfo(info); + } + + private void showRouteAltitudeChart() + { + if (RoutingController.get().isVehicleRouterType()) + { + UiUtils.hide(mAltitudeChart, mAltitudeDifference); + return; + } + + int chartWidth = UiUtils.dimen(mContext, R.dimen.altitude_chart_image_width); + int chartHeight = UiUtils.dimen(mContext, R.dimen.altitude_chart_image_height); + Framework.RouteAltitudeLimits limits = new Framework.RouteAltitudeLimits(); + Bitmap bm = Framework.generateRouteAltitudeChart(chartWidth, chartHeight, limits); + if (bm != null) + { + mAltitudeChart.setImageBitmap(bm); + UiUtils.show(mAltitudeChart); + String meter = mAltitudeDifference.getResources().getString(R.string.meter); + String foot = mAltitudeDifference.getResources().getString(R.string.foot); + mAltitudeDifference.setText(String.format(Locale.getDefault(), "%d %s", + limits.maxRouteAltitude - limits.minRouteAltitude, + limits.isMetricUnits ? meter : foot)); + Drawable icon = ContextCompat.getDrawable(mAltitudeDifference.getContext(), + R.drawable.ic_altitude_difference); + int colorAccent = ContextCompat.getColor(mAltitudeDifference.getContext(), + UiUtils.getStyledResourceId(mAltitudeDifference.getContext(), R.attr.colorAccent)); + mAltitudeDifference.setCompoundDrawablesWithIntrinsicBounds(Graphics.tint(icon, colorAccent), + null, null, null); + UiUtils.show(mAltitudeDifference); + } + } + + private void showRoutingDetails() + { + final RoutingInfo rinfo = RoutingController.get().getCachedRoutingInfo(); + if (rinfo == null) + { + UiUtils.hide(mNumbersFrame); + return; + } + + TextView numbersTime = (TextView) mNumbersFrame.findViewById(R.id.time); + TextView numbersDistance = (TextView) mNumbersFrame.findViewById(R.id.distance); + TextView numbersArrival = (TextView) mNumbersFrame.findViewById(R.id.arrival); + numbersTime.setText(RoutingController.formatRoutingTime(mContext, rinfo.totalTimeInSeconds, + R.dimen.text_size_routing_number)); + numbersDistance.setText(rinfo.distToTarget + " " + rinfo.targetUnits); + + if (numbersArrival != null) + { + String arrivalTime = RoutingController.formatArrivalTime(rinfo.totalTimeInSeconds); + numbersArrival.setText(arrivalTime); + } + } + + private static void trackUberStatistics(boolean isUberInstalled) + { + MapObject from = RoutingController.get().getStartPoint(); + MapObject to = RoutingController.get().getEndPoint(); + Location location = LocationHelper.INSTANCE.getLastKnownLocation(); + Statistics.INSTANCE.trackUber(from, to, location, isUberInstalled); + } +} diff --git a/android/src/com/mapswithme/maps/routing/RoutingPlanController.java b/android/src/com/mapswithme/maps/routing/RoutingPlanController.java index 395fa3f66d..1ac42c494b 100644 --- a/android/src/com/mapswithme/maps/routing/RoutingPlanController.java +++ b/android/src/com/mapswithme/maps/routing/RoutingPlanController.java @@ -3,19 +3,13 @@ package com.mapswithme.maps.routing; import android.animation.Animator; import android.animation.ValueAnimator; import android.app.Activity; -import android.graphics.Bitmap; import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.location.Location; import android.os.Bundle; import android.support.annotation.DrawableRes; import android.support.annotation.IdRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.StringRes; -import android.support.v4.content.ContextCompat; -import android.support.v4.view.PagerAdapter; -import android.support.v4.view.ViewPager; import android.view.View; import android.view.ViewGroup; import android.widget.Button; @@ -26,35 +20,21 @@ import android.widget.RadioGroup; import android.widget.TextView; import com.mapswithme.maps.Framework; -import com.mapswithme.maps.MwmActivity; import com.mapswithme.maps.MwmApplication; import com.mapswithme.maps.R; -import com.mapswithme.maps.bookmarks.data.MapObject; -import com.mapswithme.maps.location.LocationHelper; import com.mapswithme.maps.uber.Uber; -import com.mapswithme.maps.uber.UberAdapter; import com.mapswithme.maps.uber.UberInfo; -import com.mapswithme.maps.uber.UberLinks; -import com.mapswithme.maps.widget.DotPager; import com.mapswithme.maps.widget.RotateDrawable; import com.mapswithme.maps.widget.RoutingToolbarButton; import com.mapswithme.maps.widget.ToolbarController; import com.mapswithme.maps.widget.WheelProgressView; -import com.mapswithme.util.Graphics; import com.mapswithme.util.UiUtils; -import com.mapswithme.util.Utils; import com.mapswithme.util.statistics.AlohaHelper; import com.mapswithme.util.statistics.Statistics; -import java.util.List; -import java.util.Locale; - public class RoutingPlanController extends ToolbarController implements SlotFrame.SlotClickListener { static final int ANIM_TOGGLE = MwmApplication.get().getResources().getInteger(R.integer.anim_slots_toggle); - private static final String STATE_ALTITUDE_CHART_SHOWN = "altitude_chart_shown"; - private static final String STATE_TAXI_INFO = "taxi_info"; - protected final View mFrame; private final ImageView mToggle; @@ -65,18 +45,13 @@ public class RoutingPlanController extends ToolbarController implements SlotFram private final WheelProgressView mProgressBicycle; private final WheelProgressView mProgressTaxi; - private final View mAltitudeChartFrame; - private final View mUberFrame; + @NonNull + private final RoutingBottomMenuController mRoutingBottomMenuController; private final RotateDrawable mToggleImage = new RotateDrawable(R.drawable.ic_down); int mFrameHeight; private int mToolbarHeight; private boolean mOpen; - @Nullable - private UberInfo mUberInfo; - - @Nullable - private UberInfo.Product mUberProduct; @Nullable private OnToggleListener mToggleListener; @@ -178,11 +153,19 @@ public class RoutingPlanController extends ToolbarController implements SlotFram mProgressBicycle = (WheelProgressView) progressFrame.findViewById(R.id.progress_bicycle); mProgressTaxi = (WheelProgressView) progressFrame.findViewById(R.id.progress_taxi); - mAltitudeChartFrame = getViewById(R.id.altitude_chart_panel); - UiUtils.hide(mAltitudeChartFrame); - mUberFrame = getViewById(R.id.uber_panel); - UiUtils.hide(mUberFrame); + View altitudeChartFrame = getViewById(R.id.altitude_chart_panel); + View uberFrame = getViewById(R.id.uber_panel); + TextView error = (TextView) getViewById(R.id.error); + Button start = (Button) getViewById(R.id.start); + ImageView altitudeChart = (ImageView) getViewById(R.id.altitude_chart); + TextView altitudeDifference = (TextView) getViewById(R.id.altitude_difference); + View numbersFrame = getViewById(R.id.numbers); + mRoutingBottomMenuController = new RoutingBottomMenuController(activity, altitudeChartFrame, + uberFrame, error, start, + altitudeChart, + altitudeDifference, + numbersFrame); mToggle.setImageDrawable(mToggleImage); mToggle.setOnClickListener(new View.OnClickListener() @@ -258,58 +241,15 @@ public class RoutingPlanController extends ToolbarController implements SlotFram if (!ready) { - hideAltitudeChartAndRoutingDetails(); + mRoutingBottomMenuController.hideAltitudeChartAndRoutingDetails(); return; } if (!isTaxiRouterType()) - setStartButton(); - showAltitudeChartAndRoutingDetails(); - } - - private void showAltitudeChartAndRoutingDetails() - { - if (isTaxiRouterType()) - return; - - UiUtils.hide(getViewById(R.id.error)); - UiUtils.hide(mUberFrame); - - showRouteAltitudeChart(); - showRoutingDetails(); - UiUtils.show(mAltitudeChartFrame); - } - - private void showRoutingDetails() - { - final View numbersFrame = mAltitudeChartFrame.findViewById(R.id.numbers); - final RoutingInfo rinfo = RoutingController.get().getCachedRoutingInfo(); - if (rinfo == null) { - UiUtils.hide(numbersFrame); - return; + mRoutingBottomMenuController.setStartButton(); + mRoutingBottomMenuController.showAltitudeChartAndRoutingDetails(); } - - TextView numbersTime = (TextView) numbersFrame.findViewById(R.id.time); - TextView numbersDistance = (TextView) numbersFrame.findViewById(R.id.distance); - TextView numbersArrival = (TextView) numbersFrame.findViewById(R.id.arrival); - numbersTime.setText(RoutingController.formatRoutingTime(mFrame.getContext(), rinfo.totalTimeInSeconds, - R.dimen.text_size_routing_number)); - numbersDistance.setText(rinfo.distToTarget + " " + rinfo.targetUnits); - - if (numbersArrival != null) - { - String arrivalTime = RoutingController.formatArrivalTime(rinfo.totalTimeInSeconds); - numbersArrival.setText(arrivalTime); - } - } - - private void hideAltitudeChartAndRoutingDetails() - { - if (UiUtils.isHidden(mAltitudeChartFrame)) - return; - - UiUtils.hide(mAltitudeChartFrame); } public void updateBuildProgress(int progress, @Framework.RouterType int router) @@ -433,11 +373,6 @@ public class RoutingPlanController extends ToolbarController implements SlotFram } } - private boolean isVehicleRouterType() - { - return RoutingController.get().isVehicleRouterType(); - } - private boolean isTaxiRouterType() { return RoutingController.get().isTaxiRouterType(); @@ -454,68 +389,9 @@ public class RoutingPlanController extends ToolbarController implements SlotFram return mOpen; } - public void showRouteAltitudeChart() - { - ImageView altitudeChart = (ImageView) mFrame.findViewById(R.id.altitude_chart); - TextView altitudeDifference = (TextView) mAltitudeChartFrame.findViewById(R.id.altitude_difference); - showRouteAltitudeChartInternal(altitudeChart, altitudeDifference); - } - - void showRouteAltitudeChartInternal(@NonNull ImageView altitudeChart, - @NonNull TextView altitudeDifference) - { - if (isVehicleRouterType()) - { - UiUtils.hide(altitudeChart); - UiUtils.hide(altitudeDifference); - return; - } - - int chartWidth = UiUtils.dimen(mActivity, R.dimen.altitude_chart_image_width); - int chartHeight = UiUtils.dimen(mActivity, R.dimen.altitude_chart_image_height); - Framework.RouteAltitudeLimits limits = new Framework.RouteAltitudeLimits(); - Bitmap bm = Framework.generateRouteAltitudeChart(chartWidth, chartHeight, limits); - if (bm != null) - { - altitudeChart.setImageBitmap(bm); - UiUtils.show(altitudeChart); - String meter = altitudeDifference.getResources().getString(R.string.meter); - String foot = altitudeDifference.getResources().getString(R.string.foot); - altitudeDifference.setText(String.format(Locale.getDefault(), "%d %s", - limits.maxRouteAltitude - limits.minRouteAltitude, - limits.isMetricUnits ? meter : foot)); - Drawable icon = ContextCompat.getDrawable(altitudeDifference.getContext(), - R.drawable.ic_altitude_difference); - int colorAccent = ContextCompat.getColor(altitudeDifference.getContext(), - UiUtils.getStyledResourceId(altitudeDifference.getContext(), R.attr.colorAccent)); - altitudeDifference.setCompoundDrawablesWithIntrinsicBounds(Graphics.tint(icon,colorAccent), - null, null, null); - UiUtils.show(altitudeDifference); - } - } - public void showUberInfo(@NonNull UberInfo info) { - UiUtils.hide(getViewById(R.id.error), mAltitudeChartFrame); - - final List products = info.getProducts(); - mUberInfo = info; - mUberProduct = products.get(0); - final PagerAdapter adapter = new UberAdapter(mActivity, products); - DotPager pager = new DotPager.Builder(mActivity, (ViewPager) mUberFrame.findViewById(R.id.pager), adapter) - .setIndicatorContainer((ViewGroup) mUberFrame.findViewById(R.id.indicator)) - .setPageChangedListener(new DotPager.OnPageChangedListener() - { - @Override - public void onPageChanged(int position) - { - mUberProduct = products.get(position); - } - }).build(); - pager.show(); - - setStartButton(); - UiUtils.show(mUberFrame); + mRoutingBottomMenuController.showUberInfo(info); } public void showUberError(@NonNull Uber.ErrorCode code) @@ -544,19 +420,12 @@ public class RoutingPlanController extends ToolbarController implements SlotFram private void showError(@StringRes int message) { - UiUtils.hide(mUberFrame, mAltitudeChartFrame); - TextView error = (TextView) getViewById(R.id.error); - error.setText(message); - error.setVisibility(View.VISIBLE); - showStartButton(false); + mRoutingBottomMenuController.showError(message); } void showStartButton(boolean show) { - if (show) - UiUtils.show(getViewById(R.id.start)); - else - UiUtils.hide(getViewById(R.id.start)); + mRoutingBottomMenuController.showStartButton(show); } @NonNull @@ -570,74 +439,12 @@ public class RoutingPlanController extends ToolbarController implements SlotFram void saveRoutingPanelState(@NonNull Bundle outState) { - outState.putBoolean(STATE_ALTITUDE_CHART_SHOWN, UiUtils.isVisible(mAltitudeChartFrame)); - outState.putParcelable(STATE_TAXI_INFO, mUberInfo); + mRoutingBottomMenuController.saveRoutingPanelState(outState); } void restoreRoutingPanelState(@NonNull Bundle state) { - if (state.getBoolean(STATE_ALTITUDE_CHART_SHOWN)) - showRouteAltitudeChart(); - - UberInfo info = state.getParcelable(STATE_TAXI_INFO); - if (info != null) - showUberInfo(info); - } - - private void setStartButton() - { - Button start = (Button) getViewById(R.id.start); - - if (isTaxiRouterType()) - { - final boolean isUberInstalled = Utils.isUberInstalled(mActivity); - start.setText(isUberInstalled ? R.string.taxi_order : R.string.install_app); - start.setOnClickListener(new View.OnClickListener() - { - @Override - public void onClick(View v) - { - if (mUberProduct != null) - { - UberLinks links = RoutingController.get().getUberLink(mUberProduct.getProductId()); - if (links != null) - { - Utils.launchUber(mActivity, links); - trackUberStatistics(isUberInstalled); - } - } - } - }); - } else - { - start.setText(mActivity.getText(R.string.p2p_start)); - start.setOnClickListener(new View.OnClickListener() - { - @Override - public void onClick(View v) - { - ((MwmActivity)mActivity).closeMenu(Statistics.EventName.ROUTING_START, AlohaHelper.ROUTING_START, new Runnable() - { - @Override - public void run() - { - RoutingController.get().start(); - } - }); - } - }); - } - - UiUtils.updateAccentButton(start); - showStartButton(true); - } - - private static void trackUberStatistics(boolean isUberInstalled) - { - MapObject from = RoutingController.get().getStartPoint(); - MapObject to = RoutingController.get().getEndPoint(); - Location location = LocationHelper.INSTANCE.getLastKnownLocation(); - Statistics.INSTANCE.trackUber(from, to, location, isUberInstalled); + mRoutingBottomMenuController.restoreRoutingPanelState(state); } public int getHeight() diff --git a/android/src/com/mapswithme/maps/routing/RoutingPlanInplaceController.java b/android/src/com/mapswithme/maps/routing/RoutingPlanInplaceController.java index 6d63834e87..b53da103bf 100644 --- a/android/src/com/mapswithme/maps/routing/RoutingPlanInplaceController.java +++ b/android/src/com/mapswithme/maps/routing/RoutingPlanInplaceController.java @@ -5,8 +5,6 @@ import android.animation.ValueAnimator; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.widget.ImageView; -import android.widget.TextView; import com.mapswithme.maps.MwmActivity; import com.mapswithme.maps.R; @@ -71,14 +69,6 @@ public class RoutingPlanInplaceController extends RoutingPlanController restoreRoutingPanelState(state); } - @Override - public void showRouteAltitudeChart() - { - ImageView altitudeChart = (ImageView) mActivity.findViewById(R.id.altitude_chart); - TextView altitudeDifference = (TextView) mActivity.findViewById(R.id.altitude_difference); - showRouteAltitudeChartInternal(altitudeChart, altitudeDifference); - } - private void animateFrame(final boolean show, final @Nullable Runnable completion) { if (!checkFrameHeight()) From ab95108f914777c12915fe64553331c1c254c54a Mon Sep 17 00:00:00 2001 From: Roman Romanov Date: Thu, 15 Jun 2017 08:28:56 +0400 Subject: [PATCH 2/6] [strings] Added routing strings --- strings.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/strings.txt b/strings.txt index 9c5d4d9764..e07f7d53a2 100644 --- a/strings.txt +++ b/strings.txt @@ -24569,3 +24569,12 @@ [exit] en = Exit ru = Выход + + [routing_add_start_point] + en = Add start point to plan a route. + + [routing_add_finish_point] + en = Add finish to plan a route. + + [use] + en = Use From db7f0add1beafc96813232df1f40b848eb64189d Mon Sep 17 00:00:00 2001 From: Roman Romanov Date: Thu, 15 Jun 2017 08:30:58 +0400 Subject: [PATCH 3/6] [strings] Generated strings --- android/res/values/strings.xml | 3 +++ iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings | 6 ++++++ .../Maps/LocalizedStrings/en-GB.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings | 6 ++++++ iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings | 6 ++++++ .../Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings | 6 ++++++ .../Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings | 6 ++++++ 30 files changed, 177 insertions(+) diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml index a6dbcfefaf..b746857216 100644 --- a/android/res/values/strings.xml +++ b/android/res/values/strings.xml @@ -1140,4 +1140,7 @@ If a street or an object doesn\'t have a name in your language, it will be spelt using the Latin alphabet. Learn more Exit + Add start point to plan a route. + Add finish to plan a route. + Use diff --git a/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings index 6206edd0fa..97bef97754 100644 --- a/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ar.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings index 16f0511957..55c23b7cab 100644 --- a/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/cs.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings index 99d80f4409..5608dccc7f 100644 --- a/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/da.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings index 0e5512804c..0b7ed2ee49 100644 --- a/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/de.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings index c907268d9c..4bd2b7a605 100644 --- a/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/el.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings index 96b6434836..66774df201 100644 --- a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings index 38c130064f..cb45874ff1 100644 --- a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings index 6d3f9de2de..87fd0d9ce1 100644 --- a/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/es.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings index 819d0b8f2c..a47a854a9d 100644 --- a/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fi.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings index 871a2519ef..ad34c11052 100644 --- a/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/fr.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings index d7f5a54657..9508e95aa9 100644 --- a/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/hu.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings index 9837380e52..6fbdc68900 100644 --- a/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/id.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings index 7b98ba870e..7283be78db 100644 --- a/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/it.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings index 21357e4160..56b6bb95a5 100644 --- a/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ja.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings index 3701f3187d..06b9c3e4e4 100644 --- a/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ko.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings index 5a2c5f5cfb..6089924425 100644 --- a/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/nb.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings index d4c9d47473..96382d0ccd 100644 --- a/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/nl.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings index af6cce9e5c..96db5ce69e 100644 --- a/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pl.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings index f85654942d..7568428689 100644 --- a/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/pt.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings index 2d9797e781..b5fbc714be 100644 --- a/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ro.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings index 777b0874f6..7aa6b87ab2 100644 --- a/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/ru.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Узнать больше"; "exit" = "Выход"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings index ec1721591a..3d5b07ced9 100644 --- a/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sk.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings index e634ada139..f32d1a2135 100644 --- a/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/sv.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings index 728a9694f9..3488e4b3bb 100644 --- a/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/th.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings index 20686a6640..1d1b019c43 100644 --- a/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/tr.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings index 88ca67b4f9..7678b3de05 100644 --- a/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/uk.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings index c80c6a34ae..49181b1f4f 100644 --- a/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/vi.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings index 47069d1c69..a601fd2bb0 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/zh-Hans.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; diff --git a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings index d0fc269228..e9d2444dd6 100644 --- a/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/zh-Hant.lproj/Localizable.strings @@ -1936,3 +1936,9 @@ "learn_more" = "Learn more"; "exit" = "Exit"; + +"routing_add_start_point" = "Add start point to plan a route."; + +"routing_add_finish_point" = "Add finish to plan a route."; + +"use" = "Use"; From 3e03f492ea518a45cb78af7f40b68acc55aab306 Mon Sep 17 00:00:00 2001 From: Roman Romanov Date: Thu, 15 Jun 2017 08:59:18 +0400 Subject: [PATCH 4/6] [android] Added routing action panel layout --- android/res/drawable/ic_my_location.xml | 4 ++ android/res/layout/fragment_routing.xml | 5 ++ android/res/layout/menu.xml | 8 ++++ android/res/layout/routing_action_panel.xml | 53 +++++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 android/res/drawable/ic_my_location.xml create mode 100644 android/res/layout/routing_action_panel.xml diff --git a/android/res/drawable/ic_my_location.xml b/android/res/drawable/ic_my_location.xml new file mode 100644 index 0000000000..3bb45c9a66 --- /dev/null +++ b/android/res/drawable/ic_my_location.xml @@ -0,0 +1,4 @@ + + + diff --git a/android/res/layout/fragment_routing.xml b/android/res/layout/fragment_routing.xml index 7de5276355..390573b2de 100644 --- a/android/res/layout/fragment_routing.xml +++ b/android/res/layout/fragment_routing.xml @@ -18,6 +18,11 @@ android:layout_width="match_parent" android:layout_height="wrap_content"/> + + + + diff --git a/android/res/layout/routing_action_panel.xml b/android/res/layout/routing_action_panel.xml new file mode 100644 index 0000000000..54d4c1fa06 --- /dev/null +++ b/android/res/layout/routing_action_panel.xml @@ -0,0 +1,53 @@ + + + + + + + + From 3bc2665a7414f88c8a55165be581038c5d3ad22c Mon Sep 17 00:00:00 2001 From: Roman Romanov Date: Thu, 15 Jun 2017 11:48:31 +0400 Subject: [PATCH 5/6] [android] Added routing action panel behavior --- android/res/layout/routing_action_panel.xml | 2 + android/res/values/dimens.xml | 3 + .../src/com/mapswithme/maps/MwmActivity.java | 78 +++++++++++++++++++ .../routing/RoutingBottomMenuController.java | 70 +++++++++++++++-- .../maps/routing/RoutingController.java | 12 +++ .../maps/routing/RoutingPlanController.java | 18 ++++- .../maps/routing/RoutingPlanFragment.java | 15 ++++ 7 files changed, 190 insertions(+), 8 deletions(-) diff --git a/android/res/layout/routing_action_panel.xml b/android/res/layout/routing_action_panel.xml index 54d4c1fa06..a50364cce8 100644 --- a/android/res/layout/routing_action_panel.xml +++ b/android/res/layout/routing_action_panel.xml @@ -17,6 +17,8 @@ android:textAppearance="@style/MwmTextAppearance.Body3" android:layout_marginLeft="@dimen/margin_base" android:layout_marginRight="@dimen/margin_base" + android:layout_marginTop="@dimen/routing_action_panel_margin_vert" + android:layout_marginBottom="@dimen/routing_action_panel_margin_vert" tools:text="Add start point to plan a route."/> 40dp 232dp + + 14dp + 100dp 150dp diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index 19af8d699b..207b29c0d7 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -1612,6 +1612,33 @@ public class MwmActivity extends BaseMwmFragmentActivity if (controller.isPlanning() || controller.isBuilding() || controller.isErrorEncountered()) { + if (!controller.hasStartPoint()) + { + needsStartPoint(); + showLineFrame(true, new Runnable() + { + @Override + public void run() + { + adjustRuler(0, 0); + } + }); + return; + } + if (!controller.hasEndPoint()) + { + needsFinishPoint(); + showLineFrame(true, new Runnable() + { + @Override + public void run() + { + adjustRuler(0, 0); + } + }); + return; + } + showLineFrame(false, new Runnable() { @Override @@ -1627,6 +1654,7 @@ public class MwmActivity extends BaseMwmFragmentActivity return; } + hideRoutingActionFrame(); showLineFrame(true, new Runnable() { @Override @@ -1640,6 +1668,48 @@ public class MwmActivity extends BaseMwmFragmentActivity completion.run(); } + private void needsStartPoint() + { + if (mIsFragmentContainer) + { + RoutingPlanFragment fragment = (RoutingPlanFragment) getFragment(RoutingPlanFragment.class); + if (fragment != null) + fragment.needsStartPoint(); + } + else + { + mRoutingPlanInplaceController.needsStartPoint(); + } + } + + private void needsFinishPoint() + { + if (mIsFragmentContainer) + { + RoutingPlanFragment fragment = (RoutingPlanFragment) getFragment(RoutingPlanFragment.class); + if (fragment != null) + fragment.needsFinishPoint(); + } + else + { + mRoutingPlanInplaceController.needsFinishPoint(); + } + } + + private void hideRoutingActionFrame() + { + if (mIsFragmentContainer) + { + RoutingPlanFragment fragment = (RoutingPlanFragment) getFragment(RoutingPlanFragment.class); + if (fragment != null) + fragment.hideActionFrame(); + } + else + { + mRoutingPlanInplaceController.hideActionFrame(); + } + } + private void showLineFrame(boolean show, @Nullable Runnable completion) { mMainMenu.showLineFrame(show, completion); @@ -1674,6 +1744,14 @@ public class MwmActivity extends BaseMwmFragmentActivity if (mIsFragmentContainer) { replaceFragment(RoutingPlanFragment.class, null, completionListener); + if (!RoutingController.get().hasStartPoint()) + { + needsStartPoint(); + } + else if (!RoutingController.get().hasEndPoint()) + { + needsFinishPoint(); + } adjustTraffic(UiUtils.dimen(R.dimen.panel_width), UiUtils.getStatusBarHeight(getApplicationContext())); } else diff --git a/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java b/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java index 6a3a9974df..c06f7ac417 100644 --- a/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java +++ b/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java @@ -11,6 +11,7 @@ import android.support.annotation.StringRes; import android.support.v4.content.ContextCompat; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.Button; @@ -35,7 +36,7 @@ import com.mapswithme.util.statistics.Statistics; import java.util.List; import java.util.Locale; -final class RoutingBottomMenuController +final class RoutingBottomMenuController implements View.OnClickListener { private static final String STATE_ALTITUDE_CHART_SHOWN = "altitude_chart_shown"; private static final String STATE_TAXI_INFO = "taxi_info"; @@ -56,6 +57,14 @@ final class RoutingBottomMenuController private final TextView mAltitudeDifference; @NonNull private final View mNumbersFrame; + @NonNull + private final View mActionFrame; + @NonNull + private final TextView mActionMessage; + @NonNull + private final View mActionButton; + @NonNull + private final ImageView mActionIcon; @Nullable private UberInfo mUberInfo; @@ -69,7 +78,8 @@ final class RoutingBottomMenuController @NonNull Button start, @NonNull ImageView altitudeChart, @NonNull TextView altitudeDifference, - @NonNull View numbersFrame) + @NonNull View numbersFrame, + @NonNull View actionFrame) { mContext = context; mAltitudeChartFrame = altitudeChartFrame; @@ -79,12 +89,25 @@ final class RoutingBottomMenuController mAltitudeChart = altitudeChart; mAltitudeDifference = altitudeDifference; mNumbersFrame = numbersFrame; - UiUtils.hide(mAltitudeChartFrame, mUberFrame); + mActionFrame = actionFrame; + mActionMessage = (TextView) actionFrame.findViewById(R.id.tv__message); + mActionButton = actionFrame.findViewById(R.id.btn__my_position_use); + mActionIcon = (ImageView) mActionButton.findViewById(R.id.iv__icon); + mActionButton.setOnClickListener(this); + mActionFrame.setOnTouchListener(new View.OnTouchListener() + { + @Override + public boolean onTouch(View v, MotionEvent event) + { + return !(UiUtils.isVisible(mActionButton) && UiUtils.isViewTouched(event, mActionButton)); + } + }); + UiUtils.hide(mAltitudeChartFrame, mUberFrame, mActionFrame); } void showAltitudeChartAndRoutingDetails() { - UiUtils.hide(mError, mUberFrame); + UiUtils.hide(mError, mUberFrame, mActionFrame); showRouteAltitudeChart(); showRoutingDetails(); @@ -124,6 +147,28 @@ final class RoutingBottomMenuController UiUtils.show(mUberFrame); } + void needsStartPoint() + { + UiUtils.show(mActionFrame, mActionButton); + mActionMessage.setText(R.string.routing_add_start_point); + Drawable icon = ContextCompat.getDrawable(mContext, R.drawable.ic_my_location); + int colorAccent = ContextCompat.getColor(mContext, + UiUtils.getStyledResourceId(mContext, R.attr.colorAccent)); + mActionIcon.setImageDrawable(Graphics.tint(icon, colorAccent)); + } + + void needsFinishPoint() + { + UiUtils.show(mActionFrame); + mActionMessage.setText(R.string.routing_add_finish_point); + UiUtils.hide(mActionButton); + } + + void hideActionFrame() + { + UiUtils.hide(mActionFrame); + } + void setStartButton() { if (RoutingController.get().isTaxiRouterType()) @@ -220,10 +265,10 @@ final class RoutingBottomMenuController mAltitudeDifference.setText(String.format(Locale.getDefault(), "%d %s", limits.maxRouteAltitude - limits.minRouteAltitude, limits.isMetricUnits ? meter : foot)); - Drawable icon = ContextCompat.getDrawable(mAltitudeDifference.getContext(), + Drawable icon = ContextCompat.getDrawable(mContext, R.drawable.ic_altitude_difference); - int colorAccent = ContextCompat.getColor(mAltitudeDifference.getContext(), - UiUtils.getStyledResourceId(mAltitudeDifference.getContext(), R.attr.colorAccent)); + int colorAccent = ContextCompat.getColor(mContext, + UiUtils.getStyledResourceId(mContext, R.attr.colorAccent)); mAltitudeDifference.setCompoundDrawablesWithIntrinsicBounds(Graphics.tint(icon, colorAccent), null, null, null); UiUtils.show(mAltitudeDifference); @@ -260,4 +305,15 @@ final class RoutingBottomMenuController Location location = LocationHelper.INSTANCE.getLastKnownLocation(); Statistics.INSTANCE.trackUber(from, to, location, isUberInstalled); } + + @Override + public void onClick(View v) + { + switch (v.getId()) + { + case R.id.btn__my_position_use: + RoutingController.get().setStartPoint(LocationHelper.INSTANCE.getMyPosition()); + break; + } + } } diff --git a/android/src/com/mapswithme/maps/routing/RoutingController.java b/android/src/com/mapswithme/maps/routing/RoutingController.java index 030361e153..44eb067c95 100644 --- a/android/src/com/mapswithme/maps/routing/RoutingController.java +++ b/android/src/com/mapswithme/maps/routing/RoutingController.java @@ -647,6 +647,16 @@ public class RoutingController return mEndPoint; } + public boolean hasStartPoint() + { + return mStartPoint != null; + } + + public boolean hasEndPoint() + { + return mEndPoint != null; + } + @Nullable RoutingInfo getCachedRoutingInfo() { @@ -809,6 +819,8 @@ public class RoutingController setPointsInternal(); checkAndBuildRoute(); + if (mContainer != null) + mContainer.updateMenu(); } public void setRouterType(@Framework.RouterType int router) diff --git a/android/src/com/mapswithme/maps/routing/RoutingPlanController.java b/android/src/com/mapswithme/maps/routing/RoutingPlanController.java index 1ac42c494b..fc9b8e71ae 100644 --- a/android/src/com/mapswithme/maps/routing/RoutingPlanController.java +++ b/android/src/com/mapswithme/maps/routing/RoutingPlanController.java @@ -161,11 +161,12 @@ public class RoutingPlanController extends ToolbarController implements SlotFram ImageView altitudeChart = (ImageView) getViewById(R.id.altitude_chart); TextView altitudeDifference = (TextView) getViewById(R.id.altitude_difference); View numbersFrame = getViewById(R.id.numbers); + View actionFrame = getViewById(R.id.routing_action_frame); mRoutingBottomMenuController = new RoutingBottomMenuController(activity, altitudeChartFrame, uberFrame, error, start, altitudeChart, altitudeDifference, - numbersFrame); + numbersFrame, actionFrame); mToggle.setImageDrawable(mToggleImage); mToggle.setOnClickListener(new View.OnClickListener() @@ -456,4 +457,19 @@ public class RoutingPlanController extends ToolbarController implements SlotFram { mToggleListener = listener; } + + public void needsStartPoint() + { + mRoutingBottomMenuController.needsStartPoint(); + } + + public void needsFinishPoint() + { + mRoutingBottomMenuController.needsFinishPoint(); + } + + public void hideActionFrame() + { + mRoutingBottomMenuController.hideActionFrame(); + } } diff --git a/android/src/com/mapswithme/maps/routing/RoutingPlanFragment.java b/android/src/com/mapswithme/maps/routing/RoutingPlanFragment.java index 7ef06fef5b..28c1e30660 100644 --- a/android/src/com/mapswithme/maps/routing/RoutingPlanFragment.java +++ b/android/src/com/mapswithme/maps/routing/RoutingPlanFragment.java @@ -77,4 +77,19 @@ public class RoutingPlanFragment extends BaseMwmFragment { mPlanController.saveRoutingPanelState(outState); } + + public void needsStartPoint() + { + mPlanController.needsStartPoint(); + } + + public void needsFinishPoint() + { + mPlanController.needsFinishPoint(); + } + + public void hideActionFrame() + { + mPlanController.hideActionFrame(); + } } From 13f92bb514fb9e2aaff7ee7521c907669eae8500 Mon Sep 17 00:00:00 2001 From: Roman Romanov Date: Fri, 16 Jun 2017 08:51:15 +0400 Subject: [PATCH 6/6] [android] Review fixes --- android/res/layout/routing_action_panel.xml | 1 - .../src/com/mapswithme/maps/MwmActivity.java | 158 ++++++++---------- .../routing/RoutingBottomMenuController.java | 50 ++++-- .../maps/routing/RoutingPlanController.java | 34 +--- .../maps/routing/RoutingPlanFragment.java | 8 +- 5 files changed, 119 insertions(+), 132 deletions(-) diff --git a/android/res/layout/routing_action_panel.xml b/android/res/layout/routing_action_panel.xml index a50364cce8..adecd15015 100644 --- a/android/res/layout/routing_action_panel.xml +++ b/android/res/layout/routing_action_panel.xml @@ -2,7 +2,6 @@