From 80ad6d5fe8f970f214966cd0d968977529887bf7 Mon Sep 17 00:00:00 2001 From: Dmitry Donskoy Date: Tue, 26 Jun 2018 18:02:18 +0300 Subject: [PATCH] [android] Add subway core integration --- android/jni/com/mapswithme/maps/Framework.cpp | 23 +++ android/jni/com/mapswithme/maps/Framework.hpp | 1 + .../jni/com/mapswithme/maps/TrafficState.cpp | 7 + android/res/drawable-hdpi/ic_drop_down.png | Bin 0 -> 228 bytes .../res/drawable-hdpi/ic_layers_dark_on.png | Bin 0 -> 467 bytes .../res/drawable-hdpi/ic_layers_light_on.png | Bin 0 -> 467 bytes android/res/drawable-hdpi/ic_layers_off.png | Bin 0 -> 490 bytes .../res/drawable-hdpi/ic_layers_off_night.png | Bin 0 -> 530 bytes android/res/drawable-hdpi/ic_layers_on.png | Bin 0 -> 467 bytes android/res/drawable-hdpi/ic_subway_menu.png | Bin 0 -> 529 bytes .../drawable-hdpi/ic_subway_menu_dark_off.png | Bin 0 -> 508 bytes .../ic_subway_menu_light_off.png | Bin 0 -> 475 bytes .../res/drawable-hdpi/ic_subway_menu_on.png | Bin 0 -> 529 bytes android/res/drawable-hdpi/ic_subway_off.png | Bin 0 -> 484 bytes .../res/drawable-hdpi/ic_subway_off_night.png | Bin 0 -> 522 bytes .../drawable-hdpi/ic_traffic_download_1.png | Bin 512 -> 548 bytes .../drawable-hdpi/ic_traffic_download_2.png | Bin 411 -> 471 bytes .../drawable-hdpi/ic_traffic_download_3.png | Bin 426 -> 534 bytes .../ic_traffic_download_night_1.png | Bin 440 -> 568 bytes .../ic_traffic_download_night_2.png | Bin 404 -> 498 bytes .../ic_traffic_download_night_3.png | Bin 438 -> 571 bytes android/res/drawable-hdpi/ic_traffic_menu.png | Bin 0 -> 533 bytes .../ic_traffic_menu_dark_off.png | Bin 0 -> 520 bytes .../ic_traffic_menu_light_off.png | Bin 0 -> 483 bytes .../res/drawable-hdpi/ic_traffic_menu_on.png | Bin 0 -> 533 bytes android/res/drawable-hdpi/ic_traffic_on.png | Bin 506 -> 475 bytes .../res/drawable-hdpi/ic_traffic_on_night.png | Bin 500 -> 508 bytes .../res/drawable-hdpi/ic_traffic_outdated.png | Bin 473 -> 455 bytes .../ic_traffic_outdated_night.png | Bin 498 -> 488 bytes android/res/drawable-mdpi/ic_drop_down.png | Bin 0 -> 172 bytes .../res/drawable-mdpi/ic_layers_dark_on.png | Bin 0 -> 359 bytes .../res/drawable-mdpi/ic_layers_light_on.png | Bin 0 -> 359 bytes android/res/drawable-mdpi/ic_layers_off.png | Bin 0 -> 362 bytes .../res/drawable-mdpi/ic_layers_off_night.png | Bin 0 -> 394 bytes android/res/drawable-mdpi/ic_layers_on.png | Bin 0 -> 359 bytes android/res/drawable-mdpi/ic_subway_menu.png | Bin 0 -> 365 bytes .../drawable-mdpi/ic_subway_menu_dark_off.png | Bin 0 -> 361 bytes .../ic_subway_menu_light_off.png | Bin 0 -> 333 bytes .../res/drawable-mdpi/ic_subway_menu_on.png | Bin 0 -> 365 bytes android/res/drawable-mdpi/ic_subway_off.png | Bin 0 -> 355 bytes .../res/drawable-mdpi/ic_subway_off_night.png | Bin 0 -> 386 bytes .../drawable-mdpi/ic_traffic_download_1.png | Bin 395 -> 403 bytes .../drawable-mdpi/ic_traffic_download_2.png | Bin 364 -> 365 bytes .../drawable-mdpi/ic_traffic_download_3.png | Bin 355 -> 398 bytes .../ic_traffic_download_night_1.png | Bin 369 -> 418 bytes .../ic_traffic_download_night_2.png | Bin 372 -> 382 bytes .../ic_traffic_download_night_3.png | Bin 367 -> 421 bytes android/res/drawable-mdpi/ic_traffic_menu.png | Bin 0 -> 348 bytes .../ic_traffic_menu_dark_off.png | Bin 0 -> 347 bytes .../ic_traffic_menu_light_off.png | Bin 0 -> 327 bytes .../res/drawable-mdpi/ic_traffic_menu_on.png | Bin 0 -> 348 bytes android/res/drawable-mdpi/ic_traffic_on.png | Bin 415 -> 350 bytes .../res/drawable-mdpi/ic_traffic_on_night.png | Bin 425 -> 388 bytes .../res/drawable-mdpi/ic_traffic_outdated.png | Bin 383 -> 338 bytes .../ic_traffic_outdated_night.png | Bin 386 -> 371 bytes android/res/drawable-xhdpi/ic_drop_down.png | Bin 0 -> 257 bytes .../res/drawable-xhdpi/ic_layers_dark_on.png | Bin 0 -> 587 bytes .../res/drawable-xhdpi/ic_layers_light_on.png | Bin 0 -> 587 bytes android/res/drawable-xhdpi/ic_layers_off.png | Bin 0 -> 616 bytes .../drawable-xhdpi/ic_layers_off_night.png | Bin 0 -> 680 bytes android/res/drawable-xhdpi/ic_layers_on.png | Bin 0 -> 587 bytes android/res/drawable-xhdpi/ic_subway_menu.png | Bin 0 -> 628 bytes .../ic_subway_menu_dark_off.png | Bin 0 -> 614 bytes .../ic_subway_menu_light_off.png | Bin 0 -> 579 bytes .../res/drawable-xhdpi/ic_subway_menu_on.png | Bin 0 -> 628 bytes android/res/drawable-xhdpi/ic_subway_off.png | Bin 0 -> 623 bytes .../drawable-xhdpi/ic_subway_off_night.png | Bin 0 -> 688 bytes .../drawable-xhdpi/ic_traffic_download_1.png | Bin 693 -> 598 bytes .../drawable-xhdpi/ic_traffic_download_2.png | Bin 602 -> 550 bytes .../drawable-xhdpi/ic_traffic_download_3.png | Bin 594 -> 603 bytes .../ic_traffic_download_night_1.png | Bin 647 -> 635 bytes .../ic_traffic_download_night_2.png | Bin 649 -> 575 bytes .../ic_traffic_download_night_3.png | Bin 644 -> 632 bytes .../res/drawable-xhdpi/ic_traffic_menu.png | Bin 0 -> 421 bytes .../ic_traffic_menu_dark_off.png | Bin 0 -> 416 bytes .../ic_traffic_menu_light_off.png | Bin 0 -> 385 bytes .../res/drawable-xhdpi/ic_traffic_menu_on.png | Bin 0 -> 421 bytes android/res/drawable-xhdpi/ic_traffic_on.png | Bin 703 -> 577 bytes .../drawable-xhdpi/ic_traffic_on_night.png | Bin 756 -> 636 bytes .../drawable-xhdpi/ic_traffic_outdated.png | Bin 1500 -> 558 bytes .../ic_traffic_outdated_night.png | Bin 699 -> 618 bytes android/res/drawable-xxhdpi/ic_drop_down.png | Bin 0 -> 331 bytes .../res/drawable-xxhdpi/ic_layers_dark_on.png | Bin 0 -> 823 bytes .../drawable-xxhdpi/ic_layers_light_on.png | Bin 0 -> 823 bytes android/res/drawable-xxhdpi/ic_layers_off.png | Bin 0 -> 879 bytes .../drawable-xxhdpi/ic_layers_off_night.png | Bin 0 -> 954 bytes android/res/drawable-xxhdpi/ic_layers_on.png | Bin 0 -> 823 bytes .../res/drawable-xxhdpi/ic_subway_menu.png | Bin 0 -> 878 bytes .../ic_subway_menu_dark_off.png | Bin 0 -> 863 bytes .../ic_subway_menu_light_off.png | Bin 0 -> 804 bytes .../res/drawable-xxhdpi/ic_subway_menu_on.png | Bin 0 -> 878 bytes android/res/drawable-xxhdpi/ic_subway_off.png | Bin 0 -> 867 bytes .../drawable-xxhdpi/ic_subway_off_night.png | Bin 0 -> 974 bytes .../drawable-xxhdpi/ic_traffic_download_1.png | Bin 874 -> 1038 bytes .../drawable-xxhdpi/ic_traffic_download_2.png | Bin 723 -> 914 bytes .../drawable-xxhdpi/ic_traffic_download_3.png | Bin 735 -> 1010 bytes .../ic_traffic_download_night_1.png | Bin 765 -> 1086 bytes .../ic_traffic_download_night_2.png | Bin 762 -> 961 bytes .../ic_traffic_download_night_3.png | Bin 768 -> 1098 bytes .../res/drawable-xxhdpi/ic_traffic_menu.png | Bin 0 -> 875 bytes .../ic_traffic_menu_dark_off.png | Bin 0 -> 847 bytes .../ic_traffic_menu_light_off.png | Bin 0 -> 798 bytes .../drawable-xxhdpi/ic_traffic_menu_on.png | Bin 0 -> 875 bytes android/res/drawable-xxhdpi/ic_traffic_on.png | Bin 847 -> 846 bytes .../drawable-xxhdpi/ic_traffic_on_night.png | Bin 888 -> 935 bytes .../drawable-xxhdpi/ic_traffic_outdated.png | Bin 1972 -> 821 bytes .../ic_traffic_outdated_night.png | Bin 1835 -> 905 bytes android/res/drawable-xxxhdpi/ic_drop_down.png | Bin 0 -> 389 bytes .../drawable-xxxhdpi/ic_layers_dark_on.png | Bin 0 -> 1969 bytes .../drawable-xxxhdpi/ic_layers_light_on.png | Bin 0 -> 1969 bytes .../res/drawable-xxxhdpi/ic_layers_off.png | Bin 0 -> 1135 bytes .../drawable-xxxhdpi/ic_layers_off_night.png | Bin 0 -> 1255 bytes android/res/drawable-xxxhdpi/ic_layers_on.png | Bin 0 -> 1053 bytes .../res/drawable-xxxhdpi/ic_subway_menu.png | Bin 0 -> 1104 bytes .../ic_subway_menu_dark_off.png | Bin 0 -> 1096 bytes .../ic_subway_menu_light_off.png | Bin 0 -> 1016 bytes .../drawable-xxxhdpi/ic_subway_menu_on.png | Bin 0 -> 1104 bytes .../res/drawable-xxxhdpi/ic_subway_off.png | Bin 0 -> 1143 bytes .../drawable-xxxhdpi/ic_subway_off_night.png | Bin 0 -> 1268 bytes .../ic_traffic_download_1.png | Bin 1474 -> 864 bytes .../ic_traffic_download_2.png | Bin 1256 -> 879 bytes .../ic_traffic_download_3.png | Bin 1253 -> 864 bytes .../ic_traffic_download_night_1.png | Bin 1339 -> 909 bytes .../ic_traffic_download_night_2.png | Bin 1315 -> 912 bytes .../ic_traffic_download_night_3.png | Bin 1315 -> 899 bytes .../res/drawable-xxxhdpi/ic_traffic_menu.png | Bin 0 -> 699 bytes .../ic_traffic_menu_dark_off.png | Bin 0 -> 688 bytes .../ic_traffic_menu_light_off.png | Bin 0 -> 681 bytes .../drawable-xxxhdpi/ic_traffic_menu_on.png | Bin 0 -> 699 bytes .../res/drawable-xxxhdpi/ic_traffic_on.png | Bin 1526 -> 1013 bytes .../drawable-xxxhdpi/ic_traffic_on_night.png | Bin 1568 -> 1087 bytes .../drawable-xxxhdpi/ic_traffic_outdated.png | Bin 3064 -> 963 bytes .../ic_traffic_outdated_night.png | Bin 2951 -> 1048 bytes android/res/drawable/subway_bg_light.xml | 9 + .../res/drawable/subway_bg_light_default.xml | 10 ++ .../res/drawable/subway_bg_light_pressed.xml | 10 ++ .../res/drawable/subway_bg_light_selected.xml | 10 ++ android/res/drawable/subway_bg_night.xml | 9 + .../res/drawable/subway_bg_night_default.xml | 11 ++ .../res/drawable/subway_bg_night_pressed.xml | 11 ++ .../res/drawable/subway_bg_night_selected.xml | 11 ++ .../drawable/traffic_subway_bg_default.xml | 8 + .../res/drawable/traffic_subway_btn_bg.xml | 5 + .../traffic_subway_btn_bg_selected.xml | 8 + .../layout-land/map_navigation_buttons.xml | 9 + android/res/layout/bootsheet_dialog_item.xml | 21 +++ .../layout/fragment_subway_traffic_toggle.xml | 59 ++++++ android/res/layout/layout_nav_bottom.xml | 10 +- android/res/layout/map_navigation_buttons.xml | 10 ++ android/res/values/colors.xml | 1 + android/res/values/dimens.xml | 1 + android/res/values/themes-attrs.xml | 2 + android/res/values/themes-base.xml | 4 + .../src/com/mapswithme/maps/Framework.java | 6 + .../src/com/mapswithme/maps/MwmActivity.java | 170 +++++++++++++----- .../com/mapswithme/maps/MwmApplication.java | 8 + .../maps/adapter/BottomSheetItem.java | 21 +++ .../adapter/SpanningLinearLayoutManager.java | 85 +++++++++ .../src/com/mapswithme/maps/subway/Mode.java | 44 +++++ .../subway/OnSubwayModeSelectListener.java | 6 + .../mapswithme/maps/subway/SubwayItem.java | 41 +++++ .../mapswithme/maps/subway/SubwayManager.java | 58 ++++++ .../SubwayTrafficToggleDialogFragment.java | 149 +++++++++++++++ .../mapswithme/maps/traffic/TrafficItem.java | 41 +++++ .../maps/traffic/TrafficManager.java | 38 +++- .../mapswithme/maps/traffic/TrafficState.java | 3 +- .../widget/OnTrafficModeSelectListener.java | 6 + .../maps/traffic/widget/TrafficButton.java | 102 ----------- ...java => TrafficMapLayerBtnController.java} | 22 +-- .../traffic/widget/TrafficMapLayerButton.java | 113 ++++++++++++ android/src/com/mapswithme/util/UiUtils.java | 6 + android/src/com/mapswithme/util/Utils.java | 17 +- map/traffic_manager.hpp | 2 +- 173 files changed, 1015 insertions(+), 173 deletions(-) create mode 100644 android/res/drawable-hdpi/ic_drop_down.png create mode 100644 android/res/drawable-hdpi/ic_layers_dark_on.png create mode 100644 android/res/drawable-hdpi/ic_layers_light_on.png create mode 100644 android/res/drawable-hdpi/ic_layers_off.png create mode 100644 android/res/drawable-hdpi/ic_layers_off_night.png create mode 100644 android/res/drawable-hdpi/ic_layers_on.png create mode 100644 android/res/drawable-hdpi/ic_subway_menu.png create mode 100644 android/res/drawable-hdpi/ic_subway_menu_dark_off.png create mode 100644 android/res/drawable-hdpi/ic_subway_menu_light_off.png create mode 100644 android/res/drawable-hdpi/ic_subway_menu_on.png create mode 100644 android/res/drawable-hdpi/ic_subway_off.png create mode 100644 android/res/drawable-hdpi/ic_subway_off_night.png create mode 100644 android/res/drawable-hdpi/ic_traffic_menu.png create mode 100644 android/res/drawable-hdpi/ic_traffic_menu_dark_off.png create mode 100644 android/res/drawable-hdpi/ic_traffic_menu_light_off.png create mode 100644 android/res/drawable-hdpi/ic_traffic_menu_on.png create mode 100644 android/res/drawable-mdpi/ic_drop_down.png create mode 100644 android/res/drawable-mdpi/ic_layers_dark_on.png create mode 100644 android/res/drawable-mdpi/ic_layers_light_on.png create mode 100644 android/res/drawable-mdpi/ic_layers_off.png create mode 100644 android/res/drawable-mdpi/ic_layers_off_night.png create mode 100644 android/res/drawable-mdpi/ic_layers_on.png create mode 100644 android/res/drawable-mdpi/ic_subway_menu.png create mode 100644 android/res/drawable-mdpi/ic_subway_menu_dark_off.png create mode 100644 android/res/drawable-mdpi/ic_subway_menu_light_off.png create mode 100644 android/res/drawable-mdpi/ic_subway_menu_on.png create mode 100644 android/res/drawable-mdpi/ic_subway_off.png create mode 100644 android/res/drawable-mdpi/ic_subway_off_night.png create mode 100644 android/res/drawable-mdpi/ic_traffic_menu.png create mode 100644 android/res/drawable-mdpi/ic_traffic_menu_dark_off.png create mode 100644 android/res/drawable-mdpi/ic_traffic_menu_light_off.png create mode 100644 android/res/drawable-mdpi/ic_traffic_menu_on.png create mode 100644 android/res/drawable-xhdpi/ic_drop_down.png create mode 100644 android/res/drawable-xhdpi/ic_layers_dark_on.png create mode 100644 android/res/drawable-xhdpi/ic_layers_light_on.png create mode 100644 android/res/drawable-xhdpi/ic_layers_off.png create mode 100644 android/res/drawable-xhdpi/ic_layers_off_night.png create mode 100644 android/res/drawable-xhdpi/ic_layers_on.png create mode 100644 android/res/drawable-xhdpi/ic_subway_menu.png create mode 100644 android/res/drawable-xhdpi/ic_subway_menu_dark_off.png create mode 100644 android/res/drawable-xhdpi/ic_subway_menu_light_off.png create mode 100644 android/res/drawable-xhdpi/ic_subway_menu_on.png create mode 100644 android/res/drawable-xhdpi/ic_subway_off.png create mode 100644 android/res/drawable-xhdpi/ic_subway_off_night.png create mode 100644 android/res/drawable-xhdpi/ic_traffic_menu.png create mode 100644 android/res/drawable-xhdpi/ic_traffic_menu_dark_off.png create mode 100644 android/res/drawable-xhdpi/ic_traffic_menu_light_off.png create mode 100644 android/res/drawable-xhdpi/ic_traffic_menu_on.png create mode 100644 android/res/drawable-xxhdpi/ic_drop_down.png create mode 100644 android/res/drawable-xxhdpi/ic_layers_dark_on.png create mode 100644 android/res/drawable-xxhdpi/ic_layers_light_on.png create mode 100644 android/res/drawable-xxhdpi/ic_layers_off.png create mode 100644 android/res/drawable-xxhdpi/ic_layers_off_night.png create mode 100644 android/res/drawable-xxhdpi/ic_layers_on.png create mode 100644 android/res/drawable-xxhdpi/ic_subway_menu.png create mode 100644 android/res/drawable-xxhdpi/ic_subway_menu_dark_off.png create mode 100644 android/res/drawable-xxhdpi/ic_subway_menu_light_off.png create mode 100644 android/res/drawable-xxhdpi/ic_subway_menu_on.png create mode 100644 android/res/drawable-xxhdpi/ic_subway_off.png create mode 100644 android/res/drawable-xxhdpi/ic_subway_off_night.png create mode 100644 android/res/drawable-xxhdpi/ic_traffic_menu.png create mode 100644 android/res/drawable-xxhdpi/ic_traffic_menu_dark_off.png create mode 100644 android/res/drawable-xxhdpi/ic_traffic_menu_light_off.png create mode 100644 android/res/drawable-xxhdpi/ic_traffic_menu_on.png create mode 100644 android/res/drawable-xxxhdpi/ic_drop_down.png create mode 100644 android/res/drawable-xxxhdpi/ic_layers_dark_on.png create mode 100644 android/res/drawable-xxxhdpi/ic_layers_light_on.png create mode 100644 android/res/drawable-xxxhdpi/ic_layers_off.png create mode 100644 android/res/drawable-xxxhdpi/ic_layers_off_night.png create mode 100644 android/res/drawable-xxxhdpi/ic_layers_on.png create mode 100644 android/res/drawable-xxxhdpi/ic_subway_menu.png create mode 100644 android/res/drawable-xxxhdpi/ic_subway_menu_dark_off.png create mode 100644 android/res/drawable-xxxhdpi/ic_subway_menu_light_off.png create mode 100644 android/res/drawable-xxxhdpi/ic_subway_menu_on.png create mode 100644 android/res/drawable-xxxhdpi/ic_subway_off.png create mode 100644 android/res/drawable-xxxhdpi/ic_subway_off_night.png create mode 100644 android/res/drawable-xxxhdpi/ic_traffic_menu.png create mode 100644 android/res/drawable-xxxhdpi/ic_traffic_menu_dark_off.png create mode 100644 android/res/drawable-xxxhdpi/ic_traffic_menu_light_off.png create mode 100644 android/res/drawable-xxxhdpi/ic_traffic_menu_on.png create mode 100644 android/res/drawable/subway_bg_light.xml create mode 100644 android/res/drawable/subway_bg_light_default.xml create mode 100644 android/res/drawable/subway_bg_light_pressed.xml create mode 100644 android/res/drawable/subway_bg_light_selected.xml create mode 100644 android/res/drawable/subway_bg_night.xml create mode 100644 android/res/drawable/subway_bg_night_default.xml create mode 100644 android/res/drawable/subway_bg_night_pressed.xml create mode 100644 android/res/drawable/subway_bg_night_selected.xml create mode 100644 android/res/drawable/traffic_subway_bg_default.xml create mode 100644 android/res/drawable/traffic_subway_btn_bg.xml create mode 100644 android/res/drawable/traffic_subway_btn_bg_selected.xml create mode 100644 android/res/layout/bootsheet_dialog_item.xml create mode 100644 android/res/layout/fragment_subway_traffic_toggle.xml create mode 100644 android/src/com/mapswithme/maps/adapter/BottomSheetItem.java create mode 100644 android/src/com/mapswithme/maps/adapter/SpanningLinearLayoutManager.java create mode 100644 android/src/com/mapswithme/maps/subway/Mode.java create mode 100644 android/src/com/mapswithme/maps/subway/OnSubwayModeSelectListener.java create mode 100644 android/src/com/mapswithme/maps/subway/SubwayItem.java create mode 100644 android/src/com/mapswithme/maps/subway/SubwayManager.java create mode 100644 android/src/com/mapswithme/maps/subway/SubwayTrafficToggleDialogFragment.java create mode 100644 android/src/com/mapswithme/maps/traffic/TrafficItem.java create mode 100644 android/src/com/mapswithme/maps/traffic/widget/OnTrafficModeSelectListener.java delete mode 100644 android/src/com/mapswithme/maps/traffic/widget/TrafficButton.java rename android/src/com/mapswithme/maps/traffic/widget/{TrafficButtonController.java => TrafficMapLayerBtnController.java} (80%) create mode 100644 android/src/com/mapswithme/maps/traffic/widget/TrafficMapLayerButton.java diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 2713a02746..02367a5158 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -431,6 +431,11 @@ void Framework::SetTrafficStateListener(TrafficManager::TrafficStateChangedFn co m_onTrafficStateChangedFn = fn; } +bool Framework::IsTrafficEnabled() +{ + return m_work.GetTrafficManager().IsEnabled(); +} + void Framework::EnableTraffic() { m_work.GetTrafficManager().SetEnabled(true); @@ -1411,6 +1416,24 @@ Java_com_mapswithme_maps_Framework_nativeSetAutoZoomEnabled(JNIEnv * env, jclass frm()->AllowAutoZoom(autoZoomEnabled); } +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_Framework_nativeSetTransitSchemeEnabled(JNIEnv * env, jclass, jboolean enabled) +{ + frm()->EnableTransitScheme(static_cast(enabled)); +} + +JNIEXPORT jboolean JNICALL +Java_com_mapswithme_maps_Framework_nativeIsTransitSchemeEnabled(JNIEnv * env, jclass) +{ + return static_cast(frm()->LoadTransitSchemeEnabled()); +} + +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_Framework_nativeSaveSettingSchemeEnabled(JNIEnv * env, jclass, jboolean enabled) +{ + frm()->SaveTransitSchemeEnabled(static_cast(enabled)); +} + JNIEXPORT jboolean JNICALL Java_com_mapswithme_maps_Framework_nativeGetAutoZoomEnabled(JNIEnv *, jclass) { diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index d49f38435c..351611cdd9 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -165,6 +165,7 @@ namespace android void SwitchMyPositionNextMode(); void SetTrafficStateListener(TrafficManager::TrafficStateChangedFn const & fn); + bool IsTrafficEnabled(); void EnableTraffic(); void DisableTraffic(); diff --git a/android/jni/com/mapswithme/maps/TrafficState.cpp b/android/jni/com/mapswithme/maps/TrafficState.cpp index afb6262602..575b6434d4 100644 --- a/android/jni/com/mapswithme/maps/TrafficState.cpp +++ b/android/jni/com/mapswithme/maps/TrafficState.cpp @@ -33,6 +33,13 @@ Java_com_mapswithme_maps_traffic_TrafficState_nativeEnable(JNIEnv * env, jclass g_framework->EnableTraffic(); } +JNIEXPORT jboolean JNICALL +Java_com_mapswithme_maps_traffic_TrafficState_nativeIsEnabled(JNIEnv * env, jclass clazz) +{ + CHECK(g_framework, ("Framework isn't created yet!")); + return static_cast(g_framework->IsTrafficEnabled()); +} + JNIEXPORT void JNICALL Java_com_mapswithme_maps_traffic_TrafficState_nativeDisable(JNIEnv * env, jclass clazz) { diff --git a/android/res/drawable-hdpi/ic_drop_down.png b/android/res/drawable-hdpi/ic_drop_down.png new file mode 100644 index 0000000000000000000000000000000000000000..d066be10c0862406da397cf67072d91a2016a8c6 GIT binary patch literal 228 zcmV_9a%^Y`u8FtbC(!$pY5&c ehW-F!jIkAU@XhP5?q|9H0000 literal 0 HcmV?d00001 diff --git a/android/res/drawable-hdpi/ic_layers_dark_on.png b/android/res/drawable-hdpi/ic_layers_dark_on.png new file mode 100644 index 0000000000000000000000000000000000000000..4c2e16a6bac4b50a77949c7774bc221b9d1b308c GIT binary patch literal 467 zcmV;^0WAKBP)(OVcutc`;95&|#)u~iTY5JCV0#8wdOEyNT{5i<&yZDQbA z-_da%$DZ#0+zs{P!`+{Xh1=aLIdff zhRLIgMd>0R=O7NMn8GwuRN>ejCW8*5rh|;FVJa9xnjtFE?c9XzG~vm%v;CMK4?K7b zg}9?oH5q7#q%trW=mtsU()7Hk#r)b7YH)s2>=H(>oe@e=w|)*i*h&vM>A~ot1!-Dv zqYRM66+C&b!u!JYCa#e+DfA=edBv8fS0R1jeh2TE=gDNCPxzVOz^GRSec}EHU-0vR z)kQ-UG1iv+436F_)4p(>!UcjEV^^}f?%*!yRajp(@F3l7{wlN$UPB3kA9`Q5@rGd9 za3x=fbttW<``UA(OVcutc`;95&|#)u~iTY5JCV0#8wdOEyNT{5i<&yZDQbA z-_da%$DZ#0+zs{P!`+{Xh1=aLIdff zhRLIgMd>0R=O7NMn8GwuRN>ejCW8*5rh|;FVJa9xnjtFE?c9XzG~vm%v;CMK4?K7b zg}9?oH5q7#q%trW=mtsU()7Hk#r)b7YH)s2>=H(>oe@e=w|)*i*h&vM>A~ot1!-Dv zqYRM66+C&b!u!JYCa#e+DfA=edBv8fS0R1jeh2TE=gDNCPxzVOz^GRSec}EHU-0vR z)kQ-UG1iv+436F_)4p(>!UcjEV^^}f?%*!yRajp(@F3l7{wlN$UPB3kA9`Q5@rGd9 za3x=fbttW<``UAwr$(Cxweg9Z5#Jj@0(;$sYUgjsp;iOo;Wk7lUv%f+Ov_($iiy`&2ePo zFLuLgvLJx7)GqwP3?!l-*WfL$A&yd8@B+h-Mf}6IuuA=d1ki@lVU*gAI!FN1_=wG+ zmvX4bAtaq|9!rhkF%r%d3_-k=0*bI3s(i4Pv&T~U?I9Cl3s9;aqV&mCW(Q^=A(a}2 zGu4m;OYKmW%7Qc7P#i+3G;GlvvcFPPY8uaxP#$8!W2s?WLQ*-2P7kG8aTw|xMke+k znw=;~qSSZnuzs%!uY$}@GXy<2?c6ZkrR*Fq{$myguz0NFViFG=M~bG@QS?C~W^lw+ z=nlpqhTqs?ePtuWrZ{G1@me#;T@XW+btrDde~2XwZylv7a2KlVMkU11g_AJz0K*Xv zb=P5iHsc4xFphgLvn9gJd5n5570F%LbM*t8u~1%P8e;KU>ICc!vI4uT`6z%GMv<1P zQoCT!RVQxZ2HGHoW*m0Rl)t%h$iX(v6U+Zx0aJLPea)n5u6l7+`NYbC*X+Vi{Kg*T gyDtlyv3j$SIWK|iEv*WeuK)l507*qoM6N<$f`9+ty8r+H literal 0 HcmV?d00001 diff --git a/android/res/drawable-hdpi/ic_layers_off_night.png b/android/res/drawable-hdpi/ic_layers_off_night.png new file mode 100644 index 0000000000000000000000000000000000000000..a33592d509b6b1d9dd246f4443eef41966223ffb GIT binary patch literal 530 zcmV+t0`2{YP)QH`*?%x6PTrtzUxick zEW3KoPJLHciTNlOcF+o#4@Owl7O@a7VLrHl4q*n3fYB&flf)3*h53Pn$ix!G_X}V= zIEzM+NAYzIhdf5Tz<4Bnb(A`S>S07p3o+^;1_p^~hdVGqqr_&EbB!5~S1=-Il>6y{ zh09=sm#D)qjwae-@^}psQ`B8A@6bLNpHX?os1;s*GQQQKwPEPe2VUNBJ*)R=~CZQ8SR2{q|v)m)SW9gR5v{KVjOV zWREIe{EgSB^3y1}Ts%cz`F&g5@e{@OwQ(KhgIB0!3+jQ#vhiFb<-a`c7^Rn)*BIe4 z$d_c}eJJ~=uaQB1$_WP;ePa!j9r!vY z&syL?SWz0*OXmtRkod{n<_r6v2R}hxl+AaeDD$yF);z$HsG^EGSGa(#=!`S+yOXF9 z*-YtNS*%9J;Snpmxf0LyY942l&ec^kb$rBH5k`y7)hx_KImhR|6>_Bhd9VMkH(^b07*qoM6N<$f+m{#UjP6A literal 0 HcmV?d00001 diff --git a/android/res/drawable-hdpi/ic_layers_on.png b/android/res/drawable-hdpi/ic_layers_on.png new file mode 100644 index 0000000000000000000000000000000000000000..4c2e16a6bac4b50a77949c7774bc221b9d1b308c GIT binary patch literal 467 zcmV;^0WAKBP)(OVcutc`;95&|#)u~iTY5JCV0#8wdOEyNT{5i<&yZDQbA z-_da%$DZ#0+zs{P!`+{Xh1=aLIdff zhRLIgMd>0R=O7NMn8GwuRN>ejCW8*5rh|;FVJa9xnjtFE?c9XzG~vm%v;CMK4?K7b zg}9?oH5q7#q%trW=mtsU()7Hk#r)b7YH)s2>=H(>oe@e=w|)*i*h&vM>A~ot1!-Dv zqYRM66+C&b!u!JYCa#e+DfA=edBv8fS0R1jeh2TE=gDNCPxzVOz^GRSec}EHU-0vR z)kQ-UG1iv+436F_)4p(>!UcjEV^^}f?%*!yRajp(@F3l7{wlN$UPB3kA9`Q5@rGd9 za3x=fbttW<``UA4KUjy5q00?#$LjWwc4j2L{QU(kJU;x;GfPn%G*x3XCxdB5EFc>xyGKfJ& zDeCL}_~`Xz-@f{mPlVMN}-+xUxBxs zn3Al@!0J%~1_+!uOp;kBcMunh7z;(@gDP-=z&2x{Hp*StLOC#2ld(`!%g)(Ao(9z! z3)Qu3&j#`}sLEKVs%85&(4__y84DG)?29-noo6hRC$F`((ytD)WF}>;CD28{D1|~J zl;5SUbU%eceac!(V2pqv_#bnjA<7?=v1AbDcNvbdPd%6YhCHeMbz`k-R246yahT~({5x=U%;A@EQ zBrOx5uwa8Z+R6A;qn0UyKNS4Pb^TCTLS>h2%edgV0w>@dhe?LUh^WTIgk>%34{Rq6j>GP| z=XPG(j*QWg6zZUqCml(lA(QWb|DNO8yO=>UhmwF15oey# z+Gmm6k*k<07D~k%MR7&Mu417s$z9n>K0E6~u~5RYeH$rcQd6-|lVyiCQp}{fVxcfKg z2xH)%a-lKFpNgh5k^+emDa&4El_@dd7?dPa`WS?gDNS#NZD20_L3G-Nn`CS%bj{1~ zXOTmpAmgrmWh!*}*9x8e!jXkp|FkD2QAYf#L@5vm($(b6w<_H3&EVzUoOICLp8XQB9ap;R~S+Ea1 z`mF92o)oRK?m&-@Rl5ieA}iE_9xbbO1P@{>REHjQt9A?z8dj(RJt|i1hHOd;&N=Y= zY)hx~2KsEI(|X7P3+S_8^@q|aJ%K(GKCPuwdQP4|mpPx-k}1uvjzmRsbx5Xlfd?|O zAehpb7)hoy-weCttMq{;)8(6_WLn>)?9SzYhRP|s_AMM-|3gDJaB!a4kqK`6mkdAX zXWxBjmq9ZJ@&cY*ksn8FW=+NrQX(J7H}as+#Hab59?3H@m^>L9tB_M=`8*WhzlnW?##{2ddKYqmg@pht-^9@D6^ R=v)8*002ovPDHLkV1kTo(j5Q* literal 0 HcmV?d00001 diff --git a/android/res/drawable-hdpi/ic_subway_menu_on.png b/android/res/drawable-hdpi/ic_subway_menu_on.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1c8214417e9b2b600c0212542b4871c67afc3a GIT binary patch literal 529 zcmV+s0`C2ZP)4KUjy5q00?#$LjWwc4j2L{QU(kJU;x;GfPn%G*x3XCxdB5EFc>xyGKfJ& zDeCL}_~`Xz-@f{mPlVMN}-+xUxBxs zn3Al@!0J%~1_+!uOp;kBcMunh7z;(@gDP-=z&2x{Hp*StLOC#2ld(`!%g)(Ao(9z! z3)Qu3&j#`}sLEKVs%85&(4__y84DG)?29-noo6hRC$F`((ytD)WF}>;CD28{D1|~J zl;5SUbU%eceac!(V2pqv_#bnjA<7?=v1AbDcNvbdPd%6YhCHeMbz`k-R246yahT~({5x=U%;A@EQ zBrOx5uwa8Z+R6A;qn0UyKNS4Pb^TCTLS>h2%edgV0w>@dheaOIe_jDbfGp9M~Ig3jC!J$Yc1l#xv zou|k_u2D9=;U>&Ugs4(_PhCPkL|Mg>V-@1UD*gvi>TiTn$v6i$=a3AE;L~1}x`9Z! z0f}G&_K?&VrIPU)&m6DO3W?$d%y|kioKqH0Va_KA5Oq&Ij^QcFf;f-lZS3X>dJQEykQ_v*5jCV6I@yLo*o{?^EgpWRICkRqRu#--s)hP!9=MJ<`+LVhPRo?A*~SaTcdJ ay4eBEFYGsoiCCxr0000 literal 0 HcmV?d00001 diff --git a/android/res/drawable-hdpi/ic_subway_off_night.png b/android/res/drawable-hdpi/ic_subway_off_night.png new file mode 100644 index 0000000000000000000000000000000000000000..b98d303179ad307f70c892a6eac8c22bb7b096ca GIT binary patch literal 522 zcmV+l0`>igP)2ijX=DkY2x*cn3R`HP#gwanZD1g^kb=}0W-Kg9fLbsnGppJkxW13W>yz!i z?_3)D@t}L}eLdCf7MkiaJEPGkOjL;6e-UDtA@MDwI9nr%L`g}3*d-P$LI*5_QjkT7 zCTBp8=n8s}%X{-dN;yR2mwtpZA%moYl8TS%$HxdgTc4-n2~rM`BGv_)#GR0k#4SPz zE^D4C1qq8#hRYtLRws}kPQ^~fB9w=LzLYY&-(FzD^l2->K#e%`DOH1h$^4RZxp1$U zrFa9n6^l?628wXqB*h!ht6GFwFt87iNs2e1)3OM)VPG2~lN4{j{cVfT00vedGD-0U z+&j?9#JC8|Lu``b4Y3*12rX-V8-*19)t59vNhrRG*eu0ca8FVrl!f9WL>4K`Zz0cW zgpQ#2L8Saj!FS)in>iYxGM5COEa#D-2dT0~=n6;ejFrl1gz94Oi+CgY{-q3uicc`q zAr{^1b3{WSQ6n6)6bL=QNL^$Fg;2rz-6w@E#lNdaY!P{)qY&!29qu-*QY^H=#eh*u zo&Ay2o>!qLaUFmJZ=S%<=i28fO*Dvi9}->ShS(8r^a>FU&CWERAIu-5Q!6Id3;+NC M07*qoM6N<$g8IGV8UO$Q literal 0 HcmV?d00001 diff --git a/android/res/drawable-hdpi/ic_traffic_download_1.png b/android/res/drawable-hdpi/ic_traffic_download_1.png index ee40a032118547e5fd193a31d1ec6960d9d8649c..392d9ea5800f2cbf241785dc2ad13c55d17769a4 100644 GIT binary patch delta 523 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 delta 414 zcmV;P0b%~Q1h@l`B!7QNL_t(|0b(Eo{{R2a2*mk7ydH=*lZn?u&0r*CA2ALxfE!FX zHlT)sT&UDIjEB;L*Bn%2Mm!H5JzBQkQ|^KGthV#hJT_kC@r8rpn$$b!Jl_2 z6jgvJR8eXGVo$JPEl_>B0XrdpN{?;MY{Lf=cgM}WUx_!wZD*&nz|#d zzf+pJBm$L6Q}Z1XnVO#=p{aX*%XFsZJ@gf({*(tR=@*mU9m&!%QygXGSO5S307*qo IM6N<$f+)PYyZ`_I diff --git a/android/res/drawable-hdpi/ic_traffic_download_night_2.png b/android/res/drawable-hdpi/ic_traffic_download_night_2.png index 0f44941a6d42113b520da48c566865807ef4cb17..98056c3e96399deedb8fa7ee6cabb4eabd719add 100644 GIT binary patch delta 472 zcmV;}0Vn>H1M&lqB!9U{L_t(|0qvN9W&=SGhAT&iAS5V(2uK?aC`kn<00}@OZ%{>{ z1qDhK3Pm*ngq9;BE(ZuyAED?=^bty~GYr;svSxC(5|QPjc6a{yZ+17g*P}z*>lVlH z8887NArp+rDtQ?=PB31Rct&tzV@9W}HPaJT;1%!zkMOBa5`Wv%80rWF-+&SmTf#9x zd`DX)A9%6|_ARk}OB`zYY4%bZcwvNFmY5bZA2r%pZSWj$0nCjAUCaEgF>g+>ITy!1 zFcLij9y7A)fZff_2Y{%Z!?@*qutLF)(K%`{K z=%999V`wN(Xn%EB7-|eP?bVRKTrE{=YL~47TrsZ;@lo}IAtcR8n*CH|o?380W2;%s z@`Tlanf3}xF?GksUVh1U|2w4r403Ns{-NmJ&}f5C>Cx`}vtggxq5T2bt{(S82p6jW O0000B5b}+{2&Gf!e*JBY<6EhTPeDnb5+qq6pIcYDuxHVD&&Pg zgUp!Lpo~DH5(ACC9cV2YirNtF(Z&bL2H(8#wlh&J$D<~izklJg@da8bO?IM|$ESrp zO0ShKP^6t5#ca=%UXjnFBT5t|fg(_#@JTRck5srgT4OX{@mUDW2J#@5c;X=uYUg4DKPG%xZk zNzMOUc~bL5K2K`&w5iSql#00000NkvXXu0mjfdk?Yt diff --git a/android/res/drawable-hdpi/ic_traffic_download_night_3.png b/android/res/drawable-hdpi/ic_traffic_download_night_3.png index c0386c361e19caf0f18495d535eeef3c14f2a269..23988b01439d6bd138be951dcf9d8f0a1acfa410 100644 GIT binary patch delta 547 zcmV+;0^I$!1G@x}BYy${NklQGbJab`4Ed4-Wy`D*cpT6JvJoC(22$e?2Ruh z=tM&m$T3tRuYVIdsJ$;^s4n>SY5vG_smmA&0!?7b5mY(#DyMGBw1fZobaCL+MmWc* z%TYBWZsWG|4@5xh(Gp@-$Mc55IC|h0t`t;gbr#4WDGS# z8?LwO@%&@1A^0p|v>{_CC9)f{_gTNvuYBe2^1lc^V}DF=*HW^dEef0fIwiXJUJMGo z!Um0)!5HRjjOa`=y32Wr0WGU|=cO}60~DAe%%Dch$q7rCe|6eV?Pohfn6vyMC0rkS z?M)lo8N!_B_t0vy8dV3?PpcV>Va{_y$nt0T(0pvZ7JJ1lg3lQ9@}|C}rf2)Ne}C44 lFpiuxV;t}eHVkJl3IKP=^nA)BgW3Q9002ovPDHLkV1hiB`&R$} delta 413 zcmV;O0b>5U1hxZ^BYy#XNklW*|+ce6MkR?bJ1!uo{zg9LJ}~ZBt8md9t&lE zU1)?9zN{2RZ-wxK2@I)$*FnY$S}>%^RcIhXW(XZQActRC(u>Q)`}FMp{wUwnOOS?u=21HK!Ao`W!m4H5&%(Y>Tze|zI%pA7*&eAWm2N5&wr z4YxNgp=(L~;pc~Sz8eBxKpcUIL2@89bStUX-d?u^WHCMrQbV_ry6t4=N%|ns7NZq)O`HHef~nAr?IVEz{|&xiK{1b`>N8%zNTLk7VT01PM#023duK#WERp|M71 ze;nlczO&Qa+4}K=cJH}=?!9OCOK2gY0IumwcutV81O@Z(jXdGGd7p*b@Bz*p7ZlAa z9Khe~fPaf(;nwA~+ESnm>3M?Xh#F=7o0g3fs6#s5VO6M8KmwM5xCi}*SB@i!Cxk;bqmlz&mk|s8+b4Xbl_SAi)-IB*s`X5AM!uc_Knft+S>>6Z;bw(x(NTkzm7fnIz6{8 zuT_)+tw_f2pR3GD3N$4dzvqX{R0@=d={scbK%`O z_mB)8`NXv<7T3OI@EO#y??e6{iuR4s;8XhBJN3u#4L01Qb=6@xAvs_*=!WzF X7G?%DPQ}hH00000NkvXXu0mjfkoNa{ literal 0 HcmV?d00001 diff --git a/android/res/drawable-hdpi/ic_traffic_menu_dark_off.png b/android/res/drawable-hdpi/ic_traffic_menu_dark_off.png new file mode 100644 index 0000000000000000000000000000000000000000..77f42af1c087a75ef76e1ffb514540435cae001b GIT binary patch literal 520 zcmV+j0{8uiP)0bSRU*lvx!Kv=KO)}!$F?=&d$3# zTKwR3&vy^^-s|SHzvJ;3z&lVDTodFhe+aC?7myFGt@=znfThC<$l()0xMCrHBZpN= z_CRWA1Ell{O-DwP|0AW1)X-2F@(nE^r^RDPVffp!wc!~^uv9GnQp(^t+FABf7hY1r zLPdS(s^!eC@9E0JCB%u)nWA=ur8e4@Y&=S@C0P=$S2PFnIbi^y(<;E zL9SFShsfzD(zIYCrz=fA2N51@m`UrZLx&2(F*-wXz-rJ9=>Y&y_+VUR5#v(;0000< KMNUMnLSTZvBJ11$ literal 0 HcmV?d00001 diff --git a/android/res/drawable-hdpi/ic_traffic_menu_light_off.png b/android/res/drawable-hdpi/ic_traffic_menu_light_off.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc2f2bd0979b1ea488fe0fc702a32acd0391cf3 GIT binary patch literal 483 zcmV<90UZ8`P)zj|Ms2iN^M_jGcU|_KkoH&pbLlwhRdLZi$T6n8vKQombNH|zVtM))z;DP!W z<7dtsMo2NUQW#-guse3Wi~hotbVDR=1vkIjfNtS26hRev>?|OwVT7w=B!#Qgv2n!+ zH8^YH7w%$g23Irj?A>lR;oV34M)raOWp<0r@VR*iRKl^GAM$W|~~!1Y60LDmrO9Ryy`Al^$2IO`yhV;)ynAwdV; zeZmqZ^pbBa?PhTQXG(=`kSSHmA#ys3G%Xm(=}ObjL4*ez%4l76C{bZJMrk+z{|&xiK{1b`>N8%zNTLk7VT01PM#023duK#WERp|M71 ze;nlczO&Qa+4}K=cJH}=?!9OCOK2gY0IumwcutV81O@Z(jXdGGd7p*b@Bz*p7ZlAa z9Khe~fPaf(;nwA~+ESnm>3M?Xh#F=7o0g3fs6#s5VO6M8KmwM5xCi}*SB@i!Cxk;bqmlz&mk|s8+b4Xbl_SAi)-IB*s`X5AM!uc_Knft+S>>6Z;bw(x(NTkzm7fnIz6{8 zuT_)+tw_f2pR3GD3N$4dzvqX{R0@=d={scbK%`O z_mB)8`NXv<7T3OI@EO#y??e6{iuR4s;8XhBJN3u#4L01Qb=6@xAvs_*=!WzF X7G?%DPQ}hH00000NkvXXu0mjfkoNa{ literal 0 HcmV?d00001 diff --git a/android/res/drawable-hdpi/ic_traffic_on.png b/android/res/drawable-hdpi/ic_traffic_on.png index 83fad7901b2d4c139a9095e8d301b44effbcf35c..13308abf50d4d272a0722b43dfd24338e904c44e 100644 GIT binary patch delta 449 zcmV;y0Y3iv1KR_TB!8kwL_t(|0qxiWkDO5y#_`&2qecyD+qN5aZQC~Qr`~^(6P?^W zxo39n`bmC^nHSG%?Ags$&tCk)BgC=~C0ImAuqeatgFjLxU^!Ci5FQvapEka`k8{d_ zltRxCVx^=|6M`D%8;;8`$L0U!gtgZP;xF~kDD@Gsd`u`*4}Uw(HMM~Kh-JTgA0lS( z4hLb!xu$-=N~bEafbTd4JN{BhnL-d%I1M`)OWjm!=K<_wEOiA_?m`(#Jw>l7lCO~D zOTsB3TcJ;AQu-0RrDVJ&ASN}W;BAJ^d_7UPAW5aBWc&jtYV_^Lxx`WzA<0{)35OETQ~3*tA-u*_H0LaJ9ygRf z2nnoG7i3!J;mSBdqFz))E*;j6K2g~HwQUMljEk#P>NVWCf^MVGP1v^|8TP5YxQn64 z+OaZ~t(0WH+NnDox3Dc4N~y!%ca#4h(|Jk?`5%KGtU7Y?d{FE{_Jg7>l%dpB>l9#o rch$HZ{tJIHyli-ef7pwyo87Dc-YwLGu$nvA00000NkvXXu0mjfD-G9d delta 480 zcmV<60U!R`1NsAyB!9t4L_t(|0pyhdM?+B*$1AIA09nb?f;Kz@YL+o7MQHM(1!aJ2 zpQ1Nn-ivKOuz&z*LjwbSmu&9?6a!xO&&5-A->sca=#!!%>6SN|UeY3%~ z-Hj838Urz&nyHNn+ZVztgAkG$!x^fnSw^uWsp=ZyCe3ims%pl!!;)MP`Ve|q|Hr98 zWk2CR-YnjMvwywBt;+K|wUt`%#(nV|zKAf&s3!(kV|8jE#SA`+iHbrEn^R+(Fjxn+ zkIkuZUg89yhSsSG1hF|awu4~HXq|f0(;sSfr&ibgizwu<_GeCwt)VwY{$B^ZQ-ie~ z%RhQJ9+sa@#{kdBVU69X?aN%N+;=ABo)bnv&c4XCSy`PrnM!(ccmM%Y2vEc3)OI!3 z!C)PzVRPzYqtuNPRCG)C^iECxg@~M*{tVGOHExprmN7Urfe(Fb@RiiVZNQ5DLwW!q Wh)j3F@s~UR0000U( zFgq!VsnXMl^eY-mVXgwkejyvFI!n>~3FwiCxe!ZT=u3jJ5R$Y&OuPUWDkX6-(FzqB z0;fPL#SBA*%738m7g<@V56W5>-rZ|p036W+^(9griWx}0%wON995@3b;DlG1(@2dZ zK4<-vMf8h{N~t{)0fkTu@|rsJuR_E-Xn=jtVJXYSOW=UG0ZxIhqVGzsQmD{Jz`{Ln zPg}>b7yWa!{@TwNR6LujPpYAoq2$jVp{k<&ASs)p(OV&Sc& zv6T5|AK2tawsney!jC~wLh+0Yg!BhR7BZKTYV0ckE`f@t9lq5Y*#FtUQf-h$^Z)<= delta 474 zcmV<00VV$Y1M~xsB!9a}L_t(|0pyhdM?+B*#|yN5g#e=f46F~(gV6Y~J++axC$6f?TU2qfw|{WC#Iy;0`&Kf?S=TmeuQAcmj=eAjeWrODAYm zk(i3iPL4VzLCCQXlc1+*j@pbb)V3Myvf`X!hR~yIyKN=Kv3|>Z@rx}(?NSjBswhqg zeF(KG|Hr8pyno*Y^5tLw&WQ0lHTZf9Wq1&BPK@_a=4rtp9YO} zAcxJVF)t=T$RTrTYC-f)P5;U0of?Cy8)|l^#%kwn8e+I3aB5CtfttEMgJi^0O_~|(nBqn QkpKVy07*qoM6N<$g4MF&zyJUM diff --git a/android/res/drawable-hdpi/ic_traffic_outdated.png b/android/res/drawable-hdpi/ic_traffic_outdated.png index 38434507ef9523095731e23fc810b4e82bb3ea22..36554ccb6ba4c29bec25d9ec90f3d577bfc3aae0 100644 GIT binary patch delta 429 zcmV;e0aE_i1IGi9B!7-cL_t(|0qvNDZUaFKM9a*~%*@Qp%-sL~iH;!(*Dm;!AvexC&9!9931a4&zK^iiRyH(@N53R;!Hua)1mfLtQkBGgGi zZ6vfszkdKDAVdBpL%x47yn9E|6D-xLNDaiu7%&K}Q%~e~>VHnTHOE)}VtT59}aSt4#sQ?`oCp@Frx`8#`YAZ0H12ATi-5*MB_$ XBfOQJKfqrX00000NkvXXu0mjf6r{(Q delta 447 zcmV;w0YLu81K9(RB!8euL_t(|0p*yrRz*P!MR9j`cXxMphikZf13lL98+6d){0%Ku z!yH`azV~hjmbDHtla-vYjX2p5&O$Xpy3nM9((h`Z7C}U#D2Y&uAW{hprGBZQ;s9Um zpgi9=Yc89I@HNIL4UOBn+VRM6<)W=>>AJ0Q`K2&678$16ynk!xDTxkSiUfOj=-3e$ z_(+&Tj*W&oWQHniDWb%Lsc0+{a%?nIAu|*pWSA9M%ZOLZ3?at`GsZ(tX;icA5PI1V z?m`_5cc|l`mrda&)F>;6mt^6UH9qvPJ3@ro2szY-n*WE?P(_xjwqkfF5WapG=O=Y= zfUCa0<)Po4dVejy6vi;eN^0n>nYX5p!$xWx4I0aY95zzpzL*(84lSt(43UzW;>gHJ zO?0X0NlozVX-Q2FM*bfi{G^70Q-ZbH%?6`;yLTSK*BHYbJE>zD;+4Lg;icZ)q2-st zSWJDq%1UaF01q8I0s|ijbI4&MHFf}vWkL=csk5i^6gV?O$e|}S{SMKSn&=MElNvi9 pdu9BjmT>4#lloWu!;1A^dbce|S@OM5&OHDC002ovPDHLkV1k8h(n1lp0Qc?zE5U zB{D)JLe=2GmlO#tf(Ld?7l@`~qG|nJaQC(;v|6gnAl2#+qkmN(G%FHP+^HK7>`*@# z+&G9_fF=+svytDa?sw|1Gm#s5oRM-1iIlLgmwXb$sRe9F;h21OcUYZIl)}C&aBg2n zDTVbau*F2UkaejJc}lP>gdlBTk+BONTuANuh}EhUIu;~1jTGltE93#&MiKW?+rZ=I zu?2xLaOe=UT7M~ZNb!O``aXq#I&k*-y->7$XH-AL_E%QMt~gOBm0?9dAhZa=gvrzY zLc~6(2iaiJZ&C=B1o9aDqEukc=*bi-Nh@@sIPn%3r+;alI&s&(HggWL42`Qvs$S~C zgKrpw@&(-wCS_-6R0Q_<-4S%q>`L)|GJC1l6x7;kFCSSg@>S=EdT%j07*qoM6N<$ Ef{I_;NB{r; delta 472 zcmV;}0Vn?G1M&lqB!9U{L_t(|0p*y1M?+B*#*0Nj5MTi8Pl$#^OPD=NFm3m0dwUN8 z1k%3|2q2|EA_3AoO@T0&$Y2T(;~G3}_Y16upj z=4zyhEAcqkOOv*59w2Rk03>)@aYRhj-8FFW4@t|cxiO`2i z$oYSq`jg?)u74gJ34k^B_?;T0!jYosRHW0(+ z)aVzdAjHr+HN7Bur>1*kv`&r2bu=}zQ)9GI*gf|2PR(zO{I3prrw0A^e&ZlH6xEwr z6JU)!oUuFg{p*7WuC}AnWhEX5d!4sO$?DW9RblmdCsBleY2XYoY)+jFIueC#AcoDU zPkZMzm!PxWMV;QM>2HYMsfl`s-l;K3?kQt&YPS#lDyROFAFNnE>3slAXyPghb?+en O0000MRIzmYGz=MOpF)8GwMXccGzzYN>~X~w>A-|QM30AY>>y(v0Fj_NTe z)AWV=4mo{iKp5L)=0h1c4hiTC@nw#1-_paCgf>K(m<_fMRIzmYGz=MOpF)8GwMXccGzzYN>~X~w>A-|QM30AY>>y(v0Fj_NTe z)AWV=4mo{iKp5L)=0h1c4hiTC@nw#1-_paCgf>K(m<_fI*i@J3Ixaa1gkKrm9R3KG-A65dLg(%5t7Tqh5mNguLxHV^df>VIv`3T#_f-o zpUXaWAvnVy^RHf?`MCh=cx?F955aK}G@%7C=n7*9ACMwl1Fno|6yj07*qo IM6N<$f&s&o4gdfE literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_layers_off_night.png b/android/res/drawable-mdpi/ic_layers_off_night.png new file mode 100644 index 0000000000000000000000000000000000000000..6c0948eeb7405ea5cf1cecb2228f5783253aecfb GIT binary patch literal 394 zcmV;50d@X~P)n1(VD`2nS23QM$(Vi!goMEbGO%ynq9 z5vjv`qrpS+JB~aHkw1vYwhOcdUw}behZ`Q;G#T;87^g9X9a^Vm8VbJMOv%?pG+~*}tNxFr oK+<)2fmev=d{6#hvnyw&8B@>p?yQ^N0{{R307*qoM6N<$g2M=`00000 literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_layers_on.png b/android/res/drawable-mdpi/ic_layers_on.png new file mode 100644 index 0000000000000000000000000000000000000000..d1dc044f5b6d345168ac0d29ae95b516ea25f218 GIT binary patch literal 359 zcmV-t0hs=YP)MRIzmYGz=MOpF)8GwMXccGzzYN>~X~w>A-|QM30AY>>y(v0Fj_NTe z)AWV=4mo{iKp5L)=0h1c4hiTC@nw#1-_paCgf>K(m<_f@XtI(7tO6Nl$@IBV$pZqWyIK;ND@ohY+?ECb$6@5+K)1(3jKG zXM!BixArPa%$~(&pPYeHKwB5!k}bAV1}y=t0)iE`O9rh0%>#ltwrd9M08Ijd3AQ^1 z6@Uf-!2sLh7;rBC=>!BFv#)tT(*PF%!KK+ZJ)muXQ9v*<`?d%4q`dUVTU<(VPw-}s z8#!nQWnVqPvjMsZ0>(ahf;%ZMx5u7@g`A!Rd(_Uf5BM_uNP2#?U)o3dMKhwh_C-5P zV25DqsV_`TyTM&*CGah<8=MFVSG6A!47OD!m;oFIPQ@78nf?6_f?`@?waHP700000 LNkvXXu0mjfQF4@= literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_subway_menu_dark_off.png b/android/res/drawable-mdpi/ic_subway_menu_dark_off.png new file mode 100644 index 0000000000000000000000000000000000000000..f93c799da883d0a15c639d69b7e727b34461a78b GIT binary patch literal 361 zcmV-v0ha!WP)?twj>6jQ!(UTSd8Op`7LD$0e-Z{7#sh|N+Re;o`f&l}y8At^Y zpgX1JIWEH*2W}*RD?nH8$7LM2D+$^GIw}f|aCZ`P0<=*SY~Y?G=mu!6D44^&Nl*-E zs3;i1jXwc-10WqmL5KM{8&G0ESy517e#r*384xN8Lgu$^K%W8srZ2qWR1(<=mVCGg z0}T<`g{@%5fSyBv#7=DmtrU-_`ROKXQ`mefU9~J_j6c)kmyO{}_#aIwDqyw*4r~Cn z;QC;4lr!d1)q$^qJsbBM>{AZf^M~t81#5sK#i$s;UGwiR8VwX(UkseR00000NkvXX Hu0mjfuDOjo literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_subway_menu_light_off.png b/android/res/drawable-mdpi/ic_subway_menu_light_off.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd2db26476776fac84c82a124e53a0a7be489e3 GIT binary patch literal 333 zcmV-T0kZyyP)R0#SV(|8vx1GZQ&YjU^ z8YtX|N3juqQ)GMO)?^@7$^oU)mP%Lgj7}aI_PT&Rz+lGcKh9tf7`5U(5@FkN8(^?u zbb+4>w;LE77@gqf#O(nFXGS~t*>QV@LCt6lKWlDl7&MIL@H3Adoyrv?pi}snM*ATY zMp1AJKX=i71cgZyEa7Jv?I-zOvEwy|j28qbd@29jO5+f#{e;4M#tYt{@SO1zJ)whr zhQs$TD8v{3GPTZwf5caDfCR3^4{?#uF4)Q@jUoSnMjR*fW40ByCWZLj_xp2Oz+lU8 f1wSipw}|)yCz^k_;T6JX00000NkvXXu0mjfF>8*h literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_subway_menu_on.png b/android/res/drawable-mdpi/ic_subway_menu_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a4b1fd9055f534760ee1917b7fea49d57586e5 GIT binary patch literal 365 zcmV-z0h0cSP)@XtI(7tO6Nl$@IBV$pZqWyIK;ND@ohY+?ECb$6@5+K)1(3jKG zXM!BixArPa%$~(&pPYeHKwB5!k}bAV1}y=t0)iE`O9rh0%>#ltwrd9M08Ijd3AQ^1 z6@Uf-!2sLh7;rBC=>!BFv#)tT(*PF%!KK+ZJ)muXQ9v*<`?d%4q`dUVTU<(VPw-}s z8#!nQWnVqPvjMsZ0>(ahf;%ZMx5u7@g`A!Rd(_Uf5BM_uNP2#?U)o3dMKhwh_C-5P zV25DqsV_`TyTM&*CGah<8=MFVSG6A!47OD!m;oFIPQ@78nf?6_f?`@?waHP700000 LNkvXXu0mjfQF4@= literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_subway_off.png b/android/res/drawable-mdpi/ic_subway_off.png new file mode 100644 index 0000000000000000000000000000000000000000..c4cc1362119d3417a2eb763eba2005b28f043a22 GIT binary patch literal 355 zcmV-p0i6DcP)EH$`LW*F0sAS|4^AfL+(?_r&ge{6ARgEAF5iEmnhKX^c2O&eS8H5zEaU_K> zL$Dk|0y2#x5OM_DKxlzXBP|FURMv!?7-SlWA*Ts%Z3rv4%p)rZZFox{EV1*$kt+xZ zymcXGj%$xQ&oO4`!rKXC-g>=?fCuX%>HsDzE?m002ovPDHLkV1g23 BgHZqg literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_subway_off_night.png b/android/res/drawable-mdpi/ic_subway_off_night.png new file mode 100644 index 0000000000000000000000000000000000000000..1d70b7de344d6a868d56ec52a9a041b97dad055a GIT binary patch literal 386 zcmV-|0e$|7P)42kwIE>?XXWKT@8^~CJpdlczdj%N<8Yln@K~1`p)iMkwfsC-)(5CTw zgMG(?Kf1d|1dR{&?74k89waFJRp1UnA7w=7L1uwZvw+MOhSfD#J0!5N}p zH?o-mQ*3%7!!Uv(Vl+@U4O~MZ#GY5xflNP$TwwfzSIBfcfi8qq7|D622chc;BoI#U z zWolW0I)r&J_D1Fq>REv%gbx(F5u0B^Xl4akkQw7D#cj$lCTL{^+K^XDWIHQx3Sog5 z2Y7>0OfYm^yakSf2aAX>fKoi7>biIf>_TRSDU@T1cgPz#hkj`WA;}6vIK(qnki!ew gsNx>`8~^6>4F{Cg17o0JS^xk507*qoM6N<$f)LG`$^ZZW literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_traffic_download_1.png b/android/res/drawable-mdpi/ic_traffic_download_1.png index 9c03f8af8078cf55ba768000714bfbd3abc341d9..ade29009fb579e59721b7956a476c5832a355b06 100644 GIT binary patch delta 376 zcmV-;0f+vJ1Cs-gB!5~-L_t(|0o|2@ZU#{hg=^ckZ3J~2)`)7`ws9LaPG6votCy)? zp>f)|$=PJG$!^V)d_U%%IkR4af3FZ?fe;!j!1HQ(6CFe+m{r1(ZLPQWqr%T5@;4hY z%lsY4(3C4NLkNz)xw*JbPkDUEOns8b-?GL%Uz82|$5xJy{=%>(R+0-^{E zv7lw55-hX&5c3xxLsLP@u5%FR%zVy#2xAKwy7DBNRE?Et6KaCdgx*&xfEd#mP=&QI zct3QKwGYw9uW=&1ll=Apfy5*+4OR)k7zezz%KVea(3CyVuW@z6GGDC5)z*&;T^S-^ zj5XG&O{fVlhMqUch-gMYiFy$=0gur~Px6H7Nok7O2d^Sr>!6QF1bwVt_4TjJf30VN W5sANX27&GX0000eq1G-j zu!CFmdMT0x!_VAvh7Tm`Rr?b1Mlx!3i5sDC!nZ`5hy^1(`%GcwyGSrn-mVSK8|C~6 z334S6gY&U+K50jS1~CmFn93|z+r$`zjOSN0mKkbALV*0__5jB!4tXL_t(|0o|1aPJ=-dgmHIwcjp2)#2ah=81C-wZWn-Ka0G5b zltbXN$&fr`o9*IE@>Sl>%&XVu->U#@fm01z^cX8041r;?F3KiAEtwGWb>SakhgOMT zjX}v02o%0R&R+Z0*r6B0^fcw!Hn>?utTdnz%XI?^+oB`?PcYo zLfsZiBq!|fs8rA+gX&SMVu_l)D(_*|SUF%pw_w^yIA`$!y;gDzUZRhFiu7-?&4OI8 z3|7g$!N+u8_)C}Bp;a`Plm!M~G|418Jj#~^3k-SusUQo?cqKp3Yw%;&ORtq2gP&^$ kSj%njhvWYGzs!HFCmr9FD(6z$Z2$lO07*qoM6N<$f`wtDY5)KL delta 337 zcmV-X0j~b-0_*~iB!4qWL_t(|0mYU9W9;9VGFvz%>yH1O)UFb)N}w z#v=;oq3VX13772tx#StVCf&hg1|C&o;u-kZeAzz>-|xMT-`&Lz^YzyIo9}n$`xp*Ue$7G(XmbYMbsE5HN$YkEn8 j1E%Sq^FRHge75`nU@P(z3k6^`00000NkvXXu0mjf(fybF diff --git a/android/res/drawable-mdpi/ic_traffic_download_3.png b/android/res/drawable-mdpi/ic_traffic_download_3.png index ed858f3ab1d52f0b5250c9257cbbb8293fc62c07..8f805eadefcca528936240dbfab7027283ef1d09 100644 GIT binary patch delta 371 zcmV-(0gV3R0*(WaB!5*&L_t(|0o;-WOFTdn#Q)uCchh!vD`^L1cXxNkN=nTOk-J4e&SO?0&Iz28c6!e1uvLeDpK?)fa^%ddoXNFb&V401Q zdGJ~IKC`9_mYHD}n~T7PXsk9(tSPd=p3lH#eFFmwXa%NP`G4C0y&kEVA%`GA)Du`! z^gvz=5X=!p+#c`;l!Hn#DT1~@1KASwN#QSNhE*|Q>yjYev z?6udCv6%5td2Chrq`~KV%WE5BhC{sv3F3lPNN&in4wmSe2%cq+TlxUHfQqe&Jv9gD z8pFHj_3)B;_T}g0k1yf+v#xpniul$we`Eh1rO&3{X!K`YBhL$=eU&+^0RSw#hPtZN R+~)uQ002ovPDHLkV1hqowY>lU delta 328 zcmV-O0k{5+1LFdaB!4PNL_t(|0mYU9N5xPS$IE;0U=RcnF<=7$u-#3ALIE=wFs=cE z8HT~+2I@l;pgvX~qt4C2waz_V>t=@^T<3p&bMN83BTMao7I<`|#f)>EW6&AQuoVF@ zQY^v`Knetiz%#Sw%E(8QU|_y3CHe)^KTv{-2?Ruc!1Py?;C~cQ9s~+!k#%X22*)c@ zID@S-pdlVv{PM^RW}WI{#hOBfuM)UNz@;?>*rXe%ZtG90&&=ua)$n29O+TQ_@IKl^+IlM!<4h><{>y*8sCtT-@ zUV+YI4Lm)Yb$<&y?PzffVOZC zBNGWO>0H!e2HtkrD-ICwKt{hn=Tl#`uI>J7!VLmO1^tosps7_o^0UyOdIPn}f6+L% m-xKgR@7AzWEo8Q1;a7nFN#2`iu z!>Uaz2AepUAIdMFplSa9urQBzcVnD5_?6?{d$;>P*h=V0lEfl5#4RTq)*vrgKm(ZQ zXy{Bkgqt$>62ITq*JN~gcH4L6H62I1CIk#J`VI;>$WF)R4}Y(fWZ@9S+Z<59TqfXC zivhf*2$-XQ8W9@^h}lav2M>ktb-*ja=ALfYbz&_JnGH2VUa>ZBO`QTYb#$gPVv!OG z;)v)Gc8X7kR}^OSGZe5>oURA<`-=Tr6c8u`HrQ_~_6I1SLL3bQ9N9}YhbplLB0uL9 zv9_ukwng;8kWYQhkXd8>wWcQ^($^GoLII({nuaLAHCR&@1(b=Ufq*4@sTwpS&IM|E oPPJB^7BvghwE35h{?C6~K6}$oL_JRl+5i9m07*qoM6N<$f^yB3W&i*H diff --git a/android/res/drawable-mdpi/ic_traffic_download_night_2.png b/android/res/drawable-mdpi/ic_traffic_download_night_2.png index c361096268a0dfc63f12b707b5b4f94a586b54db..d8e57e63a594cf50126759231f51409983f9d4a2 100644 GIT binary patch delta 355 zcmV-p0i6Ey0{#M!B!5LoL_t(|0b&^506c3 zzD9cWmYEtvgcTT>c_E*4`G{RG@J5_wktZ|?+hk1tp-WSK8-JcWFUwUV45C2$ANh98 zK~v;+lPwfE7b+-TftcnjjRk5z%mI#BUJ8bUW}y{~e-(OvI=1hxwiW$N4aP~Y-jJz5 zTsZqQbMe>PhP#)Wq^;<0ZbGOx?lg-Mp@)q+YAwuYj5Y9-cv-HPF#BJFw}rn_TSu6vc%_VHq5_IHm`rS8v?ZAj}ULFkdtR-mudwGEra#Ci7DvKwIH; z{j-H$r^gPO?4X9(|G^@002ovPDHLkV1gi( Bo~{4@ delta 345 zcmV-f0jB=`0`vlqB!4?eL_t(|+QpVJ4goy{w%o^mS3#bDV z8+Ds$i|{3VMSLK-gewX8OsVN7^eq&yHr%cY>O({Q8U>6E0)H3OyN3EP3h;+0 z>G}|8LPGdN*gUW`yGG1GlS50BXRJ*-ri~0^+OV09h>0Zn5I-MBacl3zwS0eb>m2w@ z35XK<5eispZ^!1Bl1RcKhHtY#0Rx?YZ>X< ro9?96Ni#*w4BNE%mmmF~|802z4@6n+&8U&;00000NkvXXu0mjfX?LGa diff --git a/android/res/drawable-mdpi/ic_traffic_download_night_3.png b/android/res/drawable-mdpi/ic_traffic_download_night_3.png index ef3f950f8ebae2eea854ac07d5cccf57c6303b33..7bd8addadf2cb9ecb6262217de78b56347e357ab 100644 GIT binary patch delta 395 zcmV;60d)TF0;L0xB!6s4L_t(|0b&^506f%@)F`vLJm$eq{Tm0bSuqgUr3qAYVhZynhebZrLg7!kMt9;H1De zq54`gb(?iHg}FAE7SyMxsi%4DCHvZBE4ZY)(6r`5t2BVPQ&{tD8n%RU;X+wbqmAGx z8`78LN48}e;0SLN=H?ypb!Z5KtW$Q1o^X{5dIdg@J(}s+tZN|L8U|dVrk+8yOE#~l z`YSSDvfV3kgntL&QF-M(Cx;{gtieNmWF6ChHvPz$ZSWa0f8WJz<<0W%m*l-N?eNuD37Xc z4=qiI53dNDw@k~f5i77{->~E*YqQq0k)x&!lj($*E5aN#4HNna3fO+JrW+J6`eIE- zD4AV z0z#dD&D&8oPEEogLO_TDJe`2wIvv1gLV$+?EMieKKzUeFgT}-uDdOwMa78DjwX?Ly mO)r@Z4NG?a^3nhKZ_5Ya&r3*QKPBP-0000xLm4KX{4}RMdchE4H>5m3+E(K;LtP{Gz}+Gz*xwT_kqDFvS)Ai zq(`dnSa)_WXb@3^pJc$97%ULF!8)^pITLKy3FdUG+MCp1B%L?7&$4^|O=FZA9AQr~ zCn0|#nI0a0yQ&L(hdEmzx1|iOxdaagZeZg*0cSViFYvIuGpGY7X<%(pVFR1m^TC01 zzF~qDoA@`4L2B?Ioh0NF={&SkoZ+ibPzl+JR&edvb6r>X;cdX#YsrxHD=OV0d&vGR zitstJB|q(|HcAa~i0<+ZM4!=sDYyQSvyQUp{fy+Oh>xFA~o_QQ#XFS(W#Blad uvPISjir4gKG%2ntNk~PNxXht>vjqTqI>s)4P^S(60000^J+{*(uMq z&hu2@5By6QM|pP(QUR(99XV(PjbSBw9jPt2fW^ohBM2{U2u8tQxPTb+mV$)w6N}q} zSZY-UCQ=kIUO=1)WJI%u_@H@u1LOMCxeKWr-k>sD?g95x^ge*cH2~5q9B=>)B7+8p z;Llt@Efi?R*MeW$Zjpk4DTo+1V!Q#QPui7(-=_h_&EGsS-=g-J3 zmeeXPU}Fl!4^3d>0!pxd;di}*($=QWxPdqhh}V!&T(5!ZsLMjTyWe&}oEdcIee3GMI5rO~!002ovPDHLkV1kEVi&g*t literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/ic_traffic_menu_light_off.png b/android/res/drawable-mdpi/ic_traffic_menu_light_off.png new file mode 100644 index 0000000000000000000000000000000000000000..2f941397d7a956e897f268b676cb49671ca9004c GIT binary patch literal 327 zcmV-N0l5B&P)p+|FPpse-JPra^;=dkvA2RDu zAD~M@C*nILo=&p=(ldyLCy0_UDHz@Xymkd`i;5L+>;-*hzy>_11P`{1zh?z86Y#|E zGyVvu-atbF74cTY*T@W2pI|T)43aS^XkSsuEut^kT5tjHJMM-xy(d|Ez84bIe`uVA z6?}oUz`0&!7L^0v;KzKfk&&zes?MNR&h<<3k9Ib1k@f^7*Ys~RDXyJJNJUP#454|m Z1pr(7hGsrn;sO8w002ovPDHLkV1k0;gnxLm4KX{4}RMdchE4H>5m3+E(K;LtP{Gz}+Gz*xwT_kqDFvS)Ai zq(`dnSa)_WXb@3^pJc$97%ULF!8)^pITLKy3FdUG+MCp1B%L?7&$4^|O=FZA9AQr~ zCn0|#nI0a0yQ&L(hdEmzx1|iOxdaagZeZg*0cSViFYvIuGpGY7X<%(pVFR1m^TC01 zzF~qDoA@`4L2B?Ioh0NF={&SkoZ+ibPzl+JR&edvb6r>X;cdX#YsrxHD=OV0d&vGR zitstJB|q(|HcAa~i0<+ZM4!=sDYyQSvyQUp{fy+Oh>xFA~o_QQ#XFS(W#Blad uvPISjir4gKG%2ntNk~PNxXht>vjqTqI>s)4P^S(60000lkp@W69jcLo0Z7m@Ru#oYfiGBAB46Og zGz6(o*A3A;qX5iaqzC#^wM#XKe=waM3E;C8K=6nJsB;~O#eXpbH&Ev~(tsC;(?Btr zgGL}~M7{ArPiR)8m<0|XD)WfS{Jr>&COklbZn0t#IYb^T@3(S^?(o$hGLB;SV0#&m zpfY^XBk;oE)BrGtK8O~vwN;!4T|*SN*u{%Mqzg4>fmXaiG{Xq!FPeT&kOb4kV?z6g zeKGh{xVl`05IkHOeeCd{-*{&?+4ysPgD*}aX=XnhT!Vdx%)opOewkk|k1RyV-T`?B VUR~@Vq1^xg002ovPDHLkV1gbhkC*@e delta 388 zcmV-~0ek-50-pnrB!6Z}L_t(|0mPC4M+89>$E#acD?kuP!~we?6>!{Xp-{j%IpA0a z9Gt`9;4p#u0tI#f^%)LOKz)h*0s&}y|2$07n`dI_@q^+2elzdQhNoJ@gt!f4!kOSY zY&J;l=31VW=fMCJB z#M&cfZV2ND9DUJ@d#KeS`tFj^P+Kx*TL1b@m%eZmN2YtQAuf{+N2yvnN9{QkkdIJk~pckc}!csu9*+_g``;hrYC(yFd5#EnnrC9hP00000NkvXX Hu0mjfeJG%Y delta 399 zcmV;A0dW3=1E~X$B!6&8L_t(|0mPDlMg&n5hFgPVpJ2fPu~;k=b`&N+kq~x41yHai zn*fEe00m?rERdN|Pq6y}`xx^A#SHB2{4DNV=iGZ^X!zjr|KFW+?hf}Ur2=9`e0efM zhAk5WJ+Vxt=PDf%;g(S?Tvd5_d!7EA92TIwyUB272u50d$bSju((O?G9UUkgNGyLd z=LE47z^zRI&MbnM6Lg8s1_bEnN_&Vn3C7_$B4i`iviFH+bIB-lEcppp-)GuK=#TVW zr4!;|OHvDO%3Q6FQnlJEfLb4CI5Px^mY;BfSMhczU+$_JkjQ`Y!U@J=0Jk;;IFkiq zPS7Ua8xWwQEr0EyL%f+GjKgz8$aY-I4v0&0$tZLz8JXZ;pXovhSDPx2m(%ntzbL@{ zYMSB9B3p2RL<*q%G&@&1kXQr>CkUkgZfy#1W)Xy(phY}3AV5dU_JXd64?To&c#H@c tWCNd9G%%NpLdTK^zZ;NBpXSXL0KzVb@`}C&F8}}l00>D%PDHLkV1lTetknPj diff --git a/android/res/drawable-mdpi/ic_traffic_outdated.png b/android/res/drawable-mdpi/ic_traffic_outdated.png index 0ffbb958b80330244508304684f1740434952329..9c13aea8a942e517e5225ccde4a528afc3a86bfa 100644 GIT binary patch delta 311 zcmV-70m%OU0@4DIB!3x6L_t(|0o~Pujw}HXM&ZG|YXxiDwr$&}_kW2!Nd}e5R$Afw z$rmT5-KmmV8}^Y!epy^V96y*rs2xIZq$1OhoOev13+s@aFPteuUf>^2ROBBr*n^-M zddm>w3%y{`A}g?KHkWE0)d-x8WbxN}A^1c+^b$vEaSy>8^nVgZrtuAl8yLcD&L%`h z^o`H?!mQF16u5o@$18)**s;pnr|k$nU#-Y@eX4$+1Z*)I;7LTpCgHdO!s002ov JPDHLkV1j#)j|Bh# delta 356 zcmV-q0h|8P0{;S#B!5OpL_t(|0mYVqW&=SGhTA*NK`B}q$RU7gjtWJhQB4wcrALH| z6dVrF2k4^|3MimJ0qENlC@6q-eim!ZjP2UU@NtHJzPZ~aIS?u#mc*kcOOx@gQw0AB zGHUgS!cf}bJWaPR=Y!_!X4C>aqvr^QR=&>(YH2$R{Fz;KHh<_TZ&P!Ei4?%rt^hqn zFyREp@dTK~*C4_t!VI-eh*`iP-ZQUF`K0`wF?$q6!I6+y5vv)DQ!9>PBnvY4S)LRX6rA9Y zm_`sxF-yBam&7LE6K#<7y-B@*L+?900000oqB!4m!-=xp1zZQHid|9tKxsU(#e_HHMB514^6nTSAD2Ev~{tX9Aqg_BG z?9rxe`W_BzG?pvYkFyXSR!vK^LMANM=8B`5g(SJoIfRbOW`A8Zt@(rut2H`z5+UYO z;g;rK*;Mc$RQMkn*AKvkMi?Lqpm+!`Jo$nFCdVz{3Y6d&BJ{fjL_jxOvf4)NTCZrkru1ML#W)R9l&hDl&p#Fj~>7Sc@Y6`a1K8*gtd<@ zw}2t|1trWwgi-vXS=1!U%Uz_yvS?zFHmxG4$2jqEp q;5=LOu60iVx{pi>*@B`F-(3I0Xl$fVAcYSA0000t0)hjOB!5XsL_t(|0mYVqM+89>#=AuVheMrnARGW`IRJN7=XTCu&4!|Zt9?3y-re2mBU{oc-d%?p07%kuX7;of{*W){L3H4kv=W@vyl>kfgR*?+Wfg<9Zi)*4{W4CvYi zpcVkkHNc=lz<|wR(!mu?nudKST0{)_9NxBTI*M4+QB&wllx>yQ%sp@WyYW!=iG(buX=-LOM#sR4Y*cX`&00voX4t>$;4_5?lziHTs z=p=L2FRHKfs5yh!WC)(K+fI+)qt*j0BRIK z-h-a#tOEctdZ7)PifqIc*{wHevqj^GA&+ON>mR}Mu3>p00!u|jN002ovPDHLk FV1iDtt5W~~ diff --git a/android/res/drawable-xhdpi/ic_drop_down.png b/android/res/drawable-xhdpi/ic_drop_down.png new file mode 100644 index 0000000000000000000000000000000000000000..e5a7a977bb84b7250444b781159c42794f58701e GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUt6P_-PAr*{ouWh{8))%?b6!|C!zfd$c$9ELhr4`i^0K z`@Pw<&%+u#Jcy_(+#9uPp$)$r{--F>kCzw1;9+2n=+vwJ;i!>?QY^{9({ z-RiGLZKCT|e?4lWzix@BGki(z;T7yEIlv)u9|t7|xIpgXg5&@rVJW$X5;#KIgZ}U{ zInQU z^?=VQJI7&A&wZypTi#cuG3(2*law5-OYQ!=Djz3D|mqNI>cPk=@*YT#y1&%OyB)pw z4#y|`+*J5mA@8>Kq7L4GcQp39lf6*LyYszpKJW5gXyx7cUNCug{~@}-eNnskEWyLW ZqaBfYsJ^%^en9{L002ovPDHLkV1i&LCnEp= literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_layers_light_on.png b/android/res/drawable-xhdpi/ic_layers_light_on.png new file mode 100644 index 0000000000000000000000000000000000000000..8767ee98ecb7f84e705a9ba9da7bb2a61e10aa01 GIT binary patch literal 587 zcmV-R0<`^!P)zfd$c$9ELhr4`i^0K z`@Pw<&%+u#Jcy_(+#9uPp$)$r{--F>kCzw1;9+2n=+vwJ;i!>?QY^{9({ z-RiGLZKCT|e?4lWzix@BGki(z;T7yEIlv)u9|t7|xIpgXg5&@rVJW$X5;#KIgZ}U{ zInQU z^?=VQJI7&A&wZypTi#cuG3(2*law5-OYQ!=Djz3D|mqNI>cPk=@*YT#y1&%OyB)pw z4#y|`+*J5mA@8>Kq7L4GcQp39lf6*LyYszpKJW5gXyx7cUNCug{~@}-eNnskEWyLW ZqaBfYsJ^%^en9{L002ovPDHLkV1i&LCnEp= literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_layers_off.png b/android/res/drawable-xhdpi/ic_layers_off.png new file mode 100644 index 0000000000000000000000000000000000000000..330c1f804feaa69d33aa3e6cdde140c495b2f841 GIT binary patch literal 616 zcmV-u0+;=XP)dAQ;AEEKoKsWq8v)hLOmpfFIZSEB^n?p4C7F?O8~DitJEcCD@vFix4SR|F(_er z+)l=Ih)Z9>{4;mIjX zKzkSLoxH*pWv2EAOvOU&?mW1m1!R-wyt%pF!7 zwL^i6f(QpR-vpl^G45e9-0Z}V=ZEhK{Ko!-%}`}B?)cv6n3LeBZNOsX@=TqBp1J74 zYR^5g3y2-Q4G_~30dp}13MS5a^gs+ssOI7hCMP)GBmF&LHy0l<8*ZlKB_u|rY9E8dO;C|YLWG|phQa|Ks!I$@2|SxTIX%zr!N{0000<|F} literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_layers_off_night.png b/android/res/drawable-xhdpi/ic_layers_off_night.png new file mode 100644 index 0000000000000000000000000000000000000000..fb7c5ff3e94e1df93349dfaa916327c9e1bf56af GIT binary patch literal 680 zcmV;Z0$2TsP) z(W1JC&=0plfU)=vlYR)ra4U@M>xGvnLPQvDxw$1S!dUS`D27|x8N3x98asq_1uc96 zT=028q!3#b>!B(U;;>JEk@#JOLVQI}-#Qq8PgNkq6LcwdBdLEfa*;jC%I^U=v!T5PvZvtu@gYd`~gN2Mh|;*#@r4w*`g!DTKI-_Kx=r^j>b~ z3+)z4FxT<>MmQX}up2qvGY-E|ju}1y4i>z059&Lvn~xH02%!&)PzICt1ND*yIPG}p zb+i%Yi#MS{*o7N5JFfqY21x@97iQvj7$B@%F9iB?YAWop=lj+{U%VEExtYRHyDrHd z*z=&E1XDG8f=fb2b_jJb2H%8^kMZ1|Uc_+ia9ST*D_Ezua@^CoV5q&1E`EFL@RQgy zp)TH_uP~2{&1)c>=9#!5zfd$c$9ELhr4`i^0K z`@Pw<&%+u#Jcy_(+#9uPp$)$r{--F>kCzw1;9+2n=+vwJ;i!>?QY^{9({ z-RiGLZKCT|e?4lWzix@BGki(z;T7yEIlv)u9|t7|xIpgXg5&@rVJW$X5;#KIgZ}U{ zInQU z^?=VQJI7&A&wZypTi#cuG3(2*law5-OYQ!=Djz3D|mqNI>cPk=@*YT#y1&%OyB)pw z4#y|`+*J5mA@8>Kq7L4GcQp39lf6*LyYszpKJW5gXyx7cUNCug{~@}-eNnskEWyLW ZqaBfYsJ^%^en9{L002ovPDHLkV1i&LCnEp= literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_subway_menu.png b/android/res/drawable-xhdpi/ic_subway_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..967173ce9306906b5a85b34c5c2f39320b07ec56 GIT binary patch literal 628 zcmV-)0*n2LP)h$i-Q3(ehgwzeTMd3zjU(>iQ>af+LLOeJgc>3{#VN1{h?4@6Jx+l-AWj}3Nu5)m z3-0N13iQA|Jx+lkVR(gF^b8|B1MgXe98*7J_Tfbc`X@w2DAU(9%fKx6Uc`tDA~&OB zR3MC677Db8+=7l#i7={JC{QDEOFBlUgwdIW0%t_-sg6;VFe+OpP$qJ#Iz|n`sA!=; zk;rZ678H)mIDg~0L zaSR`!Z&Z?TH{+bgdEP>Y5I+v*o%AP&4-Y!uBstV8xTlX=*8Q+rLfwEnu2DG?Ux>S? z7U~`K4bd?{4Nz^=j`vRp0I0xUng%?ZA)FyOlocuA%r%k<$lLtm)R zsI)=p4WSxS5J3sHk&NbBVLF#@g>aqN4v*fp5!9ITVlmVmRPZ;)bM3Z z(-D!@&`T2|P0cboe4O~uG)srjO>1hhcN_^&V4(;DFa;z)n?)krLQES8Fkq3086W{B z4g{DW0p<$9J7V7xUaZO53coob>IcN$jfC|5V(by{^i9Q*il_1D?Rc?=!Z&FmlvN0I zEd=N)e6uD(d4*8RLV%XSH*X?TRS4BA1gI%|t0qECpcSRtziA+(JkoL&0_0Rjw~0_6 zJPjmIzrI8Ze|nY{dnwu&ZsDoL08_Y)xdDL^lP)tK-G_LI;boQ#BanehOuo!ANDJd7 zhL>3$ZQ+8&0M`ot3fjUq76VkEHs1Ebg18`JJ0AXg+Yc$Ag`J=ew6GIQ!UUK(7+?mp zuoL*Y!zVN@t_&`y2wXRz6X0~))gg36$l$ssz`dmt0giP7>=7#mx6qPj1MX%bXB_4f zDmfUS6t>dG4h{cg@=lT>UL6>IN*tQLSRD`#5e|P(q$J)DuZS-3Ml5$Y@S2zrJ>t^) zUw=P|M&OBc1T;GV&Bm^VF9!ahA8HhfZgCC++o&i#{8``)^_fTr>L*z9m%h)QQsPI% zf`u)!U~jP}V-@_9#`mWDcMU%s>K0GCy6$QB4P_Gb7X)s&oB#j-07*qoM6N<$f~D67 AG5`Po literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_subway_menu_light_off.png b/android/res/drawable-xhdpi/ic_subway_menu_light_off.png new file mode 100644 index 0000000000000000000000000000000000000000..f5887ca6cbca327059751ac37441cec3c5d2c607 GIT binary patch literal 579 zcmV-J0=)f+P)SRuN_?DS8pY$r+JmUzJ0oTuD;}pb50LyfEHLRJ`lf(b+H-P zx@JGnuArO|Yg&}Tnsx?Zmt*N0aW2MYuK30=a~DV^ibcn=xo~H$V`fp;;LTJ<wIc)Uqg9m4fpe=~c z7NhqJJh)~AEkS&i7`@lv!DI4n5c2N#IK&h#Asr=S8q-tw8`AMD#567wLyYAuJB_DO zLyYGhd;KkOmX;ds7hmMK_~*JK zY1WJP#9v}H;)3hq5AlJx7JWu@GPB2Sg6C!?^CTj%U2F_1dL@nr&v?yhstxT5%JR$; z>Su8Z!ZAfNn`&7*gD^+@r@<-xr`@6UOnS9@N*kV=#I;7;9Znz}CtUA#{{glx{g98| RaYz6F002ovPDHLkV1fqA4W9r2 literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_subway_menu_on.png b/android/res/drawable-xhdpi/ic_subway_menu_on.png new file mode 100644 index 0000000000000000000000000000000000000000..967173ce9306906b5a85b34c5c2f39320b07ec56 GIT binary patch literal 628 zcmV-)0*n2LP)h$i-Q3(ehgwzeTMd3zjU(>iQ>af+LLOeJgc>3{#VN1{h?4@6Jx+l-AWj}3Nu5)m z3-0N13iQA|Jx+lkVR(gF^b8|B1MgXe98*7J_Tfbc`X@w2DAU(9%fKx6Uc`tDA~&OB zR3MC677Db8+=7l#i7={JC{QDEOFBlUgwdIW0%t_-sg6;VFe+OpP$qJ#Iz|n`sA!=; zk;rZ678H)mIDg~0L zaSR`!Z&Z?TH{+bgdEP>Y5I+v*o%AP&4-Y!uBstV8xTlX=*8Q+rLfwEnu2DG?Ux>S? z7U~`K4bd?{4Nz^=j`vRp0I0xUng%?ZA)FyOlocuA%r%k<$lLtm)R zsI)=9Yq~Vr4IMtCG18a8OFylZtM1h3uL+sdu@`060eKg*esD@cVNjS?#S9D7RYKDb`h3b zLN`3CEf9UNyg*}e3EdR!ut1K&#bqqP+$yZWw+c%fwLmVxvy~`u$pX0#|HUPaSs-uV zzp_MRU)+FiaB&@5uo=f>O*P()T_T=NxVVbCu^zQm+K{+CwKlle3eEq40+V2wB|gZ| zhiH{G`vL{_!7@vnhKo12fOB{V4|<4mxQKV~B1_DK|9Y_!XaDpPZGjhB#BIGNB5&nZ zoPhr%yU-vv_G9!Qlu0;%$M^&<$X7hVA^Z>hioJ#&)KW_=lJ8UvqZ~*J^P2zw002ov JPDHLkV1n-_9U%Y! literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_subway_off_night.png b/android/res/drawable-xhdpi/ic_subway_off_night.png new file mode 100644 index 0000000000000000000000000000000000000000..184b68108694804b3d2dcd33b0a467c5c9bffa10 GIT binary patch literal 688 zcmV;h0#E&kP)2%H1qAD)1YR8t?E20_FVa0m=j2y_K6Xo1IuLG6}G6zA!nvi%xhZ9SD1^x5L9ss`Pkl0d_dm<%qxPa^B@}Wu>^KyfVF~@LY#e5b$2rd;<#3CD9VB1DguqWFo(T zLZG7^&Jyl*W*FHW6#~7D;8zL>TBo_OPH%<42nziKx`7upAn}PZM<@g)Q0V<%f0s+d zY|5LU5LiH=XMX)lE)laSYk@*wBZcmy|H~v|Hsx$o2ppo&WmMvlpq%BDaY!L>g+ixL ziA*A9)8{WM1fEdnD6UaS#B6?KQ3!msug!W17s3qbWR6EWiFpa{FbB$WU7TqBum~&wJHdBn({FQ06f4lmSnMpQO?A^9&Ciifb~&DdmKb$C9Rj^$Momh5 zpwPRZ3DvA~2&_{NMJ%vC@k-?wI0Ei~;N;G)tmAw>xFvqQ3J;}6D{;8mBv_!S=Z5Cs zig8YyD0VM20eec={7O)dPV5Jut>QiD#$REdgbjZK_rMm=%Xo@C?{5C*hA9{YqW}Pt W7asb^Z1=a+RB!3-AL_t(|0qmCpY&Jm5lN-Zw5oh77(~5C6jkC>(8o|EWe?m<%hR@M#6r3WeG5 z47{xHfv&OLGiEe?Teh@GDt|T%@xUYF4E4a~wd)aGI(f2a*?+yGt>@UGzTwKh$!)In zs0TK;T*9V|AKwr=xVK9-tWs{1`?%Dk9@tETcVN9um{`B2nVR)f?qgGnGH+84zF7dD znVvSC`*z1n1IT?Wo=(pwGjNu{cV6M$M-TLx29Wz`ntw+bp|b{l5AY0pr<#$nKEQim zeY{p-{!=Is2Y=wN0|_($b0toY0T^ZmFmMFcFdF&>x5L@wcKD4^r-pi9^PUlU6^>Wb z8c*AVqwgS_jj-DB$d89!jCVW})zpJ8=E6sopSrd~6Wc96tv#abz*r1l8G>g+6SEC9 zUQt$Ptc0IJ7~m7tj*PF<%Uo__`s zcOm2612zdWK>tW7g$CXOl+^8hfxtuAAx^y<600000 LNkvXXu0mjfXT1~1 delta 669 zcmV;O0%HBv1hoZ_B!7HKL_t(|0qvT#lNDhQ#5wl_cXxMpcTaH3aCe8Zm*Ei^e+upv zAu;X{FVj^YM33G6X1&<1`aPYS?s>LzRog_NQNmFn7cfUn?@-kqW+4NQ&@?&x0pJmy zW=1f;%-9Dw->37{JEI0Xe=usmPk`HaEUE!k3akIYUN`f8Reu$^nr}z^LElO=j)Ua0Jrhj-yyX9O*T($(KN?L=zC-%TEdpst_>wW<2plYJU~sHwv_x3w1UIpQny^$PR#7%kaq3Ot4Z~V!10JWCkkwvBM zLM>xdSXh{QH)Z$@ukffrEg8PnWbmbS!dAv`KuuL60=k9oCpBdFt;RbL6$ssgEzCQC zj|e{Jzow1)0dO0Sk+1v~<5iF?b7>u5pbM+X5X*#)LVuY7x0jQDyV^Aaq0>J9E$rs; zt9Hys|5MBWd-Mhf@2T$U{>VmXxw82(0SeP&In%tavUx{=RY#QvvJom24k?%b0A#Y%q6B?}kVT~hL4Uy%Ut(nNrD;MvY1Tc!pV4~b9f+C>ON3J%rpFM_ z=Yi~$@qcO_&Mu^1C6;B&-2XB_EpMjZMpYmip~H#YMv;xsy2Ngy$VO;vVz*IbBUB;O zCU6_AHQ6Z5PTn$yOuR~j-3c0Cx5;FsDq&XwK0>=p7L_W6?J;hn+f4>vDiS6M$0OWE zj~h>T2c|+{Sp?fCJPPC7g|cllJJldfCwrv+bQYW6V+WM>dO`Kq00000NkvXXu0mjf DgS$Ph diff --git a/android/res/drawable-xhdpi/ic_traffic_download_2.png b/android/res/drawable-xhdpi/ic_traffic_download_2.png index 65272cd4c4b837381b57f7d5949895f7b53176f7..1b71fc718a2ed601dfe114339fd401e2332872e5 100644 GIT binary patch delta 526 zcmV+p0`dLY1f~R#BYy$yNkli?Mc?zCNGg?oV-f> z0&#wQPQ~b+8U_8G^M(EIsv6Zy&oWDBG@27I9+pAFq-FHk6VMaZz&vPJG>_(Tge~wX zd^3YzB#FhqFJz2l?3Y<$Jf$4i{AX;@40r}kg8r7lnD0Mi^MB4{up+n%&c-epW2j0w zuvrB^z*5CvFQANDbGph28_$6go^)aERcJmJ!0iLx7r^ht-WR}E7a->@qxBolu5YYptvp%R zQ*)tRD1H`yV}BG@L^-hWHyhLl-&fUFe`%<{;qvfA`|2(YivKZ+@Plkl!9p`zUL-o2 z^h`yV+!KYAgC(}XZz@k+;!vSvXH|?*d|LZPv29}y{5Mx%alFe45Mw0C|D#xraR>%E zP(TpP?HYG%JcRCe-v{_7@%(CJJlfos6b?PNtL^=tImv;qRkzyv{XPojz^kwwvR9>cqzs4cXhn|*SsMKS=n)~S zV;Eqy4FfoEBrJ#{VKuG+cEa8N@hov7j`OHJ9$xEE2Qr(BS zo;tux4|jJ8kbh36+xKth?tOhyc;~(>d@!1i&DZcfW`NzE83=B}w#HfG)6EYLi*FIy z{g>u@GsdM`+WPPoGr$>5akF(j!v8je>2-5J9-{Nw@x}+Zz;V()yis|+ZfJ{EwV$mUlEPpySS#S~~LoimrMgo`7hV%}F z{%{+-<#{8+O)7*N*)8eSKl*1O{i8&$ewgbHP}4W(Uubk98^L9L1Ac8(C$bUjvv+M2 z*$C#_yEck!1SMFraBZ|E*(lapxU{$y(&XT2iv~C?nS4=!rz|*xPDvIOWq3TnwbA2} zArKk31Up`jac%Uv^hEFQNJA%vwNVGAZTvIqw*`+j=0=wq48p}8Lw>mp0ED%~4cgga QKL7v#07*qoM6N<$g6h5yA^-pY diff --git a/android/res/drawable-xhdpi/ic_traffic_download_3.png b/android/res/drawable-xhdpi/ic_traffic_download_3.png index b12645addb559fbfda4ffe04738026b54ac740cf..4ef6fa539f9f4ccc3dfd5f8bc085e4e5dfd142bc 100644 GIT binary patch delta 578 zcmV-I0=@mx1lt6VB!41FL_t(|0qmE9Zgf!`#J{h$Z7W6<)V6I~aT?TofWB^LlL>e4 zz5jDAx|-y--kD?kiz=$9Y^es^flu(I$S1g?$Db$xJc2KqJkrY*Wq@ul6o7e)f?b1o za&7V3d4r5@mO)!v8ZCMc8UlDV@HZ=N z059)VqrVCTZw2K0KoD0zz7q#$1q4JZAXmHU)=y4B3&uM4BwFqx(i_CUR1z^)6I78r*Vd1gK zEZ0;94qd3gA-z3Qn}b8BEm-ye`6Ld$jZD6b26+YK8(H)yAy74UQoK<9lIcVmt~{n5r4M@ZvT-nNDL@Pjt49$O-4FE zTt9V;<$O9lX*z`ipv;*5g2fzWu0qBl!neFnKkO!P+JAX#k2Q`a> z?)3nLF*`8u6&ZzjVBkGKVJS559-yoq7V!Z delta 569 zcmV-90>=H@1kwbMB!3x6L_t(|0qmFoM+0FP$J-@S;m`=>q@9oiQUpazW~=57WJCcr zV{1~`#$sE$FVI(ruul;{U#1UG|Cbk{-JW~y-gj@>j~{90dHzqmw|m?ig9F%tLBh6V zZKbTkK(Xkdj$;i2pocng8V1OjFn|Xgn3g)w*EPT;ERV5CxPK9|A+=rDo=~GXzCW@N z=)iz!mQdg2*GD!26=rb{Qt^2`kd448v$zAPIJ_RnMqrg$JPoO&nLUt=#*KjkTthM$ z*f;11_2CMP#8$*1d_^~LUuI$9!d`@CZo*%qJ$ZdB)?k&`unk?xgN$HR_D+Np%)*L> zRiYw$rDn_AUw<87H^j1rBUBE}K;VhkDAqR0v`ZP_*4%9r*$DV%Zlm;v<+i!oD6$c- z;Ddq7+`Y_3V#mAzkSQYP1|1<};ZZbT8!f_EoWQ{pw$Xv?od_9Nf?W;UXjk^inD%1J z`!CDfY=B;z0G4G1dw2UU`M0x=;;8f~6hDjK;j@^-A%7czM{Waq(|*ps7Tyb^i?81l zpV=GskUs#j5xC<1ux`K+s>>`amSAm)H*rm7h{ZfSf*p-tqaE23 zy_3U&-ZF#-*)V|znJ0TGA*W%Lm@RYP8}OwDql-O;(sCOBKY5Ex7y)C;00000NkvXX Hu0mjf94ro# diff --git a/android/res/drawable-xhdpi/ic_traffic_download_night_1.png b/android/res/drawable-xhdpi/ic_traffic_download_night_1.png index 7c7601cec02e3390a8a8fb97ff97cfc73ee04188..1854e5cfb22945e67fc037a3d18f829c274a4c00 100644 GIT binary patch delta 610 zcmV-o0-gPb1^Wb$B!5ClL_t(|0qmCpj3q%3hR=%6wr$(C6`XC`chPxm+m5-hHpWKl z-C%80CF>n@SNF{0B;WJ<|N7rdch&1fKb(j2a30Og&GUhOKmw4+NkZ#)=Ub}yK|m-L zBM52?GOEa-z)|3=0=KjZYskwDuFgmcLGZCoh+8Ti=si>(YaGudI9h=47(G0jW%LYPX^wondfiWP_7psf6K;ljp9*z zvKd?G9N>q{HO=k=^CYf;d6sBo^XR*fl?I^q0c#0B@5I&+Kp$rSLXo?GC_+I$ zfK|ZIR`Br;f)0A`5()5*V0sbgqoCCX-y`U~6$!8ih~)g``)KI(;XD)Qy-4&j8Ufq` z;u#EAG3c#g(1~yL93gW(jA!_NFqA=OsNVdKUPkUd(|>`F1_VIO>1J-DJ0xC0JFK7& z5Eii&G&0gQYBd1}jm$YpP>Os9d{f|$!~lO(JkWcdNPzbOMg0P9xAIFs=e)>`Nb>;n9BOiwUqoz&6rYxU}D#G)Pm z907t=%v+~3jUvk54Q|yQV8#|Y1h}S9#9)^1Dtr&MhFC!#Ae;d!Xk>&nU?l;lyO4DS wAoKxi2{21yCvKVA=p^6JoMs&bqhJ&O0H>}f^EIlFU;qFB07*qoM6N<$g4n+ydjJ3c delta 622 zcmV-!0+Idu1cwEXB!5mxL_t(|0b(E({Qv*o9f%hK@n&jbsG05zv;;s4R6v%|7^~3I z1Hp9gKrk&m5Jd+ML=CtHe)hI5{pxLh;j6RxXAlOlfA+R5ql*WC29yGE1r9t7pXL9a zJYMzH&++&dXS4s<@K=98yJp~-P8h~<^@~Iaz%K;RfjWYufqwxA1_BNurVB742*4Rb zHIUFjw#)vF{UNhIWA=TyF=Myy`@FY$w;evf^?cv2p7(ja$DKdEJU`uiVc<4F|B5jX zO8@@%hfgwL&|V>9AdnPSZKDpz@YYTO0>*$RDX#jQHK3jq8t@ncb&&yFR@wlb6&k3s z7kOc!frZW_s(*olMJ;py|8>V{N5_P^n9@s39KIvn32hLuVroRDJVqnXHeGBDaLou} zk=?5UGK-8rX*SY|5IN8S0ozUnQ6h-7a#@)Bkp@tp56(VeMjm1UnxGWpfGPRgS%Q9_ zF|ap$Eo>#!cEQe|{+=0%p#2U5&Uaf~X>VOkNQ z1}=#uw*#)>BHPDWwNqvxA2=VPg#RbPTxNiKg_NgJLn6k&*5Wj}Wem(MPNQ?iz`)`( zI$(;IL1$!P8jV1i74R$!bDqv5DuR_o23DY`J5H-$X+auYf~s^URKU#%)2Py}m@c*g zxB%f1(`XoL7SfCn|A2plH0mp@Q)ZzojsBuf4YH3t?El>66>v|wL@0@?kE1-}H4B!31;L_t(|0qvOqL_|z?3Y4 zV5m)yfSDlBV8X(-0YHTS5I}$s00gw{^?kYsZ}0Bg-MwAh$B%4p-~apf?!NEswqj%P zuwldVygYCNjDRtb5&LX@S;fbJdtfXH=7{SmG70Pg2R_s}g@3hy6GoeJZGDagYA0n3 zG*E!Z9Z>YiRb=l`^EG4))QDmaKqeqx2CpIJtjQRN0*AmrP;5^i=e}UB0n?7E*b8ak zOrYC10=XQ4?u1%t9h*7}oCk=n3gk!xd>(UW!)T#7;9B7wz+Abo=YXql54g)1WUfRP zGSC2F4j62JKYxi0H^9Lfpch%8kAC3utv7o;exAH+e<1ibzDCW%v@0?OnpDx*d$&J% z+M0bmZhC)#*QWU10wykG3>1Jq6A{jkRSet_$pX8^C^J^!PY&hFy?ml_OUPAAMZT7Oo!gvtiY0m3FWdXW9J(J8-; znreVP$n2v8ugE5FIm)%m4rY delta 624 zcmV-$0+0Q_1c?QZB!5szL_t(|0qmH8XB%M{#@Dt)Xw_h|pwQ}p^e9wy02B%ngy0~= zCOJR|fdGgQBngO+oW;p5g8K``whb@Uq9LzVChC zywA8lN~s4h0e;L(zys$jlEYsDKVdGD3{XfRKq1Khr4#~`bbkm?1y>*&U;sOn01&8y z#u|o%hnNr1Ho|7EA*p!7H=?uejy(h8e<6=n*f#jkG6R1CL>5##}}{ za2>U=U4RbJaDNI+N+ToC0T*$N5CH8eMGh%>7i2pq$fD3#Pzkklv=NDgbX!RstUVc-5e$A!&z@-Ejhz#gH=RUg2Ru%A+-|S zX&B&+TTUw)U7?D!CzKhFc$Uy3E=O%_MX)59p+v@5Mwg%%*9egV?|{3Zk$nh4L}_Gh z;Fa6nEQBi}A0>8tnA-3a0SJHsi`|}w7oX4D-E;4IclY9sANlV3|DXTeJjzggHj*KE6VARrUbAi4|UC^f9Vv0NNsp|9_RB7dZyraG3iTV1C5|y-k?_ z6ValMr{nVQ`|uIL&l2G#G67m%4bOkipNHRu-y2rLz6t&f&j|!*$-YK4;2p*6^6#?g zuDXA)U>%n!dRC~I~B$V%>Ykt7t#LEKDhQtRB!008$z9bqnEmD>OS002ovPDHLkV1noe8DRhb delta 619 zcmV-x0+jvu1cU{UB!5duL_t(|+U=UXY64LZg<~QFAz~d1n}}8_q!BTF8Uqmvg8>^s z2x=(^Hr67f@TU?%B|(g`h4>6fXP!bIAXsl^V2c#~%$>WtUWvj77R#JD?7epmyL%@3 z({=qG=mRs8>0@n?UO3JBQOsieRvJjzU?63sfs73XGAbA-0Dl3%We@~Pwiti{WuUT! z4q+pPcGQjlgFQ7mJM_yG14D`1A0pI`NYo!v4Ahy$3j%k!#MG!$if5U{0|EwuOpPq1 zxQ|)fC1AkC)bLRSY6=>tiJU}UU@9mOv~UScfosv@^j6SB$)Zg>#a_5GAq-3e#3Cji zqo^I09c(v1gMTPE03wt@MxcS(W<>}G5E7UXMIgwG5_Ln%aSC%sX#fhufx9hKY)GS( z9r|&Kfe}GOI*l?JQ4F*dPNQwokWn~|mMF!e3a8O1rT96}RWQtTu{WwfOhE%N(c?6) zP#Vp1XF^VaG@6qgY-vC{KpNFh+pGxT1zv!W4QX^_Xn%RF$wK@zT0Dih|B^;0vQ0D> zt+&)H{r#XNe-QlNT(sX!FgKwX=y3&>>*Y8-&wM7dM|~4d^XISCdNr0X(4!cras~c2 zzsrP#fhxs7g1c<6K?)MfDM2xC#n}hA&Z!3QTF&~%-mphY9`NF3r5eC%xes=!1}=e? zLIzsclVs>|>H(SxETJag;m!m%@JbQFjcLIqMs2t3U~>XV%Bv?lB279*hlZxp%ouS2 z6!#3W4{T6!kQGtupjil)$fhW93UjAV4HW#?|`{Y-0cb002ovPDHLk FV1gGk3IPBB diff --git a/android/res/drawable-xhdpi/ic_traffic_menu.png b/android/res/drawable-xhdpi/ic_traffic_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..a27c25e2174198b7dfa50a57c86a0728a4a34afb GIT binary patch literal 421 zcmV;W0b2fvP)8J$kaaXgGVy;o!BKvtkwFij18AMrI<0kD>$KKst>1qYBRtcL(Sc0 zfC@yYPWz>@8K6KTRHwf^>U4v`_8iP`8c>}+VbNF P00000NkvXXu0mjfl2gMM literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_traffic_menu_dark_off.png b/android/res/drawable-xhdpi/ic_traffic_menu_dark_off.png new file mode 100644 index 0000000000000000000000000000000000000000..04e09f51ff0b198ab87f9a91c34f16b7a7916888 GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(Fs6IDIEGX(zMa+BcGy9nZTs4U z_q<#hCOedu2MAbP5Z92|q94$(XhA@LhKQ4*gTn^?8NW9&i0_^`_hnKWf5Ni;@BHl6 z%nUkgAo74C>Oserec_2qPVtv?T6(c%NHT3%S$Bu=%K<@)Mxh9QPQN4bY%N+?UUWR) zDfKc|@c&*tl>@B?3%Fjy3;v3CVu~o3SCr$E;A`WTo{;?RkklO|wkd*pPj~Dy->@v^ z6>kL#&n7|JT!;PaHUQ*d~ke%9jKf2KDQ{TKLjc*+Z7laxbcvP0|`9y(9U zWoYs`!LBeNpMiIQ)mn6Dw4J5;gLPAKQqD6u9cLz!1F2qz#<_kh|V z-~uJIO2|M5sO8uXIyU_qa-8QGXDs)D3`XgXYcc{>-8ICVBr;nK7 z>E<~9laA4ZK5skikB~BV?b?X`j8J$kaaXgGVy;o!BKvtkwFij18AMrI<0kD>$KKst>1qYBRtcL(Sc0 zfC@yYPWz>@8K6KTRHwf^>U4v`_8iP`8c>}+VbNF P00000NkvXXu0mjfl2gMM literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_traffic_on.png b/android/res/drawable-xhdpi/ic_traffic_on.png index 60b57fa158eeebca07b61b3244b194c64325bfc1..ee639f9cef8dc7e6e8d9cd7617ebb3e12942493c 100644 GIT binary patch delta 552 zcmV+@0@wY&1;GT6B!37=L_t(|0qxm?uUt_Sh4DVy2x%|51L$wsoVHw`z2wLG*4<5qsSd17CbFc$$U53HLi0L>l zUfm1Wj^lU=OTja2NWpYe)exR1M)cv^I&d47a27rIwg#-jCx2L#Mi)8a4(uD3QIB7> z99D%-=mq(V=oce~P^miHgh6?TNf7zH6OTc%t*{E7V=)>a@_i>Zfn*C{32(3(&CnI_ zPSj<-10S&k?GX8ncmhU<^mpJMk_EgIvgNRt0Yt+YBh)#d2Lz6orB7l8Q1A$S*ogrl zZGcrZB4EHye1C>%86&j2XhU`{U_jW2@yKooEO5kmG@zzN;XF)u?fAuhf_bQiTa$1D zhLnpAPp6kyjz$#Lblivi;A#zz*mu}~R{WOgaWL_3WPQenGwA$N&Vgkahh5{JbdbHr zxQr2T0}?)C2gainQ}I!ch#w$DjF^K9xRme&R=|jQ?0>{1?5g!3dkNF@#a0a`_C#d2 zAEsqqZ0Ql_(T?ouu>!APn!ebI`cAZBBi_RjGA_1azSv#Zm3S;7<6C}%)uy35p zyx4jjb=YlidI#=Bo!A?Ez5@)Ph!Gono$fS=kqhw0X!}Tre>J0000!+%&aZQatj5OikZBxdfZ-7Y7#?PT zu@M9q8*6})B}*PZ*|kmP<;XtS52O0M19*(r@Lm)F<{I<=!GA`t#k*9gbo9xH-jCjo z>YMu;c&}5HO2>)`u+d}vxlDlF%2$t1*US9RA>22iu$u|6LYW*T0)q?~D+XA>1Q@SO zjyh)pV5}4X-U!uGCdX!F17NHa0NzL~OJIPd2Cdr0;RKZsywo!CQd{G20ygns=S5O$ z<4}y3(L>IIFMl;MRuYThAUnn$WCSbS+JUIZXl1O3pp{tR)+#DAb7>9G)r0v=30>G< zCiD4bxoqxUxpx4M@fuk|^F2Kf+OK|k-CCDC`tDl!M`k+rH}GDURwdmgme|Jx*r0Z! zKb!XoA$OzjMrgJ&IZ6Zu88B7~0B?jkDwCtm*#Hq@}=C(R- zlsYFc06gWTX$dMJc#$+E{!I)I{xr%s62oQmh+8`l)i!1r`#cXaJEQ_Q$o9FlYRA$G z@vX%F+sqXL9FiAzCDeO!-^|1dQ?pa9%yB%g3d%k}owETjR;+(` zBP9HS7n_w0fU){7b~%+X)+Z>ydgm!GRWjBkpoG>rFOn)6t7F{6tDOg5DrF2ac1L&_ z-HkQf+JUL0F{_w^>{tK?8P+HnTQ3wqD^Y0X;voN5gTg<1r0Cymz5uL?+)5)r1fl={ N002ovPDHLkV1kcRK%@Ww diff --git a/android/res/drawable-xhdpi/ic_traffic_on_night.png b/android/res/drawable-xhdpi/ic_traffic_on_night.png index 71e7b508780dc38ea81633f127f5f8d0123e5add..b4d2c71890ddb8e87e69bb536398ec6ba72a3130 100644 GIT binary patch delta 611 zcmV-p0-XKy1^fh%B!5FmL_t(|0qxmCn`AK*#__Rj?Z(z>Y}+Zp!PCesU7(Kp4iEASac@E51iA!hMC@frs2(ATr< zXqX5N#td-N+PE_Wf18TS2}k!T_TxN0dY1i!tyxUVHNZf8c7KHEV=dPOPhcD_qNlZd zOKe81aE6BEGsG>l@N9c!j>XraS2ISe5PcIu3`p2+b39C0{A-MBCJgmVyiK{?Jun`h zu@o)k;>9zuBjq+1z&QNG2DA$#1Q;#rl%9IkPg_6zrFy%#FiLB57Hfn9gjtXPi*D$>C_K5tQ}tx zC${{rVqEjq2lO-WT<_R11L*g_bNyvUcmVw=WChSegay$1fE7Rwp$FIysS`g+Iq!5? xuQvZ5^4TF?qo-bNoQ}%002ovPDHLkV1gp`A#(r# delta 732 zcmV<20wewW1oQ=vB!9a}L_t(|0qvRtj9gI^hHKk)T-&y7n_+F+3Tn4&%*3eMa3)R_ zlrd`Gp1;<^|hTq^{a$N{J!0-$2$0^nL9Kn-pouk|6oTAfZ*g_P=}6oQw^y6v>74g?C* zp(2KdrqY?vkbjiI4TctJa~nnMhNgq9E@>wt7zSA~3~~k;Lx@?|t`#CTsR3y_H=PVt ziS6HGD+6f70mwr-s(bkNf>lgOmN|IJ!|g0*LGmJEZ2gY4q>SXI2+g^(iRRU-JyT)2&&+J9vyjs7sbj2z_s!h zc6k5=Ne6ud051h~+i6MC0UxB$0eF$lgyN(v5T7ywtS=^oVT9PB5i7; zXTHbGXXhG`moz`YAWMcp!$F1^c|F~QkRtq5B3$PDf2%=wvxlE=xA_95<4dd&4o4dR O0000iEt=r|R452>N!luB0YUo;=quj~fW(EB0Z66O5x0`{K7@*a?()1dE^#(Xt4G1xmce zT;T4`qYsnVgJsx5M~2sEDYvknQsO$AQ^z_i#VoF&IYs=&Ie)B0587E`5d~!B8>|KA zxCRoZ#En3STliNBScQdP8&4oadlEaiNP1vdu#e9uLWuq(x^R(vgrzvbPn4lXe-fl1 zK7liIqXr>*iQT_S5aAoxgp~MCBAjn9p@3hB5{Ojd1RbcLEh%CI*5njLp~MX8mt_uo6^32uG7Yj*JQ7Oy7f9&CBUJDl zXC5Vl0s#&s-eDe#DRyCqU7~<~ETSJp$T@%sG7q+diGTeBa)x1H;=xw9#2jjnQ@}SI z!qN!`TMpku6`eSNCCLX{4j*;{{Wyaq=m%R4tJ4iECf|MWVC%?h*mXpD0-IhFyCc#! zu<5n!=!momZF=pUI+Qt(S-_#huSk=44J24%4q6<3@+C`b;TrTf{bs#|#q^8MlPAv~ Yna~NerVqlB7XSbN07*qoM6N<$f(ZQcSpWb4 delta 1483 zcmV;+1vL7u1l$XdBYyw^b5ch_0Itp)=>Px)mPtfGRA>e5SxsnMRTO?RZ+afD5x7jq-$3$gf4|H3W6>bby*Rm2tkAhq9~0v{>7-Zb;zU> zW2X%<%{Xst!11InPeCOQn+;@M@yniGdd%25D4w2^UO|=$v z>RlwgphZPG-AFyIx|aZtkf!5+L-fPvB(h*6K9gTdlO-C|A-#2(|GLJqgC41D3q&2%*kFfC)*#F2+DV1PCC8^KB3xBw~ zs2uRDsn}q9ZombcBvA!`&GH4QaS%A?CGUy`8*GmQxJVlq?sexe4Ax1fNmYST*ERXJ z>bXyhkF_VVDQ%vFWAxa$W!Lxpz*P6d1b$BXmkOi{05<=SV(slAWiKac?+OTgy0Il5 z-LqS$f`14uvdva2c0$N0ChtqqE8PJUf8qjw88X8n>1EPU(mW|ETb)kw-An6^CxkaM zlJj%PM5;r9U2L`+ub0-kGjBj1gwK%vL>ilwayKzcuGe^&p7-hi*P-uc@&WQjV)81D z9NjDsmyKf6szjN{1qR58UU|-Kzw~%AGdX@Or+->qcN*`^ZnsXpFHEvgjG^PO5{!i> zw}hUhcI`Q3_SjMljAf&m`LGQzz=qo_$`Us&fK>~JJ5a3ook~o>1{-lD zaew0iz*m7<#4xrRY}i;J0c@}#f4Ee^Z9upHaK|qUpl*%IcSHl+280U$fHLXt1IU;P zj>;IwPPYxVX9Odk~VvoGO~WSvxp zGWt@*X`DQ@?Y(fKHVJ8R~!s##{?lky23@|NY=5^%Z2Y~?t?2saH;{s5A0niPK zWuuz;upKbKhTAO45;rb@WpaqMW`8AE^QHzi*pN?f0=EI-0>JreoI(WNf(;wgbx#{? z$PYM4cLNsyY?er+?~v%YNdhk5B#A134k14yH4XwtrQ}`FV1w;(02gqQL=^ylAT&q1 zfl8d-z~Hh zoBxBHW62;3mVSXn2Q~>Huz|C^q{?ixXKdJJHHOU|!1(o^VlQY< l8-OhZzVS;;`go=D^Doxo#pu!V9?bv%002ovPDHLkV1iXGxf=ig diff --git a/android/res/drawable-xhdpi/ic_traffic_outdated_night.png b/android/res/drawable-xhdpi/ic_traffic_outdated_night.png index 79b9a16f0ba24d599d11906345a085e5ee75e049..1ace6fcad4c460ecda700f581ac64ef0aa3530c3 100644 GIT binary patch delta 593 zcmV-X0cq1}uR? zDFfVs!9pSU+hSZRIJ!4*5a;na(Dw~?`CxIg0cv>b2{F>puYV7ZU>;X7)X={jJMdjN zLsN2wxQ({J*c)L@_>N)EP;!XTf)L{cN@A^w^G&VLUa#0+#}9=-`7@&pj%3&9I4 z#|_-_cm+!x!YvSoa0`dg9uwf5G%?S{mQb-D!(w+PPQZ%k8(Re-uAwh>z2AfnFh6}` zE89K6z&+TFFQEX!#+DdD4>Ewmo@Eg+8(aBTr%}&N_El+PEASMXyAG&l;E7(b(*{uQ zfhYQ7M@qT?`YPlC=poVs(CdH;kUazgZc9{&AC}yAx~9)I^M`z%5YI7`G(e7zSzUfLZYE}CQVgrxH$6N$-00000NkvXXu0mjf_L3W7 delta 675 zcmV;U0$ly-1iJ;0B!7ZQL_t(|+U=S@OT$nU#Z?5IEP|5=ijz=K5vf$Pi=|K;TBQ~$ zNn27|aZ&KA=x5MHDRmY>SN#T#I=B?4Qgn&$NQMqEp4>El#1;+&a{KQ2nS0;6mJGT5 zn5Ma)q$xG}EDdYB@ggxlg=9W!%1?l$005T!1Xv9KU^R4rkAJHRty?QqI@!%SgzL}i zOFakxnA}oI|Dd8{@^;(k9#+bo^jgDCxQCcu0E!Ozw-^9j`uKazJ3`3IOJ@LblEqOr zFv!TJoLJ=;fP`dm)Hw@)SRp`y0hp95j%H;65Gw?jWE(jfL4d5AohYVMi%^q*kYtmfF@0*{q}PLOMd=`fZS(-S35)bUI2%gU01mRM zl`9t7EQAuV8zlzA+<%!y4X-Ae&n@lf_PDasD%K%fH=l3xKEN3az`is=yZdgO+?|%U zoB4*FaDNXm9su?kfQ&RjuX!g34*(ekATBK%7-Zz3oZ<|?n4}L-=PUqXCG`()@aW4A zyl7Sy0I|{^c3FT?r9y-N3h?B1I~~UtBTzyGc(JiaL+mn%(3n0n@veh;8e&9gQArPQ z8`Z6xBb-YfBo)9xmO`#jXCah`%_uRLMhCANL>%#Dk3avq%@+r>Hai7mS%Uxo002ov JPDHLkV1oVPEY$!2 diff --git a/android/res/drawable-xxhdpi/ic_drop_down.png b/android/res/drawable-xxhdpi/ic_drop_down.png new file mode 100644 index 0000000000000000000000000000000000000000..4c9ebca93d7522e32c5d21927a78a5cffae61d67 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2U=;FnaSW+oe0yCnV^g3^YoTt` z+Z&U81@`IRw7yX-+4fZ~rhVfY*)!j=_-D)JXyweCyKTdk2e#k&&-2gY6TkO;o;A=Y z7*KGzRKLAg{@tQ~F?V*~-sSrG@XzP_LXIz=z1?O(`qj@@J~fD~O27BZxH?#Nedqiy zC*EG&zgK!`-lmPWSH@eL`^A5E{=Vp6&Yca*W4Dx*KfQZ**Y%G(ip-zhxwGnf>)w*| zt>tB>wa!nNX}xmpa* z=9i!y`?dV~pJONUm;RDg-!S!)wEF(3S^0AgglTOkWQxvQEq~hxBwm*<1M@^fzU@-C TJ+9%t%RwTZu6{1-oD!M}}YhbBv`!zn{Az?%!SOkx_$ zKXf#Wf;mxiH2p{WaPrVS_QAE)xkS_cfxf0|(z}Q}?$R1gFaVH)9zo=AgywMM@$QoT-stU; zTyF%1RD<5t-y8WZDe8^)0GiPPVcw<1UcCWOg0_@?wqi0(ppR)Ifi8ulHvrnvmo$M+ zq5nz@Xexdrj*b@Sl5B6hf5{VQ0)Aws-{GX9@9=xp(G;>>lJ5|;Ob3vj(<>)=Q6HA8)bV=mC0Wgln z!<~Dygw!U>MUTOol{A@gm*jhsif)BB$7rrVJSVmc-W;d7Ou8i8n}YNryjez*1@d4V zOk?2AeOk-3O9H)VN}s}=7&Wx5`^!G-f zOX_}}YhbBv`!zn{Az?%!SOkx_$ zKXf#Wf;mxiH2p{WaPrVS_QAE)xkS_cfxf0|(z}Q}?$R1gFaVH)9zo=AgywMM@$QoT-stU; zTyF%1RD<5t-y8WZDe8^)0GiPPVcw<1UcCWOg0_@?wqi0(ppR)Ifi8ulHvrnvmo$M+ zq5nz@Xexdrj*b@Sl5B6hf5{VQ0)Aws-{GX9@9=xp(G;>>lJ5|;Ob3vj(<>)=Q6HA8)bV=mC0Wgln z!<~Dygw!U>MUTOol{A@gm*jhsif)BB$7rrVJSVmc-W;d7Ou8i8n}YNryjez*1@d4V zOk?2AeOk-3O9H)VN}s}=7&Wx5`^!G-f zOX_zCT{FmJ0lavlN* zWl8H$%2kLEmy|+8bvVz3xTJO{=Q7p|mlVXmKaHc%l2e!tQAwRR2(3AY-Vl^jjwk|2 z47GV$(%ybvy#CI!l2&jH5;1UHX1Js=oPd#>#)QQsH6j6{NubV9Nf$Ddl*TVul@CZ+ zP|`LY!!HqN&pn)#xHMTZSkeM6O6+u#cmgenpa^Mf;UWBT7(E6`I)@|h%N49bz|&Py zNea20{&Gdzi#;deBx0>y}GcpdN@`fwV7=cdG5^6&-O@(`OD zhW{glw@M60elFEZ%%#&9fcVz{POH9HYCiIFX-x8col`*8MA0QbxXtI2#9Ug#EvV)w z`gL#IHq9l<%sDr(qP_yyKbLB9cn#$XJbinT{c~vq$B`{b$@3k{`Uki9xwMKKe!Gk0 z1IsQPR#*Y7o=Yjb&#>=oOI!mMBBH)0**}-s@CXmk2$97G?yJ0_Z0}rBH-=LN&bt|$ zOY*7_H*hG>&|H$Yhqnd}1)7~pk`{2;%&`gk=Ta9A1$?%o8P?_#Jjq|-L6p>n7_81s zEJOTj4flgQgR4-Eu_W*qPmn~Ad5&hp5Yo7~xVX5u{0S}yu>~!!(?0+J002ovPDHLk FV1njrguws+ literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/ic_layers_off_night.png b/android/res/drawable-xxhdpi/ic_layers_off_night.png new file mode 100644 index 0000000000000000000000000000000000000000..a908c22a0555f1aea9b4d0dafe64d722d8b4fe66 GIT binary patch literal 954 zcmV;r14aCaP)(+5XbSeZQHhO+eZ0p+qP|AFn?g~d-iU>nwfO6HC^>7JOsb0bb5DYN`*>pg$fla zRH$4oR~9=l)bsPy#1QmC*ft%6U@g)x-#kQ*;t2`Q{Ks09 zFVui`!T@eV;{QA2GK|1=v?|1ah9cuKB>tx^w!@TA3bRog@59N@_s;VO)PVn_<(08i2%uVDa%kQBxN>8**SFcEA+ zYGxmj!Z^T#RmD*lAQ2&@Fw0dy$6$a2g#^sD4W}6lkjRjp+XmDQCcz=4P}=ss^xXu9 zw9iEkYK>>gA^CXz8>s23Q8&O1#gLji4(R}@_*lO>mVl5}qKwbAvW-O=(npNS*Y()^ zA`9sWI^_F`z8_u}K}Z)-SL?P%BU~xqkhY_O_D!=2*i>L4Wih|d*3Kp(1?`aDVqnZ` zE$t(KUT7k?G#H8c{80+;=S zB>x0NSXs)Z1ar_mD`?<&6gY|rj&_wiLpz@n^Hii^BD_F%!6>jq5YAGRakTa3I2z{T zvZ9NyFHINT6?g^nyMGU*qL38IrY~(lg_y@`h*L1%oQfJB^h0vrmoB27=-xMkcQy~p z8@GN?Qv`kK8M-=nu39+Z^Rh&Z9`r*W zY=epM5`7fsB!#{tcL@#rALUZ)OBU9nywagSg}x;B0poN}PAc>zq5Ei~f4o$oFG;_` zJ)bSvshftNFG;?_J%zLfWz~Za^rc6CT-f&Uc}ht&9E&x$ff$5Jc{s|o6ND2gRH#s) cLM6360WO^{$q*B(6#xJL07*qoM6N<$f)GKm7XSbN literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/ic_layers_on.png b/android/res/drawable-xxhdpi/ic_layers_on.png new file mode 100644 index 0000000000000000000000000000000000000000..744073338955b9f5bee13d783d5a3336ac79e480 GIT binary patch literal 823 zcmV-71IYY|P)}}YhbBv`!zn{Az?%!SOkx_$ zKXf#Wf;mxiH2p{WaPrVS_QAE)xkS_cfxf0|(z}Q}?$R1gFaVH)9zo=AgywMM@$QoT-stU; zTyF%1RD<5t-y8WZDe8^)0GiPPVcw<1UcCWOg0_@?wqi0(ppR)Ifi8ulHvrnvmo$M+ zq5nz@Xexdrj*b@Sl5B6hf5{VQ0)Aws-{GX9@9=xp(G;>>lJ5|;Ob3vj(<>)=Q6HA8)bV=mC0Wgln z!<~Dygw!U>MUTOol{A@gm*jhsif)BB$7rrVJSVmc-W;d7Ou8i8n}YNryjez*1@d4V zOk?2AeOk-3O9H)VN}s}=7&Wx5`^!G-f zOX_63gxaj?7g`6{Pda)@LcORAD`g1Ke)x5r3^-MQOGK`Tg3HG}z8 zBxi+PPOsz-l2guLhcc35ckg8u^aw(M3$i?97PJYWz?Yb1lUdMbIKsb4tJIkVHBfvS zta7>#4_%Cc1`rPejDki^A!1{a^ClA=b{Dsk#sp*N9CY58 zz_2?(XO1!OF?4DH7F2`I5@X;xbmjvrXdXK2jDb7QnGCR?N$Bh_2G*f-Gr)pIp;Py5 z(SrdNH0aHy0hIV=>fQWHzAXBe2^71V7n=r9fzCm|1sy=A;>)790xoEaZ_~O(^Cgih zi*s2HTJkT6bXi>DTQpx1nX#vRLO^G+z>#ve@8TG+z?g zvRGnUG+z?Ave?hIXuc$JWwFAx=vn~^s!?qkz${e~`2{UNXO?ZzQw1pK9@VA+tWiG! zenAhQv&OdQcapOKmvct43!QDYMO$7;u1eYiE9aWqtrefB799Z%rbWj>DNRBBh@XCz zMaM!VO+n*`pK+E&$HHuyf)-EzQYPVrO9y#}MV3Wds?=9@9poKW(-ia?ttnGq`gV|a zc#)={mx#ZhjWh*4Mf{i8Gr}nr)lK?-+P6hx=ekJ)fDee5U6U37w-GOQvnZ%d@)q&2 zBWW{P0N|qJ8{*-IE@C_YED|EG7q4}C;&*^^u`OaOF9ss;NteV5Ej&KU~& z&#|{8tCBspL@4~0>`R_Y?npXJ!2Ab5k7S`qraa7^QfBvrQckDjJ^rO38S*fHNO?46 zck0Z$oOb2m+=*n&;~rynrt(m;JbT?_kaBV1%PNUf>GPTN&o-=07*qoM6N<$ Ef+#AM%m4rY literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/ic_subway_menu_dark_off.png b/android/res/drawable-xxhdpi/ic_subway_menu_dark_off.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba34c0329f68dc61b3eafc869c5732a6b9ce6fa GIT binary patch literal 863 zcmV-l1EBngP)=NU7g?;=ugzO%wi$(WQ#u)x_8mPm15A48aYG;4Xs!?Na=%X9ylr z1lJl2XszP+5JT{aA~@4vKrSqm!lbgBaHPYEqLD!wyYbj_rPG|dtSs0*P*N5wFgfF_kdK$8d^A}W>; zTC_5h=`e7q!1S=5)uM&v)REm3vWEjM0iCUAFq}H{okI3-+$EqBB@oatmw>jFz$3Ps zxr@c{lAiB6E&4xl`ndicdmM2%cYXYtpBQmK(|iO}3*3q@oGYM~&;K<17*RN1Kquc{ z=mvo=k%ZHi^%=7Zcv9eS9)OpTJsBFZATZL~tOzGM@|u@)JA+d%#ps zKdD)^59iu|wdF7?fcC5m?KW1zX$0<-cccP(2hi`GaWo~K8s!~Mos7e|zhHboALB(c z<506so&jyncu6kE!OMaSFPrlUXCc85>w+!hDl50Nb@-3G@=~-6ebZ33^S2^cP{ezi p7`Ai%_8-A^&fos+Z|C;6|1#i-xtW-2U84X1002ovPDHLkV1m?RU0yD*f;xqB9 z__t!eYL^GX7 z&WQqNauSYjl6&UR2 zAszN5h!nx9IEe&vka2US(er&C22`c8kv7pAmMO4z=hF@Xtnen?6fD1AMjz z@}Fh5=tp7${8BGI=C)~V(E+cB(=?1HrfW9(P7iI-N&3CEql3KDV`vf_pdnU^PQ?YR z7M+T#SS>m}30-dg*f(VoHe9OY4Erf9THQt6va6CaoTdC!pmtL?eXHaQmzW#JQ#e2u zQGlb9;1)YcSjCchNN;AnHc7=9v>&|_@G(kYWx@w&ElQwHe30P5xg*w<`K95fgbvOZ zaR4PVSNxj5!THMko_63gxaj?7g`6{Pda)@LcORAD`g1Ke)x5r3^-MQOGK`Tg3HG}z8 zBxi+PPOsz-l2guLhcc35ckg8u^aw(M3$i?97PJYWz?Yb1lUdMbIKsb4tJIkVHBfvS zta7>#4_%Cc1`rPejDki^A!1{a^ClA=b{Dsk#sp*N9CY58 zz_2?(XO1!OF?4DH7F2`I5@X;xbmjvrXdXK2jDb7QnGCR?N$Bh_2G*f-Gr)pIp;Py5 z(SrdNH0aHy0hIV=>fQWHzAXBe2^71V7n=r9fzCm|1sy=A;>)790xoEaZ_~O(^Cgih zi*s2HTJkT6bXi>DTQpx1nX#vRLO^G+z>#ve@8TG+z?g zvRGnUG+z?Ave?hIXuc$JWwFAx=vn~^s!?qkz${e~`2{UNXO?ZzQw1pK9@VA+tWiG! zenAhQv&OdQcapOKmvct43!QDYMO$7;u1eYiE9aWqtrefB799Z%rbWj>DNRBBh@XCz zMaM!VO+n*`pK+E&$HHuyf)-EzQYPVrO9y#}MV3Wds?=9@9poKW(-ia?ttnGq`gV|a zc#)={mx#ZhjWh*4Mf{i8Gr}nr)lK?-+P6hx=ekJ)fDee5U6U37w-GOQvnZ%d@)q&2 zBWW{P0N|qJ8{*-IE@C_YED|EG7q4}C;&*^^u`OaOF9ss;NteV5Ej&KU~& z&#|{8tCBspL@4~0>`R_Y?npXJ!2Ab5k7S`qraa7^QfBvrQckDjJ^rO38S*fHNO?46 zck0Z$oOb2m+=*n&;~rynrt(m;JbT?_kaBV1%PNUf>GPTN&o-=07*qoM6N<$ Ef+#AM%m4rY literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/ic_subway_off.png b/android/res/drawable-xxhdpi/ic_subway_off.png new file mode 100644 index 0000000000000000000000000000000000000000..f525513d0b6ac78b81553fc51ee651cc6a1d309b GIT binary patch literal 867 zcmV-p1DyPcP)=<} z7cs{;S0VKNf226h6$pqU{kMydLm$#c`VNoK2Nk3bA8`$9Fcju3LmdJ#eUiqZ4Jye; zEU5ZOZFn;vjgP&(iX(l%RAg-`K0q0*uG&bm(P(p^jJoi1RYvMZf<{YFhcY?@s>Vpe z&}hS;2DE~zG15`gkhK~vLJb;$!rB52Vx-&Hi>(8+7tf(Vn1{kz0|AvePFjP)+6h%` zq@5_NV^9twjlsGcY{Eq-#W57tB`EVq_AP@vE}^jQLxGO;7;?Ce!g>oiJV(9ck&ZwP zZ%|m>ki%9iD|w`?kV6*==_|-%IjGc;mO~z2!Mu@>$BYa|+;d>jOvqy-%$o*zi~^N9 z(kRGd8q8aq=_6eHNMAu7i(%dd$e{y7<&V?}Ic$J=dm)FHpddzi2|4VAd8Z(U+n^vu zx(zv;f_c{=hclocMmhsIT!(p2(muX{jIa`*_-hM*sESO^MY zq=nu)u*Q84c}xNYG14T+<9nDj4)XXB6vRkBK_25^)@;b3A2m=ABh}CkIn0JxE3AI} z3`Y70Ijkt-TFYZlP$NBt9Ja!&Ly*H2P*5XXE#o%yd8<1H1|uDV9L~e6JCMU!P*5X{ zM?3T%cVN~_$e|VAR%E1?FsmK%c!&w81wK+cOiG{u=tH-GI+W8$336{36r}7U4MXlt zhMHug$;iD0P?L-_6}h(-s{TlJ?Sj(a9q#?%F?v3yk&Z(iJ)Rfy9d1BI?qeD86JZ5FM(4UuQAPQupeUQgG_)5?Y<*Xe^NF%L=JU(HB=OX`M z$jBiK!9QDG)<{1>DY|e8hyHLJFCb$ta2$vJa1Fgs86!P}{Ni!a94K8J=~f&my&v!) zj+EYbv_cipie0D|d7XL~od@aW%B#6agu~@80`vqWbuSB`Gu_gcj002ovPDHLkV1hdaej)$> literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/ic_subway_off_night.png b/android/res/drawable-xxhdpi/ic_subway_off_night.png new file mode 100644 index 0000000000000000000000000000000000000000..660b84a58e18830ec81fa4efbd15e4864a4cbd3d GIT binary patch literal 974 zcmV;<12O!GP)=Hf+Z-b;CL4Ab}pwL^PlVxr_;R%?_;J(l;>yjP|H)8TQp{OZYlyp~Uo}fo_GdF>x zA-N!_;~z+B@6e+|0zof@N?DQgK`7*QW(6JWEOZt?lvKqbzlvQ1H!OhHpMG)t1EG6gNuP*+KH zgyDaIu`!NM%b0?;<04oR=>&p$Y-b8Ofs3Rr=?v&_f+^@GC~+z35`fTc3CO?66!Z#| zm?-p3Qw@9BkC_C7CX02iCWsvL*=77)+x}GF>b^%lZ^l&k|gLz7c@et7z$2&!?dFAoPQf z2d2>_nJ$*K+WQnVz~SJ>m4r_w{nL2Xa)!C@=J;fBf=@wqa1gnb?*92bW1cW^DY8Gvb)d8Ix5l0FEfIU4~E zI|WMH1P}UMxxm{9aM&qOMnt^6`_zM=r$QmBB!@R!9|+aJL;gh`k3ow}#!s33=#n(J zLX2-Bwh4=r6~ZOL+3J#JEmC$1Z}e|;NhdWV6VN4@MWe%mq=P|{T~PVx58HyI2EwBZ zNqD5UN*`#?srB2f3mK4eNvLMI1lS=I^7)i;40t%6D%xp+PzYZqsT|U~(>;U@!ljgi wy%sKMhu*et=T*`+f}9jb7-57FMi^my2Af{ZckIjGZvX%Q07*qoM6N<$g6KrN@&Et; literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/ic_traffic_download_1.png b/android/res/drawable-xxhdpi/ic_traffic_download_1.png index 4eb8096d40cadd00c3e11fa5cbc7321c8ea00f13..1376f895907a10ed23a5e56b0e4c5d4777307678 100644 GIT binary patch delta 1016 zcmVdc!wKhDnV_s)CyeK)(8Sx8GuOG`^jD*;r4S>Te)EU02N z{8F)C4!9IE$7=bV@`1}Upq7uw0NLOw4up=bc;s{dw26{|NdwU8Aqbt_NCFg_I)GXp~`?FWhp&n=BMdXbr8E z98wC9u5hp-!ys-x^VM5#exCy1f!1P=tdLgNS(IoiSlg`0vApbO*x|XMJrcrMV`osR zJkTj>G8lZheShmOb_1e4!J7-GlX>@;ZUh5%jUJAVzn2ay0__zDW`KG1iVSck7~?hE zot^QdXh5{rMlfT{n*qG8Ag~KeyE8tKoAsP%K;wB?&vFDa&Ah;q?)wVet+8JT2fk*-w9Mu$KG=Vxm}l53{| z=?Vrj67M+)fL93;?@2T4EJ~Cq>0!1L*ws!+53fv5bn2(TvY^QY!C4LMSrDvAUQc>7AgUUHA$>mc>NO>TGGKC=J_|&3mVdK`3Cfr^pHVufQykDaj_+T`y!fp0 zK&uxXVy&#U-)KzPle7bRG2xearvxPQM$sVwiMJXK2uQS9)$<_nafcq5`By-h;36pH zV9|pCEpmFgsIplNSPO?3$^lW(trl1B^;G+6mHtmC`_` z3IuabGOH!k?3X{Zw|;*zwF#pGHV5Y+Y>!KjDeL!J>J$PF2+oSH z1$K3<;OzSV^XfH)gA-th)AR%o)dXjaCFTj+Wgg(gca;E2 zHh76X4McU?>a7B+nGguA#zi2ii%#gpT5*7=TAUEj8i)jTMSIqq(#@X%c6G){fqS!0Y7W5JV?F;tEm;SME{fh|3w6wIewEhQV^Wf+3*eM_Y0000w!+@6M1ImSfRu3C^{y(w*R7`eb3(anu`!XbBNl7L;9XGN{{l|V(c(N40cZS za9;Q=;#=4*{>Pl6B<=$7H$KC6HA2#M5JViKccVlNYPI8L zNI>wa1Jk&L;D17f(Wid1D2}@jK(mNi^q^O}xLFCWI$-4%f|u!`&m;{H%YFpA^C-aKOP z8EQb7!E!Of6Em!m$Eo7}#9TM^hJ#*)aE>c4hG3lJ0gAv_@9xLTlAeN=hJzmT62m#5 zJQ#|;l1nK z`)zr`Q-2ELZ+u3)khdsp746&s2E#xUgy8~V50C~HpEYhlGU*eu_Dq-0Q+E%6{3fkD4*tQQ^ennI zuSqNG!E*K`ZK+LKnF6rV ze3RziVknd5FVa|(Zh*%;*QAvi+bHHY>8+>4Uo~=@^wLw#e_3Ui^!1xxR@c-xcjPze z#s@Q#s|#{Le3QnZJ>R7HXwNihBHE)&nuzuolcu6Q#-xd8k1}Z@+M`UGi1s#Vf=TlW z0!)}R{}uz7G=Gr>m^1+G0VWMV`?MwFp)z#_jwLX|B%g!#Fq?7*7%gf8l%gZZ|T7&K2CQ!oM1ly>L zqEriT3npoG~9x`Q(C zU1hXvtA+9o*b1q=u+an<3<5>lB!tUu55!dq(n1Eapda9>AMK+ANK;*`Xq=GIrNC56 zg-*;kU{yWA(I%R#2d1iT;>kHm-Xqfxa3 zfEt*dW>Oujs0v&KN{ZIa%X1GKdp>#pa`=ajuZMsA6}?Qa)7wavNp+|K;_4u2ba2la z_4fIYHxx)-^fr21;gC82aaDpFQdbTqoL@r{ypnEEU96~!#BHW;9jZJVy^qlC)g_9S z`eKkWHh)MD#t^`>pvQJ!@_YHZ>dzNWQV^W`98Z?ha=H@*QSfz$&njK_bF{5=>94 zY&KSFKm$-kP6MckcZZq$$3C$bqgW0u3LE8ra45$GP;Rr+{?T zSakt1Kt(+SkI0aRW^tb*wgKcK9K@NUGFv;))DRd3?08#DejvGH0m)BAa4aDC$t=zV zBtIR>set4s)Hx84{FF=w0y-Jtq~4Q2Tz*=(|6&3E)fC(FH7~rpyu7@;yuJZ0he#Uj SjnlvY0000_h2h#(q(z6) zV2Uae&9B~vV}RMacg;!m@j=0Nr%hkpO+xPQ1&`PdghxCp16#}odeu0~45r*;qYT|*e&v_dM%u5&6YiAXq{8gF6}cv17nSq14;WDQG88niZSUa&@@<@ i7G2Zi?Zj`|1pWc2n0EPbXUyyX0000wD(Zn-E*)#qk z#8kG5KE$y;Rxx$eAtO@9M3lo0ej4an?1XYdj$T+<$N!n)fk?5d|v6RChdJsc3*j9rW>fsPMjJ*KIc!VUlfNd9$ z1dljIfQf4XXMczwF&eO~0f`ae3=5d}3SaD|d)RjW#jYt}s_H>v>?3Xa3GW-q&VV|| z!?Zj)voj!|Y4{=y(1gs^fPgl(5Z4ykkl7p%@Qxdtp#0$kH+Y9+e?a>Dfc$_mI-oV2 z;+KI4VrYOCsvlYyKnz8OYdXamoRr4{L{T3V1TmlY3V-?#MGweBy-kRsEsZ0qT1O+rv7idusws{y4Xk5g+Qzlx0sV#~xW+anwi52f@QB@^gsG|L z?j@c5vwxWVXFmG_vj3x){Q>D8HL^S)^TVpY4>G*&$iRU7g;^0b{4p?ujL6V%O*ItZ zq(wxKDHmbU{e_vL{}VM5?bplDTWwxzz8{1^Y>*fY14)!tYk|tC=}-X;fnNK5`x|Zx z-2P+3AUTj4DhEy($S<@Uv@fKFL#3>xCb`UY`F{lp2z(f%M#@TR5|sj{kamOinC+7q zavjPm%iHZT$K^XD5C~(CT3$I`N&=<^-rk}kUj}+8!eB3JWdJ*=^=CM+n(}S z49eF}y903xF^*;zWbXudm>dk!ON<>*x447dHi!TZ5c>gfJ3hzDI?7HZH-JET2?R_# z)PD^;gME)!7_K2$)lk*>|`d}bXMA2a9!Z~4;CmOHb@L4H=IWl^GWFzuyC_< z@+$IngD{9qie9i?GytR9!bcAl7(JRI7FYLT6pVsVFbYP&C>R9*RvE>>qxWVJ00000 LNkvXXu0mjfaRtjv delta 712 zcmV;(0yq8g2j2ydBYy&>Nkl2+~cf&?Z0#Kv5;DX@WEY zAe#gULKYE3h&0=_570L#Dt(JSMBky%2WZb>3Ky|=W={4uJBObuca493Gcz+Erev`m zl7^%mDa}bc_Mp5#)dSL+O@e5xJi%0#je)6)6wm}Ppb1hybAP~q<^>7J2Q(#hNCBy= z6sX_gA_ue~H8Qjvk`ly#j)KE~cF(g)g|ra#bJPiFD`aM)d646f5+P4poq$$CW*Q~^ z3WYqabj%C{j7&@B6$|(p=oo1W80lCDs3YL3tz+a7>15eRU?HHuvZs^kt5%IIn<-le zsBGEO*u+e|0Dl41O%1(wc#4gT-KhDwcW{y3tG-#OCzclM7-XA2sXke)HtB4^T$uAg z@vQnHQqM>SLxTyalG9b=p!y(MRnpAR=z>(a@nv5A89Tbd8h%LVIVJ zbc_$oJaY8``GA~b(n`(Y^UtrozP|Lnzx@?m-u+?m-~1c>?~A+#OeURHTeS~wzC}NK zm;T>t;(u=*w*qy7F9wrN!|3V9-jDuo4j_y8+c0W=lJWz^qm^5EJWiP7^Flio1!nnf?qR5M` u5HQ0J$TMjlkbhvwKhfnMc@r)FOyEBYVfXu_`0h9W0000+P*)&BBf5Iapo4*bfSeR8Rx-%9PoLUfU%6yN9DmQB+Z7tLm{JpJ4;E!k z5HNxF(toylx8Y{1rU$MTE%^3I(Si;Hf5yMz|9ICUV+ayq(9c|jzIwIkPVb&O&=6N( z8*Izjq@P6?6b0}R`u1)5tu7t*p#d~tTg>5P4vry8)Mi!z*rHbCW1Gc-16Km(a4-k8 zR}j6U&I(Ldv48fYU8_*`j#7g#2Xk5L63tn)Jfal_7AO_^^7!!$IA9hqm%*3?sMS-4 z{UD$Wu!2_b)65JLt3jBnz?c<8TaY)LAB6zbfOYPKKQWuEtOh-TTnb~>5iKF!c=j9t zGyu%b2Jm9XHUq0cnCrqAGpQZn3)74kXKT}&2M;W)27h6$i?t@k*XCl&oh|L#T|4hl zY7XYOSbLUZO}{bd_4VtfE2WA(qc#ZIzPWM3s2hWj7yI@Zu9hhB(w#Zj<{7lb99DoM289CaIj%Y1DX9G&$2AGZ5Graj`-{_NR+XW4RZg4NUs}x6 zTLX4Rkrp6?@tPCsb!j`%9HZqCEfMI#a1no)ihr8J7%tLxL9L!V^#1_#188r{v{zB9 zJ!Oq_qUi^3Ix+km7~us5p@!eR`3yP>FiGo8jMU8HOH+*%8t$Z5_}g5J{V?zUlU4Q; zMLikBKGpDFgV-ml@_G>EtW_a&0T8C3W;o`ksJ9k1v#&YqcRA`YzK@ZYpnNza!S$#UrA ksI%#X3>h+H$dDo99RUI*)TrMd9{>OV07*qoM6N<$f`g**_y7O^ delta 742 zcmVk_+BYy(KNkl8Ox!@xB4dQL$cUKK_CrNrx&@}KC#0%jq zm?lZkNf0lLlad787AWYpBtZ`a3VP@Ya)O}dxTwE%XU`PdEkRS@nt%7XA3%z|#H z9QBJGAZW4bedxNuOY9oQg>fPHZ{Q~VA1vg$Rj=gOu<3{va?D4A72K`IZV;y7#!$y9 z@CC#>B9rdo0hl|ETIPXAAl~>)8hjeNoI#Sl7@bKIDotY7a*H=MlLmJg_Qre0X42pY zgPS;E`Vp8nPC1XAmPvmBt2D+P?d{wF2>>7v1i|tKH^y+!8sR{J zLH3MEKM!V+YXddVzDawu_a^Ppe&3`$+Iy4sXkWi?(jM)-Nqe;4|0nG|$eXkm#eI{` zr2RnqChf17H);P!@0+wodvDSn?bl5jp#6qP1GL{VX@K@aq8Qp|(hXE#sYDkzMc&E; Ye(?qQgQ$IpA^-pY07*qoM6N<$f^FY!<^TWy diff --git a/android/res/drawable-xxhdpi/ic_traffic_download_night_2.png b/android/res/drawable-xxhdpi/ic_traffic_download_night_2.png index 3568bddcc72ecdd1d2355e4c219418b6d51926c9..f5f5c80b000b8ed1a98e084bc4e4a5a15fc39f1e 100644 GIT binary patch delta 940 zcmV;d15^C^1;Gc9BYy*kNklSRW z8;xr>sJNL}pyOTM|_pq3A<{!__Y@9V~)~s2xX6;`V4u>m%Mc^E8m^lX) zf(o%JP8o0>IGQ;R%EY2TDZufGl%Qlf5!3_C2^>&pGCKtdHGl5_F{XMTQI|LgU@dT% znGYI(_+Na*%g5$x@V6Eu=n$wXbD-&FAp!I3B=#xu?Pf8CB`%al+z_n0dNvHY4uR6q9QrGP*&v@J5QcG8fy8@>!sN@CDg|j` zSQ9J_fIv$@%^=U98-exz%>bH-rY5!?G>WCA#(z;CJL#iFt;N`ec>@-!{1Zj<1!7og zm@g2+V%2VOcKMIhZrfzpXFg+Lu$;uHp{z=?5EL17&NRbvQ_;bWiR zo>5E$hnWMVe{jghVVy^T%Y)rafi48e#GTAVOg?vm@_rm9?+s2-17kS6P!R0(;O~@- zIe*d55v>3iNEjAO|>pAHkF4 z$QVim{f^iSkniIm&V1>!f(c6v{$s$#ti>1(k{c!v|5XIT1meHUVw6DK*P)CPi2FjF zaRPB($uv=*ovN3574F&Z)R6~!E!=*wfF=EEibelhURbkc&6+i9*1iE9)`gN?$e2<9 O0000G5ELya0msh5#XepuZ%8*7Ofl zE7*ph9->+kB8dU8O{o0~0}#RB{QbEZ zU=lHTfX)l_zS=u8e?Uwe4Nt>lT)k%A$JzQYYKn4t$G!T*lChac}VAB2;15DaK zqydxmOMBm>fzsYLX`rbA|{;$%7CSe=z8OqA#WKIcmddW VRPgfxm=*v4002ovPDHLkV1h)ESDyd? diff --git a/android/res/drawable-xxhdpi/ic_traffic_download_night_3.png b/android/res/drawable-xxhdpi/ic_traffic_download_night_3.png index 825c205c96ae313c6f5336ebdf705ce0fa3b3139..c85e322344c42bf49f681ae823a0750f8a8d28a3 100644 GIT binary patch delta 1078 zcmV-61j+k=2FeJKBYy-DNkleV%xTD9_AKt zim^+vZJWD!|Eh_Txt^ZxS$5U$INk5f8#HD%C{O|=Py!`T0wqv>Ra`Dt9xw>30}jEg z0|QCJTf@l#)&qxR){~Yu29yLGCXwVRI~@v2fyxXl;J9RF5`P?L-U3EXn}lXEC`ViP(i^)lR<3;-P#~ouy#Qi0sRLQK?ZH0st)a{z$Qpr z0sqOm%o+o$0Fxa!v^xmUCGU-8->A!jDF#hu=FrV-@ZgZ=@@DpEb-`Son+))f=-KLnrGGjMTMXz~bm%Nqy@hzf_~;K14puW5Z*M@SJwyAeRWE;d;^_GwkO($v z>_Be=?f2GbccZHPk2g#+GHIMm%MG--I5ksM&za2Z(Xs;z$2##~1Db<5*1s*})ty~`KF}N38BKRG zpw)>{!>)SD=Sc&@qF|^81VkQ+dh!Um92jr*C8lbY^QNiBQWI~|OMPuF#^25R{$!PZ zpy)RN@lQ2;KOp|es_zHHzue(N0R~Jby`vZk7K=1`<;j(G?UnXto33o?`W5s) z+D33Vi)FqFoEyv*Vf5(DqwB&}g}tL7w4iN{-#jiVB=VlyjF-uqgH^mn@4dLUA$)cC zYkvxWg^1M=ukXLQzurJFt5naSX7*@*fq0ZpNpM;aDFXsKvdV~19G~Ywz&0i5A}va zb*Qdi%;s&UY`S|gs^d4y9Zsjy-fLU0L#*M@wp7P&0wUf!-zx)m4&0MbIJ6CI`)MO~ z!0go1Q%f^8Wn6Sy==Kj5C?GaS3?w(4M-(TJ(k=M$`^TDRAD=A)VGx_dF2w{|_%C5} wTlna~0;5M$RO0GhjDk@x3P!;w7zLvM0QuAlOH=BrTL1t607*qoM6N<$g67Bs5C8xG delta 745 zcmV_4b}coQJvpeRFc>f62Gr$=NgW>&rF?^~&XP?S)0c8R1?^oN36=z6sMy0<{qK zAtVXN(t@d=aR^4nIHrQu5EitCsh~}S1#QYmL9w89!bqW7Xn)&4b;H-zXStxmLa!pO z-A6deRuF<+H+=jz3hhhC(m~j4nCE(uf=(KRIh?ng{3RVV%5*YGLA#8?^in+4eT*{g zOcG{+L6CI;hW>hkTnmx}8Ez0{WPpN38sr+DBuHoBR^TAj0Sc-PoavU(Icb=cfy1;7 zP*B^znO17Tbbrl2L0z?hRyZDF%e8qL=b{S^C+Q19=TN)q-hn3U^(4#uEzN!`-?D!v zK)60BZxrtc!>!I|1BJ`VfJcQ6DIGPCeW3Lrwo=%j47yq9Q0BubGFO&UaSRrAD4(Q0 zhPtB>WE`BP3#t*0XeMqWVTMdKQMpDZ9SgD|N_)>vT7NI?`JFVswC8uy{L)_Ur1_;i zzmw*d_WVwoTH33e^eTR7ADuM4lU~kW5P_4X9%2Mex|eW^f0E{R()`k%*+~;fdtN6^ zAno~`v{Kq{apj~5q`ey_y`Eo~Mdca`iUn~xX+00VJUKV-`J#uD?o9nO{?_FG03YLP z55GJ)Z-1YG&`E>$zdl@?et-6xaknPr@-gGVoVV|PeQeyE`ghXc#rKzI$K9Uv3k4Jd ze)i?}R}D{-b0>`_CvQ1WkkhHJQW(wLC(hibsY?e_nqu`+23!ZqAF zX)NE`f^ZGDP8xe0Z9%vOzmw)Kh~G(*4>3+BO=2=h^EzoP(FV)BFDH%7o@S%y-bv%Q zpgd~$chWd`mV8+K@%lohoHU*W3>l^F@NX0`>1u^pRIdIDiUrkf^nj(&Bf7`|qldhW b9uo)v_ea*jRh1Ui00000NkvXXu0mjfU-5Hi diff --git a/android/res/drawable-xxhdpi/ic_traffic_menu.png b/android/res/drawable-xxhdpi/ic_traffic_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..d7a24074138cfe27c40a261161328ac07f855dba GIT binary patch literal 875 zcmV-x1C;!UP)6^_+C`{Mx&_dVbHeBaY|@1GxBUElxxdwbvac|T7|Lqs$UD&U0lb;8e@PFWX+ zvjjR6y*gmYdN?ECl;YDV7_l7CGR3duC!swC5Ium^USJ^oChY5>36U`-m% zF6rw4JOSzdJU`7pJ0N}SN&;$=p8kT(0A4ovJ6dW>0y-i+tqc6Dlb((w0lgv}?Sxnp z%cP?%iJ1%=x*>P^1BOEcG|Yd)m2P;9nJ_!qB&d)Zl~XJOv#0_lU2gfapibem;K0WM zg;O2OYMzZ2!B>)L+`;q5Ng(#T7}WtX&AUpIf+_3Z*;xvvCVNfCQCbXuXW-c23_50S z0~TtqLGTh>7+8ZY*vp{BVzp#o7b{t==1b9^gAx=FtE@PC><6S@izPoG?P}hBK>GJV z$qqAR>AU8lX$Ms(}qq06C_>pVdfLT^{2jNkBhHS4~jt!AFsQ zS5pm1Kv$%v&mbSbOP;@@r7KB5RmGW;7x>95&ZMd&podB?4~rqz#Ui;^8$6I2x)0tt zT&QcQkaDO+8SoUeA`WPXdRL1*X5uU_vfu?cH}o%d&YrTC>aZbDF|bHiz>xi7 zRezgLY&EZaP_!SAVyW>f`2pz{tM&uZzwStSK!OXi@Jc{#d+qT9w{@`0l8a|%hcHhpP zJ;^t|w`;GXwkJKxv{S5E3QJKjXFV7p@h%ww>#duU1v*Hub0~I}WrH@7(0H=Z<$||> z8c_S6++{AR4O|5E#6{4?e6PC^^wxkaTyq-0gffr7GLZ0__zCp4M-Fr}a182G6f_2o zN6>N{j4A5r;~3PeC}<}`&rU@>%^ZU&mBiG?a89gO(p13_lL+dCckM2a8G}KYpiB5r zuLp^-T*+pDYwq_R^}XmCm?3$|Uj!b;C~Ad(jukO#cnB70=0;zvUicArRof0wTSJIjgkJ2Iu906?x_n1Wb@8>C%}d0`O0n)lxzem}^6gP0w~U=Rbp4GIPYgMvW_G#|Wk zu%P?k5SR`!i0SmZ`wrs21M@frX`AyEtoYC3^sBZ>9D@cF1w8@T5wv83CyIIoI0oHS z+;g%Sda@Pwq`Mr0W-Hx1T%p;IX3z&_aRrrt3z8>ffs2RaiTeU5mbjwL1-AtR9TL!T zNI=JJFjwQ!zZ^V^LD+Nw4b!>tN&9jaInrkEfgvzMAa({L?gy~hb=I5+_JL-{24zNw z*Gw7{<5^y$fRmuh&>_}Eno=y)VVU5Xfs^z#kZHJB)xXU9Ud?MKiuMiCEH!*INTFEu z-ynXw!+(Q#4Kx1?3O(u2lgS&T7&NFOhH>jz zpF#dz4gZH(*mpIyOrc>G_DIww@WbO_mLFh~RKKUwqhXd#@qQ6yxHX`E5)ZTV(;6}~ z^P@b_2u3E+Fv|#O&U2YHmx9w^-0(2VIB6`6XL&IbTr)U|a1G3~REI4FZw(Byya9_1 z7pwYvkk8e;(m6=qpfJo5hFQWeOBiMe!z^K#B@DAv80aWgm@p$eU@1JJD?H>);3GUH Z@FxeI$!a2Vh#3F?002ovPDHLkV1oarehdHr literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/ic_traffic_menu_light_off.png b/android/res/drawable-xxhdpi/ic_traffic_menu_light_off.png new file mode 100644 index 0000000000000000000000000000000000000000..c35e12456c9d57c3a145617a25f5084657bd9b4a GIT binary patch literal 798 zcmV+(1L6FMP)ECIV~B29CUj+!;h4jcmCXJr$7eVh;2tz7*~nOY zHsgDo3*a0yCt1i89$x~uihaRg`Qqa~DB1>zRSJ7g1PxMn7K^z-_D}QiH^_cIDEO{+w`LFH_u)x2re8VOaDfl67jamQhd}H ziN8Vm535l$$bPyb{s!4kn8nqgG$)-Jv;(WL1zQVrJb(s`8{}<~8h4;E^_Xo8snvod zl`#4rJzGev7W8eP#Vmbj%&iTynB|ts#MoHGi&@5`MkhAmE1ZdFG0Tk9v z^}3ivvVWFZ)YysDxU!BGv#dyFvioB{e#5nZ7qhHMMzR)0^ crPl=h1E@o>@_k5-bpQYW07*qoM6N<$g0;DI-v9sr literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/ic_traffic_menu_on.png b/android/res/drawable-xxhdpi/ic_traffic_menu_on.png new file mode 100644 index 0000000000000000000000000000000000000000..d7a24074138cfe27c40a261161328ac07f855dba GIT binary patch literal 875 zcmV-x1C;!UP)6^_+C`{Mx&_dVbHeBaY|@1GxBUElxxdwbvac|T7|Lqs$UD&U0lb;8e@PFWX+ zvjjR6y*gmYdN?ECl;YDV7_l7CGR3duC!swC5Ium^USJ^oChY5>36U`-m% zF6rw4JOSzdJU`7pJ0N}SN&;$=p8kT(0A4ovJ6dW>0y-i+tqc6Dlb((w0lgv}?Sxnp z%cP?%iJ1%=x*>P^1BOEcG|Yd)m2P;9nJ_!qB&d)Zl~XJOv#0_lU2gfapibem;K0WM zg;O2OYMzZ2!B>)L+`;q5Ng(#T7}WtX&AUpIf+_3Z*;xvvCVNfCQCbXuXW-c23_50S z0~TtqLGTh>7+8ZY*vp{BVzp#o7b{t==1b9^gAx=FtE@PC><6S@izPoG?P}hBK>GJV z$qqAR>AU8lX$Ms(}qq06C_>pVdfLT^{2jNkBhHS4~jt!AFsQ zS5pm1Kv$%v&mbSbOP;@@r7KB5RmGW;7x>95&ZMd&podB?4~rqz#Ui;^8$6I2x)0tt zT&QcQkaDO+8SoUeA`WPXdRL1*X5uU_vfu?cH}o%d&YrTC>aZbDF|bHiz>xi7 zRezgLY&EZaP_!SAVyW>f`2pz{tM&uZzwStSK!OXiU#ab3b)X?3wOc@AmBL^uOv?M(SkMcrz|tqL(gRx^(F>xQBJnY%*@43*uN8ZeemI z{9)RwL|IV-(`RE3kMX zjVL3XL)4vf5T_3-pjdogNu!vEsGEpUh*B+PL9uuvwLrTTMVMABg~4nhU50j-At61( zS{TeW(h+EP7JpL4TWmuW3}zpx8rt115vCLSk%95-BWc$T`HPpx!C?MGS_}Dy00#3X zQVuU|0{I^)g9i|UK;B21her^DKwd^#jEy*i1{5LQ1~Q1Wpu`2Pzkw8y)|QFXs|e)X z0*KQ{9t0}jAWnwR4k;69ouf$YI2po06kxVyh?+qpg@0z4Z3yCdq#>BC1>$+67MN`c zo*G74YaHn*roePr97d1!OB}_Rzmj@z7+J)&0!}C%$+X1ychUe(pn!^P5-wl_62cWQ z(?}z@fJqoLn}M4shJCVW5UGfpn1M07d8jQBs78P7Rx(m8=E0AZczK~88OPUdHA%Y` z+wb@;z<-3K1?t5N$9Dk|6bN{&jI{3m2n6(Ezy4=Z;sXKbM-9&73R*Cvzbx@Tkd6nD zrr|tph0qPDaHQ;S|K4+$2D3eZn6keM@C0TXgg9120}f$h_{To#NPRHd1BgS9Fi-#B zP!;J8%$7$T#DV+BqTI50;3(33On~_|;T1&bC4X}Imlyo_?N*Il%JUd&^{>D96-jdo zwjJ8FdlyM@3-&g&yPbqTCMV%yiCeH|4PN3LvAcGQ|5C%^HQ)d{>?7F+vU-s`0JD!| zAIRn?LSTQZ#6FPaVU_@ldGwVOKw>%$6@d8_DTwhvT>$1+q#(v4nE{wzk?LYR)LRFp ziaT@%hV$T9c!@|g$iRM{e6YaRNcM4j{%DFFxQ`4Hx^(H%rAwFYBMsY5x86F*)&Kwi M07*qoM6N<$f@^nsssI20 literal 847 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAk#r2wB0S0IfClqpKzurc`PWcJnB zyi`HjNtpkYqv;oCGe=>5pspNwi7zhZ+42&2Odv+8GKS^BD)vA7+5aD8uZUrBF=hI? ziv!4ZHeo6VWBGrGBR`AjQyoQGIdGmA*df14Q)2lzmlwHUud9 zs)*=`6_+=g0ad$|1o;Isa0b_OF&9}yXY{VW{kgB>`2Wtet?o>f^93=E9VJY5_^Dj1JU37vM>fQLaeEzNJ|-v5l#J-ae1 z_dV~uxxw`^Z*a%L>;(;}vx9QH6`#!Dvfxq-SAC+@Vl#EZ_kKltj>Q^0kMi3lnN%yD zo$Azja><%a=BsAC716k2Fn7r*yMU)YD;*b3d$~kXDb-7tt5oOcc@D$VuL4%2Ycle( z>a2EOn3$rW$lJ=3DZ^lBIH#jcsm+8j?O#>~+o4Zem#%e?EQ`PS<}QQuH|4EKFF*EI zCtQ%Xt5)QV0zE%&f;X&+xai#;(L| zo3^y4-M^7@@yr>i;pCTzN?X)Ad5&7*INYct9!Q_D{Eyhv-`o_JgI->#buq2{@_ zugHGryZNI1Ku5_er zkGaB?c3(s2%)X5#2j57~UOVG%Vc_yvXT^ies&~~X&CdJg)gNYFo#a-cxSKhr`oR4I m@_}ssq>R6%&u!e#zn|gnrQ;hcH73V`Qm&_~pUXO@geCxc`9!P$ diff --git a/android/res/drawable-xxhdpi/ic_traffic_on_night.png b/android/res/drawable-xxhdpi/ic_traffic_on_night.png index a262741a08785ad4b1c21a6015c2393424090169..1866fa73e978c9dcf4eba1542c082869e32a4d8e 100644 GIT binary patch delta 924 zcmV;N17rO72B!y*8Gi-<0033(vqt~`18zw~K~#7F?VJUR9Xl9?XWd!Yb^3u<3P?^ zFv6)ILQDDv>VGV9sFP)dB?m#L10D2x(y0_VoU#ye1`H-Bp-I}DqW;YWVy?-2xIy@L zTb!cq)f!?RfN7wJZ-dj4ic{3PLm}olm@;F3Nu z1)TySa7m|_f||gUfF)f4P3#+W8CVQn**5V!^pjr6oXdPa(NHptjg!3 zzX7ZVUw<`|-t3_>`BmoBP)HracCZzE*IC&lN%}5xXfNa*^#9yqyp(0@V`L>$R8CH3plj^$hc|645_+DqES6jTWgIg+yvlxfaC?RO-p52*EVvz`KOr;u|C zlpEAn0d7&BZUjliU^aMcA!wZa_7}b+$`q{08Wv##m48XZDcBu^EqFn7CL6#8#T4vn z!ha^tul%u_r=bRE8}L~$gD;6Jh`5pbY=YoRA_^iOML5f!Dj^D@9%ktxh~JVJg80Xw zq#(W|jv)SlIw^=Ri6e-ABvT3^N+Jk4Y<;NLe1pQ_1Ys#@Cq+Oo$HLW;_7e`jgz;hl ywIqU^0)90`qhU@nz+NdQMvNFSV#LU3{1pV#^=|OInUJ0U0000XZ{C`^S|6!j02igBW zoAv+m$^S=1K>?vJ2Up=1Z)iUT_3pZ-p-rvZiQ}% z^jRMewl(VJyW4vo?(^9Yu~WY6^rufrkY6wZch17iER%i8+81xT^Lfd# zlmAbxShMKel6n1oS$6#Ei`9w>m+EM5G+H6mYSk+{6QKyGrerA!cd4AP^?C*d#_ygk zjv*C{N2UbNVsR8;E6%B2mV5VqRd(vP_=w}hHGz6rmtTJS6;*YYFVaBbTQ3iLO4^m} z2`*{J%oZBXoOz=~?Z3pVbI-bu)@=Kema+BTo(*>+Tffzwc(|kTamAr?^IFech_o%c z=WVSqH}VD3+^=mLTQ5y*&GVR<$KsuGH{yijDWA5q6GagxzBU+5UuZeOX1au3ftb-2 zhDrW&9;{y2!1D0=G_i?CdiQU-xzSr!$Un;a@yBXS#yLJ!(T7{l$TU4^6)69u9`vMT z;igx`e!JYGr_Qopl6Pdzwja_jzt5iawUsz&if^{N^{Jd_SRzC)2J`!YcbpX_iCkX@0y#JzSf&@WR_h#EcMBL_mKe4S+R*Ll+La*44Itvo=-6C z{XUaJZ|<7UHrRbI;P5Ql2izxT**;Qtn!WeWzl?Cv&Bqxf7q;dIY@5#8Yc%^)qsFQB iV;Oc4?ms^$GTdgk_^omMOCw;?V(@hJb6Mw<&;$TXIs3%` diff --git a/android/res/drawable-xxhdpi/ic_traffic_outdated.png b/android/res/drawable-xxhdpi/ic_traffic_outdated.png index 625c0006a3ca2810b3ca868ff588d4ba4cc1ff55..874c4a7b49f33e5cb9107ec01e2180b67b31bc92 100644 GIT binary patch delta 799 zcmV+)1K|9$548r6BYy(?Nkl!pw=z`@ckYnQQqh z9og5T|60HA&F;{>w)8_)FJ8QO@#4ixVjJzy>^(Mc2MO67Ht?>TadHs6C?aKW4Ka3& zOgZ9YA%H5<6eJ>3h;-W!h$2!gTHrxS@PLzFJwQs}p(TKC2!Cb0@RgBjO8f!0(SQVg zTLKN(hJ(Aq|7M6REApQNv*FL`vh#)j+yPikk(O16f7-hC_&x zfea$mqXVNTz=t>+$RJYf-_LIPKyF8B3ptVp=jK5|jpRU}3`Q^$zzqa2|Lt~znE*zR zf!X#T3I>tX_F%Rbh~tr7V77gT3V7e4Wajy>%`M;CyF^Uu- zTL#m3R{Ro=>fcGvm_`O=+dC}b6%xP-m}#U}Ea4q0W}mPDKgcJWMv;7M;1eo#-;jg+ zhpf@rEr)N_aMXB0GUT&cw%X2O!y(@Sys5T85BL=3EkJbz0xp!1+P{xLzypTWeVrdlq%D{&gB&CTJ4m6}QpkoBsRnOhzD}G&l+KXWe|f=; zzugk(S3ZxS`2pHo{U<;Qqa}TYrQeNnkrY?3n}0@M!83{!{T1xI!IwB+qd&VD9W{); z2JA(Dz%>YD_(gKh{uaPEkny7kp8ZvcWgz>9Sv(i-lRQX7k3)GbUf+5VK2Ya@xfRKa z@R3Xp%&kcI2p{UrgQ+4}o$eiYEWCK6ERwLFBQF;CHIjXtN_sWLd&O6jcaTK9c=6)J dix^j>`w>uuQ+Y(=;)wtN002ovPDHLkV1n`2c3c1e delta 1959 zcmV;Y2Uz&E2DA^5BYyw^b5ch_0Itp)=>Px+Zb?KzRCodHTI)|-MHJuNyBC&affgdf zR%z9eR8X|UQW76A{eX`cP3jjLqe=ex%0Z=mN3c5-Z?YpcOE-;W`EAvjmONj3WDk&+DTMp z4ps_jj%NQ$bctwDN|G@-&fv?k6D065(KcDZkmgSj?)O9`U3@rZqO}l6RDuJ4U<+*0 zZl(g%sBMXP03$Y;3eZOFIlQnMvB^|`c!u87W66!S{*|VB=k5C&t^GCWidx&UVNcd6 zIu~a0i=X{>yMOrI*u*k#qwF+wigl9%Qt$kunM~n}_D7O?)2TGi`D^+4xwo#|C|sYN zwRrP<#%>euqz_+;#S743LXtH~NO|{t_0IA3J(*NIE`*;iEtTHmv#OkkARFi6kvk=cR*1i{~knD+!Gvd;k02OqW+ z%LK-XLimKj8n=lA2=8Yvk@kj-+=^?Bz@Q0?6<^>JbMJ9Y5eX3H;ut(bw1kdoL*j|t zN>v`R29j6!0AH9#d%1n00fNjB(J3OWeFTXoa(^qrk!p~Etd!9D$*>(h46PsX=g3~% zW(ejc5lWgFe@H%e+;I|DX7cl|HrCsAJkCp&SApDQ_1tt;C)L1;IZedflvkCmJO~-+ z6OIxWIlBQp*LwVp}G*T%e!I#hi23N{h#SEEd1*Ek?Fzf0$g9y#|Oyg=V$wwhCYO*vZ!2F>cZR z>R@c{jUK1aH&hJG7BVL~HEBffr7p|4_K6}Kx|c-2u^Kbi z}A4Ll&LOnr8xI1sgs^t0s-~f#tX;-vkEf!p7W7#N2yadqh?c=HeJU zL!?!cMs5W#on`<-swOR4586S_J%3B2oIw70EEUInMkPqd%N{>6uk$7075|y&mZ*Nw z73AUp_y;29#mb$?`b6THpOgOy2{Mpn;R^6!Gi(HKWX$G%rAh2tw)zU!yXh zQ~O|Tq2t~C$?6AcxH@tp*?+mqA73nFZ)U^%vhrl^2|ts0N*^Ktr5mrGqH^Jpx}TB438@K$gB(TRuFLdJz!d09OYU7By0l1 zV*}U6pa2=INxSzPkAYHM6BuO*qg9hGGb{>^D1Ah$CXE}iZe&bgkPXqSNh5vG4Uhp0 zshV`q9#rnn5Oq!wDSxj5F}W7iJhAR#!ve{?=K@z;cmy{Ji_B)UqZ{9kDqg`~%~;eWW?MO5uO>cd1S2l diff --git a/android/res/drawable-xxhdpi/ic_traffic_outdated_night.png b/android/res/drawable-xxhdpi/ic_traffic_outdated_night.png index 0e66b14efa9647e66773c4bafc31c0973446c2b6..d62a0dbde6a2f0ffce8712fddce8702343e70fc5 100644 GIT binary patch delta 883 zcmV-(1C0Eu4v7blBYy)>NklD2XG+i&u#-m8*$je~6%OtPI1KXtt0P~2_Jh#dUfYs%CZwb_a4tX|=fIjlLF)$e z(0kH0IHi!sDJf$@(704<9ryxvg1p%z zN!pPd>VI zf-lKoLBcY)qjyb;zM%LEcMEt8-pj+}hVrn)eL?CtB?$@DfLGvaX4J=OgaK|*T)wYB z4O7q%;UL+P4#Yii4>1L;6Ao|(bb$NdeEe%4f`6nHrl4Pjf!}=?ryRW3f$1#k8xUm`3qkXWeQg19Ts5$ zm3>LXDcG;1C3yBFk)~i@5*Bf8*&n-+h8m=0zQ)31M3Tf8 zL~P&8B7!)Q_=5P`p+pcz5?>I1L!AiXNa73PZ^;xvPDzqMt?s7YWyP{>(yWf8ZxjJ8 zZ3|B$sfDol#oZ4Uh?B&ZlOrEZQKgcTNct&qeE9I;!-tQE#%~GGHh|NCye0qu002ov JPDHLkV1l&oofQB8 delta 1821 zcmV+&2jcjN2dfT{BYyw^b5ch_0Itp)=>Px*}|6c{FxNt|J2X2r9peU-E7IA1IQcBW7 z+D1trZ4;Ezk|rdZ&8{8ZxACa<#vXe-&)G@Ukw&)1^WMDo*?*py@9Q=hi>WLxFE@~@ z4ytWbo0#0Hx>+ED395aWOlC>dIH-Rns8O|zz{!%$0jl?@+NRY12KoJtKyq~bBQcKh zFgY;=9OQ#o5R-P{0_XwlNcbJF#KZ+qz2+PltSm8c0VE4_UEkYK@96D;(~EZZ503Nu zP~MrnS&b*#ynm^Z+qt`v?R+ki+xO&M^^B2g6?>kN*s79%XMD6#W|!Um zP$~cB$JyMrZFyP0fO}K4ihUo@uGAC?5G~y=lBZPOF#GI4vGmSs4OXd?ixq8Sqf_|s zXgRlMZy{EH^-dK6^Q#~;*&MVOWT4xIH%AE^3|K5?OMmYk&Xa9fcl;3h&|KFXAbeJ_ z-yCl?1XB6P+u9pHuS?H)(R1!Ql>v0k*OTD_6LQp?BOAsUxmbV?S)YXW{t2^_0W=k6 zl(ZeIRZ?4F=k)xzEY2B^p}EQcx-QkbB`kj>t8zgaSmfI$q_m zK&ym}Vt=2L(7bBK;iG2!F*nzm=9SA(fZX2a1FdeaMrn>xfC$-X!eWFA5A2Y2eR25k z#Bj;Y(bMEVl>+2;JxxcJl>_v_KfL-ChYxpD(-RJP( z=5ky%_lP(m0YXP|gk|s~Rjnl!#1q^KK9dyKGJlX)DKd;$0Kp469Hm1yRV}R- z#M2^f1)oZVY^t_OMyom__HH+qRX2kgVgm$Ya*X{#7u88zCn;d%Af8Gf39_or=)EB# z<}Nn}Z@ct7@ti&B!z1h!Axlm zN+Aj3UETpG;t_E((`E)HFGNQ4qTuhIfimg*&GyVBpE3B7T%np1N2LfnE#>ykIM^L>)Z=@Yknjx(cTPA zx{4k?D;01AXXm$NtK}J~el23FIo4g1zLx@ema3X2jW-G03iLr%lFJ>pi6#wh z1^R#;ve*Rj2xcsrH21b$_AUh9!=&4Se-!Z*P!fGw;&YkoLT#c&n}+$>x46W<6?fcG+X`Tn+wgAM>g-M>~Gtj*|+7bH zr}@db$+Sd!Lo{hh7N3<0IO0hIq|eSA)t79AL;ukXO&Sw&oX^T1`>iW{Zt!udh2_i~ zO&Y6}Zc4oqz1*U`Ihr(wJj zOp)UctC>;|3u4kPER!^%pp~qF4jok6s5VipN5N+`L6z;#1Qz}e@}Hf#u2&7300000 LNkvXXu0mjfVWf2~ diff --git a/android/res/drawable-xxxhdpi/ic_drop_down.png b/android/res/drawable-xxxhdpi/ic_drop_down.png new file mode 100644 index 0000000000000000000000000000000000000000..5126cb8b22d09f152ba245149e525b399d4669f3 GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>VD#~HaSW+oe0yVSjTp%iNsk7I~s451W6if{`)6pXW3Wgxu0vx86N(>Xa0Z(Xb=Jj z7V3Uh`mDYA%p14gWyYt^oIkVq%+sj*f2?P&eR01kE$A`(2kWrodyerZXonrYFJ<4L zztQU6^&gCP&dIp^=QA?Tt`)HF_;+{p-Y&b&I@`Qdew#CMTqlznmC)-y}Kem>HBM(Nh(6L(&`bTjEMJ7avk%KA#L@%=@0_l+LMtzWwM%&ql9|PxG)poqC_ks_y671&^m=XLPPLxcu?;9iXDdwHw66w}&rye4C5a zYTw!b5Tn%^$k+#Dtbcsxb&>4-unQj<;oe_yNVCT6t4yDRk0VIT)78&qol`;+0NPx# AivR!s literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxxhdpi/ic_layers_dark_on.png b/android/res/drawable-xxxhdpi/ic_layers_dark_on.png new file mode 100644 index 0000000000000000000000000000000000000000..367e699ff67e8f2a91bf0e7d192a19d687d993b3 GIT binary patch literal 1969 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 B2)FNXThJL(^ZIIm-;QSU^{P-a- zS37RQI!M4P=xXxCj~@baoQ2tt4Cdp+R#|-05Eyp?pF)&McnEFH5WpLdm?1D$H=e+D z$PE0Bsb&b_%~&BY#?@E>X^_phA%#$T{1fpT#K>nDOd%XP<`CXQ1!8O!&QBp6INo{K z0kIcqS5pWV7=@r{S5pWV+J|7)uBH(Dx2q`xO}m;xaL}%%5PY|*DFkJ^nnFnJDi=C} zUm=l0NbTzG?ZH(LAX*5iUFD+gLJ0!62*H25%7ygcBS?Tn2p3@|#DJf6mC299TnOMM z1pnqqfn^sog#{^upzqKX<9PTlDTG73 zi1t`_!X0=og#gCJjd?u}daT7mScB8^ej<83N=`y(HmjmtwPn5H{jG<)fKju^ku0So|}w z8iG|g)j_MOId^oV;`>ZuJ_IlhVfWo+`7qByZg$YBzS-clI0c4N}8z7*>pVDpq<5fzRKHGNgu{MhEb);#9y%%Kr)f^?4omGWaujhq7)hwD<{X!#s$>OK3N5RqeZ@Qxz``so;FeJ>i8A zg`Y8~Y*l9$FoX*-giyi_G2YeoHAG<^XjitXDp}&OWEl5aY=bC#xql1XN+BGL1rUYL&>LtmUxg?`eaQdKT0Zv+m!k(=xDfwC z6xQJ!gF9ybbwQz8XNU6_#?xa9!#!c$`K1(szAor(3%o)gg`lnrdW!;k4=Dt7UC{ed zv1^q=(ANchiy1M5H{1uHs0*qVGg1im>PPlk7Zfd~K?wdAUr`qxN2o5ms%bF|Lh!%% zihr`~|C6*-ySZ-|f`0KG2QiL`f?UfREw%W&+Jj>O0001hLH^cr*j=#!06^c0Va_;r Ry_f(1002ovPDHLkV1jSWOPv4! literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxxhdpi/ic_layers_on.png b/android/res/drawable-xxxhdpi/ic_layers_on.png new file mode 100644 index 0000000000000000000000000000000000000000..57161e6b911679295018f7e72b8f871a13eb4289 GIT binary patch literal 1053 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 JPDHLkV1hK>0yY2u literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxxhdpi/ic_subway_off_night.png b/android/res/drawable-xxxhdpi/ic_subway_off_night.png new file mode 100644 index 0000000000000000000000000000000000000000..cca0bca295ef40ce08057de568b21b4785679add GIT binary patch literal 1268 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 diff --git a/android/res/drawable-xxxhdpi/ic_traffic_download_3.png b/android/res/drawable-xxxhdpi/ic_traffic_download_3.png index f22b1212f94859a9efef1e1794d378d9208060eb..09047ebcdb13c823a422a3bf503c9764b1035c76 100644 GIT binary patch delta 842 zcmaFL`G9SLay_%Ur;B4q1>>7pt>;7>1zHNr%X=TaGup9xw=>Ijj&}xzDqZfC%yDd$ zoN^3VliZU2RDV8ScK%+Ns(jTY+pqV}#N}^YsL{0ujDo`4H%QH4?r#i#v~kb#td$F= zy<%O*n13d8<NQp$ik#BX)|LD{3ORa|^cFB24A=xGCU{*AzM`^s?UcC9q2(J44;JJCl{Ip%CAezk8n!0pV{9dz75|xosxN0qSOhlezG%5}Yl{@SUTOtL{G?l13q>X4 z+SV}$@NW2}nL&SX>FSXI^u8^qY6mfy?RZB}>VP@;Z%?EJ4c>-QGKhwqF0sVwkM=AZ5#dAa1o z16B*xeVpaXH`n}2YxUE8>;LWe_543aKWBfaS%QthMZMmHYe$5I?N2g^tJ%0~&e+O5 zW2Np4=DcZFAMEdz&ur4~oPDV}I$>SkfyU~U+hrrqWCZ2AUs^nQ-sa%&4PrK4g%8AT ze(s*b*~$0J{gQNj)tPwPgJB<3wmmFx6&5pKeYiF0^#r+XUj9>q?KhY|GvJv%btMnS zdeNDu?rGbG#5GIH3btqe4qk z_21q#FfcGQF-BzlbnMM{UAFO3MCYAJD|qIg+1zC0KUbH5;Q+%d%Q`Rljpq&m6*73b L`njxgN@xNA9U^xU delta 1234 zcmV;@1TFjE2IUEmBYy;}Nkl6qkYWMn+{=@BF|8_&Q+oJ^`vZyXp8C6fX$`orBQbG<@ zC3Bioq1aV3k&M)pszM&ra)gX%))7$5ZS4gh4{E7tF93N^OMg8TN(xp0E5HNP9@IQq zowSf9qUNLaq9Q8*e*q%Y8q|j{Fdx$Ty_}W;ER8P~^IfQBXq;BmF{T)n#uful173S~ zpgw?@(6+k+#{U!;xDzP&uK3CCQG{cGJlp{WE(QoZqRS2!ErA+=7lDDc0D-RoesTeP zv;hMJ;h-PTN`HnG+Gix}r2q^}5e|9}_+ziImnpz>6MHNe^gQs#d_f}`OdeG*!qYW(4{ClNV<~$)-IGSxTu?|U#tL8sumb3o6~Jag z+fW^Glz*Dp(D?q_fPqJhM#9gA%IXm?aMNZ(W9ud`aMor+W9uw1u*YUY!w#7(wb{_v zS_%w|u-VY?J)~v4Q*I?V5GUBNeG(_eMUKBWt+{04qDrM%~eJ=8#p%-xqlI1IO>kghW@QPloL@#p)P~XhF+#z z1fdDlHiTzG+b9RYSxE+m%4}$vJSU14)K=8yGdC{L!D>*Q|fH`8(Vu359q73|tLq zVnO$k&v$;m=O>rkM&!0x(6#u>zy-Jp44epMAor;B29N09D5(w0ZJT>ocpI<)CxC&C zp^p5R$?s8wfM>!+U|?2=Ykr)|PJfr9K!5jySzOJvie%vKhD*s~le;ksC%?kkyz7=+ zYW7&|Fv#swc!}B#jLen_+^zE|Y3y>(2~s{NXRO?k2;4nT`6__hw}c1E6+0^=f_G1~ zz6#*>E#ZN3<%Ki8gLkb3Uj=ac7D)aX@W=$zE0qPH<*4W6zoHy@WvyL;`qWwwVt=#U zgnMW+2y@Vf5w}!SxC}iAf!M%p#yu=4dl1_Ifmy=+@g>(bP|%8aM&1*_2s#aGOwG7j zf}3$Q@;U+%NEX$`u~c;}=Db8%v>k zg1dgIbPgF93N^%S2Q~aq=tV wK{Yv4Rble06niSjqPkFJ1&J?HtXUA?PyZSxV$U5Y%>V!Z07*qoM6N<$g23KD_y7O^ diff --git a/android/res/drawable-xxxhdpi/ic_traffic_download_night_1.png b/android/res/drawable-xxxhdpi/ic_traffic_download_night_1.png index c4466445cc47660571023f589658dcb3af724b87..600661e3177feafa485c7b4aa8c2ce35efa24021 100644 GIT binary patch delta 887 zcmV--1Bm>)3XKPlBYy)_Nklro^@0t}PQ8x5pv9+}HT z#lXUl#~lR^V9+K4Vpk;fdKWMN%-8?`GcXI78D`Mi_vaYkdH25a&i~wdzmFg3y>~n3 ze7$qd`QMLwhoUHoq9}@@D9WYU?e-7|z#DK0VnzZrm`qJIwlBsd1KGRI)Dhz1;h z*b@$lHu!TO_KdkA8L;Z10jpUY$N)sn2I=72(a+c6hnuGxUw=G$@LQ0d<#+O$ zyvLzw5eT#fe+9&@`1|Ga`!^*p8V0Pp=zm;SgWuVN*a7Pr28@EJ-_wo^WG^_Fjv_FswGJ$RlYT9@o#*`SkZbgD zVLky1+B=~^uwnb#AUhfvKpV)l`tV=B0S0~Al9s?TaBicMvaPgbfLzPcz@M8wmV7=N zjDhW5i)*sCw`G7_%R=#P8;oV?kTwNgf>iUb9I$K|Ab;0NIq=t}4^vq#JIsK6T>~Db zF<>9e$ZG@DW%lN;P!T!)@rMw2cNR9K>jVUMYeG=ojN? zfPOie2I$|Ap#l20Bx!&qG=K)s02)98XaIv*ooRwPsDcV887iP^UTZR#)gMAo?xI~~ z5Hgr$kAD`ZrD$J`!7Mw}dT3*f!K~g0EwnRaFf09nTei@~GH5cGm7Kc8Hr5%;N>0^c z+o}v^C8uJsO%(>Sl2fwz?PM@Z*MPg`nha+7Hw7`6rN0O>n5DlBWjR{^AVvd}OA$0c zxfn+Sl*`dHK>3CY4N$%%NduIj0m)%1VjQf2Ab%kZ4-IIf=*Jou*Q|C%ATBr&m{Q6F znMRO6!+5oV)8G|oWiXi4GHsvE zLvZb97K9lJW`$rjk43me(C|2z)c}h{sD|!%7|hyXIa*-~;{5>iMVJOKn8jcg4PY>f z!7LiUU>1W}G=RY@KE{d`E3pL_0fs=gTA{m&e9|93J$;>+mh=px_-PzW@8oI)qoMFOP}DgHj7 z0h6<3f;!>9lb z!$1E}(I0-dtmpkb-*)fc_e{t-^uNI0(|hFOwvk_dCKJMR5jO#wT|toiKv_Xy*RFLPSlr-P*D+90R6-pdyPxfN1H! zam{zP?EL$3G`=SY6HOt&73sin!^Of;f*Z2|0j^L8a8NR6JZg@gb|}HWbNq-Z$UzDL z=1K;Q=X@*}2Y62q7GN%g022YRO$;woTms?{2f&v_& zyo|ji)!D?>0+#^zcT06pv1Zga;ybnrfX7iG0q$_LB<2P*+tnqg0hr6x7doVy@c(j% zvoSZFyETDFMT?K2Sy&_P?&xgJ1|43OEWLyFU>FERlrQ(83+9SYTz_b;D0Lt99znDmr&j~_W+XuJPPk4ejw0o z{+B5PC^ozV+yG{{i2GUKj^WsgDFjG0n7}b$;!`?0P8y6ql|q0pgRlIF6t)_J?}RW4 z0ZtnTJRg`rxQ{(!=ppgbG|vaf2fl~tfpO_PHp%yNXpWkbm>Puz!nwRm6?~##(5Fa( zHh;gICQ=5zUoh}hi~_6{%ws=g;4=gtRhr2tz)YbWDu5Z(!5}H{q)i-O*{xPfnh;^cadYnI_euehJ88 zTtg>Yb`i^x9^7L>uL5yQ3GK6}6@fK))qm8mW*Tsr>5~heB|iOdG~+IlEIR}V?qEpp zj)&XPg_yI~=D*JXhX6`r)JcyGWH7fw^mi5dr)ahVj|txi&$xU+P`&aWJ2_1cRaZnI zuosvd;Av+sP^h*Po+IjMV72dUDQe780aO4LKm||%2%m(M_lBCMhC+ZmnPBC;p??D8 zQ3#Nr-cZ*hPzZ2ey`iqTPa(kP>J4?x=M(}gQE#YgmQeNl>(v_?G+47~RKed;Z)nim zq6~hSdP9R|DRuB^>J1H;G>+i6t2Z=YwsR%$SiPbD%VW;I(7QmLdPDyetj)XJ&AGk0 z1pO;}r8=ZvsWdP7G)Gd-}`2vmlkHxzT;=%tS*I}0?0 zfH$-$=6~JOt z02M(0Q-7NUNcVvN={5^+(FX!tv{`_e+Ps^>EXCw~oAqE;`O00000NkvXXu0mjf;k9+W diff --git a/android/res/drawable-xxxhdpi/ic_traffic_download_night_2.png b/android/res/drawable-xxxhdpi/ic_traffic_download_night_2.png index 221832c9a54ed87b45ac323d4d3fe4961d5f7667..44a21befd2114bb6c7b4af69fc0a80c0c8ca0e9e 100644 GIT binary patch delta 900 zcmV-~1AF|V3Xlho8Gi-<0082ccQ^n516N5zK~#7F?VSUxTu~5)YumOF)wXS0L2bKn z?MAh^8`f5=Mn$Z;4WIu>PR+gV?45J({U`Z~_ZBnf-#wT+nVW+~qtR$I8jVJy(fqW` z%*=dXEZ7Dvg1ApyH19c9e2D7cmje4iTp979R1^hR2jY&fE`Mr+Ume69qk5DC=8y#d zpvz~2VqmI;Vaos10_$C$f{c%~!kma}40b!X2#ZgRqmm6B>3`rhbfi3%0_YvYD1dS*f&wTf z<0ybaI+_CLUyz{y`j;drfIbvJ9|}MLD1g&O0a%!oaV7oD{Sz6_mRw7F-19}+-R7SK z`M3N`ekYG%VOBDD|MYm;qaLqPZ#T{S8}b-=EDN*j5lefy{jv;hBFJ-Cm}LPkga4BV zEX>Nzw0~m;(=(o@BNk?5T=}0l|9{p54+}F3vt&mj184(zEf!`ah-@ou2_Ub+gR~NZoH8jZ)F%6?E-v4T!GyGgBg6g_WyeP|6`K> z5A*y#$o~I&!vAmALGJx_^Z#jGkO&Z+*8BhM7St1uy8a(x|NpoL#JwI3VqcGgO5vie z$KsM9C@#EBD+?HcStUV!!3-*u3pcxOST9{Pebc;jV@{Kd1@m2*n5}I%xN27T_JR+@WPcLu9qS-ZZIoG5HZzEA!TJKYBKK5(5LXmZytjNCo4YYmaAX`--qWFnuX{ z`$bP~^uZhRcK(0u>%GNm{^wXtSlN4b~d@w&#MrQD&7T2@zLR_%Ix zI^b&N75fG~=4O*s&ZaJt4={)@>-n}VkXq)rkE?%+b93Sfw~T-W1&?OI6>cl1Yd8g* z3d|Q-W%x=}@l;Sg&#K14tfdO40*d5c9zgpzUCdtD$Hht6fDXSNYxPRl$t$X)w-MRU93ai_P9ku*i znDZ9bxmBV~(XVpMU2b35*}7!f=9mX9QahzwP6NYZ+QP!`sd7L0tiB%>c^grC`C)a& zTHe4-*^@JzvkfXLmMnR>Kg7oFz>9spj;G5vX5U{tUA;YS`M*eguj(ta=h-*QOjCF_&)ydBqT=qBX0Kzfmq|`33Nt^u z@EZS|JgYAkDjv^y!5gK#cy^z`j7Pg)vMjdTHv8O$h-)+QcIj=Xy8q5;_shHA_{7yu z%3bpP{)A;+pa1{7UzG>i>&;u`|L1YpPs{uD-|CY)^Pii{^*cT;zbyQ(;@KyrydR(E a$M5^_Puz0xZ3$prW$<+Mb6Mw<&;$T21Owmz diff --git a/android/res/drawable-xxxhdpi/ic_traffic_download_night_3.png b/android/res/drawable-xxxhdpi/ic_traffic_download_night_3.png index 11e0efc93379526987d49e92e81e261ad64f1467..cd68dca8b9c72ac7f9f2834793fc8d50f4a270a9 100644 GIT binary patch delta 710 zcmV;%0y+Jo3WEobBMAWHP)t-s0001yF%>PG%$)!K|NsC0|NsC0|NsC0|68nE{{Q~} z|Nn--hX4Qn%;n6`=+IoOTur1+kujNnPNhypphkOzqb2|V084aIPE!E0R$5aDdw8%J z8$hz9-?6T{u%)Ek^AndJ1qN7uj!hCIni@`aB7iHCZA7t!VhpMdJ7g^o3SVwZ0Y#w) zrwd)I5ofO#avmmQ^HsP#F#rGp14%?dRCr$P*++8gFc1XL9+9*XDO*-@&N;__@0|1J z{qN(AstgeV2IMTb!Mi|LVaUc*0W8n+=7XgvGMZWn<{`2&LyVafNGuX-5dyR1U>3#g zlY@Qa5hP?ZU2Qg^sL`xWlTi}D>Ws`L>KLj|kl7h*&dDSWp$KC#IfuY-lF2e` zjuX@QAj5P@$uX=}*T&Dcj*R+$_(`v=f-$#|kgf_%m2}C*9C*>f31u~*X;Rk7LIgLb zN7;gFK-0(;-_a@D4fYO56+sh`>R@kxeAYLafPbXeTt|Le+pb5ny@g_Sc3p;<`PzegoKg-YyuJsU~@$llbv?2-|w|MlVouPn+r1Qw$h88W@&NwI std#xCC4Z z^W|r|YfZ0FOs`OAylmw2=KufysoAYfuu!YouK)l4ipq^muThN5jgfIJe~ZhGwLdQN z0001LbW%=J03>;#vq!M68*-Pjo@X-&G-#loMFImmJO~PXsABV0H!)jzOwGgs7&(-SelasI~n6wyKb!@}z*J{ia!aFD{lE zu3T?eI;n203#SF1ro{jNe*-E>L_t(|0o2t6V&gCn1<>Ef?gwtM)bNs z+vSu#ONf^AnO;I*wHMU%v5=ewzbZt76GT_^SSgcy1=;nEvPf5^yK8vdG!(_TrqP-k zc-;;u>MKUY@D>4gfA^G_8ZEV<$pxH@QO!E$+p|Vv5$D&(}V)M#5b0f zg2@v)$)D|jE#@W1C;5wE%fLS8Z`-wpMM;7n3d3h?+t`fRwvECy+nD!%fHBkA732G@ zBidc{FA~N=!e8sTvx;m9@0HzNo8FK7z`jj?+>e44<5$#ef2tM(D^A;{aj+7!ZJGe< z9BrGP1M3QHn_dAcMBAnzaFUd5nglOJ*`_J*uHB?-)0@{Ikfv+Xv^X`-Q?=>&>kxWH z^%1>-M24nKGmy#NqiEB6SxANN25-~5VJPJCLEAK+gHkpctWBd?=oAht-lhi%FmUE! zaj`ZnK0E_6e~(IK`!+3?9>Icro5GH|P5;jD+Ixa$2em5ITD{Sz*P1Q;>@%=V>Q>sF zuJc*f^>ouG!SXd5OUur8mRB_6K3J>jg|&6(2kRT^`Bkts)vtfuVXUj)!zNfyl%M~y z!&z2-4^P0#9#M>U906Cca3l-Pmg4u>bp*PKU+Wflf7|l$sw32tZ|p!|S2|vEglf`- zU5J#V^L0n4E?p==s4SarI6@8Cd>LZBzTFcnOUC;>NW7-`h+ac#K=CCHpfD7!G;MyS zLnw_zJ1vVp+6WrsiD1h$y;Mxb&OGoNM1N6rp=nroE(xWHzhi48Sf*Jbb aKkon;ITozDTQ`jW0000Coyfc`W+=R|Bu#si~SzwB5t!}a8Vu=r` zXJ~Z2ROvJ56u%t!CXs9Yxf&nA3y}?)PFCEB)0arIbxBs9Hw4clxbb_ z@>ZLeW{Bk3Uy}c3d^I_}VAkaf!w2&d9T!`Mc+dL6EaL1xSv6#}>DO73ZfU$ zIAv`W*m8x-Tp*{s`qU@BCcWi3`)@mySpIJ_@ewxDIjk_Ro1a zW?uEw`};~I=Ou50kplCg*DtJg^{rbBqP{U+EG?0>s`7I`|MG>UZ0vPE_v>3PUo6cn z`SVRJR$Dd@C~(2_!o(8Zl0D0;cg@pVuKeQGOOIW33bKs*eXagUeAwmbUg>hxGp?v~ z()lewqjxQO{a>HAC%#%@{|>{9uPJ{%o%!%}KEJwhVNmA(!dPHjGkCiCxvX@n` literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxxhdpi/ic_traffic_menu_dark_off.png b/android/res/drawable-xxxhdpi/ic_traffic_menu_dark_off.png new file mode 100644 index 0000000000000000000000000000000000000000..d8429c1780b0b57ebbe0db913c9de38e5ed56552 GIT binary patch literal 688 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#j1AIbUf%N}D1DLywTY(PJFA4Gs zW?*#hUAwt&D`^^)$HKN&~50RaLsAPQBSXC9sN_Qw7P8;JI*>1plY(>FI&9S{$-9# zQ&;}qc33_(dluuWc~OTu>W?)>*@jHs_g}Cp(Ec#X)jb8#cN3Sc-kCdd<0k&M%_&?- zJK7%<#AuwB;+WO5>1jp7o04T3?HbEp)EwG&dTJBXqNb+TtX12s!@WAZ*4@cB_$24A zrPZOOHLw4A+1tY{i3%KxUd-s}I3&w4CG~6kypw9b|H(A5J~Q92px}E$?aHNva&s6D z+pOA}diRC$t!u7J{#u;$w(F1G(p|G`de4b|HT9y96P+?;MM}rF&NHYEDa jgVpM+)6(Ul|Nmsto|e0}tERFF7}E@%u6{1-oD!M<(@C#_yjZ*ZGct zfpLzfi(^Oyq4k$^*C6Yu97 zk$ksNVoTU7Nneq}Ycc-d>(J~<^B6CSY#<{!B6 z?%R>oyb{aQ?$vE)eP5sw#vJCn<}qX5a%01&4N*yR{6FlD$y~&|dU5A#R>wzW>fZce z{?mT@Dja(pxzr}WR(}24TkV;wjsh+R&pA5I3IF$yQ-4oLaZSX6cqZobGVU3Fw&&V^ z5tRKc_Hs{N<;m}*Zq-kWYmGeWw)jk1tTg$_hSMsR>x@11=J-s~HlF?a0EsX_HTlrV4TmAad#bT=}KljrwU+gNg+O=+O-@5GOkMr*@$X=lQLh6MF zP;e7OaPjL~Ks9mweNFcjW&cZj_&TlcLx+)PT#?$z^jWWV?eZ(#d+5@E-CNsD#m!T` hrZhgC*}wMx9|pIM+(UO_XIup(I8RqUmvv4FO#t(S>NfxY literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxxhdpi/ic_traffic_menu_on.png b/android/res/drawable-xxxhdpi/ic_traffic_menu_on.png new file mode 100644 index 0000000000000000000000000000000000000000..19522805dc39900f297fff782a5eae6a7e73ef12 GIT binary patch literal 699 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy$41^9%x0_p#Q4;)ZEx&r7jqmm%M zUCoyfc`W+=R|Bu#si~SzwB5t!}a8Vu=r` zXJ~Z2ROvJ56u%t!CXs9Yxf&nA3y}?)PFCEB)0arIbxBs9Hw4clxbb_ z@>ZLeW{Bk3Uy}c3d^I_}VAkaf!w2&d9T!`Mc+dL6EaL1xSv6#}>DO73ZfU$ zIAv`W*m8x-Tp*{s`qU@BCcWi3`)@mySpIJ_@ewxDIjk_Ro1a zW?uEw`};~I=Ou50kplCg*DtJg^{rbBqP{U+EG?0>s`7I`|MG>UZ0vPE_v>3PUo6cn z`SVRJR$Dd@C~(2_!o(8Zl0D0;cg@pVuKeQGOOIW33bKs*eXagUeAwmbUg>hxGp?v~ z()lewqjxQO{a>HAC%#%@{|>{9uPJ{%o%!%}KEJwhVNmA(!dPHjGkCiCxvX@n` literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxxhdpi/ic_traffic_on.png b/android/res/drawable-xxxhdpi/ic_traffic_on.png index 2c81c31541aee1837a42aa231a3a9ac80001d727..176bfb4eb054087c3e0f664254d5a2edb70318d8 100644 GIT binary patch delta 992 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 LNkvXXu0mjf%QU~` diff --git a/android/res/drawable-xxxhdpi/ic_traffic_on_night.png b/android/res/drawable-xxxhdpi/ic_traffic_on_night.png index a6a2bb33b2e72d5e0d88f192415fa04375e522ff..aebf7b9674968db5f9f581372556e5ea17b127ca 100644 GIT binary patch delta 1077 zcmV-51j_rM48I7F8Gi-<0082ccQ^n51O`b&K~#7F?VW?O9ZwL2e~fM0wrv~tZKV|3 zwr$&XvVY*qi8oH)+uLVS+gudVBx!_*Hm#czAetczAetcoY{GPXdwh z|JfF71GhnJ#A|R4ECH4Nl;lrLTtKAsf6n-jjF`wh&@%MoPk;E%z$1m<{ABW(Tn43r zPrjyv56ey*5Q9TZ{`lk|H6;kvd@JUMC}1&&wIty0^#m^qOw@5O6*L1C!T+EJ=mh2& zi+u>@f`8Hy@HbeZETLDP5-x)tzw!T<0yDsKLlL7=5fG4s-Jq;++${}f!^+eI1R&us z_&?8aHv~@%1b-BzDu5{A0jN~qxCf@3{KueL>H--Pt3N?6K}pl}!lK_O!30o^ z-+xUjU<~$-9)r3p0raj{gyYRV-;pq%CE$U6BB&j+a(POa!xFIGxU*q*$padO61ve! z6AhLjLdPtTgk|izph{qseh*N3$1MIWs`O$NdVvx;W@$^{i)alFY6u{7%uUcB2C1_)&&X@!I5Z;)ngZ=<-LpNrs+QRyam_R@_BoMYD1OhT3fv_1T5Rd^0gzad7 zfDA|=9LUH8gfD?#m}Sy2D|`tVc#V}@!nn`{1o=yxrFg13G|nFCN3n< vlJBpxO-h*HHSZoC9v&VZ9v&VZ9>0n=5_rd!Qp~KJ00000NkvXXu0mjfa|qoK literal 1568 zcma)+dpOg39LG01A(t9SMcF)5(jhu!<%luYav3e^q?(Qnmix2N%;rw!p2Uu@$YtiT zT24-mhQ`slP|ZxoYNk#_PHi@(Z0G0Uuk$?Tsqgdses1sA=kxvJ`#j%EXkQOqEh8-u z2&C)f=^6ld?DEls0G8*T0|;Om+8g5rq^hs2C6Q2(Lz4Tu$vo|4D1;)HtP}~CCPnku zV=`C79LjD!Ll;mMg&KTC3#atBsR+sy+>sIDa|ipInalr&pzKbo^5*;G}di z|6$Qjw@;&)7@v0k{71!NsTh!^q_4y7o(C%4?db6C$SLU?px7*E_31#jjJE-C-h+Z= z{$at&oNu=jZeiHA!%e^=QSbr2M?vNnX}3H&+KuC{-fU{PKOt?TH{JfC>ZJeZK$Fxr z-B@a%QZ5{Zf$KvyrJT{&W_5sJR-@Or7jh7~eictz;qi3iUJw zYw3;1%vG>@1uO=*RDe5?yvMrSsLee%=D2-xbgOow&Y^WxAP}U^%hef^1fCg%q|YFs z>aWHp$dR0(F>Ynpi{Dk}s!Qr%;pI3fSj|p5pPYMuU3Cqx@-ZgY_2zKwLvsUf_(Vxx5*DGIsuHQ^Be0jCv6$u#-NujmC+qS{7jKyp}e*9>+SV_Dz!E zn(rUnBa>KJ7ZpZ^{_Ik77}dnhyXZ*a_HLM`MC6}tJM;-ncg$_mv&4oXJMf^hl|hL` zrE}84b8N;(iHUt}P9g&eZuz3mJEAcs(SB|TWiS^V?Q4tnGr*k1?4i^M-+Rn;<{x|~ zt|wr}@NZ0G)CLW2;pD#(d}<=WM|K`kuB%WCn@}dm$vOK9-d)YR76lbhYlFq(oanRK zm>D6Q_yghf;(&E{$2<{sa{WG|$4cp;VKGOf*Q0)n>tIg|iJ@;s>{}AW1r3y^ksLa| z)XXUBQxWf-;)wBt1QIEM5Z64~;|vb6qzq0=$-SF2>Cb~K;PtVYW+X^SlZ%N9*j51b zTOh+r%4D_%#ie9&-%A&lo@@iHr0qggE=*6arhoTenzNem?KN=t=2>Wzsa1E4qa}N1 zcWVSYG)Zx(W-2`~Gz~uZ!0%n^(a~Z^9x9ORu2IFzM!^qG&i##NA8d3|qY`_Ak(ni% zBy2SPjp4?$8&mgD)@jH}R&d2dA1*wA=5Td~BTLJoX;d=^`5Wdry|%ti2~wmJIJ3@w zK=60utPxxRu55bX=n}abG2;6aIty>bTDfPm&Qs5KhZ^Hwy5JfV|v%UE5r+>Hh*N=a1q5 diff --git a/android/res/drawable-xxxhdpi/ic_traffic_outdated.png b/android/res/drawable-xxxhdpi/ic_traffic_outdated.png index d6410dedc3b3c8f51b58e91584d7f2ff1ac9592f..f7d9fe97924b4194882aa67e9365bb5cca494230 100644 GIT binary patch delta 942 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 B!bboA diff --git a/android/res/drawable-xxxhdpi/ic_traffic_outdated_night.png b/android/res/drawable-xxxhdpi/ic_traffic_outdated_night.png index a74cb441d26c398c1dc8c01c76dc269cdac74785..775d1a5aba34a50c6737c5bf5f71ee5cbefa7d8f 100644 GIT binary patch delta 1027 zcmV+e1pNDl7nlf;BYy+mNkl}K*Z)k)P?uG!vv!|qIGH>fIab0N3^K7nM!U+@x~2II<< z{M15CX`2UHl97mf0rR{ke^(C!uPW^MEy<_z28{5Zd_@T@r+=N~h>aeTzZ0YuR3%8y z`34;KDB#op2VWcD_Ev#EO(yCI*bC->v0xaO1eSnf#$vy<{N|9N1PlhJok(~CRt{kM zBftUh%TUC&LIgOHa2t#gj(eWr(QvLX0S+WQ1j8B}_e}7^K!E%@SP}_e!MG;Jy}rog zw+Nm%2;ogaRewRk9;ILgHXVhE^|j`j3w|3vy?>)1AD+%Ng@dnxP@5; zB1VDwKrX_A5RFR^UlTeOX2oo1$M*w_j)aRb9e+K*H)IMr5+;NI!8>9_NC*Lfw7f6!cOl3{C~(zE`gu?@_))uE`gN%_?Tx$ x37q7|=WIJl*yTUl5fKp)5fKp)5fKsW_y+_9oGS~)vM&Gt002ovPDHLkV1g3+!m0oO delta 2945 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 r^AqtAx-t^W-@ + + + + + + diff --git a/android/res/drawable/subway_bg_light_default.xml b/android/res/drawable/subway_bg_light_default.xml new file mode 100644 index 0000000000..033eb7f15c --- /dev/null +++ b/android/res/drawable/subway_bg_light_default.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/android/res/drawable/subway_bg_light_pressed.xml b/android/res/drawable/subway_bg_light_pressed.xml new file mode 100644 index 0000000000..b924ff266a --- /dev/null +++ b/android/res/drawable/subway_bg_light_pressed.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/android/res/drawable/subway_bg_light_selected.xml b/android/res/drawable/subway_bg_light_selected.xml new file mode 100644 index 0000000000..0300f5f921 --- /dev/null +++ b/android/res/drawable/subway_bg_light_selected.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/android/res/drawable/subway_bg_night.xml b/android/res/drawable/subway_bg_night.xml new file mode 100644 index 0000000000..faf7feba90 --- /dev/null +++ b/android/res/drawable/subway_bg_night.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/android/res/drawable/subway_bg_night_default.xml b/android/res/drawable/subway_bg_night_default.xml new file mode 100644 index 0000000000..710471fb42 --- /dev/null +++ b/android/res/drawable/subway_bg_night_default.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/android/res/drawable/subway_bg_night_pressed.xml b/android/res/drawable/subway_bg_night_pressed.xml new file mode 100644 index 0000000000..4bb4fa9b1c --- /dev/null +++ b/android/res/drawable/subway_bg_night_pressed.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/android/res/drawable/subway_bg_night_selected.xml b/android/res/drawable/subway_bg_night_selected.xml new file mode 100644 index 0000000000..762777b730 --- /dev/null +++ b/android/res/drawable/subway_bg_night_selected.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/android/res/drawable/traffic_subway_bg_default.xml b/android/res/drawable/traffic_subway_bg_default.xml new file mode 100644 index 0000000000..c72e72eca6 --- /dev/null +++ b/android/res/drawable/traffic_subway_bg_default.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/res/drawable/traffic_subway_btn_bg.xml b/android/res/drawable/traffic_subway_btn_bg.xml new file mode 100644 index 0000000000..3bae4d725b --- /dev/null +++ b/android/res/drawable/traffic_subway_btn_bg.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/android/res/drawable/traffic_subway_btn_bg_selected.xml b/android/res/drawable/traffic_subway_btn_bg_selected.xml new file mode 100644 index 0000000000..8196902175 --- /dev/null +++ b/android/res/drawable/traffic_subway_btn_bg_selected.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/res/layout-land/map_navigation_buttons.xml b/android/res/layout-land/map_navigation_buttons.xml index e9457dfb06..a6ca63341b 100644 --- a/android/res/layout-land/map_navigation_buttons.xml +++ b/android/res/layout-land/map_navigation_buttons.xml @@ -15,6 +15,15 @@ android:layout_alignParentTop="true" android:visibility="invisible"/> + + + + + + diff --git a/android/res/layout/fragment_subway_traffic_toggle.xml b/android/res/layout/fragment_subway_traffic_toggle.xml new file mode 100644 index 0000000000..68b3d3aba1 --- /dev/null +++ b/android/res/layout/fragment_subway_traffic_toggle.xml @@ -0,0 +1,59 @@ + + + + + + + + + diff --git a/android/res/layout/layout_nav_bottom.xml b/android/res/layout/layout_nav_bottom.xml index 72aec5f27b..0d5e5c33d8 100644 --- a/android/res/layout/layout_nav_bottom.xml +++ b/android/res/layout/layout_nav_bottom.xml @@ -69,9 +69,17 @@ android:layout_width="0dp" android:layout_height="@dimen/nav_icon_size" android:scaleType="center" - android:src="@drawable/ic_setting_traffic_on" android:background="?selectableItemBackgroundBorderless"/> + + + + #FF888A82 #FF1E96F0 #1E000000 + #f5f5f5 diff --git a/android/res/values/dimens.xml b/android/res/values/dimens.xml index 4b174b7c34..10482ac40e 100644 --- a/android/res/values/dimens.xml +++ b/android/res/values/dimens.xml @@ -248,4 +248,5 @@ 22dp 80dp 0dp + 98dp diff --git a/android/res/values/themes-attrs.xml b/android/res/values/themes-attrs.xml index 14bbd8a81f..51b330af18 100644 --- a/android/res/values/themes-attrs.xml +++ b/android/res/values/themes-attrs.xml @@ -101,10 +101,12 @@ + + diff --git a/android/res/values/themes-base.xml b/android/res/values/themes-base.xml index 8ea88f6196..a7dd05fd90 100644 --- a/android/res/values/themes-base.xml +++ b/android/res/values/themes-base.xml @@ -126,6 +126,8 @@ @drawable/button_with_border @drawable/ic_ad_light @drawable/ic_deal_light + @drawable/ic_layers_light_on + @drawable/subway_bg_light @@ -255,5 +257,7 @@ @drawable/button_with_border_night @drawable/ic_ad_dark @drawable/ic_deal_dark + @drawable/ic_layers_dark_on + @drawable/subway_bg_night diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index 55b0736f61..bfdca97176 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -376,6 +376,12 @@ public class Framework public static native void nativeSetAutoZoomEnabled(boolean enabled); + public static native void nativeSetTransitSchemeEnabled(boolean enabled); + + public static native void nativeSaveSettingSchemeEnabled(boolean enabled); + + public static native boolean nativeIsTransitSchemeEnabled(); + @NonNull public static native MapObject nativeDeleteBookmarkFromMapObject(); diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index 98cf9b201a..30f78f4723 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -82,11 +82,15 @@ import com.mapswithme.maps.settings.SettingsActivity; import com.mapswithme.maps.settings.StoragePathManager; import com.mapswithme.maps.settings.UnitLocale; import com.mapswithme.maps.sound.TtsPlayer; +import com.mapswithme.maps.subway.OnSubwayModeSelectListener; +import com.mapswithme.maps.subway.SubwayManager; +import com.mapswithme.maps.subway.SubwayTrafficToggleDialogFragment; import com.mapswithme.maps.taxi.TaxiInfo; import com.mapswithme.maps.taxi.TaxiManager; import com.mapswithme.maps.traffic.TrafficManager; -import com.mapswithme.maps.traffic.widget.TrafficButton; -import com.mapswithme.maps.traffic.widget.TrafficButtonController; +import com.mapswithme.maps.traffic.widget.OnTrafficModeSelectListener; +import com.mapswithme.maps.traffic.widget.TrafficMapLayerButton; +import com.mapswithme.maps.traffic.widget.TrafficMapLayerBtnController; import com.mapswithme.maps.widget.FadeView; import com.mapswithme.maps.widget.menu.BaseMenu; import com.mapswithme.maps.widget.menu.MainMenu; @@ -134,7 +138,9 @@ public class MwmActivity extends BaseMwmFragmentActivity RoutingBottomMenuListener, BookmarkManager.BookmarksLoadingListener, DiscoveryFragment.DiscoveryListener, - FloatingSearchToolbarController.SearchToolbarListener + FloatingSearchToolbarController.SearchToolbarListener, + OnTrafficModeSelectListener, + OnSubwayModeSelectListener { private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC); private static final String TAG = MwmActivity.class.getSimpleName(); @@ -167,6 +173,10 @@ public class MwmActivity extends BaseMwmFragmentActivity private MapFragment mMapFragment; @Nullable private PlacePageView mPlacePage; + private FadeView mFadeView; + private View mPositionChooser; + @NonNull + private ImageButton mSubwayBtn; private RoutingPlanInplaceController mRoutingPlanInplaceController; @Nullable @@ -178,19 +188,13 @@ public class MwmActivity extends BaseMwmFragmentActivity @Nullable private OnmapDownloader mOnmapDownloader; - private FadeView mFadeView; - @Nullable private MyPositionButton mNavMyPosition; - private TrafficButton mTraffic; + private TrafficMapLayerButton mTraffic; @Nullable private NavigationButtonsAnimationController mNavAnimationController; @Nullable - private TrafficButtonController mTrafficButtonController; - - private View mPositionChooser; - - private ViewGroup mRootView; + private TrafficMapLayerBtnController mTrafficMapLayerBtnController; @Nullable private SearchFilterController mFilterController; @@ -216,27 +220,48 @@ public class MwmActivity extends BaseMwmFragmentActivity private PlacePageTracker mPlacePageTracker; @NonNull - private final OnClickListener mOnMyPositionClickListener = new OnClickListener() + private final OnClickListener mOnMyPositionClickListener = new CurrentPositionClickListener(); + + @Override + public void onSubwayModeSelected() { - @Override - public void onClick(View v) + if (isOptionalMapLayerEnabled()) { - Statistics.INSTANCE.trackEvent(Statistics.EventName.TOOLBAR_MY_POSITION); - AlohaHelper.logClick(AlohaHelper.TOOLBAR_MY_POSITION); - - if (!PermissionsUtils.isLocationGranted()) - { - if (PermissionsUtils.isLocationExplanationNeeded(MwmActivity.this)) - PermissionsUtils.requestLocationPermission(MwmActivity.this, REQ_CODE_LOCATION_PERMISSION); - else - Toast.makeText(MwmActivity.this, R.string.enable_location_services, Toast.LENGTH_SHORT) - .show(); - return; - } - - myPositionClick(); + mTraffic.hideImmediately(); + mSubwayBtn.setVisibility(View.VISIBLE); + mSubwayBtn.setSelected(true); + return; } - }; + onResetOptionalMapLayer(); + } + + @Override + public void onTrafficModeSelected() + { + if (isOptionalMapLayerEnabled()) + { + mTraffic.showImmediately(); + mSubwayBtn.setSelected(false); + mSubwayBtn.setVisibility(View.GONE); + return; + } + onResetOptionalMapLayer(); + } + + private void onResetOptionalMapLayer() + { + SubwayManager.from(getApplicationContext()).setEnabled(false); + TrafficManager.INSTANCE.setEnabled(false); + mTraffic.hideImmediately(); + mSubwayBtn.setVisibility(View.VISIBLE); + mSubwayBtn.setSelected(false); + } + + private boolean isOptionalMapLayerEnabled() + { + return SubwayManager.from(getApplicationContext()).isEnabled() + || TrafficManager.INSTANCE.isEnabled(); + } public interface LeftAnimationTrackListener { @@ -254,14 +279,14 @@ public class MwmActivity extends BaseMwmFragmentActivity class VisibleRectMeasurer implements View.OnLayoutChangeListener { - private VisibleRectListener m_listener; + private VisibleRectListener mRectListener; private Rect mScreenFullRect = null; private Rect mLastVisibleRect = null; private boolean mPlacePageVisible = false; public VisibleRectMeasurer(VisibleRectListener listener) { - m_listener = listener; + mRectListener = listener; } void setPlacePageVisible(boolean visible) @@ -316,8 +341,8 @@ public class MwmActivity extends BaseMwmFragmentActivity if (mLastVisibleRect == null || !mLastVisibleRect.equals(rect)) { mLastVisibleRect = new Rect(rect.left, rect.top, rect.right, rect.bottom); - if (m_listener != null) - m_listener.onVisibleRectChanged(rect); + if (mRectListener != null) + mRectListener.onVisibleRectChanged(rect); } } } @@ -713,7 +738,6 @@ public class MwmActivity extends BaseMwmFragmentActivity if (container != null) { container.setOnTouchListener(this); - mRootView = (ViewGroup) container.getParent(); } } @@ -734,11 +758,23 @@ public class MwmActivity extends BaseMwmFragmentActivity zoomOut.setOnClickListener(this); View myPosition = frame.findViewById(R.id.my_position); mNavMyPosition = new MyPositionButton(myPosition, mOnMyPositionClickListener); - ImageButton traffic = (ImageButton) frame.findViewById(R.id.traffic); - mTraffic = new TrafficButton(this, traffic); - mTrafficButtonController = new TrafficButtonController(mTraffic, this); + + ImageButton trafficBtn = frame.findViewById(R.id.traffic); + OpenBottomDialogClickListener listener = new OpenBottomDialogClickListener(); + trafficBtn.setOnClickListener(listener); + mTraffic = new TrafficMapLayerButton(trafficBtn); + mTrafficMapLayerBtnController = new TrafficMapLayerBtnController(mTraffic, this); mNavAnimationController = new NavigationButtonsAnimationController( zoomIn, zoomOut, myPosition, getWindow().getDecorView().getRootView(), this); + initSubwayBtn(frame); + } + + private void initSubwayBtn(View frame) + { + mSubwayBtn = frame.findViewById(R.id.subway); + mSubwayBtn.setVisibility(View.VISIBLE); + mSubwayBtn.setOnClickListener(new OpenBottomDialogClickListener()); + UiUtils.addStatusBarOffset(mSubwayBtn); } public boolean closePlacePage() @@ -1365,8 +1401,8 @@ public class MwmActivity extends BaseMwmFragmentActivity RoutingController.get().attach(this); if (MapFragment.nativeIsEngineCreated()) LocationHelper.INSTANCE.attach(this); - if (mTrafficButtonController != null) - TrafficManager.INSTANCE.attach(mTrafficButtonController); + if (mTrafficMapLayerBtnController != null) + TrafficManager.INSTANCE.attach(mTrafficMapLayerBtnController); if (mNavigationController != null) TrafficManager.INSTANCE.attach(mNavigationController); mPlacePage.onActivityStarted(); @@ -1381,8 +1417,8 @@ public class MwmActivity extends BaseMwmFragmentActivity LocationHelper.INSTANCE.detach(!isFinishing()); RoutingController.get().detach(); TrafficManager.INSTANCE.detachAll(); - if (mTrafficButtonController != null) - mTrafficButtonController.destroy(); + if (mTrafficMapLayerBtnController != null) + mTrafficMapLayerBtnController.destroy(); mPlacePage.onActivityStopped(); } @@ -1602,7 +1638,21 @@ public class MwmActivity extends BaseMwmFragmentActivity }); if (mNavMyPosition != null) mNavMyPosition.show(); - mTraffic.show(); + showToggleMapLayerBtn(); + } + + private void showToggleMapLayerBtn() + { + if (TrafficManager.INSTANCE.isEnabled()) + { + mTraffic.show(); + mSubwayBtn.setVisibility(View.GONE); + } + else + { + mTraffic.hideImmediately(); + Animations.appearSliding(mSubwayBtn, Animations.LEFT, null); + } } @Override @@ -2622,4 +2672,40 @@ public class MwmActivity extends BaseMwmFragmentActivity return true; } } + + private class CurrentPositionClickListener implements OnClickListener + { + @Override + public void onClick(View v) + { + Statistics.INSTANCE.trackEvent(Statistics.EventName.TOOLBAR_MY_POSITION); + AlohaHelper.logClick(AlohaHelper.TOOLBAR_MY_POSITION); + + if (!PermissionsUtils.isLocationGranted()) + { + if (PermissionsUtils.isLocationExplanationNeeded(MwmActivity.this)) + PermissionsUtils.requestLocationPermission(MwmActivity.this, REQ_CODE_LOCATION_PERMISSION); + else + Toast.makeText(MwmActivity.this, R.string.enable_location_services, Toast.LENGTH_SHORT) + .show(); + return; + } + + myPositionClick(); + } + } + + private class OpenBottomDialogClickListener implements View.OnClickListener + { + @Override + public void onClick(View v) + { + if (isOptionalMapLayerEnabled()) + { + onResetOptionalMapLayer(); + return; + } + SubwayTrafficToggleDialogFragment.show(MwmActivity.this); + } + } } diff --git a/android/src/com/mapswithme/maps/MwmApplication.java b/android/src/com/mapswithme/maps/MwmApplication.java index c74901d074..288acc7c08 100644 --- a/android/src/com/mapswithme/maps/MwmApplication.java +++ b/android/src/com/mapswithme/maps/MwmApplication.java @@ -25,6 +25,7 @@ import com.mapswithme.maps.location.LocationHelper; import com.mapswithme.maps.location.TrackRecorder; import com.mapswithme.maps.routing.RoutingController; import com.mapswithme.maps.sound.TtsPlayer; +import com.mapswithme.maps.subway.SubwayManager; import com.mapswithme.maps.traffic.TrafficManager; import com.mapswithme.maps.ugc.UGC; import com.mapswithme.util.Config; @@ -62,6 +63,7 @@ public class MwmApplication extends Application private static MwmApplication sSelf; private SharedPreferences mPrefs; private AppBackgroundTracker mBackgroundTracker; + private SubwayManager mSubwayManager; private boolean mFrameworkInitialized; private boolean mPlatformInitialized; @@ -118,6 +120,11 @@ public class MwmApplication extends Application } }; + public SubwayManager getSubwayManager() + { + return mSubwayManager; + } + public MwmApplication() { super(); @@ -186,6 +193,7 @@ public class MwmApplication extends Application mBackgroundTracker = new AppBackgroundTracker(); mBackgroundTracker.addListener(mVisibleAppLaunchListener); + mSubwayManager = new SubwayManager(); } private void initCoreIndependentSdks() diff --git a/android/src/com/mapswithme/maps/adapter/BottomSheetItem.java b/android/src/com/mapswithme/maps/adapter/BottomSheetItem.java new file mode 100644 index 0000000000..8327199832 --- /dev/null +++ b/android/src/com/mapswithme/maps/adapter/BottomSheetItem.java @@ -0,0 +1,21 @@ +package com.mapswithme.maps.adapter; + +import android.content.Context; +import android.support.annotation.DrawableRes; +import android.support.annotation.NonNull; +import android.support.annotation.StringRes; + +import com.mapswithme.maps.MwmActivity; + +public interface BottomSheetItem +{ + boolean isSelected(@NonNull Context context); + + void onSelected(@NonNull MwmActivity activity); + + @DrawableRes + int getDrawableResId(@NonNull Context context); + + @StringRes + int getTitleResId(); +} diff --git a/android/src/com/mapswithme/maps/adapter/SpanningLinearLayoutManager.java b/android/src/com/mapswithme/maps/adapter/SpanningLinearLayoutManager.java new file mode 100644 index 0000000000..3144803322 --- /dev/null +++ b/android/src/com/mapswithme/maps/adapter/SpanningLinearLayoutManager.java @@ -0,0 +1,85 @@ +package com.mapswithme.maps.adapter; + +import android.content.Context; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.AttributeSet; +import android.view.ViewGroup; + +public class SpanningLinearLayoutManager extends LinearLayoutManager +{ + public SpanningLinearLayoutManager(Context context) + { + super(context); + } + + public SpanningLinearLayoutManager(Context context, int orientation, boolean reverseLayout) + { + super(context, orientation, reverseLayout); + } + + public SpanningLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int + defStyleRes) + { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + public RecyclerView.LayoutParams generateDefaultLayoutParams() + { + return spanLayoutSize(super.generateDefaultLayoutParams()); + } + + @Override + public RecyclerView.LayoutParams generateLayoutParams(Context c, AttributeSet attrs) + { + return spanLayoutSize(super.generateLayoutParams(c, attrs)); + } + + @Override + public RecyclerView.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) + { + return spanLayoutSize(super.generateLayoutParams(lp)); + } + + @Override + public boolean checkLayoutParams(RecyclerView.LayoutParams lp) + { + return super.checkLayoutParams(lp); + } + + private RecyclerView.LayoutParams spanLayoutSize(RecyclerView.LayoutParams layoutParams) + { + if (getOrientation() == HORIZONTAL) + { + layoutParams.width = (int) Math.round(getHorizontalSpace() / (double) getItemCount()); + } + else if (getOrientation() == VERTICAL) + { + layoutParams.height = (int) Math.round(getVerticalSpace() / (double) getItemCount()); + } + return layoutParams; + } + + @Override + public boolean canScrollVertically() + { + return false; + } + + @Override + public boolean canScrollHorizontally() + { + return false; + } + + private int getHorizontalSpace() + { + return getWidth() - getPaddingRight() - getPaddingLeft(); + } + + private int getVerticalSpace() + { + return getHeight() - getPaddingBottom() - getPaddingTop(); + } +} diff --git a/android/src/com/mapswithme/maps/subway/Mode.java b/android/src/com/mapswithme/maps/subway/Mode.java new file mode 100644 index 0000000000..1bdd34123b --- /dev/null +++ b/android/src/com/mapswithme/maps/subway/Mode.java @@ -0,0 +1,44 @@ +package com.mapswithme.maps.subway; + +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; + +import com.mapswithme.maps.adapter.BottomSheetItem; +import com.mapswithme.maps.traffic.TrafficItem; + +public enum Mode +{ + TRAFFIC(new TrafficItem()) + { + @Override + public void toggleLayerBtn(@NonNull AppCompatActivity activity, boolean isLayerEnabled) + { + + } + }, + + SUBWAY(new SubwayItem()) + { + @Override + public void toggleLayerBtn(@NonNull AppCompatActivity activity, boolean isLayerEnabled) + { + + } + }; + + @NonNull + private final BottomSheetItem mItem; + + Mode(@NonNull BottomSheetItem item) + { + mItem = item; + } + + @NonNull + public BottomSheetItem getItem() + { + return mItem; + } + + public abstract void toggleLayerBtn(@NonNull AppCompatActivity activity, boolean isLayerEnabled); +} diff --git a/android/src/com/mapswithme/maps/subway/OnSubwayModeSelectListener.java b/android/src/com/mapswithme/maps/subway/OnSubwayModeSelectListener.java new file mode 100644 index 0000000000..eedce247c4 --- /dev/null +++ b/android/src/com/mapswithme/maps/subway/OnSubwayModeSelectListener.java @@ -0,0 +1,6 @@ +package com.mapswithme.maps.subway; + +public interface OnSubwayModeSelectListener +{ + void onSubwayModeSelected(); +} diff --git a/android/src/com/mapswithme/maps/subway/SubwayItem.java b/android/src/com/mapswithme/maps/subway/SubwayItem.java new file mode 100644 index 0000000000..38dc587ee1 --- /dev/null +++ b/android/src/com/mapswithme/maps/subway/SubwayItem.java @@ -0,0 +1,41 @@ +package com.mapswithme.maps.subway; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.mapswithme.maps.MwmActivity; +import com.mapswithme.maps.R; +import com.mapswithme.maps.adapter.BottomSheetItem; +import com.mapswithme.maps.traffic.TrafficManager; + +class SubwayItem implements BottomSheetItem +{ + @Override + public void onSelected(@NonNull MwmActivity activity) + { + SubwayManager subway = SubwayManager.from(activity); + subway.toggle(); + if (subway.isEnabled()) + TrafficManager.INSTANCE.setEnabled(false); + + activity.onSubwayModeSelected(); + } + + @Override + public int getDrawableResId(@NonNull Context context) + { + return SubwayManager.from(context).getIconRes(); + } + + @Override + public int getTitleResId() + { + return R.string.about; + } + + @Override + public boolean isSelected(@NonNull Context context) + { + return SubwayManager.from(context).isEnabled(); + } +} diff --git a/android/src/com/mapswithme/maps/subway/SubwayManager.java b/android/src/com/mapswithme/maps/subway/SubwayManager.java new file mode 100644 index 0000000000..a3b28131e6 --- /dev/null +++ b/android/src/com/mapswithme/maps/subway/SubwayManager.java @@ -0,0 +1,58 @@ +package com.mapswithme.maps.subway; + +import android.content.Context; +import android.support.annotation.DrawableRes; +import android.support.annotation.NonNull; + +import com.mapswithme.maps.Framework; +import com.mapswithme.maps.MwmApplication; +import com.mapswithme.maps.R; +import com.mapswithme.util.ThemeUtils; + +public class SubwayManager +{ + public SubwayManager() + { + } + + @DrawableRes + public int getIconRes() + { + return isEnabled() ? getEnabledStateIcon() : getDisabledStateIcon(); + } + + private int getEnabledStateIcon() + { + return R.drawable.ic_subway_menu_on; + } + + private int getDisabledStateIcon() + { + return ThemeUtils.isNightTheme() ? R.drawable.ic_subway_menu_dark_off : R.drawable.ic_subway_menu_light_off; + } + + public void setEnabled(boolean isEnabled) + { + if (isEnabled == isEnabled()) + return; + + Framework.nativeSetTransitSchemeEnabled(isEnabled); + Framework.nativeSaveSettingSchemeEnabled(isEnabled); + } + + public boolean isEnabled() + { + return Framework.nativeIsTransitSchemeEnabled(); + } + + public static SubwayManager from(@NonNull Context context) + { + MwmApplication app = (MwmApplication) context.getApplicationContext(); + return app.getSubwayManager(); + } + + public void toggle() + { + setEnabled(!isEnabled()); + } +} diff --git a/android/src/com/mapswithme/maps/subway/SubwayTrafficToggleDialogFragment.java b/android/src/com/mapswithme/maps/subway/SubwayTrafficToggleDialogFragment.java new file mode 100644 index 0000000000..88d718a265 --- /dev/null +++ b/android/src/com/mapswithme/maps/subway/SubwayTrafficToggleDialogFragment.java @@ -0,0 +1,149 @@ +package com.mapswithme.maps.subway; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.design.widget.BottomSheetDialog; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageButton; +import android.widget.TextView; + +import com.mapswithme.maps.MwmActivity; +import com.mapswithme.maps.R; +import com.mapswithme.maps.adapter.SpanningLinearLayoutManager; +import com.mapswithme.maps.bookmarks.OnItemClickListener; + +import java.util.Arrays; +import java.util.List; + +public class SubwayTrafficToggleDialogFragment extends android.support.v4.app.DialogFragment implements OnItemClickListener +{ + @NonNull + @SuppressWarnings("NullableProblems") + private View mRoot; + + @NonNull + @SuppressWarnings("NullableProblems") + private ModeAdapter mAdapter; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) + { + BottomSheetDialog dialog = new BottomSheetDialog(getActivity()); + LayoutInflater inflater = getActivity().getLayoutInflater(); + mRoot = inflater.inflate(R.layout.fragment_subway_traffic_toggle, null, false); + dialog.setContentView(mRoot); + initChildren(); + return dialog; + } + + private void initChildren() + { + View closeBtn = mRoot.findViewById(R.id.сlose_btn); + closeBtn.setOnClickListener(v -> dismiss()); + + RecyclerView recycler = mRoot.findViewById(R.id.recycler); + RecyclerView.LayoutManager layoutManager = new SpanningLinearLayoutManager(getContext(), + LinearLayoutManager.HORIZONTAL, + false); + recycler.setLayoutManager(layoutManager); + mAdapter = new ModeAdapter(Arrays.asList(Mode.values()), this); + recycler.setAdapter(mAdapter); + } + + public static void show(AppCompatActivity activity) + { + SubwayTrafficToggleDialogFragment frag = new SubwayTrafficToggleDialogFragment(); + String tag = frag.getClass().getCanonicalName(); + FragmentManager fm = activity.getSupportFragmentManager(); + + Fragment oldInstance = fm.findFragmentByTag(tag); + if (oldInstance != null) + fm.beginTransaction().remove(oldInstance).commit(); + + frag.show(fm, tag); + fm.executePendingTransactions(); + } + + @Override + public void onItemClick(@NonNull View v, @NonNull Mode item) + { + item.getItem().onSelected((MwmActivity)getActivity()); + mAdapter.notifyDataSetChanged(); + } + + private static class ModeAdapter extends RecyclerView.Adapter + { + @NonNull + private final List mModes; + @NonNull + private final OnItemClickListener mListener; + + private ModeAdapter(@NonNull List modes, + @NonNull OnItemClickListener listener) + { + mModes = modes; + mListener = listener; + } + + @Override + public ModeHolder onCreateViewHolder(ViewGroup parent, int viewType) + { + LayoutInflater inflater = LayoutInflater.from(parent.getContext()); + View root = inflater.inflate(R.layout.bootsheet_dialog_item, parent, false); + return new ModeHolder(root, mListener); + } + + @Override + public void onBindViewHolder(ModeHolder holder, int position) + { + Context context = holder.itemView.getContext(); + Mode mode = mModes.get(position); + holder.mItem = mode; + holder.mButton.setSelected(mode.getItem().isSelected(context)); + holder.mButton.setImageResource(mode.getItem().getDrawableResId(context)); + holder.mTitle.setText(mode.getItem().getTitleResId()); + } + + @Override + public int getItemCount() + { + return mModes.size(); + } + } + + private static class ModeHolder extends RecyclerView.ViewHolder + { + @NonNull + private final ImageButton mButton; + @NonNull + private final OnItemClickListener mListener; + @NonNull + private final TextView mTitle; + @NonNull + private Mode mItem; + + public ModeHolder(@NonNull View root, @NonNull OnItemClickListener listener) + { + super(root); + mButton = root.findViewById(R.id.item_btn); + mTitle = root.findViewById(R.id.name); + mListener = listener; + mButton.setOnClickListener(this::onItemClicked); + } + + private void onItemClicked(View v) + { + mListener.onItemClick(v, mItem); + } + } +} diff --git a/android/src/com/mapswithme/maps/traffic/TrafficItem.java b/android/src/com/mapswithme/maps/traffic/TrafficItem.java new file mode 100644 index 0000000000..8be28f524c --- /dev/null +++ b/android/src/com/mapswithme/maps/traffic/TrafficItem.java @@ -0,0 +1,41 @@ +package com.mapswithme.maps.traffic; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.mapswithme.maps.MwmActivity; +import com.mapswithme.maps.R; +import com.mapswithme.maps.adapter.BottomSheetItem; +import com.mapswithme.maps.subway.SubwayManager; + +public class TrafficItem implements BottomSheetItem +{ + @Override + public boolean isSelected(@NonNull Context context) { + return !SubwayManager.from(context).isEnabled() + && TrafficManager.INSTANCE.isEnabled(); + } + + @Override + public void onSelected(@NonNull MwmActivity activity) + { + TrafficManager.INSTANCE.toggle(); + SubwayManager subway = SubwayManager.from(activity); + if (subway.isEnabled()) + subway.setEnabled(false); + + activity.onTrafficModeSelected(); + } + + @Override + public int getDrawableResId(@NonNull Context context) + { + return TrafficManager.INSTANCE.getIconRes(); + } + + @Override + public int getTitleResId() + { + return R.string.about; + } +} diff --git a/android/src/com/mapswithme/maps/traffic/TrafficManager.java b/android/src/com/mapswithme/maps/traffic/TrafficManager.java index 160cf29534..04bcf5cf2c 100644 --- a/android/src/com/mapswithme/maps/traffic/TrafficManager.java +++ b/android/src/com/mapswithme/maps/traffic/TrafficManager.java @@ -1,8 +1,11 @@ package com.mapswithme.maps.traffic; +import android.support.annotation.DrawableRes; import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import com.mapswithme.maps.R; +import com.mapswithme.util.ThemeUtils; import com.mapswithme.util.Utils; import com.mapswithme.util.log.Logger; import com.mapswithme.util.log.LoggerFactory; @@ -44,7 +47,7 @@ public enum TrafficManager disable(); } - private void enable() + public void enable() { mLogger.d(mTag, "Enable traffic"); TrafficState.nativeEnable(); @@ -61,8 +64,7 @@ public enum TrafficManager public boolean isEnabled() { checkInitialization(); - - return mState != TrafficState.DISABLED; + return TrafficState.nativeIsEnabled(); } public void attach(@NonNull TrafficCallback callback) @@ -74,7 +76,6 @@ public enum TrafficManager throw new IllegalStateException("A callback '" + callback + "' is already attached. Check that the 'detachAll' method was called."); } - mLogger.d(mTag, "Attach callback '" + callback + "'"); mCallbacks.add(callback); postPendingState(); @@ -107,6 +108,35 @@ public enum TrafficManager throw new AssertionError("Traffic manager is not initialized!"); } + @DrawableRes + public int getIconRes() + { + return isEnabled() ? getEnabledStateIcon() : getDisabledStateIcon(); + } + + private int getEnabledStateIcon() + { + return R.drawable.ic_traffic_on; + } + + private int getDisabledStateIcon() + { + return ThemeUtils.isNightTheme() + ? R.drawable.ic_traffic_menu_dark_off + : R.drawable.ic_traffic_menu_light_off; + } + + public void setEnabled(boolean enabled) + { + if (isEnabled() == enabled) + return; + + if (enabled) + enable(); + else + disable(); + } + private class TrafficStateListener implements TrafficState.StateChangeListener { @Override diff --git a/android/src/com/mapswithme/maps/traffic/TrafficState.java b/android/src/com/mapswithme/maps/traffic/TrafficState.java index 864d64a27a..8f77c0de05 100644 --- a/android/src/com/mapswithme/maps/traffic/TrafficState.java +++ b/android/src/com/mapswithme/maps/traffic/TrafficState.java @@ -7,7 +7,7 @@ import android.support.annotation.NonNull; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -final class TrafficState +public final class TrafficState { interface StateChangeListener { @@ -38,6 +38,7 @@ final class TrafficState static native void nativeRemoveListener(); static native void nativeEnable(); static native void nativeDisable(); + static native boolean nativeIsEnabled(); private TrafficState() {} diff --git a/android/src/com/mapswithme/maps/traffic/widget/OnTrafficModeSelectListener.java b/android/src/com/mapswithme/maps/traffic/widget/OnTrafficModeSelectListener.java new file mode 100644 index 0000000000..c90ea08298 --- /dev/null +++ b/android/src/com/mapswithme/maps/traffic/widget/OnTrafficModeSelectListener.java @@ -0,0 +1,6 @@ +package com.mapswithme.maps.traffic.widget; + +public interface OnTrafficModeSelectListener +{ + void onTrafficModeSelected(); +} diff --git a/android/src/com/mapswithme/maps/traffic/widget/TrafficButton.java b/android/src/com/mapswithme/maps/traffic/widget/TrafficButton.java deleted file mode 100644 index 2bb6f38cda..0000000000 --- a/android/src/com/mapswithme/maps/traffic/widget/TrafficButton.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.mapswithme.maps.traffic.widget; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.drawable.AnimationDrawable; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.view.View; -import android.widget.ImageButton; -import android.widget.RelativeLayout; - -import com.mapswithme.maps.R; -import com.mapswithme.util.Animations; -import com.mapswithme.util.ThemeUtils; -import com.mapswithme.util.UiUtils; - -public class TrafficButton -{ - @NonNull - private final AnimationDrawable mLoadingAnim; - @NonNull - private final ImageButton mButton; - - public TrafficButton(@NonNull Context context, @NonNull ImageButton button) - { - mButton = button; - Resources rs = context.getResources(); - @DrawableRes - final int loadingAnimRes = ThemeUtils.getResource(context, R.attr.trafficLoadingAnimation); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) - mLoadingAnim = (AnimationDrawable) rs.getDrawable(loadingAnimRes, context.getTheme()); - else - mLoadingAnim = (AnimationDrawable) rs.getDrawable(loadingAnimRes); - - RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) button.getLayoutParams(); - params.setMargins(0, UiUtils.getStatusBarHeight(context), 0, 0); - button.setVisibility(View.VISIBLE); - } - - void setClickListener(@NonNull View.OnClickListener clickListener) - { - mButton.setOnClickListener(clickListener); - } - - void turnOff() - { - stopWaitingAnimation(); - mButton.setImageResource(ThemeUtils.isNightTheme() ? R.drawable.ic_traffic_off_night - : R.drawable.ic_traffic_off); - } - - void turnOn() - { - stopWaitingAnimation(); - mButton.setImageResource(ThemeUtils.isNightTheme() ? R.drawable.ic_traffic_on_night - : R.drawable.ic_traffic_on); - } - - void markAsOutdated() - { - stopWaitingAnimation(); - mButton.setImageResource(ThemeUtils.isNightTheme() ? R.drawable.ic_traffic_outdated_night - : R.drawable.ic_traffic_outdated); - } - - void startWaitingAnimation() - { - mButton.setImageDrawable(mLoadingAnim); - AnimationDrawable animationDrawable = (AnimationDrawable) mButton.getDrawable(); - animationDrawable.start(); - } - - private void stopWaitingAnimation() - { - Drawable drawable = mButton.getDrawable(); - if (drawable instanceof AnimationDrawable) - { - AnimationDrawable animation = (AnimationDrawable) drawable; - animation.stop(); - mButton.setImageDrawable(null); - } - } - - public void setOffset(int offsetX, int offsetY) - { - RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mButton.getLayoutParams(); - params.setMargins(offsetX, offsetY, 0, 0); - mButton.requestLayout(); - } - - public void show() - { - Animations.appearSliding(mButton, Animations.LEFT, null); - } - - public void hide() - { - Animations.disappearSliding(mButton, Animations.LEFT, null); - } -} diff --git a/android/src/com/mapswithme/maps/traffic/widget/TrafficButtonController.java b/android/src/com/mapswithme/maps/traffic/widget/TrafficMapLayerBtnController.java similarity index 80% rename from android/src/com/mapswithme/maps/traffic/widget/TrafficButtonController.java rename to android/src/com/mapswithme/maps/traffic/widget/TrafficMapLayerBtnController.java index 2896361518..81c33a083d 100644 --- a/android/src/com/mapswithme/maps/traffic/widget/TrafficButtonController.java +++ b/android/src/com/mapswithme/maps/traffic/widget/TrafficMapLayerBtnController.java @@ -1,30 +1,29 @@ package com.mapswithme.maps.traffic.widget; -import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.view.View; +import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.mapswithme.maps.R; import com.mapswithme.maps.traffic.TrafficManager; -public class TrafficButtonController implements TrafficManager.TrafficCallback +public class TrafficMapLayerBtnController implements TrafficManager.TrafficCallback { @NonNull - private final TrafficButton mButton; + private final TrafficMapLayerButton mButton; @NonNull - private final Activity mActivity; + private final AppCompatActivity mActivity; @Nullable private Dialog mDialog; - public TrafficButtonController(@NonNull TrafficButton button, @NonNull Activity activity) + public TrafficMapLayerBtnController(@NonNull TrafficMapLayerButton button, + @NonNull AppCompatActivity activity) { mButton = button; - mButton.setClickListener(new OnTrafficClickListener()); mActivity = activity; } @@ -109,13 +108,4 @@ public class TrafficButtonController implements TrafficManager.TrafficCallback if (notify) Toast.makeText(mActivity, R.string.traffic_update_app, Toast.LENGTH_SHORT).show(); } - - private class OnTrafficClickListener implements View.OnClickListener - { - @Override - public void onClick(View v) - { - TrafficManager.INSTANCE.toggle(); - } - } } diff --git a/android/src/com/mapswithme/maps/traffic/widget/TrafficMapLayerButton.java b/android/src/com/mapswithme/maps/traffic/widget/TrafficMapLayerButton.java new file mode 100644 index 0000000000..b8bd46a55e --- /dev/null +++ b/android/src/com/mapswithme/maps/traffic/widget/TrafficMapLayerButton.java @@ -0,0 +1,113 @@ +package com.mapswithme.maps.traffic.widget; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.drawable.AnimationDrawable; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.support.annotation.DrawableRes; +import android.support.annotation.NonNull; +import android.view.View; +import android.widget.ImageButton; +import android.widget.RelativeLayout; + +import com.mapswithme.maps.R; +import com.mapswithme.util.Animations; +import com.mapswithme.util.ThemeUtils; +import com.mapswithme.util.UiUtils; +import com.mapswithme.util.Utils; + +public class TrafficMapLayerButton +{ + @NonNull + private final AnimationDrawable mLoadingAnim; + @NonNull + private final ImageButton mTraffic; + + public TrafficMapLayerButton(@NonNull ImageButton trafficBtn) + { + mTraffic = trafficBtn; + mLoadingAnim = getLoadingAnim(trafficBtn); + + RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) trafficBtn.getLayoutParams(); + params.setMargins(0, UiUtils.getStatusBarHeight(trafficBtn.getContext()), 0, 0); + trafficBtn.setVisibility(View.GONE); + } + + @NonNull + private static AnimationDrawable getLoadingAnim(@NonNull ImageButton trafficBtn) + { + Context context = trafficBtn.getContext(); + Resources res = context.getResources(); + final int animResId = ThemeUtils.getResource(context, R.attr.trafficLoadingAnimation); + return Utils.isLollipopOrLater() + ? (AnimationDrawable) res.getDrawable(animResId, context.getTheme()) + : (AnimationDrawable) res.getDrawable(animResId); + } + + void turnOff() + { + stopWaitingAnimation(); + mTraffic.setImageResource(ThemeUtils.isNightTheme() ? R.drawable.ic_traffic_off_night + : R.drawable.ic_traffic_off); + } + + void turnOn() + { + stopWaitingAnimation(); + mTraffic.setImageResource(ThemeUtils.isNightTheme() ? R.drawable.ic_traffic_on_night + : R.drawable.ic_traffic_on); + } + + void markAsOutdated() + { + stopWaitingAnimation(); + mTraffic.setImageResource(ThemeUtils.isNightTheme() ? R.drawable.ic_traffic_outdated_night + : R.drawable.ic_traffic_outdated); + } + + void startWaitingAnimation() + { + mTraffic.setImageDrawable(mLoadingAnim); + AnimationDrawable anim = (AnimationDrawable) mTraffic.getDrawable(); + anim.start(); + } + + private void stopWaitingAnimation() + { + Drawable drawable = mTraffic.getDrawable(); + if (drawable instanceof AnimationDrawable) + { + AnimationDrawable animation = (AnimationDrawable) drawable; + animation.stop(); + mTraffic.setImageDrawable(null); + } + } + + public void setOffset(int offsetX, int offsetY) + { + RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mTraffic.getLayoutParams(); + params.setMargins(offsetX, offsetY, 0, 0); + mTraffic.requestLayout(); + } + + public void show() + { + Animations.appearSliding(mTraffic, Animations.LEFT, null); + } + + public void hide() + { + Animations.disappearSliding(mTraffic, Animations.LEFT, null); + } + + public void hideImmediately() + { + mTraffic.setVisibility(View.GONE); + } + + public void showImmediately() + { + mTraffic.setVisibility(View.VISIBLE); + } +} diff --git a/android/src/com/mapswithme/util/UiUtils.java b/android/src/com/mapswithme/util/UiUtils.java index 46d20ee3a6..e53bdb60c5 100644 --- a/android/src/com/mapswithme/util/UiUtils.java +++ b/android/src/com/mapswithme/util/UiUtils.java @@ -48,6 +48,12 @@ public final class UiUtils public static final String PHRASE_SEPARATOR = " • "; private static float sScreenDensity; + public static void addStatusBarOffset(View view) + { + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams(); + params.setMargins(0, UiUtils.getStatusBarHeight(view.getContext()), 0, 0); + } + public static class SimpleAnimationListener implements AnimationListener { @Override diff --git a/android/src/com/mapswithme/util/Utils.java b/android/src/com/mapswithme/util/Utils.java index cf8b6da3c1..9be9e34812 100644 --- a/android/src/com/mapswithme/util/Utils.java +++ b/android/src/com/mapswithme/util/Utils.java @@ -58,13 +58,12 @@ public class Utils private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC); private static final String TAG = "Utils"; - public interface Proc - { - void invoke(@NonNull T param); - } - private Utils() {} + public static boolean isLollipopOrLater() + { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP; + } public static boolean isAmazonDevice() { return "Amazon".equalsIgnoreCase(Build.MANUFACTURER); @@ -676,6 +675,12 @@ public class Utils public enum PartnerAppOpenMode { - None, Direct, Indirect + None, Direct, Indirect; + } + + public interface Proc + { + void invoke(@NonNull T param); + } } diff --git a/map/traffic_manager.hpp b/map/traffic_manager.hpp index 449835c8d6..81ae95775b 100644 --- a/map/traffic_manager.hpp +++ b/map/traffic_manager.hpp @@ -67,6 +67,7 @@ public: void SetCurrentDataVersion(int64_t dataVersion); void SetEnabled(bool enabled); + bool IsEnabled() const; void UpdateViewport(ScreenBase const & screen); void UpdateMyPosition(MyPosition const & myPosition); @@ -127,7 +128,6 @@ private: void ChangeState(TrafficState newState); bool IsInvalidState() const; - bool IsEnabled() const; void UniteActiveMwms(set & activeMwms) const;