mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-21 05:43:37 +00:00
[android] Get rid of MapFragment
Signed-off-by: Andrei Shkrob <github@shkrob.dev>
This commit is contained in:
@@ -84,6 +84,7 @@ import app.organicmaps.routing.RoutingPlanInplaceController;
|
||||
import app.organicmaps.sdk.ChoosePositionMode;
|
||||
import app.organicmaps.sdk.Framework;
|
||||
import app.organicmaps.sdk.Map;
|
||||
import app.organicmaps.sdk.MapController;
|
||||
import app.organicmaps.sdk.MapRenderingListener;
|
||||
import app.organicmaps.sdk.PlacePageActivationListener;
|
||||
import app.organicmaps.sdk.Router;
|
||||
@@ -137,10 +138,10 @@ import java.util.ArrayList;
|
||||
import java.util.Objects;
|
||||
|
||||
public class MwmActivity extends BaseMwmFragmentActivity
|
||||
implements PlacePageActivationListener, View.OnTouchListener, MapRenderingListener, RoutingController.Container,
|
||||
LocationListener, SensorListener, LocationState.ModeChangeListener,
|
||||
RoutingPlanInplaceController.RoutingPlanListener, RoutingBottomMenuListener,
|
||||
BookmarkManager.BookmarksLoadingListener, FloatingSearchToolbarController.SearchToolbarListener,
|
||||
implements PlacePageActivationListener, MapRenderingListener, RoutingController.Container, LocationListener,
|
||||
SensorListener, LocationState.ModeChangeListener, RoutingPlanInplaceController.RoutingPlanListener,
|
||||
RoutingBottomMenuListener, BookmarkManager.BookmarksLoadingListener,
|
||||
FloatingSearchToolbarController.SearchToolbarListener,
|
||||
MenuBottomSheetFragment.MenuBottomSheetInterfaceWithHeader,
|
||||
PlacePageController.PlacePageRouteSettingsListener, MapButtonsController.MapButtonClickListener,
|
||||
DisplayChangedListener
|
||||
@@ -170,8 +171,9 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
|
||||
private static final String POWER_SAVE_DISCLAIMER_SHOWN = "POWER_SAVE_DISCLAIMER_SHOWN";
|
||||
|
||||
@Nullable
|
||||
private MapFragment mMapFragment;
|
||||
@SuppressWarnings("NotNullFieldNotInitialized")
|
||||
@NonNull
|
||||
private MapController mMapController;
|
||||
|
||||
private View mPointChooser;
|
||||
private MaterialToolbar mPointChooserToolbar;
|
||||
@@ -459,7 +461,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
{
|
||||
mRemoveDisplayListener = false;
|
||||
startActivity(new Intent(this, MapPlaceholderActivity.class));
|
||||
Objects.requireNonNull(mMapFragment).notifyOnSurfaceDestroyed(onTaskFinishedCallback);
|
||||
mMapController.setOnDestroyListener(onTaskFinishedCallback);
|
||||
finish();
|
||||
}
|
||||
|
||||
@@ -536,7 +538,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
updateViewsInsets();
|
||||
|
||||
if (getIntent().getBooleanExtra(EXTRA_UPDATE_THEME, false))
|
||||
ThemeSwitcher.INSTANCE.restart(isMapRendererActive());
|
||||
ThemeSwitcher.INSTANCE.restart(mMapController.isRenderingActive());
|
||||
|
||||
/*
|
||||
* onRenderingInitializationFinished() hook is not called when MwmActivity is recreated with the already
|
||||
@@ -604,7 +606,10 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
|
||||
private void initViews(boolean isLaunchByDeeplink)
|
||||
{
|
||||
initMap(isLaunchByDeeplink);
|
||||
mMapController = new MapController(findViewById(R.id.map), MwmApplication.from(this).getLocationHelper(), this,
|
||||
this::reportUnsupported, isLaunchByDeeplink);
|
||||
getLifecycle().addObserver(mMapController);
|
||||
|
||||
initNavigationButtons();
|
||||
|
||||
if (!mIsTabletLayout)
|
||||
@@ -737,29 +742,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
finish();
|
||||
}
|
||||
|
||||
private void initMap(boolean isLaunchByDeepLink)
|
||||
{
|
||||
final FragmentManager manager = getSupportFragmentManager();
|
||||
mMapFragment = (MapFragment) manager.findFragmentByTag(MapFragment.class.getName());
|
||||
if (mMapFragment == null)
|
||||
{
|
||||
Bundle args = new Bundle();
|
||||
args.putBoolean(Map.ARG_LAUNCH_BY_DEEP_LINK, isLaunchByDeepLink);
|
||||
final FragmentFactory factory = manager.getFragmentFactory();
|
||||
mMapFragment = (MapFragment) factory.instantiate(getClassLoader(), MapFragment.class.getName());
|
||||
mMapFragment.setArguments(args);
|
||||
manager.beginTransaction()
|
||||
.replace(R.id.map_fragment_container, mMapFragment, MapFragment.class.getName())
|
||||
.commit();
|
||||
}
|
||||
|
||||
View container = findViewById(R.id.map_fragment_container);
|
||||
if (container != null)
|
||||
{
|
||||
container.setOnTouchListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void initNavigationButtons()
|
||||
{
|
||||
prepareNavigationButtons();
|
||||
@@ -1188,7 +1170,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
{
|
||||
setIntent(intent);
|
||||
super.onNewIntent(intent);
|
||||
if (isMapRendererActive())
|
||||
if (mMapController.isRenderingActive())
|
||||
processIntent();
|
||||
if (intent.getAction() != null && intent.getAction().equals(TrackRecordingService.STOP_TRACK_RECORDING))
|
||||
{
|
||||
@@ -1198,17 +1180,12 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isMapRendererActive()
|
||||
{
|
||||
return mMapFragment != null && Map.isEngineCreated() && mMapFragment.isContextCreated();
|
||||
}
|
||||
|
||||
@CallSuper
|
||||
@Override
|
||||
protected void onResume()
|
||||
{
|
||||
super.onResume();
|
||||
ThemeSwitcher.INSTANCE.restart(isMapRendererActive());
|
||||
ThemeSwitcher.INSTANCE.restart(mMapController.isRenderingActive());
|
||||
refreshSearchToolbar();
|
||||
setFullscreen(isFullscreen());
|
||||
makeNavigationBarTransparentInLightMode();
|
||||
@@ -1226,15 +1203,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
MwmApplication.from(this).getSensorHelper().addListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recreate()
|
||||
{
|
||||
// Explicitly destroy surface before activity recreation.
|
||||
if (mMapFragment != null)
|
||||
mMapFragment.destroySurface(true);
|
||||
super.recreate();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResumeFragments()
|
||||
{
|
||||
@@ -1436,12 +1404,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
return super.onGenericMotionEvent(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View view, MotionEvent event)
|
||||
{
|
||||
return mMapFragment != null && mMapFragment.onTouch(view, event);
|
||||
}
|
||||
|
||||
public void customOnNavigateUp()
|
||||
{
|
||||
if (removeCurrentFragment(true))
|
||||
@@ -1457,10 +1419,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
|
||||
void updateCompassOffset(int offsetY, int offsetX)
|
||||
{
|
||||
if (mMapFragment == null || !mMapFragment.isAdded())
|
||||
return;
|
||||
|
||||
mMapFragment.updateCompassOffset(offsetX, offsetY);
|
||||
mMapController.updateCompassOffset(offsetX, offsetY);
|
||||
|
||||
final double north = MwmApplication.from(this).getSensorHelper().getSavedNorth();
|
||||
if (!Double.isNaN(north))
|
||||
@@ -1479,9 +1438,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
|
||||
public void updateBottomWidgetsOffset(int offsetX)
|
||||
{
|
||||
if (mMapFragment == null || !mMapFragment.isAdded())
|
||||
return;
|
||||
|
||||
int offsetY = mNavBarHeight;
|
||||
final Float bottomButtonHeight = mMapButtonsViewModel.getBottomButtonsHeight().getValue();
|
||||
if (bottomButtonHeight != null)
|
||||
@@ -1496,8 +1452,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
|
||||
if (mDisplayManager.isDeviceDisplayUsed())
|
||||
{
|
||||
mMapFragment.updateBottomWidgetsOffset(offsetX, offsetY);
|
||||
mMapFragment.updateMyPositionRoutingOffset(offsetY);
|
||||
mMapController.updateBottomWidgetsOffset(offsetX, offsetY);
|
||||
mMapController.updateMyPositionRoutingOffset(offsetY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1715,7 +1671,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
public void onNavigationCancelled()
|
||||
{
|
||||
closeFloatingToolbarsAndPanels(true);
|
||||
ThemeSwitcher.INSTANCE.restart(isMapRendererActive());
|
||||
ThemeSwitcher.INSTANCE.restart(mMapController.isRenderingActive());
|
||||
if (mRoutingPlanInplaceController == null)
|
||||
return;
|
||||
|
||||
@@ -1731,7 +1687,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
public void onNavigationStarted()
|
||||
{
|
||||
closeFloatingToolbarsAndPanels(true);
|
||||
ThemeSwitcher.INSTANCE.restart(isMapRendererActive());
|
||||
ThemeSwitcher.INSTANCE.restart(mMapController.isRenderingActive());
|
||||
mMapButtonsViewModel.setLayoutMode(MapButtonsController.LayoutMode.navigation);
|
||||
refreshLightStatusBar();
|
||||
|
||||
@@ -1767,7 +1723,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
public void onResetToPlanningState()
|
||||
{
|
||||
closeFloatingToolbarsAndPanels(true);
|
||||
ThemeSwitcher.INSTANCE.restart(isMapRendererActive());
|
||||
ThemeSwitcher.INSTANCE.restart(mMapController.isRenderingActive());
|
||||
NavigationService.stopService(this);
|
||||
mMapButtonsViewModel.setSearchOption(null);
|
||||
mMapButtonsViewModel.setLayoutMode(MapButtonsController.LayoutMode.planning);
|
||||
@@ -2596,4 +2552,13 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
window.setNavigationBarContrastEnforced(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void reportUnsupported()
|
||||
{
|
||||
new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog)
|
||||
.setMessage(R.string.unsupported_phone)
|
||||
.setCancelable(false)
|
||||
.setPositiveButton(R.string.close, (dlg, which) -> this.moveTaskToBack(true))
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user