mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-21 13:53:37 +00:00
[android][sdk] Refactoring
Signed-off-by: Andrei Shkrob <github@shkrob.dev>
This commit is contained in:
committed by
Konstantin Pastbin
parent
0000ec149c
commit
9833918aac
@@ -23,7 +23,10 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
|||||||
public class MapFragment extends BaseMwmFragment implements View.OnTouchListener, SurfaceHolder.Callback
|
public class MapFragment extends BaseMwmFragment implements View.OnTouchListener, SurfaceHolder.Callback
|
||||||
{
|
{
|
||||||
private static final String TAG = MapFragment.class.getSimpleName();
|
private static final String TAG = MapFragment.class.getSimpleName();
|
||||||
private final Map mMap = new Map(DisplayType.Device);
|
|
||||||
|
@SuppressWarnings("NonNullFieldNotInitialized")
|
||||||
|
@NonNull
|
||||||
|
private Map mMap;
|
||||||
|
|
||||||
public void updateCompassOffset(int offsetX, int offsetY)
|
public void updateCompassOffset(int offsetX, int offsetY)
|
||||||
{
|
{
|
||||||
@@ -84,6 +87,7 @@ public class MapFragment extends BaseMwmFragment implements View.OnTouchListener
|
|||||||
{
|
{
|
||||||
Logger.d(TAG);
|
Logger.d(TAG);
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
|
mMap = new Map(DisplayType.Device, MwmApplication.from(requireContext()).getLocationHelper());
|
||||||
mMap.setMapRenderingListener((MapRenderingListener) context);
|
mMap.setMapRenderingListener((MapRenderingListener) context);
|
||||||
mMap.setCallbackUnsupported(this::reportUnsupported);
|
mMap.setCallbackUnsupported(this::reportUnsupported);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ import app.organicmaps.routing.ManageRouteBottomSheet;
|
|||||||
import app.organicmaps.routing.NavigationController;
|
import app.organicmaps.routing.NavigationController;
|
||||||
import app.organicmaps.routing.NavigationService;
|
import app.organicmaps.routing.NavigationService;
|
||||||
import app.organicmaps.routing.RoutingBottomMenuListener;
|
import app.organicmaps.routing.RoutingBottomMenuListener;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.routing.RoutingErrorDialogFragment;
|
import app.organicmaps.routing.RoutingErrorDialogFragment;
|
||||||
import app.organicmaps.routing.RoutingPlanFragment;
|
import app.organicmaps.routing.RoutingPlanFragment;
|
||||||
import app.organicmaps.routing.RoutingPlanInplaceController;
|
import app.organicmaps.routing.RoutingPlanInplaceController;
|
||||||
@@ -108,6 +107,7 @@ import app.organicmaps.sdk.location.SensorListener;
|
|||||||
import app.organicmaps.sdk.location.TrackRecorder;
|
import app.organicmaps.sdk.location.TrackRecorder;
|
||||||
import app.organicmaps.sdk.maplayer.isolines.IsolinesState;
|
import app.organicmaps.sdk.maplayer.isolines.IsolinesState;
|
||||||
import app.organicmaps.sdk.routing.RouteMarkType;
|
import app.organicmaps.sdk.routing.RouteMarkType;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.routing.RoutingOptions;
|
import app.organicmaps.sdk.routing.RoutingOptions;
|
||||||
import app.organicmaps.sdk.search.SearchEngine;
|
import app.organicmaps.sdk.search.SearchEngine;
|
||||||
import app.organicmaps.sdk.settings.RoadType;
|
import app.organicmaps.sdk.settings.RoadType;
|
||||||
@@ -115,7 +115,6 @@ import app.organicmaps.sdk.settings.UnitLocale;
|
|||||||
import app.organicmaps.sdk.util.Config;
|
import app.organicmaps.sdk.util.Config;
|
||||||
import app.organicmaps.sdk.util.LocationUtils;
|
import app.organicmaps.sdk.util.LocationUtils;
|
||||||
import app.organicmaps.sdk.util.PowerManagment;
|
import app.organicmaps.sdk.util.PowerManagment;
|
||||||
import app.organicmaps.sdk.util.ThemeSwitcher;
|
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.sdk.util.log.Logger;
|
import app.organicmaps.sdk.util.log.Logger;
|
||||||
import app.organicmaps.sdk.widget.placepage.PlacePageData;
|
import app.organicmaps.sdk.widget.placepage.PlacePageData;
|
||||||
@@ -125,6 +124,7 @@ import app.organicmaps.search.SearchFragment;
|
|||||||
import app.organicmaps.settings.DrivingOptionsActivity;
|
import app.organicmaps.settings.DrivingOptionsActivity;
|
||||||
import app.organicmaps.settings.SettingsActivity;
|
import app.organicmaps.settings.SettingsActivity;
|
||||||
import app.organicmaps.util.SharingUtils;
|
import app.organicmaps.util.SharingUtils;
|
||||||
|
import app.organicmaps.util.ThemeSwitcher;
|
||||||
import app.organicmaps.util.ThemeUtils;
|
import app.organicmaps.util.ThemeUtils;
|
||||||
import app.organicmaps.util.Utils;
|
import app.organicmaps.util.Utils;
|
||||||
import app.organicmaps.util.bottomsheet.MenuBottomSheetFragment;
|
import app.organicmaps.util.bottomsheet.MenuBottomSheetFragment;
|
||||||
@@ -772,9 +772,9 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||||||
final View mapView = mMapFragment.getView();
|
final View mapView = mMapFragment.getView();
|
||||||
if (mapView != null)
|
if (mapView != null)
|
||||||
{
|
{
|
||||||
int width = mapView.getWidth();
|
int width = mapView.getWidth();
|
||||||
int height = mapView.getHeight();
|
int height = mapView.getHeight();
|
||||||
Framework.nativeSetVisibleRect(0, 0, width, height);
|
Framework.nativeSetVisibleRect(0, 0, width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UiUtils.show(mPointChooser);
|
UiUtils.show(mPointChooser);
|
||||||
@@ -1223,21 +1223,22 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||||||
|
|
||||||
private void onIsolinesStateChanged(@NonNull IsolinesState type)
|
private void onIsolinesStateChanged(@NonNull IsolinesState type)
|
||||||
{
|
{
|
||||||
if (type != IsolinesState.EXPIREDDATA)
|
if (type == IsolinesState.NODATA)
|
||||||
{
|
{
|
||||||
type.activate(this, findViewById(R.id.coordinator), findViewById(R.id.menu_frame));
|
Toast.makeText(this, R.string.isolines_location_error_dialog, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dismissAlertDialog();
|
if (type == IsolinesState.EXPIREDDATA)
|
||||||
mAlertDialog = new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog)
|
{
|
||||||
.setTitle(R.string.downloader_update_maps)
|
mAlertDialog = new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog)
|
||||||
.setMessage(R.string.isolines_activation_error_dialog)
|
.setTitle(R.string.downloader_update_maps)
|
||||||
.setPositiveButton(R.string.ok,
|
.setMessage(R.string.isolines_activation_error_dialog)
|
||||||
(dialog, which) -> startActivity(new Intent(this, DownloaderActivity.class)))
|
.setPositiveButton(
|
||||||
.setNegativeButton(R.string.cancel, null)
|
R.string.ok, (dialog, which) -> startActivity(new Intent(this, DownloaderActivity.class)))
|
||||||
.setOnDismissListener(dialog -> mAlertDialog = null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.show();
|
.setOnDismissListener(dialog -> mAlertDialog = null)
|
||||||
|
.show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import app.organicmaps.background.OsmUploadWork;
|
|||||||
import app.organicmaps.downloader.DownloaderNotifier;
|
import app.organicmaps.downloader.DownloaderNotifier;
|
||||||
import app.organicmaps.location.TrackRecordingService;
|
import app.organicmaps.location.TrackRecordingService;
|
||||||
import app.organicmaps.routing.NavigationService;
|
import app.organicmaps.routing.NavigationService;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Map;
|
import app.organicmaps.sdk.Map;
|
||||||
import app.organicmaps.sdk.OrganicMaps;
|
import app.organicmaps.sdk.OrganicMaps;
|
||||||
import app.organicmaps.sdk.display.DisplayManager;
|
import app.organicmaps.sdk.display.DisplayManager;
|
||||||
@@ -28,9 +27,11 @@ import app.organicmaps.sdk.location.SensorHelper;
|
|||||||
import app.organicmaps.sdk.location.TrackRecorder;
|
import app.organicmaps.sdk.location.TrackRecorder;
|
||||||
import app.organicmaps.sdk.maplayer.isolines.IsolinesManager;
|
import app.organicmaps.sdk.maplayer.isolines.IsolinesManager;
|
||||||
import app.organicmaps.sdk.maplayer.subway.SubwayManager;
|
import app.organicmaps.sdk.maplayer.subway.SubwayManager;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.Config;
|
import app.organicmaps.sdk.util.Config;
|
||||||
import app.organicmaps.sdk.util.ConnectionState;
|
import app.organicmaps.sdk.util.ConnectionState;
|
||||||
import app.organicmaps.sdk.util.log.Logger;
|
import app.organicmaps.sdk.util.log.Logger;
|
||||||
|
import app.organicmaps.util.ThemeSwitcher;
|
||||||
import app.organicmaps.util.Utils;
|
import app.organicmaps.util.Utils;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
@@ -133,6 +134,8 @@ public class MwmApplication extends Application implements Application.ActivityL
|
|||||||
public boolean initOrganicMaps(@NonNull Runnable onComplete) throws IOException
|
public boolean initOrganicMaps(@NonNull Runnable onComplete) throws IOException
|
||||||
{
|
{
|
||||||
return mOrganicMaps.init(() -> {
|
return mOrganicMaps.init(() -> {
|
||||||
|
ThemeSwitcher.INSTANCE.initialize(this);
|
||||||
|
ThemeSwitcher.INSTANCE.restart(false);
|
||||||
ProcessLifecycleOwner.get().getLifecycle().addObserver(mProcessLifecycleObserver);
|
ProcessLifecycleOwner.get().getLifecycle().addObserver(mProcessLifecycleObserver);
|
||||||
onComplete.run();
|
onComplete.run();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import app.organicmaps.car.util.CurrentCountryChangedListener;
|
|||||||
import app.organicmaps.car.util.IntentUtils;
|
import app.organicmaps.car.util.IntentUtils;
|
||||||
import app.organicmaps.car.util.ThemeUtils;
|
import app.organicmaps.car.util.ThemeUtils;
|
||||||
import app.organicmaps.car.util.UserActionRequired;
|
import app.organicmaps.car.util.UserActionRequired;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.PlacePageActivationListener;
|
import app.organicmaps.sdk.PlacePageActivationListener;
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
@@ -34,6 +33,7 @@ import app.organicmaps.sdk.display.DisplayChangedListener;
|
|||||||
import app.organicmaps.sdk.display.DisplayManager;
|
import app.organicmaps.sdk.display.DisplayManager;
|
||||||
import app.organicmaps.sdk.display.DisplayType;
|
import app.organicmaps.sdk.display.DisplayType;
|
||||||
import app.organicmaps.sdk.location.LocationState;
|
import app.organicmaps.sdk.location.LocationState;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.Config;
|
import app.organicmaps.sdk.util.Config;
|
||||||
import app.organicmaps.sdk.util.LocationUtils;
|
import app.organicmaps.sdk.util.LocationUtils;
|
||||||
import app.organicmaps.sdk.util.log.Logger;
|
import app.organicmaps.sdk.util.log.Logger;
|
||||||
|
|||||||
@@ -27,8 +27,11 @@ public class SurfaceRenderer implements DefaultLifecycleObserver, SurfaceCallbac
|
|||||||
{
|
{
|
||||||
private static final String TAG = SurfaceRenderer.class.getSimpleName();
|
private static final String TAG = SurfaceRenderer.class.getSimpleName();
|
||||||
|
|
||||||
|
@NonNull
|
||||||
private final CarContext mCarContext;
|
private final CarContext mCarContext;
|
||||||
private final Map mMap = new Map(Car);
|
|
||||||
|
@NonNull
|
||||||
|
private final Map mMap;
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private Rect mVisibleArea = new Rect();
|
private Rect mVisibleArea = new Rect();
|
||||||
@@ -42,6 +45,7 @@ public class SurfaceRenderer implements DefaultLifecycleObserver, SurfaceCallbac
|
|||||||
{
|
{
|
||||||
Logger.d(TAG, "SurfaceRenderer()");
|
Logger.d(TAG, "SurfaceRenderer()");
|
||||||
mCarContext = carContext;
|
mCarContext = carContext;
|
||||||
|
mMap = new Map(Car, MwmApplication.from(mCarContext).getLocationHelper());
|
||||||
mIsRunning = true;
|
mIsRunning = true;
|
||||||
lifecycle.addObserver(this);
|
lifecycle.addObserver(this);
|
||||||
mMap.setMapRenderingListener(this);
|
mMap.setMapRenderingListener(this);
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ import app.organicmaps.car.util.RoutingUtils;
|
|||||||
import app.organicmaps.car.util.ThemeUtils;
|
import app.organicmaps.car.util.ThemeUtils;
|
||||||
import app.organicmaps.car.util.UiHelpers;
|
import app.organicmaps.car.util.UiHelpers;
|
||||||
import app.organicmaps.routing.NavigationService;
|
import app.organicmaps.routing.NavigationService;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.location.LocationHelper;
|
import app.organicmaps.sdk.location.LocationHelper;
|
||||||
import app.organicmaps.sdk.location.LocationListener;
|
import app.organicmaps.sdk.location.LocationListener;
|
||||||
import app.organicmaps.sdk.routing.JunctionInfo;
|
import app.organicmaps.sdk.routing.JunctionInfo;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.routing.RoutingInfo;
|
import app.organicmaps.sdk.routing.RoutingInfo;
|
||||||
import app.organicmaps.sdk.sound.TtsPlayer;
|
import app.organicmaps.sdk.sound.TtsPlayer;
|
||||||
import app.organicmaps.sdk.util.LocationUtils;
|
import app.organicmaps.sdk.util.LocationUtils;
|
||||||
|
|||||||
@@ -35,11 +35,11 @@ import app.organicmaps.car.util.OnBackPressedCallback;
|
|||||||
import app.organicmaps.car.util.RoutingHelpers;
|
import app.organicmaps.car.util.RoutingHelpers;
|
||||||
import app.organicmaps.car.util.UiHelpers;
|
import app.organicmaps.car.util.UiHelpers;
|
||||||
import app.organicmaps.routing.ResultCodesHelper;
|
import app.organicmaps.routing.ResultCodesHelper;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.Router;
|
import app.organicmaps.sdk.Router;
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
import app.organicmaps.sdk.bookmarks.data.Metadata;
|
import app.organicmaps.sdk.bookmarks.data.Metadata;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.routing.RoutingInfo;
|
import app.organicmaps.sdk.routing.RoutingInfo;
|
||||||
import app.organicmaps.sdk.util.Config;
|
import app.organicmaps.sdk.util.Config;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import androidx.car.app.CarContext;
|
|||||||
import androidx.car.app.ScreenManager;
|
import androidx.car.app.ScreenManager;
|
||||||
import app.organicmaps.car.screens.download.DownloadMapsScreen;
|
import app.organicmaps.car.screens.download.DownloadMapsScreen;
|
||||||
import app.organicmaps.car.screens.download.DownloadMapsScreenBuilder;
|
import app.organicmaps.car.screens.download.DownloadMapsScreenBuilder;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.downloader.CountryItem;
|
import app.organicmaps.sdk.downloader.CountryItem;
|
||||||
import app.organicmaps.sdk.downloader.MapManager;
|
import app.organicmaps.sdk.downloader.MapManager;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
|
|
||||||
public class CurrentCountryChangedListener implements MapManager.CurrentCountryChangedListener
|
public class CurrentCountryChangedListener implements MapManager.CurrentCountryChangedListener
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ import app.organicmaps.car.CarAppService;
|
|||||||
import app.organicmaps.car.SurfaceRenderer;
|
import app.organicmaps.car.SurfaceRenderer;
|
||||||
import app.organicmaps.car.screens.NavigationScreen;
|
import app.organicmaps.car.screens.NavigationScreen;
|
||||||
import app.organicmaps.car.screens.search.SearchScreen;
|
import app.organicmaps.car.screens.search.SearchScreen;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.Map;
|
import app.organicmaps.sdk.Map;
|
||||||
import app.organicmaps.sdk.api.ParsedSearchRequest;
|
import app.organicmaps.sdk.api.ParsedSearchRequest;
|
||||||
import app.organicmaps.sdk.api.RequestType;
|
import app.organicmaps.sdk.api.RequestType;
|
||||||
import app.organicmaps.sdk.display.DisplayManager;
|
import app.organicmaps.sdk.display.DisplayManager;
|
||||||
import app.organicmaps.sdk.display.DisplayType;
|
import app.organicmaps.sdk.display.DisplayType;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.log.Logger;
|
import app.organicmaps.sdk.util.log.Logger;
|
||||||
|
|
||||||
public final class IntentUtils
|
public final class IntentUtils
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import androidx.annotation.StringRes;
|
|||||||
import androidx.annotation.UiThread;
|
import androidx.annotation.UiThread;
|
||||||
import androidx.car.app.CarContext;
|
import androidx.car.app.CarContext;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.MapStyle;
|
import app.organicmaps.sdk.MapStyle;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
|
|
||||||
public final class ThemeUtils
|
public final class ThemeUtils
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
import app.organicmaps.MwmActivity;
|
import app.organicmaps.MwmActivity;
|
||||||
import app.organicmaps.MwmApplication;
|
import app.organicmaps.MwmApplication;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.downloader.CountryItem;
|
import app.organicmaps.sdk.downloader.CountryItem;
|
||||||
import app.organicmaps.sdk.downloader.MapManager;
|
import app.organicmaps.sdk.downloader.MapManager;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.StringUtils;
|
import app.organicmaps.sdk.util.StringUtils;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.util.bottomsheet.MenuBottomSheetFragment;
|
import app.organicmaps.util.bottomsheet.MenuBottomSheetFragment;
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ import androidx.core.view.ViewCompat;
|
|||||||
import app.organicmaps.MwmActivity;
|
import app.organicmaps.MwmActivity;
|
||||||
import app.organicmaps.MwmApplication;
|
import app.organicmaps.MwmApplication;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.downloader.CountryItem;
|
import app.organicmaps.sdk.downloader.CountryItem;
|
||||||
import app.organicmaps.sdk.downloader.MapManager;
|
import app.organicmaps.sdk.downloader.MapManager;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.Config;
|
import app.organicmaps.sdk.util.Config;
|
||||||
import app.organicmaps.sdk.util.ConnectionState;
|
import app.organicmaps.sdk.util.ConnectionState;
|
||||||
import app.organicmaps.sdk.util.StringUtils;
|
import app.organicmaps.sdk.util.StringUtils;
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import androidx.core.content.IntentCompat;
|
|||||||
import app.organicmaps.MwmActivity;
|
import app.organicmaps.MwmActivity;
|
||||||
import app.organicmaps.MwmApplication;
|
import app.organicmaps.MwmApplication;
|
||||||
import app.organicmaps.editor.OsmLoginActivity;
|
import app.organicmaps.editor.OsmLoginActivity;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.Map;
|
import app.organicmaps.sdk.Map;
|
||||||
import app.organicmaps.sdk.api.ParsedRoutingData;
|
import app.organicmaps.sdk.api.ParsedRoutingData;
|
||||||
@@ -20,6 +19,7 @@ import app.organicmaps.sdk.api.RoutePoint;
|
|||||||
import app.organicmaps.sdk.bookmarks.data.BookmarkManager;
|
import app.organicmaps.sdk.bookmarks.data.BookmarkManager;
|
||||||
import app.organicmaps.sdk.bookmarks.data.FeatureId;
|
import app.organicmaps.sdk.bookmarks.data.FeatureId;
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.search.SearchEngine;
|
import app.organicmaps.sdk.search.SearchEngine;
|
||||||
import app.organicmaps.sdk.util.StorageUtils;
|
import app.organicmaps.sdk.util.StorageUtils;
|
||||||
import app.organicmaps.sdk.util.concurrency.ThreadPool;
|
import app.organicmaps.sdk.util.concurrency.ThreadPool;
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import app.organicmaps.MwmActivity;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.leftbutton.LeftButton;
|
import app.organicmaps.leftbutton.LeftButton;
|
||||||
import app.organicmaps.leftbutton.LeftToggleButton;
|
import app.organicmaps.leftbutton.LeftToggleButton;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.downloader.MapManager;
|
import app.organicmaps.sdk.downloader.MapManager;
|
||||||
import app.organicmaps.sdk.downloader.UpdateInfo;
|
import app.organicmaps.sdk.downloader.UpdateInfo;
|
||||||
@@ -34,6 +33,7 @@ import app.organicmaps.sdk.location.TrackRecorder;
|
|||||||
import app.organicmaps.sdk.maplayer.isolines.IsolinesManager;
|
import app.organicmaps.sdk.maplayer.isolines.IsolinesManager;
|
||||||
import app.organicmaps.sdk.maplayer.subway.SubwayManager;
|
import app.organicmaps.sdk.maplayer.subway.SubwayManager;
|
||||||
import app.organicmaps.sdk.maplayer.traffic.TrafficManager;
|
import app.organicmaps.sdk.maplayer.traffic.TrafficManager;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.Config;
|
import app.organicmaps.sdk.util.Config;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.util.ThemeUtils;
|
import app.organicmaps.util.ThemeUtils;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.routing.RoutingController;
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.search.SearchEngine;
|
import app.organicmaps.sdk.search.SearchEngine;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.sdk.util.concurrency.UiThread;
|
import app.organicmaps.sdk.util.concurrency.UiThread;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import app.organicmaps.MwmApplication;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.maplayer.Mode;
|
import app.organicmaps.sdk.maplayer.Mode;
|
||||||
import app.organicmaps.sdk.util.SharedPropertiesUtils;
|
import app.organicmaps.sdk.util.SharedPropertiesUtils;
|
||||||
|
import app.organicmaps.util.ThemeSwitcher;
|
||||||
import app.organicmaps.util.Utils;
|
import app.organicmaps.util.Utils;
|
||||||
import app.organicmaps.util.bottomsheet.MenuBottomSheetFragment;
|
import app.organicmaps.util.bottomsheet.MenuBottomSheetFragment;
|
||||||
import app.organicmaps.widget.recycler.SpanningLinearLayoutManager;
|
import app.organicmaps.widget.recycler.SpanningLinearLayoutManager;
|
||||||
@@ -72,6 +73,9 @@ public class ToggleMapLayerFragment extends Fragment
|
|||||||
Context context = v.getContext();
|
Context context = v.getContext();
|
||||||
SharedPropertiesUtils.setLayerMarkerShownForLayerMode(mode);
|
SharedPropertiesUtils.setLayerMarkerShownForLayerMode(mode);
|
||||||
mode.setEnabled(context, !mode.isEnabled(context));
|
mode.setEnabled(context, !mode.isEnabled(context));
|
||||||
|
// TODO: dirty hack :(
|
||||||
|
if (mode == Mode.OUTDOORS)
|
||||||
|
ThemeSwitcher.INSTANCE.restart(true);
|
||||||
mAdapter.notifyDataSetChanged();
|
mAdapter.notifyDataSetChanged();
|
||||||
mMapButtonsController.updateLayerButton();
|
mMapButtonsController.updateLayerButton();
|
||||||
if (MwmApplication.from(context).getIsolinesManager().shouldShowNotification())
|
if (MwmApplication.from(context).getIsolinesManager().shouldShowNotification())
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import app.organicmaps.R;
|
|||||||
import app.organicmaps.adapter.DisabledChildSimpleExpandableListAdapter;
|
import app.organicmaps.adapter.DisabledChildSimpleExpandableListAdapter;
|
||||||
import app.organicmaps.base.BaseMwmDialogFragment;
|
import app.organicmaps.base.BaseMwmDialogFragment;
|
||||||
import app.organicmaps.sdk.downloader.CountryItem;
|
import app.organicmaps.sdk.downloader.CountryItem;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.StringUtils;
|
import app.organicmaps.sdk.util.StringUtils;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import app.organicmaps.R;
|
|||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
import app.organicmaps.sdk.routing.RouteMarkData;
|
import app.organicmaps.sdk.routing.RouteMarkData;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog;
|
import com.google.android.material.bottomsheet.BottomSheetDialog;
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import app.organicmaps.sdk.Framework;
|
|||||||
import app.organicmaps.sdk.Router;
|
import app.organicmaps.sdk.Router;
|
||||||
import app.organicmaps.sdk.maplayer.traffic.TrafficManager;
|
import app.organicmaps.sdk.maplayer.traffic.TrafficManager;
|
||||||
import app.organicmaps.sdk.routing.CarDirection;
|
import app.organicmaps.sdk.routing.CarDirection;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.routing.RoutingInfo;
|
import app.organicmaps.sdk.routing.RoutingInfo;
|
||||||
import app.organicmaps.sdk.util.StringUtils;
|
import app.organicmaps.sdk.util.StringUtils;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import app.organicmaps.R;
|
|||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.location.LocationHelper;
|
import app.organicmaps.sdk.location.LocationHelper;
|
||||||
import app.organicmaps.sdk.location.LocationListener;
|
import app.organicmaps.sdk.location.LocationListener;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.routing.RoutingInfo;
|
import app.organicmaps.sdk.routing.RoutingInfo;
|
||||||
import app.organicmaps.sdk.sound.MediaPlayerWrapper;
|
import app.organicmaps.sdk.sound.MediaPlayerWrapper;
|
||||||
import app.organicmaps.sdk.sound.TtsPlayer;
|
import app.organicmaps.sdk.sound.TtsPlayer;
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import app.organicmaps.sdk.Framework;
|
|||||||
import app.organicmaps.sdk.bookmarks.data.DistanceAndAzimut;
|
import app.organicmaps.sdk.bookmarks.data.DistanceAndAzimut;
|
||||||
import app.organicmaps.sdk.routing.RouteMarkData;
|
import app.organicmaps.sdk.routing.RouteMarkData;
|
||||||
import app.organicmaps.sdk.routing.RouteMarkType;
|
import app.organicmaps.sdk.routing.RouteMarkType;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.routing.RoutingInfo;
|
import app.organicmaps.sdk.routing.RoutingInfo;
|
||||||
import app.organicmaps.sdk.routing.TransitRouteInfo;
|
import app.organicmaps.sdk.routing.TransitRouteInfo;
|
||||||
import app.organicmaps.sdk.routing.TransitStepInfo;
|
import app.organicmaps.sdk.routing.TransitStepInfo;
|
||||||
@@ -39,6 +40,7 @@ import app.organicmaps.sdk.util.Distance;
|
|||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.util.Graphics;
|
import app.organicmaps.util.Graphics;
|
||||||
import app.organicmaps.util.ThemeUtils;
|
import app.organicmaps.util.ThemeUtils;
|
||||||
|
import app.organicmaps.util.Utils;
|
||||||
import app.organicmaps.widget.recycler.DotDividerItemDecoration;
|
import app.organicmaps.widget.recycler.DotDividerItemDecoration;
|
||||||
import app.organicmaps.widget.recycler.MultilineLayoutManager;
|
import app.organicmaps.widget.recycler.MultilineLayoutManager;
|
||||||
import com.google.android.material.imageview.ShapeableImageView;
|
import com.google.android.material.imageview.ShapeableImageView;
|
||||||
@@ -191,8 +193,7 @@ final class RoutingBottomMenuController implements View.OnClickListener
|
|||||||
scrollToBottom(rv);
|
scrollToBottom(rv);
|
||||||
|
|
||||||
MaterialTextView totalTimeView = mTransitFrame.findViewById(R.id.total_time);
|
MaterialTextView totalTimeView = mTransitFrame.findViewById(R.id.total_time);
|
||||||
totalTimeView.setText(
|
totalTimeView.setText(Utils.formatRoutingTime(mContext, info.getTotalTime(), R.dimen.text_size_routing_number));
|
||||||
RoutingController.formatRoutingTime(mContext, info.getTotalTime(), R.dimen.text_size_routing_number));
|
|
||||||
View dotView = mTransitFrame.findViewById(R.id.dot);
|
View dotView = mTransitFrame.findViewById(R.id.dot);
|
||||||
View pedestrianIcon = mTransitFrame.findViewById(R.id.pedestrian_icon);
|
View pedestrianIcon = mTransitFrame.findViewById(R.id.pedestrian_icon);
|
||||||
MaterialTextView distanceView = mTransitFrame.findViewById(R.id.total_distance);
|
MaterialTextView distanceView = mTransitFrame.findViewById(R.id.total_distance);
|
||||||
@@ -382,7 +383,7 @@ final class RoutingBottomMenuController implements View.OnClickListener
|
|||||||
|
|
||||||
if (mArrival != null)
|
if (mArrival != null)
|
||||||
{
|
{
|
||||||
String arrivalTime = RoutingController.formatArrivalTime(rinfo.totalTimeInSeconds);
|
String arrivalTime = Utils.formatArrivalTime(rinfo.totalTimeInSeconds);
|
||||||
mArrival.setText(arrivalTime);
|
mArrival.setText(arrivalTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -400,7 +401,7 @@ final class RoutingBottomMenuController implements View.OnClickListener
|
|||||||
|
|
||||||
{
|
{
|
||||||
CharSequence time =
|
CharSequence time =
|
||||||
RoutingController.formatRoutingTime(context, routingInfo.totalTimeInSeconds, R.dimen.text_size_routing_number);
|
Utils.formatRoutingTime(context, routingInfo.totalTimeInSeconds, R.dimen.text_size_routing_number);
|
||||||
|
|
||||||
SpannableStringBuilder builder = new SpannableStringBuilder();
|
SpannableStringBuilder builder = new SpannableStringBuilder();
|
||||||
initTimeBuilderSequence(context, time, builder);
|
initTimeBuilderSequence(context, time, builder);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import androidx.fragment.app.FragmentFactory;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.downloader.CountryItem;
|
import app.organicmaps.sdk.downloader.CountryItem;
|
||||||
import app.organicmaps.sdk.downloader.MapManager;
|
import app.organicmaps.sdk.downloader.MapManager;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.widget.WheelProgressView;
|
import app.organicmaps.widget.WheelProgressView;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import app.organicmaps.MwmApplication;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.Router;
|
import app.organicmaps.sdk.Router;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.routing.RoutingInfo;
|
import app.organicmaps.sdk.routing.RoutingInfo;
|
||||||
import app.organicmaps.sdk.routing.RoutingOptions;
|
import app.organicmaps.sdk.routing.RoutingOptions;
|
||||||
import app.organicmaps.sdk.routing.TransitRouteInfo;
|
import app.organicmaps.sdk.routing.TransitRouteInfo;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import app.organicmaps.MwmActivity;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.base.BaseMwmFragment;
|
import app.organicmaps.base.BaseMwmFragment;
|
||||||
import app.organicmaps.sdk.Router;
|
import app.organicmaps.sdk.Router;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
|
|
||||||
public class RoutingPlanFragment extends BaseMwmFragment
|
public class RoutingPlanFragment extends BaseMwmFragment
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import android.content.Context;
|
|||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import app.organicmaps.BuildConfig;
|
import app.organicmaps.BuildConfig;
|
||||||
import app.organicmaps.MwmApplication;
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.display.DisplayType;
|
import app.organicmaps.sdk.display.DisplayType;
|
||||||
import app.organicmaps.sdk.location.LocationHelper;
|
import app.organicmaps.sdk.location.LocationHelper;
|
||||||
@@ -53,8 +53,12 @@ public final class Map
|
|||||||
public static final int INVALID_POINTER_MASK = 0xFF;
|
public static final int INVALID_POINTER_MASK = 0xFF;
|
||||||
public static final int INVALID_TOUCH_ID = -1;
|
public static final int INVALID_TOUCH_ID = -1;
|
||||||
|
|
||||||
|
@NonNull
|
||||||
private final DisplayType mDisplayType;
|
private final DisplayType mDisplayType;
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
private final LocationHelper mLocationHelper;
|
||||||
|
|
||||||
private int mCurrentCompassOffsetX;
|
private int mCurrentCompassOffsetX;
|
||||||
private int mCurrentCompassOffsetY;
|
private int mCurrentCompassOffsetY;
|
||||||
private int mBottomWidgetOffsetX;
|
private int mBottomWidgetOffsetX;
|
||||||
@@ -75,9 +79,10 @@ public final class Map
|
|||||||
|
|
||||||
private static int sCurrentDpi = 0;
|
private static int sCurrentDpi = 0;
|
||||||
|
|
||||||
public Map(DisplayType mapType)
|
public Map(@NonNull DisplayType mapType, @NonNull LocationHelper locationHelper)
|
||||||
{
|
{
|
||||||
mDisplayType = mapType;
|
mDisplayType = mapType;
|
||||||
|
mLocationHelper = locationHelper;
|
||||||
onCreate(false);
|
onCreate(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,9 +174,7 @@ public final class Map
|
|||||||
mRequireResize = false;
|
mRequireResize = false;
|
||||||
setupWidgets(context, surfaceFrame.width(), surfaceFrame.height());
|
setupWidgets(context, surfaceFrame.width(), surfaceFrame.height());
|
||||||
|
|
||||||
final LocationHelper locationHelper = MwmApplication.from(context).getLocationHelper();
|
final boolean firstStart = mLocationHelper.isInFirstRun();
|
||||||
|
|
||||||
final boolean firstStart = locationHelper.isInFirstRun();
|
|
||||||
if (!nativeCreateEngine(surface, surfaceDpi, firstStart, mLaunchByDeepLink, BuildConfig.VERSION_CODE,
|
if (!nativeCreateEngine(surface, surfaceDpi, firstStart, mLaunchByDeepLink, BuildConfig.VERSION_CODE,
|
||||||
ROMUtils.isCustomROM()))
|
ROMUtils.isCustomROM()))
|
||||||
{
|
{
|
||||||
@@ -182,7 +185,7 @@ public final class Map
|
|||||||
sCurrentDpi = surfaceDpi;
|
sCurrentDpi = surfaceDpi;
|
||||||
|
|
||||||
if (firstStart)
|
if (firstStart)
|
||||||
UiThread.runLater(locationHelper::onExitFromFirstRun);
|
UiThread.runLater(mLocationHelper::onExitFromFirstRun);
|
||||||
|
|
||||||
mSurfaceCreated = true;
|
mSurfaceCreated = true;
|
||||||
mSurfaceAttached = true;
|
mSurfaceAttached = true;
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import androidx.lifecycle.DefaultLifecycleObserver;
|
|||||||
import androidx.lifecycle.LifecycleOwner;
|
import androidx.lifecycle.LifecycleOwner;
|
||||||
import androidx.lifecycle.ProcessLifecycleOwner;
|
import androidx.lifecycle.ProcessLifecycleOwner;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.bookmarks.data.BookmarkManager;
|
import app.organicmaps.sdk.bookmarks.data.BookmarkManager;
|
||||||
import app.organicmaps.sdk.bookmarks.data.Icon;
|
import app.organicmaps.sdk.bookmarks.data.Icon;
|
||||||
import app.organicmaps.sdk.downloader.Android7RootCertificateWorkaround;
|
import app.organicmaps.sdk.downloader.Android7RootCertificateWorkaround;
|
||||||
@@ -17,16 +16,16 @@ import app.organicmaps.sdk.location.SensorHelper;
|
|||||||
import app.organicmaps.sdk.maplayer.isolines.IsolinesManager;
|
import app.organicmaps.sdk.maplayer.isolines.IsolinesManager;
|
||||||
import app.organicmaps.sdk.maplayer.subway.SubwayManager;
|
import app.organicmaps.sdk.maplayer.subway.SubwayManager;
|
||||||
import app.organicmaps.sdk.maplayer.traffic.TrafficManager;
|
import app.organicmaps.sdk.maplayer.traffic.TrafficManager;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.search.SearchEngine;
|
import app.organicmaps.sdk.search.SearchEngine;
|
||||||
|
import app.organicmaps.sdk.settings.StoragePathManager;
|
||||||
import app.organicmaps.sdk.sound.TtsPlayer;
|
import app.organicmaps.sdk.sound.TtsPlayer;
|
||||||
import app.organicmaps.sdk.util.Config;
|
import app.organicmaps.sdk.util.Config;
|
||||||
import app.organicmaps.sdk.util.SharedPropertiesUtils;
|
import app.organicmaps.sdk.util.SharedPropertiesUtils;
|
||||||
import app.organicmaps.sdk.util.StorageUtils;
|
import app.organicmaps.sdk.util.StorageUtils;
|
||||||
import app.organicmaps.sdk.util.ThemeSwitcher;
|
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.sdk.util.log.Logger;
|
import app.organicmaps.sdk.util.log.Logger;
|
||||||
import app.organicmaps.sdk.util.log.LogsManager;
|
import app.organicmaps.sdk.util.log.LogsManager;
|
||||||
import app.organicmaps.settings.StoragePathManager;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
public final class OrganicMaps implements DefaultLifecycleObserver
|
public final class OrganicMaps implements DefaultLifecycleObserver
|
||||||
@@ -101,7 +100,7 @@ public final class OrganicMaps implements DefaultLifecycleObserver
|
|||||||
|
|
||||||
mSensorHelper = new SensorHelper(mContext);
|
mSensorHelper = new SensorHelper(mContext);
|
||||||
mLocationHelper = new LocationHelper(mContext, mSensorHelper);
|
mLocationHelper = new LocationHelper(mContext, mSensorHelper);
|
||||||
mIsolinesManager = new IsolinesManager(mContext);
|
mIsolinesManager = new IsolinesManager();
|
||||||
mSubwayManager = new SubwayManager(mContext);
|
mSubwayManager = new SubwayManager(mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,12 +176,10 @@ public final class OrganicMaps implements DefaultLifecycleObserver
|
|||||||
nativeInitFramework(onComplete);
|
nativeInitFramework(onComplete);
|
||||||
|
|
||||||
initNativeStrings();
|
initNativeStrings();
|
||||||
ThemeSwitcher.INSTANCE.initialize(mContext);
|
|
||||||
SearchEngine.INSTANCE.initialize();
|
SearchEngine.INSTANCE.initialize();
|
||||||
BookmarkManager.loadBookmarks();
|
BookmarkManager.loadBookmarks();
|
||||||
TtsPlayer.INSTANCE.initialize(mContext);
|
TtsPlayer.INSTANCE.initialize(mContext);
|
||||||
ThemeSwitcher.INSTANCE.restart(false);
|
RoutingController.get().initialize(mLocationHelper);
|
||||||
RoutingController.get().initialize(mContext);
|
|
||||||
TrafficManager.INSTANCE.initialize();
|
TrafficManager.INSTANCE.initialize();
|
||||||
mSubwayManager.initialize();
|
mSubwayManager.initialize();
|
||||||
mIsolinesManager.initialize();
|
mIsolinesManager.initialize();
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ import java.lang.annotation.RetentionPolicy;
|
|||||||
public @interface RequestType
|
public @interface RequestType
|
||||||
{
|
{
|
||||||
// Represents url_scheme::ParsedMapApi::UrlType from c++ part.
|
// Represents url_scheme::ParsedMapApi::UrlType from c++ part.
|
||||||
public static final int INCORRECT = 0;
|
int INCORRECT = 0;
|
||||||
public static final int MAP = 1;
|
int MAP = 1;
|
||||||
public static final int ROUTE = 2;
|
int ROUTE = 2;
|
||||||
public static final int SEARCH = 3;
|
int SEARCH = 3;
|
||||||
public static final int CROSSHAIR = 4;
|
int CROSSHAIR = 4;
|
||||||
public static final int OAUTH2 = 5;
|
int OAUTH2 = 5;
|
||||||
public static final int MENU = 6;
|
int MENU = 6;
|
||||||
public static final int SETTINGS = 7;
|
int SETTINGS = 7;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,13 +16,12 @@ import androidx.annotation.UiThread;
|
|||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.core.location.GnssStatusCompat;
|
import androidx.core.location.GnssStatusCompat;
|
||||||
import androidx.core.location.LocationManagerCompat;
|
import androidx.core.location.LocationManagerCompat;
|
||||||
import app.organicmaps.MwmApplication;
|
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.Map;
|
import app.organicmaps.sdk.Map;
|
||||||
import app.organicmaps.sdk.bookmarks.data.FeatureId;
|
import app.organicmaps.sdk.bookmarks.data.FeatureId;
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
import app.organicmaps.sdk.routing.JunctionInfo;
|
import app.organicmaps.sdk.routing.JunctionInfo;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.Config;
|
import app.organicmaps.sdk.util.Config;
|
||||||
import app.organicmaps.sdk.util.LocationUtils;
|
import app.organicmaps.sdk.util.LocationUtils;
|
||||||
import app.organicmaps.sdk.util.NetworkPolicy;
|
import app.organicmaps.sdk.util.NetworkPolicy;
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import app.organicmaps.sdk.Framework;
|
|||||||
import app.organicmaps.sdk.maplayer.isolines.IsolinesManager;
|
import app.organicmaps.sdk.maplayer.isolines.IsolinesManager;
|
||||||
import app.organicmaps.sdk.maplayer.subway.SubwayManager;
|
import app.organicmaps.sdk.maplayer.subway.SubwayManager;
|
||||||
import app.organicmaps.sdk.maplayer.traffic.TrafficManager;
|
import app.organicmaps.sdk.maplayer.traffic.TrafficManager;
|
||||||
import app.organicmaps.sdk.util.ThemeSwitcher;
|
|
||||||
|
|
||||||
public enum Mode
|
public enum Mode
|
||||||
{
|
{
|
||||||
@@ -61,7 +60,8 @@ public enum Mode
|
|||||||
public void setEnabled(@NonNull Context context, boolean isEnabled)
|
public void setEnabled(@NonNull Context context, boolean isEnabled)
|
||||||
{
|
{
|
||||||
Framework.nativeSetOutdoorsLayerEnabled(isEnabled);
|
Framework.nativeSetOutdoorsLayerEnabled(isEnabled);
|
||||||
ThemeSwitcher.INSTANCE.restart(true);
|
// TODO: ThemeSwitcher is outside sdk package. Properly fix dependencies
|
||||||
|
// ThemeSwitcher.INSTANCE.restart(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,12 @@
|
|||||||
package app.organicmaps.sdk.maplayer.isolines;
|
package app.organicmaps.sdk.maplayer.isolines;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
|
|
||||||
public class IsolinesManager
|
public class IsolinesManager
|
||||||
{
|
{
|
||||||
@NonNull
|
@NonNull
|
||||||
private final OnIsolinesChangedListener mListener;
|
private final OnIsolinesChangedListener mListener = new OnIsolinesChangedListener();
|
||||||
|
|
||||||
public IsolinesManager(@NonNull Context context)
|
|
||||||
{
|
|
||||||
mListener = new OnIsolinesChangedListener(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
static public boolean isEnabled()
|
static public boolean isEnabled()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,40 +1,9 @@
|
|||||||
package app.organicmaps.sdk.maplayer.isolines;
|
package app.organicmaps.sdk.maplayer.isolines;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.view.View;
|
|
||||||
import android.widget.Toast;
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import app.organicmaps.R;
|
|
||||||
import app.organicmaps.util.Utils;
|
|
||||||
|
|
||||||
public enum IsolinesState
|
public enum IsolinesState
|
||||||
{
|
{
|
||||||
DISABLED,
|
DISABLED,
|
||||||
ENABLED,
|
ENABLED,
|
||||||
EXPIREDDATA {
|
EXPIREDDATA,
|
||||||
@Override
|
NODATA;
|
||||||
public void activate(@NonNull Context context, @Nullable View view, @Nullable View viewAbove)
|
|
||||||
{
|
|
||||||
if (view != null)
|
|
||||||
Utils.showSnackbar(context, view, viewAbove, R.string.isolines_activation_error_dialog);
|
|
||||||
else
|
|
||||||
Toast.makeText(context, R.string.isolines_activation_error_dialog, Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
NODATA {
|
|
||||||
@Override
|
|
||||||
public void activate(@NonNull Context context, @Nullable View view, @Nullable View viewAbove)
|
|
||||||
{
|
|
||||||
if (view != null)
|
|
||||||
Utils.showSnackbar(context, view, viewAbove, R.string.isolines_location_error_dialog);
|
|
||||||
else
|
|
||||||
Toast.makeText(context, R.string.isolines_location_error_dialog, Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public void activate(@NonNull Context context, @Nullable View viewAbove, @Nullable View view)
|
|
||||||
{
|
|
||||||
/* Do nothing by default */
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,33 +1,22 @@
|
|||||||
package app.organicmaps.sdk.maplayer.isolines;
|
package app.organicmaps.sdk.maplayer.isolines;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import androidx.annotation.Keep;
|
import androidx.annotation.Keep;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
class OnIsolinesChangedListener
|
class OnIsolinesChangedListener
|
||||||
{
|
{
|
||||||
@NonNull
|
@Nullable
|
||||||
private final Context mContext;
|
|
||||||
private IsolinesErrorDialogListener mListener;
|
private IsolinesErrorDialogListener mListener;
|
||||||
|
|
||||||
OnIsolinesChangedListener(@NonNull Context app)
|
|
||||||
{
|
|
||||||
mContext = app;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Called from JNI.
|
// Called from JNI.
|
||||||
@Keep
|
@Keep
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public void onStateChanged(int type)
|
public void onStateChanged(int type)
|
||||||
{
|
{
|
||||||
IsolinesState state = IsolinesState.values()[type];
|
|
||||||
if (mListener == null)
|
if (mListener == null)
|
||||||
{
|
|
||||||
state.activate(mContext, null, null);
|
|
||||||
return;
|
return;
|
||||||
}
|
mListener.onStateChanged(IsolinesState.values()[type]);
|
||||||
|
|
||||||
mListener.onStateChanged(state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void attach(@NonNull IsolinesErrorDialogListener listener)
|
public void attach(@NonNull IsolinesErrorDialogListener listener)
|
||||||
|
|||||||
@@ -1,38 +1,19 @@
|
|||||||
package app.organicmaps.routing;
|
package app.organicmaps.sdk.routing;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.text.SpannableStringBuilder;
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import androidx.annotation.DimenRes;
|
|
||||||
import androidx.annotation.IntRange;
|
import androidx.annotation.IntRange;
|
||||||
import androidx.annotation.MainThread;
|
import androidx.annotation.MainThread;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.core.util.Pair;
|
import androidx.core.util.Pair;
|
||||||
import app.organicmaps.MwmApplication;
|
|
||||||
import app.organicmaps.R;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.Router;
|
import app.organicmaps.sdk.Router;
|
||||||
import app.organicmaps.sdk.bookmarks.data.FeatureId;
|
import app.organicmaps.sdk.bookmarks.data.FeatureId;
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
import app.organicmaps.sdk.routing.ResultCodes;
|
import app.organicmaps.sdk.location.LocationHelper;
|
||||||
import app.organicmaps.sdk.routing.RouteMarkData;
|
|
||||||
import app.organicmaps.sdk.routing.RouteMarkType;
|
|
||||||
import app.organicmaps.sdk.routing.RoutePointInfo;
|
|
||||||
import app.organicmaps.sdk.routing.RouteRecommendationType;
|
|
||||||
import app.organicmaps.sdk.routing.RoutingInfo;
|
|
||||||
import app.organicmaps.sdk.routing.RoutingListener;
|
|
||||||
import app.organicmaps.sdk.routing.RoutingLoadPointsListener;
|
|
||||||
import app.organicmaps.sdk.routing.RoutingOptions;
|
|
||||||
import app.organicmaps.sdk.routing.RoutingProgressListener;
|
|
||||||
import app.organicmaps.sdk.routing.TransitRouteInfo;
|
|
||||||
import app.organicmaps.sdk.util.StringUtils;
|
|
||||||
import app.organicmaps.sdk.util.concurrency.UiThread;
|
import app.organicmaps.sdk.util.concurrency.UiThread;
|
||||||
import app.organicmaps.sdk.util.log.Logger;
|
import app.organicmaps.sdk.util.log.Logger;
|
||||||
import app.organicmaps.util.Utils;
|
import app.organicmaps.sdk.widget.placepage.CoordinatesFormat;
|
||||||
import app.organicmaps.widget.placepage.CoordinatesFormat;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
@androidx.annotation.UiThread
|
@androidx.annotation.UiThread
|
||||||
public class RoutingController
|
public class RoutingController
|
||||||
@@ -114,7 +95,7 @@ public class RoutingController
|
|||||||
mLastMissingMaps = missingMaps;
|
mLastMissingMaps = missingMaps;
|
||||||
mContainsCachedResult = true;
|
mContainsCachedResult = true;
|
||||||
|
|
||||||
if (mLastResultCode == ResultCodes.NO_ERROR || ResultCodesHelper.isMoreMapsNeeded(mLastResultCode))
|
if (mLastResultCode == ResultCodes.NO_ERROR || resultCode == ResultCodes.NEED_MORE_MAPS)
|
||||||
{
|
{
|
||||||
onBuiltRoute();
|
onBuiltRoute();
|
||||||
}
|
}
|
||||||
@@ -180,7 +161,7 @@ public class RoutingController
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ResultCodesHelper.isMoreMapsNeeded(mLastResultCode))
|
if (mLastResultCode != ResultCodes.NEED_MORE_MAPS)
|
||||||
{
|
{
|
||||||
setBuildState(BuildState.ERROR);
|
setBuildState(BuildState.ERROR);
|
||||||
mLastBuildProgress = 0;
|
mLastBuildProgress = 0;
|
||||||
@@ -195,8 +176,7 @@ public class RoutingController
|
|||||||
|
|
||||||
private boolean isDrivingOptionsBuildError()
|
private boolean isDrivingOptionsBuildError()
|
||||||
{
|
{
|
||||||
return !ResultCodesHelper.isMoreMapsNeeded(mLastResultCode) && RoutingOptions.hasAnyOptions()
|
return mLastResultCode != ResultCodes.NEED_MORE_MAPS && RoutingOptions.hasAnyOptions() && !isRulerRouterType();
|
||||||
&& !isRulerRouterType();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setState(State newState)
|
private void setState(State newState)
|
||||||
@@ -250,7 +230,7 @@ public class RoutingController
|
|||||||
mContainer = container;
|
mContainer = container;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initialize(@NonNull Context context)
|
public void initialize(@NonNull LocationHelper locationHelper)
|
||||||
{
|
{
|
||||||
mLastRouterType = Router.getLastUsed();
|
mLastRouterType = Router.getLastUsed();
|
||||||
mInvalidRoutePointsTransactionId = Framework.nativeInvalidRoutePointsTransactionId();
|
mInvalidRoutePointsTransactionId = Framework.nativeInvalidRoutePointsTransactionId();
|
||||||
@@ -260,7 +240,7 @@ public class RoutingController
|
|||||||
Framework.nativeSetRouteProgressListener(mRoutingProgressListener);
|
Framework.nativeSetRouteProgressListener(mRoutingProgressListener);
|
||||||
Framework.nativeSetRoutingRecommendationListener(recommendation -> UiThread.run(() -> {
|
Framework.nativeSetRoutingRecommendationListener(recommendation -> UiThread.run(() -> {
|
||||||
if (recommendation == RouteRecommendationType.RebuildAfterPointsLoading)
|
if (recommendation == RouteRecommendationType.RebuildAfterPointsLoading)
|
||||||
setStartPoint(MwmApplication.from(context).getLocationHelper().getMyPosition());
|
setStartPoint(locationHelper.getMyPosition());
|
||||||
}));
|
}));
|
||||||
Framework.nativeSetRoutingLoadPointsListener(mRoutingLoadPointsListener);
|
Framework.nativeSetRoutingLoadPointsListener(mRoutingLoadPointsListener);
|
||||||
}
|
}
|
||||||
@@ -557,7 +537,7 @@ public class RoutingController
|
|||||||
return mLastRouterType == Router.Vehicle;
|
return mLastRouterType == Router.Vehicle;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isRulerRouterType()
|
public boolean isRulerRouterType()
|
||||||
{
|
{
|
||||||
return mLastRouterType == Router.Ruler;
|
return mLastRouterType == Router.Ruler;
|
||||||
}
|
}
|
||||||
@@ -883,26 +863,4 @@ public class RoutingController
|
|||||||
|
|
||||||
mWaitingPoiPickType = null;
|
mWaitingPoiPickType = null;
|
||||||
}
|
}
|
||||||
public static CharSequence formatRoutingTime(Context context, int seconds, @DimenRes int unitsSize)
|
|
||||||
{
|
|
||||||
return formatRoutingTime(context, seconds, unitsSize, R.dimen.text_size_routing_number);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CharSequence formatRoutingTime(Context context, int seconds, @DimenRes int unitsSize,
|
|
||||||
@DimenRes int textSize)
|
|
||||||
{
|
|
||||||
long minutes = TimeUnit.SECONDS.toMinutes(seconds) % 60;
|
|
||||||
long hours = TimeUnit.SECONDS.toHours(seconds);
|
|
||||||
String min = context.getString(R.string.minute);
|
|
||||||
String hour = context.getString(R.string.hour);
|
|
||||||
SpannableStringBuilder displayedH = Utils.formatTime(context, textSize, unitsSize, String.valueOf(hours), hour);
|
|
||||||
SpannableStringBuilder displayedM = Utils.formatTime(context, textSize, unitsSize, String.valueOf(minutes), min);
|
|
||||||
return hours == 0 ? displayedM : TextUtils.concat(displayedH + "\u00A0", displayedM);
|
|
||||||
}
|
|
||||||
|
|
||||||
static String formatArrivalTime(int seconds)
|
|
||||||
{
|
|
||||||
final LocalTime time = LocalTime.now().plusSeconds(seconds);
|
|
||||||
return StringUtils.formatUsingUsLocale("%d:%02d", time.getHour(), time.getMinute());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package app.organicmaps.settings;
|
package app.organicmaps.sdk.settings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents storage option.
|
* Represents storage option.
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package app.organicmaps.settings;
|
package app.organicmaps.sdk.settings;
|
||||||
|
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
@@ -28,7 +28,7 @@ public class StoragePathManager
|
|||||||
private static final String TAG = StoragePathManager.class.getSimpleName();
|
private static final String TAG = StoragePathManager.class.getSimpleName();
|
||||||
private static final String DATA_FILE_EXT = Framework.nativeGetDataFileExt();
|
private static final String DATA_FILE_EXT = Framework.nativeGetDataFileExt();
|
||||||
private static final String[] MOVABLE_EXTS = Framework.nativeGetMovableFilesExts();
|
private static final String[] MOVABLE_EXTS = Framework.nativeGetMovableFilesExts();
|
||||||
static final FilenameFilter MOVABLE_FILES_FILTER = (dir, filename) ->
|
public static final FilenameFilter MOVABLE_FILES_FILTER = (dir, filename) ->
|
||||||
{
|
{
|
||||||
for (String ext : MOVABLE_EXTS)
|
for (String ext : MOVABLE_EXTS)
|
||||||
if (filename.endsWith(ext))
|
if (filename.endsWith(ext))
|
||||||
@@ -37,7 +37,7 @@ public class StoragePathManager
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
interface OnStorageListChangedListener
|
public interface OnStorageListChangedListener
|
||||||
{
|
{
|
||||||
void onStorageListChanged(List<StorageItem> storageItems, int currentStorageIndex);
|
void onStorageListChanged(List<StorageItem> storageItems, int currentStorageIndex);
|
||||||
}
|
}
|
||||||
@@ -231,7 +231,7 @@ public final class Config
|
|||||||
return defaultTheme;
|
return defaultTheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setCurrentUiTheme(@NonNull Context context, @NonNull String theme)
|
public static void setCurrentUiTheme(@NonNull Context context, @NonNull String theme)
|
||||||
{
|
{
|
||||||
if (getCurrentUiTheme(context).equals(theme))
|
if (getCurrentUiTheme(context).equals(theme))
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package app.organicmaps.sdk.util;
|
package app.organicmaps.sdk.util;
|
||||||
|
|
||||||
import app.organicmaps.BuildConfig;
|
|
||||||
|
|
||||||
public final class Constants
|
public final class Constants
|
||||||
{
|
{
|
||||||
public static final int KB = 1024;
|
public static final int KB = 1024;
|
||||||
@@ -36,13 +34,6 @@ public final class Constants
|
|||||||
private Url() {}
|
private Url() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Email
|
|
||||||
{
|
|
||||||
public static final String SUPPORT = BuildConfig.SUPPORT_MAIL;
|
|
||||||
|
|
||||||
private Email() {}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Package
|
public static class Package
|
||||||
{
|
{
|
||||||
public static final String FB_PACKAGE = "com.facebook.katana";
|
public static final String FB_PACKAGE = "com.facebook.katana";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package app.organicmaps.widget.placepage;
|
package app.organicmaps.sdk.widget.placepage;
|
||||||
|
|
||||||
public enum CoordinatesFormat
|
public enum CoordinatesFormat
|
||||||
{
|
{
|
||||||
@@ -26,12 +26,12 @@ import app.organicmaps.MwmApplication;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.base.BaseMwmFragment;
|
import app.organicmaps.base.BaseMwmFragment;
|
||||||
import app.organicmaps.downloader.CountrySuggestFragment;
|
import app.organicmaps.downloader.CountrySuggestFragment;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.bookmarks.data.FeatureId;
|
import app.organicmaps.sdk.bookmarks.data.FeatureId;
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
import app.organicmaps.sdk.downloader.MapManager;
|
import app.organicmaps.sdk.downloader.MapManager;
|
||||||
import app.organicmaps.sdk.location.LocationListener;
|
import app.organicmaps.sdk.location.LocationListener;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.search.SearchEngine;
|
import app.organicmaps.sdk.search.SearchEngine;
|
||||||
import app.organicmaps.sdk.search.SearchListener;
|
import app.organicmaps.sdk.search.SearchListener;
|
||||||
import app.organicmaps.sdk.search.SearchRecents;
|
import app.organicmaps.sdk.search.SearchRecents;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import app.organicmaps.MwmApplication;
|
import app.organicmaps.MwmApplication;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.routing.RoutingController;
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.search.SearchRecents;
|
import app.organicmaps.sdk.search.SearchRecents;
|
||||||
import app.organicmaps.util.Graphics;
|
import app.organicmaps.util.Graphics;
|
||||||
import app.organicmaps.widget.SearchToolbarController;
|
import app.organicmaps.widget.SearchToolbarController;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
import app.organicmaps.MwmApplication;
|
import app.organicmaps.MwmApplication;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.base.BaseMwmRecyclerFragment;
|
import app.organicmaps.base.BaseMwmRecyclerFragment;
|
||||||
import app.organicmaps.routing.RoutingController;
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.widget.PlaceholderView;
|
import app.organicmaps.widget.PlaceholderView;
|
||||||
import app.organicmaps.widget.SearchToolbarController;
|
import app.organicmaps.widget.SearchToolbarController;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.appcompat.widget.SwitchCompat;
|
import androidx.appcompat.widget.SwitchCompat;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.base.BaseMwmToolbarFragment;
|
import app.organicmaps.base.BaseMwmToolbarFragment;
|
||||||
import app.organicmaps.routing.RoutingController;
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.routing.RoutingOptions;
|
import app.organicmaps.sdk.routing.RoutingOptions;
|
||||||
import app.organicmaps.sdk.settings.RoadType;
|
import app.organicmaps.sdk.settings.RoadType;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ import app.organicmaps.sdk.util.Config;
|
|||||||
import app.organicmaps.sdk.util.NetworkPolicy;
|
import app.organicmaps.sdk.util.NetworkPolicy;
|
||||||
import app.organicmaps.sdk.util.PowerManagment;
|
import app.organicmaps.sdk.util.PowerManagment;
|
||||||
import app.organicmaps.sdk.util.SharedPropertiesUtils;
|
import app.organicmaps.sdk.util.SharedPropertiesUtils;
|
||||||
import app.organicmaps.sdk.util.ThemeSwitcher;
|
|
||||||
import app.organicmaps.sdk.util.log.LogsManager;
|
import app.organicmaps.sdk.util.log.LogsManager;
|
||||||
|
import app.organicmaps.util.ThemeSwitcher;
|
||||||
import app.organicmaps.util.Utils;
|
import app.organicmaps.util.Utils;
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.BaseAdapter;
|
import android.widget.BaseAdapter;
|
||||||
import android.widget.CheckedTextView;
|
import android.widget.CheckedTextView;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
|
import app.organicmaps.sdk.settings.StorageItem;
|
||||||
|
import app.organicmaps.sdk.settings.StoragePathManager;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.util.ThemeUtils;
|
import app.organicmaps.util.ThemeUtils;
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import androidx.activity.result.ActivityResultLauncher;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
|
import app.organicmaps.sdk.settings.StorageItem;
|
||||||
|
import app.organicmaps.sdk.settings.StoragePathManager;
|
||||||
import app.organicmaps.sdk.util.Config;
|
import app.organicmaps.sdk.util.Config;
|
||||||
import app.organicmaps.sdk.util.StorageUtils;
|
import app.organicmaps.sdk.util.StorageUtils;
|
||||||
import app.organicmaps.sdk.util.concurrency.ThreadPool;
|
import app.organicmaps.sdk.util.concurrency.ThreadPool;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package app.organicmaps.sdk.util;
|
package app.organicmaps.util;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.UiModeManager;
|
import android.app.UiModeManager;
|
||||||
@@ -10,12 +10,11 @@ import androidx.appcompat.app.AppCompatDelegate;
|
|||||||
import app.organicmaps.MwmApplication;
|
import app.organicmaps.MwmApplication;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.downloader.DownloaderStatusIcon;
|
import app.organicmaps.downloader.DownloaderStatusIcon;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.MapStyle;
|
import app.organicmaps.sdk.MapStyle;
|
||||||
import app.organicmaps.sdk.display.DisplayManager;
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
|
import app.organicmaps.sdk.util.Config;
|
||||||
import app.organicmaps.sdk.util.concurrency.UiThread;
|
import app.organicmaps.sdk.util.concurrency.UiThread;
|
||||||
import app.organicmaps.util.ThemeUtils;
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
|
||||||
public enum ThemeSwitcher
|
public enum ThemeSwitcher
|
||||||
@@ -150,6 +149,7 @@ public enum ThemeSwitcher
|
|||||||
*
|
*
|
||||||
* @return theme_light/dark string
|
* @return theme_light/dark string
|
||||||
*/
|
*/
|
||||||
|
@NonNull
|
||||||
private String calcAutoTheme()
|
private String calcAutoTheme()
|
||||||
{
|
{
|
||||||
String defaultTheme = mContext.getResources().getString(R.string.theme_default);
|
String defaultTheme = mContext.getResources().getString(R.string.theme_default);
|
||||||
@@ -41,12 +41,15 @@ import app.organicmaps.MwmApplication;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.util.Constants;
|
import app.organicmaps.sdk.util.Constants;
|
||||||
import app.organicmaps.sdk.util.Distance;
|
import app.organicmaps.sdk.util.Distance;
|
||||||
|
import app.organicmaps.sdk.util.StringUtils;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.sdk.util.concurrency.UiThread;
|
import app.organicmaps.sdk.util.concurrency.UiThread;
|
||||||
import app.organicmaps.sdk.util.log.Logger;
|
import app.organicmaps.sdk.util.log.Logger;
|
||||||
import app.organicmaps.sdk.util.log.LogsManager;
|
import app.organicmaps.sdk.util.log.LogsManager;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@Keep
|
@Keep
|
||||||
public class Utils
|
public class Utils
|
||||||
@@ -259,7 +262,7 @@ public class Utils
|
|||||||
subject =
|
subject =
|
||||||
activity.getString(R.string.project_name) + " Bug Report" + (TextUtils.isEmpty(subject) ? "" : ": " + subject);
|
activity.getString(R.string.project_name) + " Bug Report" + (TextUtils.isEmpty(subject) ? "" : ": " + subject);
|
||||||
LogsManager.INSTANCE.zipLogs(
|
LogsManager.INSTANCE.zipLogs(
|
||||||
new SupportInfoWithLogsCallback(launcher, activity, subject, body, Constants.Email.SUPPORT));
|
new SupportInfoWithLogsCallback(launcher, activity, subject, body, BuildConfig.SUPPORT_MAIL));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Don't send logs with general feedback, send system information only (version, device name, connectivity,
|
// TODO: Don't send logs with general feedback, send system information only (version, device name, connectivity,
|
||||||
@@ -268,7 +271,7 @@ public class Utils
|
|||||||
@NonNull Activity activity)
|
@NonNull Activity activity)
|
||||||
{
|
{
|
||||||
LogsManager.INSTANCE.zipLogs(new SupportInfoWithLogsCallback(
|
LogsManager.INSTANCE.zipLogs(new SupportInfoWithLogsCallback(
|
||||||
launcher, activity, activity.getString(R.string.project_name) + " Feedback", "", Constants.Email.SUPPORT));
|
launcher, activity, activity.getString(R.string.project_name) + " Feedback", "", BuildConfig.SUPPORT_MAIL));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void navigateToParent(@NonNull Activity activity)
|
public static void navigateToParent(@NonNull Activity activity)
|
||||||
@@ -460,4 +463,30 @@ public class Utils
|
|||||||
return getPackageInfoOld(manager, packageName, flags);
|
return getPackageInfoOld(manager, packageName, flags);
|
||||||
return manager.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(flags));
|
return manager.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(flags));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
public static CharSequence formatRoutingTime(Context context, int seconds, @DimenRes int unitsSize)
|
||||||
|
{
|
||||||
|
return formatRoutingTime(context, seconds, unitsSize, R.dimen.text_size_routing_number);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
public static CharSequence formatRoutingTime(Context context, int seconds, @DimenRes int unitsSize,
|
||||||
|
@DimenRes int textSize)
|
||||||
|
{
|
||||||
|
long minutes = TimeUnit.SECONDS.toMinutes(seconds) % 60;
|
||||||
|
long hours = TimeUnit.SECONDS.toHours(seconds);
|
||||||
|
String min = context.getString(R.string.minute);
|
||||||
|
String hour = context.getString(R.string.hour);
|
||||||
|
SpannableStringBuilder displayedH = Utils.formatTime(context, textSize, unitsSize, String.valueOf(hours), hour);
|
||||||
|
SpannableStringBuilder displayedM = Utils.formatTime(context, textSize, unitsSize, String.valueOf(minutes), min);
|
||||||
|
return hours == 0 ? displayedM : TextUtils.concat(displayedH + "\u00A0", displayedM);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
public static String formatArrivalTime(int seconds)
|
||||||
|
{
|
||||||
|
final LocalTime time = LocalTime.now().plusSeconds(seconds);
|
||||||
|
return StringUtils.formatUsingUsLocale("%d:%02d", time.getHour(), time.getMinute());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.core.widget.NestedScrollView;
|
import androidx.core.widget.NestedScrollView;
|
||||||
import app.organicmaps.ChartController;
|
import app.organicmaps.ChartController;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.bookmarks.data.ElevationInfo;
|
import app.organicmaps.sdk.bookmarks.data.ElevationInfo;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.sdk.widget.placepage.PlacePageData;
|
import app.organicmaps.sdk.widget.placepage.PlacePageData;
|
||||||
|
import app.organicmaps.util.Utils;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@SuppressWarnings("unused") // https://github.com/organicmaps/organicmaps/issues/2829
|
@SuppressWarnings("unused") // https://github.com/organicmaps/organicmaps/issues/2829
|
||||||
@@ -72,8 +72,8 @@ public class ElevationProfileViewRenderer implements PlacePageStateListener
|
|||||||
mMaxAltitude.setText(formatDistance(context, mElevationInfo.getMaxAltitude()));
|
mMaxAltitude.setText(formatDistance(context, mElevationInfo.getMaxAltitude()));
|
||||||
mMinAltitude.setText(formatDistance(context, mElevationInfo.getMinAltitude()));
|
mMinAltitude.setText(formatDistance(context, mElevationInfo.getMinAltitude()));
|
||||||
UiUtils.hideIf(mElevationInfo.getDuration() == 0, mTimeContainer);
|
UiUtils.hideIf(mElevationInfo.getDuration() == 0, mTimeContainer);
|
||||||
mTime.setText(RoutingController.formatRoutingTime(mTitle.getContext(), (int) mElevationInfo.getDuration(),
|
mTime.setText(
|
||||||
R.dimen.text_size_body_2));
|
Utils.formatRoutingTime(mTitle.getContext(), (int) mElevationInfo.getDuration(), R.dimen.text_size_body_2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
|||||||
@@ -25,12 +25,12 @@ import app.organicmaps.MwmActivity;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.api.Const;
|
import app.organicmaps.api.Const;
|
||||||
import app.organicmaps.intent.Factory;
|
import app.organicmaps.intent.Factory;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.ChoosePositionMode;
|
import app.organicmaps.sdk.ChoosePositionMode;
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.bookmarks.data.BookmarkManager;
|
import app.organicmaps.sdk.bookmarks.data.BookmarkManager;
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
import app.organicmaps.sdk.bookmarks.data.RoadWarningMarkType;
|
import app.organicmaps.sdk.bookmarks.data.RoadWarningMarkType;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.settings.RoadType;
|
import app.organicmaps.sdk.settings.RoadType;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.sdk.util.log.Logger;
|
import app.organicmaps.sdk.util.log.Logger;
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ import app.organicmaps.MwmActivity;
|
|||||||
import app.organicmaps.MwmApplication;
|
import app.organicmaps.MwmApplication;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.downloader.DownloaderStatusIcon;
|
import app.organicmaps.downloader.DownloaderStatusIcon;
|
||||||
import app.organicmaps.editor.OhState; //pastk: move?
|
import app.organicmaps.editor.OhState;
|
||||||
import app.organicmaps.routing.RoutingController;
|
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.bookmarks.data.DistanceAndAzimut;
|
import app.organicmaps.sdk.bookmarks.data.DistanceAndAzimut;
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
@@ -39,15 +38,17 @@ import app.organicmaps.sdk.bookmarks.data.Metadata;
|
|||||||
import app.organicmaps.sdk.downloader.CountryItem;
|
import app.organicmaps.sdk.downloader.CountryItem;
|
||||||
import app.organicmaps.sdk.downloader.MapManager;
|
import app.organicmaps.sdk.downloader.MapManager;
|
||||||
import app.organicmaps.sdk.editor.Editor;
|
import app.organicmaps.sdk.editor.Editor;
|
||||||
import app.organicmaps.sdk.editor.OpeningHours; //pastk: a part of Editor?
|
import app.organicmaps.sdk.editor.OpeningHours;
|
||||||
import app.organicmaps.sdk.editor.data.HoursMinutes;
|
import app.organicmaps.sdk.editor.data.HoursMinutes;
|
||||||
import app.organicmaps.sdk.editor.data.Timetable;
|
import app.organicmaps.sdk.editor.data.Timetable;
|
||||||
import app.organicmaps.sdk.location.LocationListener;
|
import app.organicmaps.sdk.location.LocationListener;
|
||||||
import app.organicmaps.sdk.location.SensorListener;
|
import app.organicmaps.sdk.location.SensorListener;
|
||||||
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.util.DateUtils;
|
import app.organicmaps.sdk.util.DateUtils;
|
||||||
import app.organicmaps.sdk.util.StringUtils;
|
import app.organicmaps.sdk.util.StringUtils;
|
||||||
import app.organicmaps.sdk.util.UiUtils;
|
import app.organicmaps.sdk.util.UiUtils;
|
||||||
import app.organicmaps.sdk.util.concurrency.UiThread;
|
import app.organicmaps.sdk.util.concurrency.UiThread;
|
||||||
|
import app.organicmaps.sdk.widget.placepage.CoordinatesFormat;
|
||||||
import app.organicmaps.util.SharingUtils;
|
import app.organicmaps.util.SharingUtils;
|
||||||
import app.organicmaps.util.Utils;
|
import app.organicmaps.util.Utils;
|
||||||
import app.organicmaps.widget.ArrowView;
|
import app.organicmaps.widget.ArrowView;
|
||||||
|
|||||||
Reference in New Issue
Block a user