Added 'Recalculate route' item to route finished dialog

This commit is contained in:
Alexey Kulish 2016-02-27 16:57:00 +03:00
parent 4ded35ea43
commit 778082f117
7 changed files with 138 additions and 41 deletions

View file

@ -72,26 +72,6 @@
</LinearLayout> </LinearLayout>
<Button
android:id="@+id/removeDestButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:drawableLeft="@drawable/ic_action_delete_dark"
android:drawablePadding="12dp"
android:gravity="left|center_vertical"
android:textColor="?android:textColorPrimary"
style="@style/Widget.AppCompat.Button.Borderless"
android:text="@string/delete_target_point"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<Button <Button
android:id="@+id/findParkingButton" android:id="@+id/findParkingButton"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -107,6 +87,46 @@
style="@style/Widget.AppCompat.Button.Borderless" style="@style/Widget.AppCompat.Button.Borderless"
android:text="@string/find_parking"/> android:text="@string/find_parking"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<Button
android:id="@+id/recalcDestButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:drawableLeft="@drawable/ic_action_gdirections_dark"
android:drawablePadding="12dp"
android:gravity="left|center_vertical"
android:textColor="?android:textColorPrimary"
style="@style/Widget.AppCompat.Button.Borderless"
android:text="@string/recalculate_route"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<Button
android:id="@+id/removeDestButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:drawableLeft="@drawable/ic_action_delete_dark"
android:drawablePadding="12dp"
android:gravity="left|center_vertical"
android:textColor="?android:textColorPrimary"
style="@style/Widget.AppCompat.Button.Borderless"
android:text="@string/delete_target_point"/>
</LinearLayout> </LinearLayout>

View file

@ -72,26 +72,6 @@
</LinearLayout> </LinearLayout>
<Button
android:id="@+id/removeDestButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:drawableLeft="@drawable/ic_action_delete_dark"
android:drawablePadding="12dp"
android:gravity="left|center_vertical"
android:textColor="?android:textColorPrimary"
style="@style/Widget.AppCompat.Button.Borderless"
android:text="@string/delete_target_point"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<Button <Button
android:id="@+id/findParkingButton" android:id="@+id/findParkingButton"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -107,6 +87,46 @@
style="@style/Widget.AppCompat.Button.Borderless" style="@style/Widget.AppCompat.Button.Borderless"
android:text="@string/find_parking"/> android:text="@string/find_parking"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<Button
android:id="@+id/recalcDestButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:drawableLeft="@drawable/ic_action_gdirections_dark"
android:drawablePadding="12dp"
android:gravity="left|center_vertical"
android:textColor="?android:textColorPrimary"
style="@style/Widget.AppCompat.Button.Borderless"
android:text="@string/recalculate_route"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<Button
android:id="@+id/removeDestButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:drawableLeft="@drawable/ic_action_delete_dark"
android:drawablePadding="12dp"
android:gravity="left|center_vertical"
android:textColor="?android:textColorPrimary"
style="@style/Widget.AppCompat.Button.Borderless"
android:text="@string/delete_target_point"/>
</LinearLayout> </LinearLayout>

View file

@ -9,6 +9,7 @@
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
--> -->
<string name="recalculate_route">Recalculate route</string>
<string name="donations">Donations</string> <string name="donations">Donations</string>
<string name="number_of_recipients">Number of recipients</string> <string name="number_of_recipients">Number of recipients</string>
<string name="osm_user_stat">Edits %1$s, rank %2$s, total edits %3$s</string> <string name="osm_user_stat">Edits %1$s, rank %2$s, total edits %3$s</string>

View file

@ -437,6 +437,34 @@ public class MapActivityActions implements DialogProvider {
} }
} }
public void recalculateRoute(boolean showDialog) {
settings.USE_INTERMEDIATE_POINTS_NAVIGATION.set(true);
OsmandApplication app = mapActivity.getMyApplication();
TargetPointsHelper targets = app.getTargetPointsHelper();
ApplicationMode mode = getRouteMode(null);
app.getSettings().APPLICATION_MODE.set(mode);
app.getRoutingHelper().setAppMode(mode);
app.initVoiceCommandPlayer(mapActivity);
// save application mode controls
settings.FOLLOW_THE_ROUTE.set(false);
app.getRoutingHelper().setFollowingMode(false);
app.getRoutingHelper().setRoutePlanningMode(true);
// reset start point
targets.setStartPoint(null, false, null);
// then update start and destination point
targets.updateRouteAndRefresh(true);
mapActivity.getMapViewTrackingUtilities().switchToRoutePlanningMode();
mapActivity.getMapView().refreshMap(true);
if (showDialog) {
mapActivity.getMapLayers().getMapControlsLayer().showDialog();
}
if (targets.hasTooLongDistanceToNavigate()) {
app.showToastMessage(R.string.route_is_too_long);
}
}
public ApplicationMode getRouteMode(LatLon from) { public ApplicationMode getRouteMode(LatLon from) {
ApplicationMode mode = settings.DEFAULT_APPLICATION_MODE.get(); ApplicationMode mode = settings.DEFAULT_APPLICATION_MODE.get();
ApplicationMode selected = settings.APPLICATION_MODE.get(); ApplicationMode selected = settings.APPLICATION_MODE.get();

View file

@ -12,8 +12,10 @@ import android.widget.Button;
import android.widget.ImageButton; import android.widget.ImageButton;
import net.osmand.AndroidUtils; import net.osmand.AndroidUtils;
import net.osmand.data.LatLon;
import net.osmand.plus.IconsCache; import net.osmand.plus.IconsCache;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.TargetPointsHelper.TargetPoint; import net.osmand.plus.TargetPointsHelper.TargetPoint;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.search.SearchActivity; import net.osmand.plus.activities.search.SearchActivity;
@ -74,6 +76,27 @@ public class DestinationReachedMenuFragment extends Fragment {
} }
}); });
Button recalcDestButton = (Button) view.findViewById(R.id.recalcDestButton);
recalcDestButton.setCompoundDrawablesWithIntrinsicBounds(
iconsCache.getContentIcon(R.drawable.ic_action_gdirections_dark), null, null, null);
recalcDestButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TargetPointsHelper helper = getMapActivity().getMyApplication().getTargetPointsHelper();
TargetPoint target = helper.getPointToNavigate();
dismissMenu();
if (target != null) {
helper.navigateToPoint(new LatLon(target.getLatitude(), target.getLongitude()),
true, -1, target.getOriginalPointDescription());
getMapActivity().getMapActions().recalculateRoute(false);
getMapActivity().getMapLayers().getMapControlsLayer().startNavigation();
}
}
});
Button findParkingButton = (Button) view.findViewById(R.id.findParkingButton); Button findParkingButton = (Button) view.findViewById(R.id.findParkingButton);
findParkingButton.setCompoundDrawablesWithIntrinsicBounds( findParkingButton.setCompoundDrawablesWithIntrinsicBounds(
iconsCache.getContentIcon(R.drawable.ic_action_parking_dark), null, null, null); iconsCache.getContentIcon(R.drawable.ic_action_parking_dark), null, null, null);
@ -131,6 +154,7 @@ public class DestinationReachedMenuFragment extends Fragment {
} }
public void dismissMenu() { public void dismissMenu() {
getMapActivity().getMapActions().stopNavigationWithoutConfirm();
getMapActivity().getSupportFragmentManager().popBackStack(); getMapActivity().getSupportFragmentManager().popBackStack();
} }

View file

@ -426,7 +426,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener {
} }
}; };
MapMarkerSelectionFragment selectionFragment = new MapMarkerSelectionFragment(); MapMarkerSelectionFragment selectionFragment = MapMarkerSelectionFragment.newInstance();
selectionFragment.setClickListener(click); selectionFragment.setClickListener(click);
selectionFragment.setDismissListener(dismissListener); selectionFragment.setDismissListener(dismissListener);
selectionFragment.show(mapActivity.getSupportFragmentManager(), MapMarkerSelectionFragment.TAG); selectionFragment.show(mapActivity.getSupportFragmentManager(), MapMarkerSelectionFragment.TAG);

View file

@ -133,6 +133,10 @@ public class MapMarkerSelectionFragment extends BaseOsmAndDialogFragment {
} }
} }
public static MapMarkerSelectionFragment newInstance() {
return new MapMarkerSelectionFragment();
}
public MapActivity getMapActivity() { public MapActivity getMapActivity() {
Context ctx = getContext(); Context ctx = getContext();
if (ctx instanceof MapActivity) { if (ctx instanceof MapActivity) {