From 8cd8d161a30e4204e8ff1bfece2a32029f131855 Mon Sep 17 00:00:00 2001 From: Arnaud Vergnet <80701113+arnaudvergnet@users.noreply.github.com> Date: Thu, 3 Mar 2022 08:13:51 +0100 Subject: [PATCH] [android] Improve show on map behavior (#2081) * [android] Add show on map fab Replaces the "View on map" button. Signed-off-by: Arnaud Vergnet * [android] Rename fab id to show_on_map_fab Signed-off-by: Arnaud Vergnet * [android] Use recycler view padding instead of auto hide fab Signed-off-by: Arnaud Vergnet * [android] Use xml icon instead of webp Signed-off-by: Arnaud Vergnet * [android] Add show in list fab Signed-off-by: Arnaud Vergnet * [android] Use variable instead of repeating function calls Signed-off-by: Arnaud Vergnet * [android] Show fab when no search results Signed-off-by: Arnaud Vergnet * [android] Put floating search toolbar at the bottom Signed-off-by: Arnaud Vergnet * [android] Put floating bookmark toolbar at the bottom Signed-off-by: Arnaud Vergnet * [android] Remove bookmark floating toolbar on map view Signed-off-by: Arnaud Vergnet * [android] Fix floating toolbar query touch detection Signed-off-by: Arnaud Vergnet * [android] Remove unused show in list icon Signed-off-by: Arnaud Vergnet * [android] Fix styling Signed-off-by: Arnaud Vergnet --- .../res/drawable-hdpi/ic_fab_view_on_map.webp | Bin 248 -> 0 bytes .../ic_fab_view_on_map_night.webp | Bin 212 -> 0 bytes .../res/drawable-mdpi/ic_fab_view_on_map.webp | Bin 164 -> 0 bytes .../ic_fab_view_on_map_night.webp | Bin 144 -> 0 bytes .../drawable-xhdpi/ic_fab_view_on_map.webp | Bin 290 -> 0 bytes .../ic_fab_view_on_map_night.webp | Bin 252 -> 0 bytes .../drawable-xxhdpi/ic_fab_view_on_map.webp | Bin 404 -> 0 bytes .../ic_fab_view_on_map_night.webp | Bin 346 -> 0 bytes .../drawable-xxxhdpi/ic_fab_view_on_map.webp | Bin 516 -> 0 bytes .../ic_fab_view_on_map_night.webp | Bin 444 -> 0 bytes android/res/drawable/ic_show_on_map_fab.xml | 5 + .../res/drawable/ic_show_on_map_fab_night.xml | 10 ++ android/res/layout/activity_map.xml | 15 +- android/res/layout/fragment_bookmark_list.xml | 75 +++++----- android/res/layout/fragment_search.xml | 13 +- android/res/layout/recycler_with_fab.xml | 10 ++ android/res/layout/search_filter_panel.xml | 37 ----- android/res/layout/show_on_map_fab.xml | 12 ++ android/res/menu/menu_bookmark_catalog.xml | 9 -- android/res/values/themes-attrs.xml | 2 +- android/res/values/themes-base.xml | 4 +- .../src/com/mapswithme/maps/MwmActivity.java | 132 ++---------------- .../maps/bookmarks/BookmarksListFragment.java | 4 +- .../FloatingSearchToolbarController.java | 7 +- .../maps/search/SearchFilterController.java | 74 ---------- .../maps/search/SearchFragment.java | 64 +++------ .../maps/widget/SearchToolbarController.java | 15 +- 27 files changed, 131 insertions(+), 357 deletions(-) delete mode 100644 android/res/drawable-hdpi/ic_fab_view_on_map.webp delete mode 100644 android/res/drawable-hdpi/ic_fab_view_on_map_night.webp delete mode 100644 android/res/drawable-mdpi/ic_fab_view_on_map.webp delete mode 100644 android/res/drawable-mdpi/ic_fab_view_on_map_night.webp delete mode 100644 android/res/drawable-xhdpi/ic_fab_view_on_map.webp delete mode 100644 android/res/drawable-xhdpi/ic_fab_view_on_map_night.webp delete mode 100644 android/res/drawable-xxhdpi/ic_fab_view_on_map.webp delete mode 100644 android/res/drawable-xxhdpi/ic_fab_view_on_map_night.webp delete mode 100644 android/res/drawable-xxxhdpi/ic_fab_view_on_map.webp delete mode 100644 android/res/drawable-xxxhdpi/ic_fab_view_on_map_night.webp create mode 100644 android/res/drawable/ic_show_on_map_fab.xml create mode 100644 android/res/drawable/ic_show_on_map_fab_night.xml create mode 100644 android/res/layout/recycler_with_fab.xml delete mode 100644 android/res/layout/search_filter_panel.xml create mode 100644 android/res/layout/show_on_map_fab.xml delete mode 100644 android/res/menu/menu_bookmark_catalog.xml delete mode 100644 android/src/com/mapswithme/maps/search/SearchFilterController.java diff --git a/android/res/drawable-hdpi/ic_fab_view_on_map.webp b/android/res/drawable-hdpi/ic_fab_view_on_map.webp deleted file mode 100644 index e28be46090cec49e12cf8584ef523501e2c69f7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmV0N_fp zZPVG$N}jFQ)}H^|VkdtQ{ht7Qw3?${BiqsyjeJRRk{IWNpuMAeiIvTHc0Y&|0A{r& zN$;FK<>~Q?$GdLaJMiQM9?zDr>kTiz4Iucf?fn3V;phQ?^4~TJ#Rnj_Enm1F$xUtF y&gV6M8iGLE;0)jy4-aF0cVYLLULI&ak*s6xKedAe6#@6(sDik diff --git a/android/res/drawable-hdpi/ic_fab_view_on_map_night.webp b/android/res/drawable-hdpi/ic_fab_view_on_map_night.webp deleted file mode 100644 index ffce902faa062c4575b622c5d09997a4dd046617..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmV;_04x7eNk&G@00012MM6+kP&iD$0000lBftm{cL5ND|85Zx3fs1AW0kX$rbk2^ zATR=y066z0I0#Z3CIEq$fRq4SNs^>0{oLJMap?Qs4|n*B=>G)Zqg5T{8p#o_u(B1& zDb~*kLA|GYiJ2~V_RvQ%0HfHDq<2o6czRs(c;Cb=Pha5iY!0W~^77jNf?w_K2S5ym z2LSSa+YpKmK<+AExF5-F>D;A@n>~-$@qcRq04<82so=J6UkL( O<8slFaHZm?_-Fy|Okp+v diff --git a/android/res/drawable-mdpi/ic_fab_view_on_map.webp b/android/res/drawable-mdpi/ic_fab_view_on_map.webp deleted file mode 100644 index bc9d88cafb64d915ddc7b3df447f274dfa55a0ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmV;V09*f3Nk>00012MM6+kP&iDF0000l7r+G&_b~tSKmUp&NlJs98y*5*0__08 zg+M?M2qqLC0|)>jFtPB^0RRLL0EWVmAh41o$yBeN_u1(C-*cb!9nt>@z{~ns+azX1 zMCG{V*_x|WthDV&uFZ6Vd?1&F?iyDC5f&3q0U%GqpOdFeMJP^L7P8NSm3c>JwTdgQ S)~UBPmXUyKlBUgkyet59Tt*}S diff --git a/android/res/drawable-mdpi/ic_fab_view_on_map_night.webp b/android/res/drawable-mdpi/ic_fab_view_on_map_night.webp deleted file mode 100644 index a877be4c768939671bf3e232c66d74ff6ccae018..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmV;B0B`?NNk&G900012MM6+kP&iC{0000l7r+G&?+_7++eT7jH?Z_RiUp1Ysr(B- zRPRIploMdwMv|glK4!k_`~%%%dPnqs0`RgfZ`;JIh^QLZY}#lpcu$y yp})peK!oMQQvk@*@aN=dQyGd=mWAw#U}fIXrCP-`SDVbPja4Mzo1|@XhnEG$PeSJa diff --git a/android/res/drawable-xhdpi/ic_fab_view_on_map.webp b/android/res/drawable-xhdpi/ic_fab_view_on_map.webp deleted file mode 100644 index e96aa7093e67345394f48a31d38cb3b1c685105c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmV+-0p0#mNk&E*0RRA3MM6+kP&iBu0RR9mFTe{BA3~6AQ-A4arX;x+m`dZ9srpFa!dFfIsUcJRS)E(63|AeE@)KQBX7dxN~$^${ht7QTNADQwjMPQX&lBT;*B+x^KwY!$&4J5 zTCv)SQfE>Ks1ltEm9lVULH%bx=k=GSd@nmwnrxpGByV?0WfTLhRQIaT`~(1Zy7#aP zfGDZR~}yk!*>AiE0ddB0D}7L;TC|{IsB)@&OK)Jz%7!uNyT@I+W`gB0jB@ Ce|Vq( diff --git a/android/res/drawable-xxhdpi/ic_fab_view_on_map.webp b/android/res/drawable-xxhdpi/ic_fab_view_on_map.webp deleted file mode 100644 index e39ed1b5a64f87cd535eb7416c1bc5e104f6a269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmV;F0c-wJNk&GD0RRA3MM6+kP&iD00RR9mN5Byf55u5s8$sqz`jqvb!~D;`!nSQt zyuw&v+qMmo?!~@=cmueAHeY~92n4_aK;nXc_zakCf^R+(8Xhmm=0R*05ETTPsz3oB z(_eKF8bkxtdBFV#uqE3z?W}9twyoHPi%ted`2gB{{?0k{e{ANgVzHGse9q)+or3#y zHD%IrH|`+JVXq%AAoY1ELB{mP6goNfp+7o)6aw(@1pORfBr+tIUxZk{3K5wz>+fnH zB3og5ssq1RtEhy7gh!?T3$r}^S!D|4FIOw1)CZGysu}>Y5?%E zoHTr!rw1Vb5927qzP#y1+Gt2DJqs}|P8xPu_f0oxno?`8Y-epB@d~`J#7Wqi-}+#< y=mv=Wlf#OG^gBztGoh<~kYr8)JWnFT?WrAU-3&t{dHlYUvyfDO|MqSap&!re$-74Y diff --git a/android/res/drawable-xxhdpi/ic_fab_view_on_map_night.webp b/android/res/drawable-xxhdpi/ic_fab_view_on_map_night.webp deleted file mode 100644 index 3faf6a5320b21cbd2f44d1cd056706f8010dfb74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmV-g0j2&@Nk&Fe0RRA3MM6+kP&iCQ0RR9mN5ByfM*!7>TbKI2M8jd z0)jg5!B7KC$cdpUhKQ=N12Y5xkQ_-;B;_zOGcz+&)5QPZ)Ki_cTc-snqW=>>Kb{kV z+pQaw<0-6-p{#iC3fo;h#FiLo04yo7&KaWbP1(=jtL$LU7j2*5+*}sDVyUT)&rFfl z0o?j5>$VFvZxH72HTICJjnm}LEi5?X*ur^o_!I*0c)>Xb7>Qh&i6+GQRfx!wpBri* zB5!GBsey)TIAfW^jH((JT!f>?#&?Cy0bH#?bwPCuYfU4ld!kAG#O5vD6xOo sRej{#U*5chF5MW(v;b(M1aXJzd%J5tPLhYly67RP(eCXwNYIaG0LR{*2mk;8 diff --git a/android/res/drawable-xxxhdpi/ic_fab_view_on_map.webp b/android/res/drawable-xxxhdpi/ic_fab_view_on_map.webp deleted file mode 100644 index 346de4304ff7947148729b16fa91822b3c2ab7fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmV+f0{i_^Nk&He0RRA3MM6+kP&iEQ0RR9mU%(d-|6?F+oA@_nt@mupJxJ*C&(#uyFZbvq<^uO_+snErmR)I=D{oqnTt9f_TX4E%Gk zB2+A@^@4sXNNC@u^y_SKkbt{n;fsEoif`F6@S*N-SAgWraF*DVu9xv_AgSkEK-}4?cPVn# zt3%*DYxqWkv(p?4lL6fgCc^)Mi6=A8UTZuI`}eh2>PFx}#dEJ>2OSA8@6TmhG^9f- zmp%oKx{{#M$NNkk%tq9%e*1OOlLD>x9y|5nP#Dv=>+P&B6^hFr9!4^tHnHdYqCXwK Gp8^2H%=t?I diff --git a/android/res/drawable-xxxhdpi/ic_fab_view_on_map_night.webp b/android/res/drawable-xxxhdpi/ic_fab_view_on_map_night.webp deleted file mode 100644 index 32bc25040482eaca26418a924cece0ad3d2d2849..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 444 zcmV;t0Ym;$Nk&Gr0RRA3MM6+kP&iDe0RR9mU%(d-_d<|uQ-ALL3=s(0wr%Ln`t*nd z4nP0~_yFb%Fs_gQfn>-)h!p~m1Rwxgl4R3XAKT~Jwr%?!TmAq4aWrdUJzhlge**CH zX<|2%*^25(9F62=U9C1 zP;F)_3ZzeJ6qP%tbo#I;K=SpS(sE5Pz%hPS6)-4A0{~pp*A2S?@XXz{?FPWV^whB% zfYADf@PDESr|nod9_)P2J?*j^$?Dm-!$4Er`>O!S!eLtMTvzQh4Mevx0`kv`4o#19ZuCwc7F4{fhG252 z(tZ?!kDpczy{&~|c(C^EloP`{C$H*a@9PnmA0)dLgtTY&wk7bf8HLI|jmt5Z_02zY m2Kw5HL2Ie&Wzh?T!R6Op-#c+Ao++1)l29An%4BvE`1ur9N80=V diff --git a/android/res/drawable/ic_show_on_map_fab.xml b/android/res/drawable/ic_show_on_map_fab.xml new file mode 100644 index 0000000000..ffd9dd90c5 --- /dev/null +++ b/android/res/drawable/ic_show_on_map_fab.xml @@ -0,0 +1,5 @@ + + + diff --git a/android/res/drawable/ic_show_on_map_fab_night.xml b/android/res/drawable/ic_show_on_map_fab_night.xml new file mode 100644 index 0000000000..d1274d89bd --- /dev/null +++ b/android/res/drawable/ic_show_on_map_fab_night.xml @@ -0,0 +1,10 @@ + + + diff --git a/android/res/layout/activity_map.xml b/android/res/layout/activity_map.xml index d4905cc45b..58e34a4b54 100644 --- a/android/res/layout/activity_map.xml +++ b/android/res/layout/activity_map.xml @@ -34,6 +34,7 @@ layout="@layout/toolbar_with_search" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_alignParentBottom="true" android:visibility="gone" tools:visibility="visible" /> @@ -67,11 +68,6 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true"/> - - diff --git a/android/res/layout/fragment_bookmark_list.xml b/android/res/layout/fragment_bookmark_list.xml index ffabb861cf..e94f00a8f0 100644 --- a/android/res/layout/fragment_bookmark_list.xml +++ b/android/res/layout/fragment_bookmark_list.xml @@ -3,50 +3,47 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:mapsme="http://schemas.android.com/apk/app" xmlns:tools="http://schemas.android.com/tools" + xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> - - + + + + - - - - + android:layout_gravity="bottom|end" + android:layout_margin="@dimen/margin_base"/> + + + + diff --git a/android/res/layout/fragment_search.xml b/android/res/layout/fragment_search.xml index 8f8029c26f..376764bdd1 100644 --- a/android/res/layout/fragment_search.xml +++ b/android/res/layout/fragment_search.xml @@ -24,7 +24,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll|enterAlways"/> - - + + + + + \ No newline at end of file diff --git a/android/res/layout/search_filter_panel.xml b/android/res/layout/search_filter_panel.xml deleted file mode 100644 index be13bb6198..0000000000 --- a/android/res/layout/search_filter_panel.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - diff --git a/android/res/layout/show_on_map_fab.xml b/android/res/layout/show_on_map_fab.xml new file mode 100644 index 0000000000..0fa03dbe86 --- /dev/null +++ b/android/res/layout/show_on_map_fab.xml @@ -0,0 +1,12 @@ + + diff --git a/android/res/menu/menu_bookmark_catalog.xml b/android/res/menu/menu_bookmark_catalog.xml deleted file mode 100644 index 7f50ae60af..0000000000 --- a/android/res/menu/menu_bookmark_catalog.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/android/res/values/themes-attrs.xml b/android/res/values/themes-attrs.xml index abe467d2a1..a0ce332a0e 100644 --- a/android/res/values/themes-attrs.xml +++ b/android/res/values/themes-attrs.xml @@ -51,7 +51,7 @@ - + diff --git a/android/res/values/themes-base.xml b/android/res/values/themes-base.xml index 0d7d79573a..a934cfc62e 100644 --- a/android/res/values/themes-base.xml +++ b/android/res/values/themes-base.xml @@ -82,7 +82,7 @@ @style/MwmTheme.Navigation @drawable/ic_fab_add - @drawable/ic_fab_view_on_map + @drawable/ic_show_on_map_fab @color/routing_button_tint ?statusBar @@ -261,7 +261,7 @@ @style/MwmTheme.Navigation.Night @drawable/ic_fab_add_night - @drawable/ic_fab_view_on_map_night + @drawable/ic_show_on_map_fab_night @color/routing_button_tint ?statusBar diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index 45b01199a1..4a3ca222bc 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -11,7 +11,6 @@ import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.view.KeyEvent; -import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; @@ -38,7 +37,6 @@ import com.mapswithme.maps.base.CustomNavigateUpListener; import com.mapswithme.maps.base.NoConnectionListener; import com.mapswithme.maps.base.OnBackPressListener; import com.mapswithme.maps.bookmarks.BookmarkCategoriesActivity; -import com.mapswithme.maps.bookmarks.data.BookmarkCategory; import com.mapswithme.maps.bookmarks.data.BookmarkInfo; import com.mapswithme.maps.bookmarks.data.BookmarkManager; import com.mapswithme.maps.bookmarks.data.MapObject; @@ -79,7 +77,6 @@ import com.mapswithme.maps.routing.RoutingPlanInplaceController; import com.mapswithme.maps.search.FloatingSearchToolbarController; import com.mapswithme.maps.search.SearchActivity; import com.mapswithme.maps.search.SearchEngine; -import com.mapswithme.maps.search.SearchFilterController; import com.mapswithme.maps.search.SearchFragment; import com.mapswithme.maps.settings.DrivingOptionsActivity; import com.mapswithme.maps.settings.RoadType; @@ -197,8 +194,6 @@ public class MwmActivity extends BaseMwmFragmentActivity @SuppressWarnings("NullableProblems") @NonNull private MapLayerCompositeController mToggleMapLayerController; - @Nullable - private SearchFilterController mFilterController; private boolean mIsTabletLayout; private boolean mIsFullscreen; @@ -224,9 +219,7 @@ public class MwmActivity extends BaseMwmFragmentActivity @SuppressWarnings("NullableProblems") @NonNull private MenuController mMainMenuController; - @SuppressWarnings("NotNullFieldNotInitialized") - @NonNull - private Toolbar mBookmarkCategoryToolbar; + public interface LeftAnimationTrackListener { @@ -326,14 +319,6 @@ public class MwmActivity extends BaseMwmFragmentActivity BookmarkCategoriesActivity.start(this); } - private void showTabletSearch(@Nullable Intent data, @NonNull String query) - { - if (mFilterController == null || data == null) - return; - - showSearch(query); - } - public void showSearch(String query) { if (mIsTabletLayout) @@ -440,11 +425,6 @@ public class MwmActivity extends BaseMwmFragmentActivity .addOnGlobalLayoutListener(new ToolbarLayoutChangeListener()); mSearchController.setVisibilityListener(this); - mBookmarkCategoryToolbar = findViewById(R.id.bookmark_category_toolbar); - mBookmarkCategoryToolbar.inflateMenu(R.menu.menu_bookmark_catalog); - mBookmarkCategoryToolbar.setOnMenuItemClickListener(this::onBookmarkToolbarMenuClicked); - UiUtils.extendViewWithStatusBar(mBookmarkCategoryToolbar); - boolean isLaunchByDeepLink = getIntent().getBooleanExtra(EXTRA_LAUNCH_BY_DEEP_LINK, false); initViews(isLaunchByDeepLink); @@ -463,16 +443,6 @@ public class MwmActivity extends BaseMwmFragmentActivity } } - private boolean onBookmarkToolbarMenuClicked(@NonNull MenuItem item) - { - if (item.getItemId() == R.id.close) - { - closeBookmarkCategoryToolbar(); - return true; - } - return false; - } - @Override public void onNoConnectionError() { @@ -500,24 +470,6 @@ public class MwmActivity extends BaseMwmFragmentActivity initMainMenu(); initOnmapDownloader(); initPositionChooser(); - initFilterViews(); - } - - private void initFilterViews() - { - View frame = findViewById(R.id.filter_frame); - if (frame != null) - { - mFilterController = new SearchFilterController(frame, new SearchFilterController - .DefaultFilterListener() - { - @Override - public void onShowOnMapClick() - { - showSearch(mSearchController.getQuery()); - } - }, R.string.search_in_table); - } } private void initPositionChooser() @@ -552,7 +504,7 @@ public class MwmActivity extends BaseMwmFragmentActivity // Do not show the search tool bar if we are planning or navigating if (!RoutingController.get().isNavigating() && !RoutingController.get().isPlanning()) { - mSearchController.show(); + showSearchToolbar(); } } else @@ -561,6 +513,11 @@ public class MwmActivity extends BaseMwmFragmentActivity } } + private void showSearchToolbar() + { + mSearchController.show(); + } + public void showPositionChooser(boolean isBusiness, boolean applyPosition) { closeFloatingToolbarsAndPanels(false); @@ -749,19 +706,6 @@ public class MwmActivity extends BaseMwmFragmentActivity return false; } - /** - * @return False if the bookmark category toolbar was already closed, true otherwise - */ - private boolean closeBookmarkCategoryToolbar() - { - if (UiUtils.isVisible(mBookmarkCategoryToolbar)) - { - hideBookmarkCategoryToolbar(); - return true; - } - return false; - } - private void closeFloatingToolbarsAndPanels(boolean clearSearchText) { closeFloatingPanels(); @@ -776,7 +720,6 @@ public class MwmActivity extends BaseMwmFragmentActivity private void closeFloatingToolbars(boolean clearSearchText, boolean stopSearch) { - closeBookmarkCategoryToolbar(); closePositionChooser(); closeSearchToolbar(clearSearchText, stopSearch); } @@ -1137,7 +1080,7 @@ public class MwmActivity extends BaseMwmFragmentActivity RoutingController routingController = RoutingController.get(); if (!closeMenu() && !closePlacePage() && !closeSearchToolbar(true, true) && - !closeBookmarkCategoryToolbar() && !closeSidePanel() && !closePositionChooser() && + !closeSidePanel() && !closePositionChooser() && !routingController.resetToPlanningStateIfNavigating() && !routingController.cancel()) { try @@ -1268,9 +1211,6 @@ public class MwmActivity extends BaseMwmFragmentActivity || RoutingController.get().isPlanning()) return; - if (UiUtils.isVisible(mBookmarkCategoryToolbar)) - return; - mIsFullscreen = isFullscreen; final BaseMenu menu = getCurrentMenu(); @@ -1466,12 +1406,6 @@ public class MwmActivity extends BaseMwmFragmentActivity return false; } - if (UiUtils.isVisible(mBookmarkCategoryToolbar)) - { - showLineFrame(false); - return false; - } - hideRoutingActionFrame(); showLineFrame(true); return true; @@ -1658,17 +1592,9 @@ public class MwmActivity extends BaseMwmFragmentActivity if (mNavAnimationController == null) return; - adjustCompassAndTraffic(visible ? calcFloatingViewsOffset() - : UiUtils.getStatusBarHeight(getApplicationContext())); - int toolbarHeight = mSearchController.getToolbar().getHeight(); - setNavButtonsTopLimit(visible ? toolbarHeight : 0); - if (mFilterController != null) - { - boolean show = visible && !TextUtils.isEmpty(SearchEngine.INSTANCE.getQuery()) - && !RoutingController.get().isNavigating(); - mFilterController.show(show); - mMainMenu.show(!show); - } + boolean show = visible && !TextUtils.isEmpty(SearchEngine.INSTANCE.getQuery()) + && !RoutingController.get().isNavigating(); + mMainMenu.show(!show); } private int calcFloatingViewsOffset() @@ -1690,11 +1616,6 @@ public class MwmActivity extends BaseMwmFragmentActivity refreshFade(); if (mOnmapDownloader != null) mOnmapDownloader.updateState(false); - if (show) - { - if (mFilterController != null) - mFilterController.show(false); - } } @Override @@ -2021,6 +1942,7 @@ public class MwmActivity extends BaseMwmFragmentActivity @Override public void onSearchQueryClick(@Nullable String query) { + closeFloatingToolbarsAndPanels(true); showSearch(query); } @@ -2069,7 +1991,6 @@ public class MwmActivity extends BaseMwmFragmentActivity { Track track = BookmarkManager.INSTANCE.getTrack(trackId); Objects.requireNonNull(track); - setupBookmarkCategoryToolbar(track.getCategoryId()); Framework.nativeShowTrackRect(trackId); } @@ -2077,43 +1998,14 @@ public class MwmActivity extends BaseMwmFragmentActivity { BookmarkInfo info = BookmarkManager.INSTANCE.getBookmarkInfo(bookmarkId); Objects.requireNonNull(info); - setupBookmarkCategoryToolbar(info.getCategoryId()); BookmarkManager.INSTANCE.showBookmarkOnMap(bookmarkId); } public void showBookmarkCategoryOnMap(long categoryId) { - setupBookmarkCategoryToolbar(categoryId); BookmarkManager.INSTANCE.showBookmarkCategoryOnMap(categoryId); } - private void setupBookmarkCategoryToolbar(long categoryId) - { - final BookmarkCategory category = BookmarkManager.INSTANCE.getCategoryById(categoryId); - mBookmarkCategoryToolbar.setTitle(category.getName()); - UiUtils.setupNavigationIcon(mBookmarkCategoryToolbar, v -> { - BookmarkCategoriesActivity.start(MwmActivity.this, category); - closePlacePage(); - closeBookmarkCategoryToolbar(); - }); - - showBookmarkCategoryToolbar(); - } - - private void showBookmarkCategoryToolbar() - { - UiUtils.show(mBookmarkCategoryToolbar); - adjustCompassAndTraffic(mBookmarkCategoryToolbar.getHeight()); - adjustMenuLineFrameVisibility(); - } - - private void hideBookmarkCategoryToolbar() - { - UiUtils.hide(mBookmarkCategoryToolbar); - adjustCompassAndTraffic(UiUtils.getStatusBarHeight(MwmActivity.this)); - adjustMenuLineFrameVisibility(); - } - private class CurrentPositionClickListener implements OnClickListener { @Override diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java b/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java index ec649ab565..d5380d2113 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java +++ b/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java @@ -249,7 +249,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment { final Intent i = makeMwmActivityIntent(); @@ -802,7 +802,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment - { - if (mFilterListener != null) - mFilterListener.onShowOnMapClick(); - }); - } - - public static class DefaultFilterListener implements FilterListener - { - @Override - public void onShowOnMapClick() - { - } - } -} diff --git a/android/src/com/mapswithme/maps/search/SearchFragment.java b/android/src/com/mapswithme/maps/search/SearchFragment.java index aa26bfae53..9529aed4dc 100644 --- a/android/src/com/mapswithme/maps/search/SearchFragment.java +++ b/android/src/com/mapswithme/maps/search/SearchFragment.java @@ -14,6 +14,7 @@ import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; +import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.LinearLayoutManager; @@ -21,6 +22,8 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; import com.google.android.material.appbar.AppBarLayout; +import com.google.android.material.behavior.HideBottomViewOnScrollBehavior; +import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.tabs.TabLayout; import com.mapswithme.maps.Framework; import com.mapswithme.maps.MwmActivity; @@ -72,7 +75,7 @@ public class SearchFragment extends BaseMwmFragment { public ToolbarController(View root) { - super(root, SearchFragment.this.getActivity()); + super(root, SearchFragment.this.requireActivity()); } @Override @@ -144,13 +147,9 @@ public class SearchFragment extends BaseMwmFragment } } - private View mTabFrame; private View mResultsFrame; private PlaceholderView mResultsPlaceholder; - private RecyclerView mResults; - private AppBarLayout mAppBarLayout; - @Nullable - private SearchFilterController mFilterController; + private FloatingActionButton mShowOnMapFab; private SearchToolbarController mToolbarController; @@ -162,7 +161,7 @@ public class SearchFragment extends BaseMwmFragment private final RecyclerView.OnScrollListener mRecyclerListener = new RecyclerView.OnScrollListener() { @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) + public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { if (newState == RecyclerView.SCROLL_STATE_DRAGGING) mToolbarController.deactivate(); @@ -188,19 +187,6 @@ public class SearchFragment extends BaseMwmFragment } }; - private final AppBarLayout.OnOffsetChangedListener mOffsetListener = - new AppBarLayout.OnOffsetChangedListener() { - @Override - public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) - { - if (mFilterController == null) - return; - - boolean show = !(Math.abs(verticalOffset) == appBarLayout.getTotalScrollRange()); - mFilterController.showDivider(show); - } - }; - private static boolean doShowDownloadSuggest() { return (MapManager.nativeGetDownloadedCount() == 0 && !MapManager.nativeIsDownloading()); @@ -214,7 +200,7 @@ public class SearchFragment extends BaseMwmFragment if (fragment == null || fragment.isDetached() || fragment.isRemoving()) { - fragment = Fragment.instantiate(getActivity(), fragmentName, null); + fragment = Fragment.instantiate(requireActivity(), fragmentName, null); fm.beginTransaction() .add(R.id.download_suggest_frame, fragment, fragmentName) .commit(); @@ -237,15 +223,14 @@ public class SearchFragment extends BaseMwmFragment private void updateFrames() { final boolean hasQuery = mToolbarController.hasQuery(); - UiUtils.showIf(hasQuery, mResultsFrame); Toolbar toolbar = mToolbarController.getToolbar(); AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); lp.setScrollFlags(hasQuery ? AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS | AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL : 0); toolbar.setLayoutParams(lp); - if (mFilterController != null) - mFilterController.show(hasQuery); + UiUtils.showIf(hasQuery, mResultsFrame); + UiUtils.showIf(hasQuery, mShowOnMapFab); if (hasQuery) hideDownloadSuggest(); else if (doShowDownloadSuggest()) @@ -261,8 +246,6 @@ public class SearchFragment extends BaseMwmFragment && mToolbarController.hasQuery(); UiUtils.showIf(show, mResultsPlaceholder); - if (mFilterController != null) - mFilterController.showPopulateButton(!isTabletSearch()); } @Override @@ -280,8 +263,7 @@ public class SearchFragment extends BaseMwmFragment readArguments(); ViewGroup root = (ViewGroup) view; - mAppBarLayout = root.findViewById(R.id.app_bar); - mTabFrame = root.findViewById(R.id.tab_frame); + View mTabFrame = root.findViewById(R.id.tab_frame); ViewPager pager = mTabFrame.findViewById(R.id.pages); mToolbarController = new ToolbarController(view); @@ -289,20 +271,10 @@ public class SearchFragment extends BaseMwmFragment final TabAdapter tabAdapter = new TabAdapter(getChildFragmentManager(), pager, tabLayout); mResultsFrame = root.findViewById(R.id.results_frame); - mResults = mResultsFrame.findViewById(R.id.recycler); + RecyclerView mResults = mResultsFrame.findViewById(R.id.recycler); setRecyclerScrollListener(mResults); mResultsPlaceholder = mResultsFrame.findViewById(R.id.placeholder); mResultsPlaceholder.setContent(R.string.search_not_found, R.string.search_not_found_query); - mFilterController = new SearchFilterController(root.findViewById(R.id.filter_frame), - new SearchFilterController.DefaultFilterListener() - { - @Override - public void onShowOnMapClick() - { - showAllResultsOnMap(); - } - - }, R.string.search_show_on_map); mSearchAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { @@ -312,6 +284,8 @@ public class SearchFragment extends BaseMwmFragment updateResultsPlaceholder(); } }); + mShowOnMapFab = root.findViewById(R.id.show_on_map_fab); + mShowOnMapFab.setOnClickListener(v -> showAllResultsOnMap()); mResults.setLayoutManager(new LinearLayoutManager(view.getContext())); mResults.setAdapter(mSearchAdapter); @@ -347,7 +321,6 @@ public class SearchFragment extends BaseMwmFragment { super.onResume(); LocationHelper.INSTANCE.addListener(mLocationListener); - mAppBarLayout.addOnOffsetChangedListener(mOffsetListener); } @Override @@ -355,7 +328,6 @@ public class SearchFragment extends BaseMwmFragment { LocationHelper.INSTANCE.removeListener(mLocationListener); super.onPause(); - mAppBarLayout.removeOnOffsetChangedListener(mOffsetListener); } @Override @@ -434,7 +406,7 @@ public class SearchFragment extends BaseMwmFragment { SearchResult.Description description = result.description; String subtitle = description != null - ? Utils.getLocalizedFeatureType(getContext(), description.featureType) + ? Utils.getLocalizedFeatureType(requireContext(), description.featureType) : ""; String title = TextUtils.isEmpty(result.name) ? subtitle : ""; @@ -562,9 +534,6 @@ public class SearchFragment extends BaseMwmFragment { super.onActivityResult(requestCode, resultCode, data); mToolbarController.onActivityResult(requestCode, resultCode, data); - - if (resultCode != Activity.RESULT_OK) - return; } @Override @@ -593,8 +562,9 @@ public class SearchFragment extends BaseMwmFragment private void closeSearch() { - getActivity().finish(); - getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); + final Activity activity = requireActivity(); + activity.finish(); + activity.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } public void setRecyclerScrollListener(RecyclerView recycler) diff --git a/android/src/com/mapswithme/maps/widget/SearchToolbarController.java b/android/src/com/mapswithme/maps/widget/SearchToolbarController.java index efd047af31..dbf67ea8ba 100644 --- a/android/src/com/mapswithme/maps/widget/SearchToolbarController.java +++ b/android/src/com/mapswithme/maps/widget/SearchToolbarController.java @@ -20,7 +20,7 @@ import com.mapswithme.util.StringUtils; import com.mapswithme.util.UiUtils; public class SearchToolbarController extends ToolbarController - implements View.OnClickListener + implements View.OnClickListener, View.OnFocusChangeListener { private static final int REQUEST_VOICE_RECOGNITION = 0xCA11; @Nullable @@ -62,7 +62,7 @@ public class SearchToolbarController extends ToolbarController mSearchContainer = getToolbar().findViewById(R.id.search_container); mBack = mSearchContainer.findViewById(R.id.back); mQuery = mSearchContainer.findViewById(R.id.query); - mQuery.setOnClickListener(this); + mQuery.setOnFocusChangeListener(this); mQuery.addTextChangedListener(mTextWatcher); mQuery.setOnEditorActionListener( (v, actionId, event) -> @@ -185,15 +185,18 @@ public class SearchToolbarController extends ToolbarController UiUtils.showIf(show, mProgress); } + @Override + public void onFocusChange(View view, boolean b) + { + if (view.getId()== R.id.query && b) + onQueryClick(getQuery()); + } + @Override public void onClick(View v) { switch (v.getId()) { - case R.id.query: - onQueryClick(getQuery()); - break; - case R.id.clear: onClearClick(); break;