From fe68567dcbffbbe22fd32015318a876df615ca5c Mon Sep 17 00:00:00 2001 From: Dmitry Donskoy Date: Tue, 2 Apr 2019 16:00:51 +0300 Subject: [PATCH] [android] Added routing top plate --- android/res/drawable-hdpi/ic_error_white.png | Bin 0 -> 461 bytes android/res/drawable-mdpi/ic_error_white.png | Bin 0 -> 288 bytes android/res/drawable-xhdpi/ic_error_white.png | Bin 0 -> 528 bytes .../res/drawable-xxhdpi/ic_error_white.png | Bin 0 -> 779 bytes .../res/drawable-xxxhdpi/ic_error_white.png | Bin 0 -> 1096 bytes android/res/layout/routing_plan.xml | 36 +++++++++++- android/res/values/colors.xml | 1 + .../src/com/mapswithme/maps/MwmActivity.java | 34 +++++++++++ .../maps/routing/RoutingController.java | 53 ++++++++++++------ .../maps/routing/RoutingOptions.java | 10 ++++ 10 files changed, 117 insertions(+), 17 deletions(-) create mode 100755 android/res/drawable-hdpi/ic_error_white.png create mode 100755 android/res/drawable-mdpi/ic_error_white.png create mode 100755 android/res/drawable-xhdpi/ic_error_white.png create mode 100755 android/res/drawable-xxhdpi/ic_error_white.png create mode 100755 android/res/drawable-xxxhdpi/ic_error_white.png diff --git a/android/res/drawable-hdpi/ic_error_white.png b/android/res/drawable-hdpi/ic_error_white.png new file mode 100755 index 0000000000000000000000000000000000000000..ad1937b10ec22695da4c4aaa310e84395644d6e0 GIT binary patch literal 461 zcmV;;0W$uHP)Px$he^(H(FII6y1GS-L38IYK#0IRIP&Rz-qKzy=M^ zQbME1lW~~L0x6cPWD@)P=f{mYn^mg{R0XO6`3iJhcZc8RXHJj-ku~mZJwXXOBrF#A zr)T5l3p+yLNC@l#GJd)%T*d}R^_6F!j4K;Tp(qH<@x4OCFUj7#P`P0kinYFSVr++z z3PeC4Zsa~r((KbWI7Q+{{#Am#Sh?&5Kgtn}g3_$ZjGU#*F{hXb0W3|rH6tGaw=Vav zl9-tZfpL%jr6(jua!qC;#0dp-V?xw}HV#AI4OUHrh=0JxyepC`7~_qTrCwyVvuyAO z(WEF-N>28IpC{s;*?V&PH;mVAt_^Q2UNuegrELzbK`4G#G&x!ilpF8!!m+o903X}P zVV!WEZ1CPIgOI$kgLh6$&Xsv$k6fGjk3b~^nF}(dcc!#UNWI1d`mXGRz%C9h_$}D# zGomUag;D8@;S@iX?}GLX)(7gm7sRYkRe`F&|5e}zeq~00000NkvXXu0mjf DfeggK literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_error_white.png b/android/res/drawable-mdpi/ic_error_white.png new file mode 100755 index 0000000000000000000000000000000000000000..e357f17d383389adf6589019f0d1c60a535feb69 GIT binary patch literal 288 zcmV+*0pI?KP)Px#+DSw~R7ef&k}(d0FbqXWyD)d{#(Cg8?U*}pfnJ0WsZ-aoh3__BauYxe&DKP+ z?8Nc2$)~EyDlfnnaL(1Ro41 m9Fe#)xx-7XFv|L;7nlLJDrZ!dbWMK%0000Px$%1J~)RA>e5S3yq0Fc560Dk1nq4_x>|FK}%C!?9oJ0Y1{FATCJs%9R^jP?(Wo zX=BA3J8fbI?MkcIj-8zu@2Id?SeOE)fGJ=Km;$E2KUAQu>kaa?$<3@N0`waBg>=F3 zdNw2g_UMp{=W!MU0C*=r`@>z)B!KoBdGb+<`3LtDO9J5b0&HlwFOmSz(zxFt)MA}` z$}==Tbs1OSZVk&aG@xn5Z6OzvG7JqsG%n4V8f6$7s5_188#TZ#ub}}dXxvBwc?}H$ zLE}ae;Kk%IGzzQ6O&~xL(;6BDdySh&V6dUD{6dlQC+xfAj}gDcZ;l^OKWJR`f(svs zTUVab7#aYA#+Bd(5a97~4UGb-aV3E>##^7fHm|go@*M#2&)_%YC3|0%aN`pO_f=K> zxCQN*V&Wv@0zfM?5Z=2aLr2{J)aOU3e)K;hL@$A{rR2P4O!avSybU#CZ{UEhM1xl= z#=T@M);vET+?ML4hF>}Le6zpT(5-9kD7wVjJCZGwBiKTBXrU^?pQ;uuoF z_;!Y^AG4u=8*`|Z1#{+31{ucADR)?9V;HKqq+Gbg7x=cbs53YU?wcrd(#Sfp zzx>${%k{zt=aPX)>oY=L809sKLDPY0=K!y1swgUK!o{c5nHOuMCgbZ1b)k zReK_7vEod!(ZR2Giq}87#?+ztONl{<|LN|`!p=(8o+tWAN}|`r<9>^7<#RZ5!Ct%J z$o7z^v-LRAQ`ggf%vCV7_IYOI{y{zYuzInYflKD#ahTlI7%i4nOpVla^ zbekue@0_`$D{}RsLT>5E=p$2MT+)r|-8&T*gtgvX zwq)HpdMe)+lX6*Z9m!y;?EEBxt z>*Un@>+v_H=C8Bs+i(0~ld8o^xy{uw+8#`kUrp4Sl$CYIMteoJVfIOWpd;iq&p4{D zYc8H>ZkOa?+(JCm2&!(uWg@Ux=im-UWnt0c{zsdk(S<8F}pTym>qT@;E0S9 z=kdRs(pMj=Ju_Hb@J8d~6HWd6X7`YRJ7 zwO^=|K4d&^{4{}ei}8aa!OpjR=W2Xj(~$S^%=Xmg#dtSFD$KhyrSzbX~FJNB&wrfvpLS3j3^P6U}5rfaSW+o zd^>Azo`|7H>*kP!jY3Nuy_T3PxUz@g<)m7{IEGU;3?5r-*ebg_+L&CXDg<<0SbRbE zxrgE@uHxm~J7Glu?C8pI^Uom_Ze)hKN(~kv8 z!naLX7xWv}C+G34limKhl64;A2fJt2eLtPMZ?iqVab@l-h8^O3IrksB&b}x9jcZH4 z!TZ`Pb4%ljLvGypwvGLYH~Xg>4^yjIxT;ugoi==A`+Pd9Z(e$K!_p6N-x=hhAK6~z z{hurAvIS_nV`^+*74z2lY-+s zA(j9h(YSbqRiaO#TrEN>Y75teO%S*1_Fk*p`cv#TukqLY6aIfVGrjxhqg_+-Ykyyh zV3g;5aJigq%K2*_1RcID7m1rM7ovLN>K26yNo{qr?dolQOTHZ>D522${a4p|RPKi1rGKFe}*71NoP>Hk@IdoyFU@4MwQVKRGy?w<7M-DdN- z&tKc8y450+`;_9IGyfEsHYA=ZKjhs1%6fXtgy3)o?L)WO=VzZ}tu&Zj6ZU1T^2dxh zN7v7i&k5hbl;IuZ=oiVDcIdYP)6@SRS|>c28s02_u}x#ozJlNhlYdCxZA#!UR=O>n z&#JqE+e^sNFOV^^Rh&^?Ms_aG{3|xUcKp!6d*Jnhxwm(IG&wf)27^uK%{>#V=O6naDBYlMINQ7^U!*xg zu#T@Ie1^#5Seg0Dt@O1TaS?83{1OOcH>YD%n literal 0 HcmV?d00001 diff --git a/android/res/layout/routing_plan.xml b/android/res/layout/routing_plan.xml index e00a020964..94b9d24288 100644 --- a/android/res/layout/routing_plan.xml +++ b/android/res/layout/routing_plan.xml @@ -150,8 +150,42 @@ + + + + + + + + - \ No newline at end of file + diff --git a/android/res/values/colors.xml b/android/res/values/colors.xml index afdb1c17a5..ac8b116f62 100644 --- a/android/res/values/colors.xml +++ b/android/res/values/colors.xml @@ -17,6 +17,7 @@ #F51E30 #FFFFC30A #FF558B2F + #2D8953 #DE000000 #8A000000 diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index 8f74804dc0..7ffbbea4fd 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -25,6 +25,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.widget.ImageButton; +import android.widget.TextView; import android.widget.Toast; import com.mapswithme.maps.Framework.MapObjectListener; @@ -243,6 +244,10 @@ public class MwmActivity extends BaseMwmFragmentActivity @NonNull private PlacePageController mPlacePageController; + @SuppressWarnings("NullableProblems") + @NonNull + private View mDrivingOptionsBtn; + public interface LeftAnimationTrackListener { void onTrackStarted(boolean collapsed); @@ -535,6 +540,15 @@ public class MwmActivity extends BaseMwmFragmentActivity initOnmapDownloader(); initPositionChooser(); initFilterViews(); + initDrivingOptionsViews(); + } + + private void initDrivingOptionsViews() + { + mDrivingOptionsBtn = findViewById(R.id.driving_options_btn); + mDrivingOptionsBtn.setOnClickListener(v -> { + + }); } private void initTips() @@ -2037,6 +2051,26 @@ public class MwmActivity extends BaseMwmFragmentActivity mNavigationController.resetSearchWheel(); } + @Override + public void onRouteWarningReceived() + { + showDrivingOptionPlate(); + } + + private void showDrivingOptionPlate() + { + UiUtils.show(mDrivingOptionsBtn); + View image = findViewById(R.id.driving_options_btn_img); + UiUtils.showIf(true, image); + TextView title = mDrivingOptionsBtn.findViewById(R.id.driving_options_btn_title); +// title.setText(true ? ); + } + + private void hideDrivingOptionsPlate() + { + UiUtils.hide(mDrivingOptionsBtn); + } + @Override public boolean isSubwayEnabled() { diff --git a/android/src/com/mapswithme/maps/routing/RoutingController.java b/android/src/com/mapswithme/maps/routing/RoutingController.java index fa6ea24f4e..62850fa4ce 100644 --- a/android/src/com/mapswithme/maps/routing/RoutingController.java +++ b/android/src/com/mapswithme/maps/routing/RoutingController.java @@ -78,6 +78,7 @@ public class RoutingController implements TaxiManager.TaxiListener void onAddedStop(); void onRemovedStop(); void onBuiltRoute(); + void onRouteWarningReceived(); boolean isSubwayEnabled(); /** @@ -128,22 +129,33 @@ public class RoutingController implements TaxiManager.TaxiListener mContainsCachedResult = true; if (mLastResultCode == ResultCodesHelper.NO_ERROR - || mLastResultCode == ResultCodesHelper.HAS_WARNINGS || ResultCodesHelper.isMoreMapsNeeded(mLastResultCode)) - { - mCachedRoutingInfo = Framework.nativeGetRouteFollowingInfo(); - if (mLastRouterType == Framework.ROUTER_TYPE_TRANSIT) - mCachedTransitRouteInfo = Framework.nativeGetTransitRouteInfo(); - setBuildState(BuildState.BUILT); - mLastBuildProgress = 100; - if (mContainer != null) - mContainer.onBuiltRoute(); - } + onBuiltRoute(); + else if (mLastResultCode == ResultCodesHelper.HAS_WARNINGS) + onWarningReceived(); processRoutingEvent(); } }; + private void onWarningReceived() + { + onBuiltRoute(); + if (mContainer != null) + mContainer.onRouteWarningReceived(); + } + + private void onBuiltRoute() + { + mCachedRoutingInfo = Framework.nativeGetRouteFollowingInfo(); + if (mLastRouterType == Framework.ROUTER_TYPE_TRANSIT) + mCachedTransitRouteInfo = Framework.nativeGetTransitRouteInfo(); + setBuildState(BuildState.BUILT); + mLastBuildProgress = 100; + if (mContainer != null) + mContainer.onBuiltRoute(); + } + @SuppressWarnings("FieldCanBeLocal") private final Framework.RoutingProgressListener mRoutingProgressListener = new Framework.RoutingProgressListener() { @@ -197,15 +209,24 @@ public class RoutingController implements TaxiManager.TaxiListener return; } - if (!ResultCodesHelper.isMoreMapsNeeded(mLastResultCode)) + if (ResultCodesHelper.isMoreMapsNeeded(mLastResultCode)) { - setBuildState(BuildState.ERROR); - mLastBuildProgress = 0; - updateProgress(); + RoutingErrorDialogFragment fragment = RoutingErrorDialogFragment.create(mLastResultCode, mLastMissingMaps); + fragment.show(mContainer.getActivity().getSupportFragmentManager(), RoutingErrorDialogFragment.class.getSimpleName()); + return; } - RoutingErrorDialogFragment fragment = RoutingErrorDialogFragment.create(mLastResultCode, mLastMissingMaps); - fragment.show(mContainer.getActivity().getSupportFragmentManager(), RoutingErrorDialogFragment.class.getSimpleName()); + setBuildState(BuildState.ERROR); + mLastBuildProgress = 0; + updateProgress(); + + if (RoutingOptions.hasAnyOptions()) + showUnableCalcRouteDialog(); + } + + private void showUnableCalcRouteDialog() + { + } private void setState(State newState) diff --git a/android/src/com/mapswithme/maps/routing/RoutingOptions.java b/android/src/com/mapswithme/maps/routing/RoutingOptions.java index 4ed9f818cd..f24b5c6cb5 100644 --- a/android/src/com/mapswithme/maps/routing/RoutingOptions.java +++ b/android/src/com/mapswithme/maps/routing/RoutingOptions.java @@ -24,4 +24,14 @@ public class RoutingOptions private static native void nativeAddOption(int option); private static native void nativeRemoveOption(int option); private static native boolean nativeHasOption(int option); + + static boolean hasAnyOptions() + { + for (RoadType each : RoadType.values()) + { + if (hasOption(each)) + return true; + } + return false; + } }