From ebcdca2b9b2739341ff3c5e15d4cce7acf80b755 Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Mon, 12 Mar 2018 12:00:12 +0300 Subject: [PATCH] [android] Taxi Maxim --- android/res/layout/taxi_panel.xml | 8 +-- .../routing/RoutingBottomMenuController.java | 3 +- .../com/mapswithme/maps/taxi/TaxiAdapter.java | 6 +- .../com/mapswithme/maps/taxi/TaxiManager.java | 63 ++++++++++++++++++- .../maps/widget/placepage/PlacePageView.java | 4 +- android/src/com/mapswithme/util/UiUtils.java | 30 --------- .../util/statistics/Statistics.java | 8 +-- 7 files changed, 75 insertions(+), 47 deletions(-) diff --git a/android/res/layout/taxi_panel.xml b/android/res/layout/taxi_panel.xml index f6b02e1380..71cc63dce6 100644 --- a/android/res/layout/taxi_panel.xml +++ b/android/res/layout/taxi_panel.xml @@ -22,10 +22,10 @@ diff --git a/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java b/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java index 0df092cf16..e210376812 100644 --- a/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java +++ b/android/src/com/mapswithme/maps/routing/RoutingBottomMenuController.java @@ -5,7 +5,6 @@ import android.app.Activity; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; -import android.location.Location; import android.os.Bundle; import android.support.annotation.IdRes; import android.support.annotation.NonNull; @@ -167,7 +166,7 @@ final class RoutingBottomMenuController implements View.OnClickListener void showTaxiInfo(@NonNull TaxiInfo info) { UiUtils.hide(mError, mAltitudeChartFrame, mActionFrame, mTransitFrame); - UiUtils.showTaxiIcon((ImageView) mTaxiFrame.findViewById(R.id.iv__logo), info.getType()); + TaxiManager.setTaxiIcon(mTaxiFrame.findViewById(R.id.iv__logo), info.getType()); final List products = info.getProducts(); mTaxiInfo = info; mTaxiProduct = products.get(0); diff --git a/android/src/com/mapswithme/maps/taxi/TaxiAdapter.java b/android/src/com/mapswithme/maps/taxi/TaxiAdapter.java index 49c27ebfd4..db081e5902 100644 --- a/android/src/com/mapswithme/maps/taxi/TaxiAdapter.java +++ b/android/src/com/mapswithme/maps/taxi/TaxiAdapter.java @@ -53,9 +53,9 @@ public class TaxiAdapter extends PagerAdapter String separator; // We ignore all Yandex.Taxi product names until they do support of passing product parameters // to their app via deeplink. - if (mType == TaxiManager.PROVIDER_YANDEX) + if (mType == TaxiManager.PROVIDER_YANDEX || mType == TaxiManager.PROVIDER_MAXIM) { - name.setText(R.string.yandex_taxi_title); + TaxiManager.setTaxiTitle(name, mType); separator = " • ~"; } else @@ -78,7 +78,7 @@ public class TaxiAdapter extends PagerAdapter { if (mType == TaxiManager.PROVIDER_YANDEX) return Utils.formatCurrencyString(product.getPrice(), product.getCurrency()); - // For Uber we don't do formatting, because Uber does it on its side. + // For Uber and Maxim we don't do formatting, because Uber and Maxim does it on its side. return product.getPrice(); } diff --git a/android/src/com/mapswithme/maps/taxi/TaxiManager.java b/android/src/com/mapswithme/maps/taxi/TaxiManager.java index 1c76f398e8..7a244e8c2e 100644 --- a/android/src/com/mapswithme/maps/taxi/TaxiManager.java +++ b/android/src/com/mapswithme/maps/taxi/TaxiManager.java @@ -6,7 +6,10 @@ import android.support.annotation.IntDef; import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.widget.ImageView; +import android.widget.TextView; +import com.mapswithme.maps.R; import com.mapswithme.maps.bookmarks.data.MapObject; import com.mapswithme.maps.location.LocationHelper; import com.mapswithme.maps.routing.RoutingController; @@ -27,11 +30,12 @@ public class TaxiManager { public static final int PROVIDER_UBER = 0; public static final int PROVIDER_YANDEX = 1; + public static final int PROVIDER_MAXIM = 2; public static final TaxiManager INSTANCE = new TaxiManager(); @Retention(RetentionPolicy.SOURCE) - @IntDef({ PROVIDER_UBER, PROVIDER_YANDEX }) + @IntDef({ PROVIDER_UBER, PROVIDER_YANDEX, PROVIDER_MAXIM }) public @interface TaxiType {} @NonNull @@ -103,6 +107,42 @@ public class TaxiManager endPoint.getLon()); } + public static void setTaxiIcon(@NonNull ImageView logo, @TaxiManager.TaxiType int type) + { + switch (type) + { + case TaxiManager.PROVIDER_UBER: + logo.setImageResource(R.drawable.ic_logo_uber); + break; + case TaxiManager.PROVIDER_YANDEX: + logo.setImageResource(R.drawable.ic_logo_yandex_taxi); + break; + case TaxiManager.PROVIDER_MAXIM: + logo.setImageResource(R.drawable.ic_taxi_logo_maksim); + break; + default: + throw new AssertionError("Unsupported taxi type: " + type); + } + } + + public static void setTaxiTitle(@NonNull TextView title, @TaxiManager.TaxiType int type) + { + switch (type) + { + case TaxiManager.PROVIDER_UBER: + title.setText(R.string.uber); + break; + case TaxiManager.PROVIDER_YANDEX: + title.setText(R.string.yandex_taxi_title); + break; + case TaxiManager.PROVIDER_MAXIM: + title.setText(R.string.maxim_taxi_title); + break; + default: + throw new AssertionError("Unsupported taxi type: " + type); + } + } + @NonNull public static String getTaxiPackageName(@TaxiManager.TaxiType int type) { @@ -112,6 +152,24 @@ public class TaxiManager return "com.ubercab"; case TaxiManager.PROVIDER_YANDEX: return "ru.yandex.taxi"; + case TaxiManager.PROVIDER_MAXIM: + return "maximzakaz"; + default: + throw new AssertionError("Unsupported taxi type: " + type); + } + } + + @NonNull + public static String getTaxiStatisticsName(@TaxiManager.TaxiType int type) + { + switch (type) + { + case TaxiManager.PROVIDER_UBER: + return "Uber"; + case TaxiManager.PROVIDER_YANDEX: + return "Yandex"; + case TaxiManager.PROVIDER_MAXIM: + return "Maxim"; default: throw new AssertionError("Unsupported taxi type: " + type); } @@ -132,6 +190,9 @@ public class TaxiManager case TaxiManager.PROVIDER_YANDEX: openMode = Utils.PartnerAppOpenMode.Indirect; break; + case TaxiManager.PROVIDER_MAXIM: + openMode = Utils.PartnerAppOpenMode.Direct; + break; default: throw new AssertionError("Unsupported taxi type: " + type); } diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java index 83b3425914..cf0ff7fced 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java +++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java @@ -1450,8 +1450,8 @@ public class PlacePageView extends RelativeLayout // At this moment we display only a one taxi provider at the same time. @TaxiManager.TaxiType int type = taxiTypes.get(0); - UiUtils.showTaxiIcon((ImageView) mTaxi.findViewById(R.id.iv__place_page_taxi), type); - UiUtils.showTaxiTitle((TextView) mTaxi.findViewById(R.id.tv__place_page_taxi), type); + TaxiManager.setTaxiIcon(mTaxi.findViewById(R.id.iv__place_page_taxi), type); + TaxiManager.setTaxiTitle(mTaxi.findViewById(R.id.tv__place_page_taxi), type); Statistics.INSTANCE.trackTaxiEvent(Statistics.EventName.ROUTING_TAXI_SHOW_IN_PP, type); } diff --git a/android/src/com/mapswithme/util/UiUtils.java b/android/src/com/mapswithme/util/UiUtils.java index 1de376b6b1..538449a183 100644 --- a/android/src/com/mapswithme/util/UiUtils.java +++ b/android/src/com/mapswithme/util/UiUtils.java @@ -500,36 +500,6 @@ public final class UiUtils }); } - public static void showTaxiIcon(@NonNull ImageView logo, @TaxiManager.TaxiType int type) - { - switch (type) - { - case TaxiManager.PROVIDER_UBER: - logo.setImageResource(R.drawable.ic_logo_uber); - break; - case TaxiManager.PROVIDER_YANDEX: - logo.setImageResource(R.drawable.ic_logo_yandex_taxi); - break; - default: - throw new AssertionError("Unsupported taxi type: " + type); - } - } - - public static void showTaxiTitle(@NonNull TextView title, @TaxiManager.TaxiType int type) - { - switch (type) - { - case TaxiManager.PROVIDER_UBER: - title.setText(R.string.uber); - break; - case TaxiManager.PROVIDER_YANDEX: - title.setText(R.string.yandex_taxi_title); - break; - default: - throw new AssertionError("Unsupported taxi type: " + type); - } - } - // utility class private UiUtils() {} } diff --git a/android/src/com/mapswithme/util/statistics/Statistics.java b/android/src/com/mapswithme/util/statistics/Statistics.java index 7eaaf908c1..7936e71f2d 100644 --- a/android/src/com/mapswithme/util/statistics/Statistics.java +++ b/android/src/com/mapswithme/util/statistics/Statistics.java @@ -609,7 +609,7 @@ public enum Statistics @Nullable Location location, @TaxiManager.TaxiType int type, boolean isAppInstalled) { Statistics.ParameterBuilder params = Statistics.params(); - params.add(Statistics.EventParam.PROVIDER, type == TaxiManager.PROVIDER_YANDEX ? "Yandex" : "Uber"); + params.add(Statistics.EventParam.PROVIDER, TaxiManager.getTaxiStatisticsName(type)); params.add(Statistics.EventParam.FROM_LAT, from != null ? String.valueOf(from.getLat()) : "N/A") .add(Statistics.EventParam.FROM_LON, from != null ? String.valueOf(from.getLon()) : "N/A"); @@ -625,16 +625,14 @@ public enum Statistics public void trackTaxiEvent(@NonNull String eventName, @TaxiManager.TaxiType int type) { Statistics.ParameterBuilder params = Statistics.params(); - params.add(Statistics.EventParam.PROVIDER, - type == TaxiManager.PROVIDER_YANDEX ? "Yandex" : "Uber"); + params.add(Statistics.EventParam.PROVIDER, TaxiManager.getTaxiStatisticsName(type)); trackEvent(eventName, params); } public void trackTaxiError(@NonNull TaxiInfoError error) { Statistics.ParameterBuilder params = Statistics.params(); - params.add(Statistics.EventParam.PROVIDER, - error.getType() == TaxiManager.PROVIDER_YANDEX ? "Yandex" : "Uber"); + params.add(Statistics.EventParam.PROVIDER, TaxiManager.getTaxiStatisticsName(error.getType())); params.add(ERROR_CODE, error.getCode().name()); trackEvent(EventName.ROUTING_TAXI_ROUTE_BUILT, params); }