[android] Simplify float toolbars and panels lifecycles

Signed-off-by: Arnaud Vergnet <arnaud.vergnet@mailo.com>
This commit is contained in:
Arnaud Vergnet 2022-02-03 16:07:12 +01:00 committed by Viktor Govako
parent 347e7e3e7e
commit e1593da893
2 changed files with 92 additions and 51 deletions

View file

@ -383,8 +383,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
args.putBoolean(DownloaderActivity.EXTRA_OPEN_DOWNLOADED, openDownloaded);
if (mIsTabletLayout)
{
SearchEngine.INSTANCE.cancel();
mSearchController.refreshToolbar();
closeSearchToolbar(false);
replaceFragment(DownloaderFragment.class, args, null);
}
else
@ -544,14 +543,26 @@ public class MwmActivity extends BaseMwmFragmentActivity
UiUtils.hide(mPositionChooser);
}
private void refreshSearchToolbar()
{
mSearchController.refreshQuery();
if (!TextUtils.isEmpty(mSearchController.getQuery()))
{
closeFloatingToolbarsAndPanelsButSearch();
mSearchController.show();
}
else
{
closeSearchToolbar(true);
}
}
public void showPositionChooser(boolean isBusiness, boolean applyPosition)
{
closeFloatingToolbarsAndPanels(false);
UiUtils.show(mPositionChooser);
setFullscreen(true);
Framework.nativeTurnOnChoosePositionMode(isBusiness, applyPosition);
closePlacePage();
mSearchController.cancelSearchApiAndHide(false);
hideBookmarkCategoryToolbar();
}
private void hidePositionChooser()
@ -587,8 +598,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
private boolean onFadeViewTouch()
{
if (!getMainMenuController().isClosed())
getMainMenuController().close();
closeMenu();
return getCurrentMenu().close(true);
}
@ -650,7 +660,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
return false;
}
private void closeAllFloatingPanels()
private void closeAllFloatingPanelsTablet()
{
if (!mIsTabletLayout)
return;
@ -663,12 +673,23 @@ public class MwmActivity extends BaseMwmFragmentActivity
}
}
public void closeMenu(@Nullable Runnable procAfterClose)
public boolean closeMenu()
{
mFadeView.fadeOut();
getMainMenuController().close();
if (!getMainMenuController().isClosed())
{
mFadeView.fadeOut();
getMainMenuController().close();
return true;
}
return false;
}
public boolean closeMenu(@Nullable Runnable procAfterClose)
{
boolean closed = closeMenu();
if (procAfterClose != null)
procAfterClose.run();
return closed;
}
private boolean closePositionChooser()
@ -678,10 +699,43 @@ public class MwmActivity extends BaseMwmFragmentActivity
hidePositionChooser();
return true;
}
return false;
}
private boolean closeSearchToolbar(boolean clearText)
{
if (UiUtils.isVisible(mSearchController.getToolbar()))
{
mSearchController.cancelSearchApiAndHide(clearText);
return true;
}
return false;
}
private boolean closeBookmarkCategoryToolbar()
{
if (UiUtils.isVisible(mBookmarkCategoryToolbar))
{
hideBookmarkCategoryToolbar();
return true;
}
return false;
}
private void closeFloatingToolbarsAndPanelsButSearch()
{
closeMenu();
closePlacePage();
closeBookmarkCategoryToolbar();
closePositionChooser();
}
private void closeFloatingToolbarsAndPanels(boolean clearSearchText)
{
closeFloatingToolbarsAndPanelsButSearch();
closeSearchToolbar(clearSearchText);
}
public void startLocationToPoint(final @Nullable MapObject endPoint,
final boolean canUseMyPositionAsStart)
{
@ -939,7 +993,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
protected void onResume()
{
super.onResume();
mSearchController.refreshToolbar();
refreshSearchToolbar();
mMainMenu.onResume(null);
if (Framework.nativeIsInChoosePositionMode())
{
@ -1035,15 +1089,13 @@ public class MwmActivity extends BaseMwmFragmentActivity
return;
}
if (!getMainMenuController().isClosed())
if (closeMenu())
{
getMainMenuController().close();
return;
}
if (mSearchController.hide())
if (closeSearchToolbar(true))
{
mSearchController.cancelSearchApiAndHide(true);
return;
}
@ -1280,7 +1332,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (removeCurrentFragment(true))
{
InputUtils.hideKeyboard(mMainMenu.getFrame());
mSearchController.refreshToolbar();
refreshSearchToolbar();
}
}
@ -1517,8 +1569,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
Context context = getApplicationContext();
if (show)
{
mSearchController.cancelSearchApiAndHide(false);
hideBookmarkCategoryToolbar();
closeFloatingToolbarsAndPanels(false);
if (mIsTabletLayout)
{
replaceFragment(RoutingPlanFragment.class, null, completionListener);
@ -1553,13 +1604,13 @@ public class MwmActivity extends BaseMwmFragmentActivity
mRoutingPlanInplaceController.show(false);
}
closeAllFloatingPanels();
closeAllFloatingPanelsTablet();
mNavigationController.resetSearchWheel();
if (completionListener != null)
completionListener.run();
updateSearchBar();
refreshSearchToolbar();
}
}
@ -1590,6 +1641,10 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (mNavAnimationController == null)
return;
if (visible) {
closeFloatingToolbarsAndPanelsButSearch();
}
adjustCompassAndTraffic(visible ? calcFloatingViewsOffset()
: UiUtils.getStatusBarHeight(getApplicationContext()));
int toolbarHeight = mSearchController.getToolbar().getHeight();
@ -1624,7 +1679,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
mOnmapDownloader.updateState(false);
if (show)
{
mSearchController.cancelSearchApiAndHide(true);
closeFloatingToolbarsAndPanels(true);
if (mFilterController != null)
mFilterController.show(false);
}
@ -1657,7 +1712,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
@Override
public void onNavigationCancelled()
{
updateSearchBar();
refreshSearchToolbar();
ThemeSwitcher.INSTANCE.restart(isMapRendererActive());
if (mRoutingPlanInplaceController == null)
return;
@ -1739,11 +1794,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
dialog.show(this, ERROR_DRIVING_OPTIONS_DIALOG_TAG);
}
private void updateSearchBar()
{
if (!TextUtils.isEmpty(SearchEngine.INSTANCE.getQuery()))
mSearchController.refreshToolbar();
}
@Override
public void onMyPositionModeChanged(int newMode)

View file

@ -55,32 +55,16 @@ public class FloatingSearchToolbarController extends SearchToolbarController
cancelSearchApiAndHide(false);
}
public void refreshToolbar()
public void refreshQuery()
{
showProgress(false);
CharSequence query = ParsedMwmRequest.hasRequest() ?
ParsedMwmRequest.getCurrentRequest().getTitle()
: SearchEngine.INSTANCE.getQuery();
if (ParsedMwmRequest.hasRequest())
if (!TextUtils.isEmpty(query))
{
UiUtils.show(getToolbar());
if (mVisibilityListener != null)
mVisibilityListener.onSearchVisibilityChanged(true);
setQuery(ParsedMwmRequest.getCurrentRequest().getTitle());
}
else if (!TextUtils.isEmpty(SearchEngine.INSTANCE.getQuery()))
{
UiUtils.show(getToolbar());
if (mVisibilityListener != null)
mVisibilityListener.onSearchVisibilityChanged(true);
setQuery(SearchEngine.INSTANCE.getQuery());
}
else
{
hide();
clear();
setQuery(query);
}
}
@ -94,6 +78,13 @@ public class FloatingSearchToolbarController extends SearchToolbarController
hide();
}
public void show()
{
UiUtils.show(getToolbar());
if (mVisibilityListener != null)
mVisibilityListener.onSearchVisibilityChanged(true);
}
public boolean hide()
{
if (!UiUtils.isVisible(getToolbar()))