Fix #7778
This commit is contained in:
parent
0decd1d6e8
commit
5c335cf87d
8 changed files with 81 additions and 123 deletions
|
@ -1,78 +1,63 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical">
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RadioGroup
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/animate_routing_gpx" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_route"
|
||||
android:text="@string/animate_routing_route"
|
||||
android:checked="true"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_weight="1" />
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_animate_gpx"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_gpx"
|
||||
android:text="@string/animate_routing_gpx"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_weight="1" />
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:gravity="left"
|
||||
android:text="@string/select_animate_speedup" />
|
||||
|
||||
</RadioGroup>
|
||||
<SeekBar
|
||||
android:id="@+id/Speedup"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginRight="16dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:id="@+id/layout_animate_gpx"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginRight="16dp">
|
||||
|
||||
<TextView
|
||||
android:text="@string/select_animate_speedup"
|
||||
android:gravity="left"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginTop="5dp" />
|
||||
<TextView
|
||||
android:id="@+id/MinSpeedup"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"
|
||||
android:gravity="left"
|
||||
android:text="10" />
|
||||
|
||||
<SeekBar
|
||||
android:id="@+id/Speedup"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginTop="5dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginTop="5dp">
|
||||
|
||||
<TextView
|
||||
android:text="10"
|
||||
android:gravity="left"
|
||||
android:layout_weight="0.5"
|
||||
android:id="@+id/MinSpeedup"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:text="15"
|
||||
android:gravity="right"
|
||||
android:layout_weight="0.5"
|
||||
android:id="@+id/MaxSpeedup"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:id="@+id/MaxSpeedup"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"
|
||||
android:gravity="right"
|
||||
android:text="15" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
@ -52,23 +52,13 @@ public class OsmAndLocationSimulation {
|
|||
// }
|
||||
|
||||
|
||||
public void startStopRouteAnimation(final Activity ma, final Runnable runnable) {
|
||||
public void startStopRouteAnimation(final Activity ma, boolean useGpx, final Runnable runnable) {
|
||||
if (!isRouteAnimating()) {
|
||||
if (app.getSettings().SIMULATE_NAVIGATION_GPX.get()) {
|
||||
if (useGpx) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(ma);
|
||||
builder.setTitle(R.string.animate_route);
|
||||
|
||||
final View view = ma.getLayoutInflater().inflate(R.layout.animate_route, null);
|
||||
final View gpxView = ((LinearLayout) view.findViewById(R.id.layout_animate_gpx));
|
||||
final RadioButton radioGPX = (RadioButton) view.findViewById(R.id.radio_gpx);
|
||||
radioGPX.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
gpxView.setVisibility(isChecked ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
});
|
||||
|
||||
((TextView) view.findViewById(R.id.MinSpeedup)).setText("1"); //$NON-NLS-1$
|
||||
((TextView) view.findViewById(R.id.MaxSpeedup)).setText("4"); //$NON-NLS-1$
|
||||
final SeekBar speedup = (SeekBar) view.findViewById(R.id.Speedup);
|
||||
|
@ -78,33 +68,18 @@ public class OsmAndLocationSimulation {
|
|||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
boolean gpxNavigation = radioGPX.isChecked();
|
||||
if (gpxNavigation) {
|
||||
boolean nightMode = ma instanceof MapActivity ? app.getDaynightHelper().isNightModeForMapControls() : !app.getSettings().isLightContent();
|
||||
GpxUiHelper.selectGPXFile(ma, false, false, new CallbackWithObject<GPXUtilities.GPXFile[]>() {
|
||||
@Override
|
||||
public boolean processResult(GPXUtilities.GPXFile[] result) {
|
||||
GPXRouteParamsBuilder builder = new GPXRouteParamsBuilder(result[0], app.getSettings());
|
||||
startAnimationThread(app, builder.getPoints(), true, speedup.getProgress() + 1);
|
||||
if (runnable != null) {
|
||||
runnable.run();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}, nightMode);
|
||||
} else {
|
||||
List<Location> currentRoute = app.getRoutingHelper().getCurrentCalculatedRoute();
|
||||
if (currentRoute.isEmpty()) {
|
||||
Toast.makeText(app, R.string.animate_routing_route_not_calculated,
|
||||
Toast.LENGTH_LONG).show();
|
||||
} else {
|
||||
startAnimationThread(app, new ArrayList<Location>(currentRoute), false, 1);
|
||||
boolean nightMode = ma instanceof MapActivity ? app.getDaynightHelper().isNightModeForMapControls() : !app.getSettings().isLightContent();
|
||||
GpxUiHelper.selectGPXFile(ma, false, false, new CallbackWithObject<GPXUtilities.GPXFile[]>() {
|
||||
@Override
|
||||
public boolean processResult(GPXUtilities.GPXFile[] result) {
|
||||
GPXRouteParamsBuilder builder = new GPXRouteParamsBuilder(result[0], app.getSettings());
|
||||
startAnimationThread(app, builder.getPoints(), true, speedup.getProgress() + 1);
|
||||
if (runnable != null) {
|
||||
runnable.run();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}, nightMode);
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.shared_string_cancel, null);
|
||||
|
@ -123,11 +98,18 @@ public class OsmAndLocationSimulation {
|
|||
}
|
||||
} else {
|
||||
stop();
|
||||
if (runnable != null) {
|
||||
runnable.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void startStopRouteAnimation(final Activity ma) {
|
||||
startStopRouteAnimation(ma, null);
|
||||
startStopRouteAnimation(ma, false, null);
|
||||
}
|
||||
|
||||
public void startStopGpxAnimation(final Activity ma) {
|
||||
startStopRouteAnimation(ma, true, null);
|
||||
}
|
||||
|
||||
private void startAnimationThread(final OsmandApplication app, final List<Location> directions, final boolean useLocationTime, final float coeff) {
|
||||
|
|
|
@ -1577,8 +1577,8 @@ public class OsmandSettings {
|
|||
// dev version
|
||||
public final CommonPreference<Boolean> DISABLE_COMPLEX_ROUTING = new BooleanPreference("disable_complex_routing", false).makeGlobal();
|
||||
public final CommonPreference<Boolean> ENABLE_TIME_CONDITIONAL_ROUTING = new BooleanPreference("enable_time_conditional_routing", true).makeProfile();
|
||||
public final CommonPreference<Boolean> SIMULATE_NAVIGATION = new BooleanPreference("simulate_navigation", false).makeGlobal().cache();
|
||||
public final CommonPreference<Boolean> SIMULATE_NAVIGATION_GPX = new BooleanPreference("simulate_navigation_gpx", false).makeGlobal().cache();
|
||||
|
||||
public boolean simulateNavigation = false;
|
||||
|
||||
public final CommonPreference<Boolean> SHOW_ROUTING_ALARMS = new BooleanPreference("show_routing_alarms", true).makeProfile().cache();
|
||||
|
||||
|
|
|
@ -2124,7 +2124,7 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
|||
mapView.fitRectToMap(left, right, top, bottom, tileBoxWidthPx, tileBoxHeightPx, 0);
|
||||
}
|
||||
}
|
||||
if (app.getSettings().SIMULATE_NAVIGATION.get()) {
|
||||
if (app.getSettings().simulateNavigation) {
|
||||
OsmAndLocationSimulation sim = app.getLocationProvider().getLocationSimulation();
|
||||
if (newRoute && rh.isFollowingMode() && !sim.isRouteAnimating()) {
|
||||
sim.startStopRouteAnimation(this);
|
||||
|
|
|
@ -61,7 +61,7 @@ public class DashSimulateFragment extends DashBaseFragment {
|
|||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
loc.getLocationSimulation().startStopRouteAnimation(getActivity());
|
||||
loc.getLocationSimulation().startStopGpxAnimation(getActivity());
|
||||
dashboard.hideDashboard();
|
||||
}
|
||||
};
|
||||
|
|
|
@ -64,11 +64,6 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
|
|||
R.string.use_osm_live_public_transport,
|
||||
R.string.use_osm_live_public_transport_description));
|
||||
|
||||
navigation.addPreference(createCheckBoxPreference(settings.SIMULATE_NAVIGATION_GPX,
|
||||
R.string.simulate_your_location,
|
||||
R.string.simulate_your_location_gpx_descr));
|
||||
|
||||
/*
|
||||
pref = new Preference(this);
|
||||
final Preference simulate = pref;
|
||||
final OsmAndLocationSimulation sim = getMyApplication().getLocationProvider().getLocationSimulation();
|
||||
|
@ -77,7 +72,7 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
|
|||
@Override
|
||||
public void run() {
|
||||
simulate.setSummary(sim.isRouteAnimating() ?
|
||||
R.string.simulate_your_location_stop_descr : R.string.simulate_your_location_descr);
|
||||
R.string.simulate_your_location_stop_descr : R.string.simulate_your_location_gpx_descr);
|
||||
}
|
||||
};
|
||||
pref.setTitle(R.string.simulate_your_location);
|
||||
|
@ -87,12 +82,11 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
|
|||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
updateTitle.run();
|
||||
sim.startStopRouteAnimation(SettingsDevelopmentActivity.this, updateTitle);
|
||||
sim.startStopRouteAnimation(SettingsDevelopmentActivity.this, true, updateTitle);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
navigation.addPreference(pref);
|
||||
*/
|
||||
|
||||
PreferenceCategory debug = new PreferenceCategory(this);
|
||||
debug.setTitle(R.string.debugging_and_development);
|
||||
|
|
|
@ -15,10 +15,8 @@ import net.osmand.AndroidUtils;
|
|||
import net.osmand.CallbackWithObject;
|
||||
import net.osmand.GPXUtilities;
|
||||
import net.osmand.plus.ApplicationMode;
|
||||
import net.osmand.plus.OsmAndLocationProvider;
|
||||
import net.osmand.plus.OsmAndLocationSimulation;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandPlugin;
|
||||
import net.osmand.plus.OsmandSettings;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
|
@ -30,7 +28,6 @@ import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton;
|
|||
import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem;
|
||||
import net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerStartItem;
|
||||
import net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem;
|
||||
import net.osmand.plus.development.OsmandDevelopmentPlugin;
|
||||
import net.osmand.plus.helpers.GpxUiHelper;
|
||||
import net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.AvoidPTTypesRoutingParameter;
|
||||
import net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.AvoidRoadsRoutingParameter;
|
||||
|
@ -207,7 +204,7 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
private BaseBottomSheetItem createRouteSimulationItem(final LocalRoutingParameter optionsItem) {
|
||||
final BottomSheetItemWithCompoundButton[] simulateNavigationItem = new BottomSheetItemWithCompoundButton[1];
|
||||
simulateNavigationItem[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setChecked(settings.SIMULATE_NAVIGATION.get())
|
||||
.setChecked(settings.simulateNavigation)
|
||||
.setIcon(getContentIcon(R.drawable.ic_action_start_navigation))
|
||||
.setTitle(getString(R.string.simulate_navigation))
|
||||
// .setDescription(app.getLocationProvider().getLocationSimulation().isRouteAnimating()
|
||||
|
@ -216,8 +213,8 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
boolean enabled = !settings.SIMULATE_NAVIGATION.get();
|
||||
settings.SIMULATE_NAVIGATION.set(enabled);
|
||||
boolean enabled = !settings.simulateNavigation;
|
||||
settings.simulateNavigation = enabled;
|
||||
simulateNavigationItem[0].setChecked(enabled);
|
||||
OsmAndLocationSimulation sim = app.getLocationProvider().getLocationSimulation();
|
||||
if (sim.isRouteAnimating()) {
|
||||
|
|
|
@ -723,7 +723,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
routingHelper.setRoutePlanningMode(false);
|
||||
mapActivity.getMapViewTrackingUtilities().switchToRoutePlanningMode();
|
||||
app.getRoutingHelper().notifyIfRouteIsCalculated();
|
||||
if (!app.getSettings().SIMULATE_NAVIGATION.get()) {
|
||||
if (!app.getSettings().simulateNavigation) {
|
||||
routingHelper.setCurrentLocation(app.getLocationProvider().getLastKnownLocation(), false);
|
||||
} else if (routingHelper.isRouteCalculated() && !routingHelper.isRouteBeingCalculated()) {
|
||||
OsmAndLocationSimulation sim = app.getLocationProvider().getLocationSimulation();
|
||||
|
|
Loading…
Reference in a new issue