From 87df122743d2c820d0e5d61dbad6db13390a510c Mon Sep 17 00:00:00 2001 From: Dmitry Donskoy Date: Wed, 19 Sep 2018 15:11:04 +0300 Subject: [PATCH] [android] Supported rutaxi in interface --- .../res/drawable-hdpi/ic_taxi_logo_rutaxi.png | Bin 0 -> 1529 bytes .../res/drawable-mdpi/ic_taxi_logo_rutaxi.png | Bin 0 -> 1053 bytes .../drawable-xhdpi/ic_taxi_logo_rutaxi.png | Bin 0 -> 1982 bytes .../drawable-xxhdpi/ic_taxi_logo_rutaxi.png | Bin 0 -> 2714 bytes .../drawable-xxxhdpi/ic_taxi_logo_rutaxi.png | Bin 0 -> 3651 bytes android/res/values/donottranslate.xml | 1 + .../maps/taxi/DefaultFormatPriceStrategy.java | 13 +++++ .../maps/taxi/FormatPriceStrategy.java | 9 +++ .../LocaleDependentFormatPriceStrategy.java | 15 +++++ .../com/mapswithme/maps/taxi/TaxiAdapter.java | 31 +++------- .../com/mapswithme/maps/taxi/TaxiType.java | 55 ++++++++++++++++-- android/src/com/mapswithme/util/UiUtils.java | 1 + 12 files changed, 99 insertions(+), 26 deletions(-) create mode 100644 android/res/drawable-hdpi/ic_taxi_logo_rutaxi.png create mode 100644 android/res/drawable-mdpi/ic_taxi_logo_rutaxi.png create mode 100644 android/res/drawable-xhdpi/ic_taxi_logo_rutaxi.png create mode 100644 android/res/drawable-xxhdpi/ic_taxi_logo_rutaxi.png create mode 100644 android/res/drawable-xxxhdpi/ic_taxi_logo_rutaxi.png create mode 100644 android/src/com/mapswithme/maps/taxi/DefaultFormatPriceStrategy.java create mode 100644 android/src/com/mapswithme/maps/taxi/FormatPriceStrategy.java create mode 100644 android/src/com/mapswithme/maps/taxi/LocaleDependentFormatPriceStrategy.java diff --git a/android/res/drawable-hdpi/ic_taxi_logo_rutaxi.png b/android/res/drawable-hdpi/ic_taxi_logo_rutaxi.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c3d4c270f7cff4a40eb7a62c1126e6d87af27c GIT binary patch literal 1529 zcmVPx)vq?ljR9FekSlw?FRTMvWzWYV3LR+e#Mx`-=##cfNw9*n2i!t%VM575lk)XyW zAJhB-LC-u2Nyio?1_&)0mJnEmgDrY^`2=rc{ok5*PXP7h5^ zmt*ZB9xRZ!V$3xtg(n{8`*Wjl){341FEy)#F-B;8G&>hlyM#$Lu z6hyk}0PGzvlK0PdlJJab+%wza1`l#MNP0*hC53el*+VapHS}yOsd{he zdjLh)o1SjG$p(a2YaN4R55Ec^P!rL<_SZMKg<<4GCn|Tc38RO!?uSXUwUX0VQJ4 zLR?FU__phE(r0l|NY5PRsES)4l@wUW{^wJ=TRv{Ad_5r=R?_ORy1V1v1F$ zLk``Wuq(*yA650Iyl@Q9xp2nv39-abtjru>shkD{oI{HC?}9!1l`MlP&ApB>GZ7t& z>0M;pw@1Cdnt>6Oe|#ISkFy)gfzsCaX(ME)GhEE#g2qf!Yy$$WE9yD-pgZ!!y*5SV zpWZ{YSZi3pNbh|DEaRG$-wFU>>s-*{D@ptM83({r7}!N%AF8>xJV&*~FPkiDINT{u zH$B~Wlbu6~_S(Wr3^*UZ~ITi<;|HQOgDd zV_a9vfw8&{K6<#=xq7Lx@=O|YIHL+5tyag8Hkeinxef;draf0<;~Te$nyv=328s$Be#w65XsmVXg;bsks6wDFin{PDqcgDJ6mW_-di z#fi55*E4hK)fS%3q frU3jOKI#1nO${iM$^sm;00000NkvXXu0mjf$>Z6b literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_taxi_logo_rutaxi.png b/android/res/drawable-mdpi/ic_taxi_logo_rutaxi.png new file mode 100644 index 0000000000000000000000000000000000000000..2a2d86e7d9a367a9d5c1bba2a4296068c664b1fc GIT binary patch literal 1053 zcmV+&1mgRNP)Px&*GWV{R7efAR!wMJRTTd2d-uKh$+Vd^DM_pGhZd?7N~35Iy0DPgg$p-Q7gBIz z6&LPW=&I0_m_Fop6}f6{M;z?#@h8)o+)edR+{1rU>sxmk_Y>%l<29{aj?{h)z#_aU*EDj^4VNo zJmqOz)~-`;2Z?Mw^r)0v#7WwSV!S{3^0kju=lY2Qp_BZmT~&+Xakt0USzPOKc4IL2 zv?7RU`l&mwJ1RL{_1#*b=gNa}OM`=hNgBf>+hj5Y9FN$i zZkRNLH?xTH{&xp<2NTND)?bMJ{l@+*ka7m%%*1FeM&U(jVjvBy_fBa#qd%NFm3`1t zN1=DWfcEc8JR`BonNk8UI%wRVI|+BkL73nkTECo!8dFo{S@?Tjg@AZ73rIG9MsW8t zC?`*60YD19>v?+iBBFn;A-wxJZ&D`L{=h%O7{nVlFmdD(l%9Z|K8A4Ri%~~=t2_X? zjMu*>Lu)Y6CQ5T}kggEX`gc7VNCZ7in|~thtir7wfbw>7GjB>T^1Dm3PDNAy(5@8;I-j(;iV|k64hRqwN;8dSNb^c;Ei0lc&U>Zbg-&+0^ zV^lQq0HP%UmB8{ACT2k;lCl*p^F~atZd2M)SAZaeHr5XeJ)R>yRp_0Ep!XaDq9)_= zDQRGRC>OeZgsJ>Gr&VjRed_~+t6yerHbg48fkLu%n|0G9#uLz!hnYTFuM~0sPq$EVQGx(6)a%%d3-r7F3pJBaM#rA;ZcZ7=RQAMarEZHCyaAFG2D3 zNt%Dql=Q{kklw?LlcBsF@?kB=dbA(qZ@~5&-1!I{HamacYp6YUg|)DX?VE42X?A)B zy2WPVEwRsfn6lMuSpDS6?)5*?W5=>cM54qWy)*=p&N@B}y-oi6tt+Qf(j09U9#u4| zvApnMwd9`3KRB#t(xm)40b*j@b5cJJ(_3;>gbR|+$%ILni+Y|c+W;dY);ZPHM-+b{o8UM XB{`J|tc^DB00000NkvXXu0mjfI~o1O literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_taxi_logo_rutaxi.png b/android/res/drawable-xhdpi/ic_taxi_logo_rutaxi.png new file mode 100644 index 0000000000000000000000000000000000000000..2e56eddd14f9cef8ce1c44d870f3aca3a1fa1a0b GIT binary patch literal 1982 zcmV;v2SNCWP)Px+cu7P-RA>d&T1$)+RTRDT>+bo$Fbs$q1XMsk31aZWM8j9(UJVNqU1(xVTxeoo zqfujA7#Aca#;`Dv=mtMqHwrRJMl=uwBq2Zq1_Wgopc$sStLyVT_tj^rt7>{)jTncU zyy<$Md*8Y5-Fx4ydZSSeRR{oC`u+OFq??DJN#}Gk8wQw1 zY)-I~8u{)j6X5$h%SLAnc3+r$2P~@2f>|{#26&|97M?C*;Dzq20JBZ~rV#Xc6VawH zX*wCbt4Y&KN~}V7B%G@x8pHUlf(LU--l-|Wm>Iii8QRL?p;7>NnL1Xy0StXg3dlji zCEp$)Z}b?s!vo}u>?d-^LPgZY@JPnY*v;bL6BA)o3y}tkt<00fn!AolqsPfU^$EEn zKS7CdAyGV-vCAk_nDYiP7&Deq=gRk}H2-N>RC7vFO=T`PEZcEFFd=qEMf-0%2X>{h z_!Vhd?(p8iGL;k%u-(#aPm(cXd8_~lpPFYr$I7`ubZLhY%4(%KWcJ)g21v*3K)ix0+32(-@|0h-4M?$0DNr!7V_#B!q6CZP58hO%j|oEDobC5$ou(1FDB(5n~frF^&{*!47CvFd;iL z7p^N12Lu25$;?Pr4w*rwyQO#q!;2zfbw|>DKo36oQEc`-l*Cz(;$+0eli$aKz&z zjBd0A5lJ*Ik}+!)s+=-M1ZA|6G&ghh8nXJ<1`Z!}hrhh~&dATo*=@wGqyTSgdEv8U z&3hu^BY`Y(?7$1;H~tO)BRcV6*Y&_h@fhU?$Zwqd7}*(ofTLLfQc_@IdA#!JGV$oV z9=~>$8h`9SMmks+Jj+ve;=I{!K$~Cxlf3FtNGfRj;oRy9=&gqoztHfZCcH*mU{{4z z;@qg~{_UhyZVduOK?z!Q@8)dCNDDy(;Y7>mx)YOdXUKvaND@aM8A8$S;e?Ji7Ij1( z&74Wb%;gB5_o6RwG28gU!nTa9_aqiC%Elm~{$nIVuBU>JSdVEwbWI`=jXJ|r^Ao&XuY8jKrQe`H3 zX^_SaZzaEeu7yojptRYu0!K|TGgMa~K#0F=KA{Q8HuXQOoL@T^gv|I*9OsvQFkV%9 zDxd({E)S0i*P#dliHd?^no%Y`arxj%lWz4&pGmj3t7nZhXS6`HsoeFVe4C0f;)RAY zPvKm{q`^7}ucqLHP#pP?hw!PV5<1PA0T&Ns<-o{oQc{3dnln!WP8N|swBc3s8-FE0 z1DtXciSnvQB3Ka^)cFHGMFlWehRN~CWXxx<9C4IEC;6i<9Emmq3h)b!oQq9#a#G)~ zG)M-{6Y=2{mmE+z7zEp)m;DaJJD~chG7_t}1Gws`pC>Q*8VC~_&rq=rSTNz%VN&NI zdy>_|M@{K35sL6vGm+WyF1YMVlgJ2ploa4qu}^;{OTZVrk#()vfzKni#4y||2dH*< z8z!GztaSdEGkB11d8J+)=E!gromt(4WcXpnOBCq?y!ug5O#`r__HYV5s*uCGn*Y9> z9nLKU6yV{!t;v!;(9(70$r8U4=bpwGD!<&p#8gS=TfnK3%t({WsxKqhIe+XFiRR@b zw|wTW*8Bx~{Pi_6ByM2rrsIhtQ@SHS&Uwx~sz=-lFM7jES)^M#jpR8DqTU z{J#fH+g;zV{hc_*uk$wjn-F`W7JxA@7ERYj85?7a{!fDE$X)B3>ECVs0kZ1B07tA2 Q*8l(j07*qoM6N<$f}|?6$^ZZW literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/ic_taxi_logo_rutaxi.png b/android/res/drawable-xxhdpi/ic_taxi_logo_rutaxi.png new file mode 100644 index 0000000000000000000000000000000000000000..e0e32f3d70c60df9957191c54d683ea3c498d4b9 GIT binary patch literal 2714 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 UgOiI#ivR!s07*qoM6N<$f*JZfy8r+H literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxxhdpi/ic_taxi_logo_rutaxi.png b/android/res/drawable-xxxhdpi/ic_taxi_logo_rutaxi.png new file mode 100644 index 0000000000000000000000000000000000000000..ea502bea230744bd34defdab3b2579bb7a9b40b7 GIT binary patch literal 3651 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 literal 0 HcmV?d00001 diff --git a/android/res/values/donottranslate.xml b/android/res/values/donottranslate.xml index 34b457df20..09316ee10c 100644 --- a/android/res/values/donottranslate.xml +++ b/android/res/values/donottranslate.xml @@ -92,4 +92,5 @@ pref_opt_out_mopub pref_opt_out_flurry + RuTaxi diff --git a/android/src/com/mapswithme/maps/taxi/DefaultFormatPriceStrategy.java b/android/src/com/mapswithme/maps/taxi/DefaultFormatPriceStrategy.java new file mode 100644 index 0000000000..c5d19330e9 --- /dev/null +++ b/android/src/com/mapswithme/maps/taxi/DefaultFormatPriceStrategy.java @@ -0,0 +1,13 @@ +package com.mapswithme.maps.taxi; + +import android.support.annotation.NonNull; + +class DefaultFormatPriceStrategy implements FormatPriceStrategy +{ + @NonNull + @Override + public String format(@NonNull TaxiInfo.Product product) + { + return product.getPrice(); + } +} diff --git a/android/src/com/mapswithme/maps/taxi/FormatPriceStrategy.java b/android/src/com/mapswithme/maps/taxi/FormatPriceStrategy.java new file mode 100644 index 0000000000..a90ca4c57f --- /dev/null +++ b/android/src/com/mapswithme/maps/taxi/FormatPriceStrategy.java @@ -0,0 +1,9 @@ +package com.mapswithme.maps.taxi; + +import android.support.annotation.NonNull; + +interface FormatPriceStrategy +{ + @NonNull + String format(@NonNull TaxiInfo.Product product); +} diff --git a/android/src/com/mapswithme/maps/taxi/LocaleDependentFormatPriceStrategy.java b/android/src/com/mapswithme/maps/taxi/LocaleDependentFormatPriceStrategy.java new file mode 100644 index 0000000000..e4e33c573a --- /dev/null +++ b/android/src/com/mapswithme/maps/taxi/LocaleDependentFormatPriceStrategy.java @@ -0,0 +1,15 @@ +package com.mapswithme.maps.taxi; + +import android.support.annotation.NonNull; + +import com.mapswithme.util.Utils; + +class LocaleDependentFormatPriceStrategy implements FormatPriceStrategy +{ + @NonNull + @Override + public String format(@NonNull TaxiInfo.Product product) + { + return Utils.formatCurrencyString(product.getPrice(), product.getCurrency()); + } +} diff --git a/android/src/com/mapswithme/maps/taxi/TaxiAdapter.java b/android/src/com/mapswithme/maps/taxi/TaxiAdapter.java index 817fb8c042..3f28fb0caa 100644 --- a/android/src/com/mapswithme/maps/taxi/TaxiAdapter.java +++ b/android/src/com/mapswithme/maps/taxi/TaxiAdapter.java @@ -10,6 +10,7 @@ import android.widget.TextView; import com.mapswithme.maps.R; import com.mapswithme.maps.routing.RoutingController; +import com.mapswithme.util.UiUtils; import com.mapswithme.util.Utils; import java.util.List; @@ -53,35 +54,21 @@ 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 == TaxiType.YANDEX || mType == TaxiType.MAXIM) - { - name.setText(mType.getTitle()); - separator = " • ~"; - } - else - { - name.setText(product.getName()); - separator = " • "; - } - TextView timeAndPrice = (TextView) v.findViewById(R.id.arrival_time_price); + boolean isApproxPrice = mType.isApproximatePrice(); + name.setText(isApproxPrice ? mContext.getString(mType.getTitle()) : product.getName()); + separator = UiUtils.PHRASE_SEPARATOR + (isApproxPrice ? UiUtils.APPROXIMATE_SYMBOL : ""); + TextView timeAndPriceView = (TextView) v.findViewById(R.id.arrival_time_price); int time = Integer.parseInt(product.getTime()); CharSequence waitTime = RoutingController.formatRoutingTime(mContext, time, R.dimen.text_size_body_3); - timeAndPrice.setText(mContext.getString(R.string.taxi_wait, waitTime + separator - + formatPrice(product))); + String formattedPrice = mType.getFormatPriceStrategy().format(product); + String timeAndPriceValue = waitTime + separator + formattedPrice; + String timeAndPrice = mContext.getString(mType.getWaitingTemplateResId(), timeAndPriceValue); + timeAndPriceView.setText(timeAndPrice); container.addView(v, 0); return v; } - @NonNull - private String formatPrice(@NonNull TaxiInfo.Product product) - { - if (mType == TaxiType.YANDEX) - return Utils.formatCurrencyString(product.getPrice(), product.getCurrency()); - // For Uber and Maxim we don't do formatting, because Uber and Maxim does it on its side. - return product.getPrice(); - } - @Override public void destroyItem(ViewGroup container, int position, Object object) { diff --git a/android/src/com/mapswithme/maps/taxi/TaxiType.java b/android/src/com/mapswithme/maps/taxi/TaxiType.java index 894d024973..497cdb3580 100644 --- a/android/src/com/mapswithme/maps/taxi/TaxiType.java +++ b/android/src/com/mapswithme/maps/taxi/TaxiType.java @@ -7,6 +7,11 @@ import android.support.annotation.StringRes; import com.mapswithme.maps.R; import com.mapswithme.util.Utils; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; + public enum TaxiType { UBER @@ -41,7 +46,7 @@ public enum TaxiType return "Uber"; } }, - YANDEX + YANDEX(new LocaleDependentFormatPriceStrategy()) { @NonNull public String getPackageName() @@ -105,7 +110,7 @@ public enum TaxiType return "Maxim"; } }, - RUTAXI + RUTAXI(R.string.place_page_starting_from, new LocaleDependentFormatPriceStrategy()) { @NonNull public String getPackageName() @@ -122,13 +127,13 @@ public enum TaxiType @DrawableRes public int getIcon() { - return R.drawable.ic_taxi_logo_maksim; + return R.drawable.ic_taxi_logo_rutaxi; } @StringRes public int getTitle() { - return R.string.maxim_taxi_title; + return R.string.rutaxi_title; } @NonNull @@ -138,6 +143,30 @@ public enum TaxiType } }; + private static final Collection APPROXIMATE_PRICE_TAXI_TYPES = + Collections.unmodifiableSet(new HashSet<>(Arrays.asList(YANDEX, MAXIM, RUTAXI))); + + @StringRes + private final int mWaitingTemplateResId; + @NonNull + private final FormatPriceStrategy mFormatPriceStrategy; + + TaxiType(@StringRes int waitingTemplateResId, @NonNull FormatPriceStrategy strategy) + { + mWaitingTemplateResId = waitingTemplateResId; + mFormatPriceStrategy = strategy; + } + + TaxiType(@NonNull FormatPriceStrategy strategy) + { + this(R.string.taxi_wait, strategy); + } + + TaxiType() + { + this(R.string.taxi_wait, new DefaultFormatPriceStrategy()); + } + @NonNull public abstract String getPackageName(); @@ -152,4 +181,22 @@ public enum TaxiType @NonNull public abstract String getProviderName(); + + @StringRes + public int getWaitingTemplateResId() + { + return mWaitingTemplateResId; + } + + public boolean isApproximatePrice() + { + return APPROXIMATE_PRICE_TAXI_TYPES.contains(this); + } + + // For Uber and Maxim we don't do formatting, because Uber and Maxim does it on its side. + @NonNull + public FormatPriceStrategy getFormatPriceStrategy() + { + return mFormatPriceStrategy; + } } diff --git a/android/src/com/mapswithme/util/UiUtils.java b/android/src/com/mapswithme/util/UiUtils.java index 8285ab1298..55a7e7cb18 100644 --- a/android/src/com/mapswithme/util/UiUtils.java +++ b/android/src/com/mapswithme/util/UiUtils.java @@ -46,6 +46,7 @@ public final class UiUtils private static final int DEFAULT_TINT_COLOR = Color.parseColor("#20000000"); public static final int NO_ID = -1; public static final String PHRASE_SEPARATOR = " • "; + public static final String APPROXIMATE_SYMBOL = "~"; private static float sScreenDensity; public static void addStatusBarOffset(@NonNull View view)