This commit is contained in:
Victor Shcherb 2015-03-13 21:47:19 +01:00
parent ce1a2f4ccd
commit 47ab27b5d1
6 changed files with 123 additions and 32 deletions

View file

@ -9,6 +9,8 @@
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="delay_to_start_navigation_descr">Automatically start navigation after specified interval</string>
<string name="delay_to_start_navigation">Skip route planning</string>
<string name="shared_string_go">Go</string> <string name="shared_string_go">Go</string>
<string name="action_create">Action create</string> <string name="action_create">Action create</string>
<string name="action_modify">Action modify</string> <string name="action_modify">Action modify</string>
@ -32,6 +34,7 @@
<string name="shared_string_cancel">Cancel</string> <string name="shared_string_cancel">Cancel</string>
<string name="shared_string_dismiss">Dismiss</string> <string name="shared_string_dismiss">Dismiss</string>
<string name="shared_string_yes">Yes</string> <string name="shared_string_yes">Yes</string>
<string name="shared_string_not_use">Not use</string>
<string name="shared_string_no">No</string> <string name="shared_string_no">No</string>
<string name="shared_string_on">On</string> <string name="shared_string_on">On</string>
<string name="shared_string_off">Off</string> <string name="shared_string_off">Off</string>

View file

@ -32,5 +32,10 @@
android:key="wake_on_voice_int" android:key="wake_on_voice_int"
android:title="@string/wake_on_voice" android:title="@string/wake_on_voice"
android:summary="@string/wake_on_voice_descr" /> android:summary="@string/wake_on_voice_descr" />
<ListPreference
android:key="delay_to_start_navigation"
android:title="@string/delay_to_start_navigation"
android:summary="@string/delay_to_start_navigation_descr" />
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>

View file

@ -160,10 +160,10 @@ public class MapActivity extends AccessibleActivity {
if (tn != null) { if (tn != null) {
((TextView) findViewById(R.id.ProgressMessage)).setText(tn); ((TextView) findViewById(R.id.ProgressMessage)).setText(tn);
} }
if(event == InitEvents.NATIVE_INITIALIZED) { // if(event == InitEvents.NATIVE_INITIALIZED) {
setupOpenGLView(); // setupOpenGLView();
openGlSetup = true; // openGlSetup = true;
} // }
if(event == InitEvents.MAPS_INITIALIZED) { if(event == InitEvents.MAPS_INITIALIZED) {
mapView.refreshMap(true); mapView.refreshMap(true);
} }

View file

@ -5,9 +5,14 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import net.osmand.plus.*; import net.osmand.plus.ApplicationMode;
import net.osmand.plus.DeviceAdminRecv;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.AutoZoomMap; import net.osmand.plus.OsmandSettings.AutoZoomMap;
import net.osmand.plus.OsmandSettings.OsmandPreference; import net.osmand.plus.OsmandSettings.OsmandPreference;
import net.osmand.plus.R;
import net.osmand.plus.Version;
import net.osmand.plus.routing.RouteProvider.RouteService; import net.osmand.plus.routing.RouteProvider.RouteService;
import net.osmand.router.GeneralRouter; import net.osmand.router.GeneralRouter;
import net.osmand.router.GeneralRouter.RoutingParameter; import net.osmand.router.GeneralRouter.RoutingParameter;
@ -184,13 +189,22 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
if (!mode.isDerivedRoutingFrom(ApplicationMode.CAR)) { if (!mode.isDerivedRoutingFrom(ApplicationMode.CAR)) {
category.removePreference(speedLimitExceed); category.removePreference(speedLimitExceed);
} }
Integer[] delayIntervals = new Integer[] { -1, 3, 5, 7, 10, 15, 20 };
String[] delayIntervalNames = new String[delayIntervals.length];
for (int i = 0; i < delayIntervals.length; i++) {
if (i == 0) {
delayIntervalNames[i] = getString(R.string.shared_string_not_use);
} else {
delayIntervalNames[i] = delayIntervals[i] + " " + getString(R.string.int_seconds);
}
}
registerListPreference(settings.DELAY_TO_START_NAVIGATION, screen, delayIntervalNames, delayIntervals);
profileDialog(); profileDialog();
} }
private void prepareRoutingPrefs(PreferenceScreen screen) { private void prepareRoutingPrefs(PreferenceScreen screen) {
PreferenceCategory cat = (PreferenceCategory) screen.findPreference("routing_preferences"); PreferenceCategory cat = (PreferenceCategory) screen.findPreference("routing_preferences");

View file

@ -19,6 +19,7 @@ import android.graphics.Color;
import android.graphics.ColorFilter; import android.graphics.ColorFilter;
import android.graphics.PointF; import android.graphics.PointF;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.view.Gravity; import android.view.Gravity;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
@ -66,10 +67,14 @@ public class MapControlsLayer extends OsmandMapLayer {
private MapHudButton routeGoControl; private MapHudButton routeGoControl;
private MapHudButton compassHud; private MapHudButton compassHud;
private float cachedRotate = 0; private float cachedRotate = 0;
private static long startCounter;
private Runnable delayStart;
private Handler showUIHandler;
public MapControlsLayer(MapActivity activity) { public MapControlsLayer(MapActivity activity) {
this.mapActivity = activity; this.mapActivity = activity;
settings = activity.getMyApplication().getSettings(); settings = activity.getMyApplication().getSettings();
} }
@Override @Override
@ -84,6 +89,7 @@ public class MapControlsLayer extends OsmandMapLayer {
// TODO // TODO
// rulerControl = init(new RulerControl(zoomControls, mapActivity, showUIHandler, scaleCoefficient), parent, // rulerControl = init(new RulerControl(zoomControls, mapActivity, showUIHandler, scaleCoefficient), parent,
// rightGravity); // rightGravity);
showUIHandler = new Handler();
initTransparencyBar(view, parent); initTransparencyBar(view, parent);
initZooms(); initZooms();
initControls(); initControls();
@ -102,10 +108,41 @@ public class MapControlsLayer extends OsmandMapLayer {
@Override @Override
public void draw(Canvas canvas) { public void draw(Canvas canvas) {
canvas.save(); canvas.save();
canvas.rotate(cachedRotate, canvas.getWidth() / 2, canvas.getHeight() / 2); canvas.rotate(cachedRotate, getIntrinsicWidth() / 2, getIntrinsicHeight() / 2);
original.draw(canvas); original.draw(canvas);
canvas.restore(); canvas.restore();
}
@Override
public int getMinimumHeight() {
return original.getMinimumHeight();
}
@Override
public int getMinimumWidth() {
return original.getMinimumWidth();
}
@Override
public int getIntrinsicHeight() {
return original.getIntrinsicHeight();
}
@Override
public int getIntrinsicWidth() {
return original.getIntrinsicWidth();
}
@Override
public void setChangingConfigurations(int configs) {
super.setChangingConfigurations(configs);
original.setChangingConfigurations(configs);
}
@Override
public void setBounds(int left, int top, int right, int bottom) {
super.setBounds(left, top, right, bottom);
original.setBounds(left, top, right, bottom);
} }
@Override @Override
@ -207,7 +244,12 @@ public class MapControlsLayer extends OsmandMapLayer {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
notifyClicked(); notifyClicked();
startNavigation(); RoutingHelper routingHelper = mapActivity.getMyApplication().getRoutingHelper();
if(!routingHelper.isFollowingMode() && !routingHelper.isRoutePlanningMode()) {
mapActivity.getMapActions().enterRoutePlanningMode(null, null, false);
} else {
startNavigation();
}
} }
}); });
} }
@ -318,9 +360,36 @@ public class MapControlsLayer extends OsmandMapLayer {
} }
private void stopCounter() { private void stopCounter() {
// TODO stop counter startCounter = 0;
} }
public void startCounter() {
OsmandSettings settings = mapActivity.getMyApplication().getSettings();
int del = settings.DELAY_TO_START_NAVIGATION.get();
if(del <= 0) {
return;
}
if (startCounter <= 0) {
startCounter = System.currentTimeMillis() + del * 1000;
delayStart = new Runnable() {
@Override
public void run() {
if (startCounter > 0) {
if (System.currentTimeMillis() > startCounter) {
startCounter = 0;
startNavigation();
} else {
mapActivity.refreshMap();
showUIHandler.postDelayed(delayStart, 1000);
}
}
}
};
delayStart.run();
}
}
protected void notifyClicked(MapControls m) { protected void notifyClicked(MapControls m) {
notifyClicked(); notifyClicked();
@ -379,16 +448,30 @@ public class MapControlsLayer extends OsmandMapLayer {
int vis = showRouteCalculationControls ? View.VISIBLE : View.GONE; int vis = showRouteCalculationControls ? View.VISIBLE : View.GONE;
if (showRouteCalculationControls) { if (showRouteCalculationControls) {
((TextView) routeGoControl.iv).setTextColor(textColor); ((TextView) routeGoControl.iv).setTextColor(textColor);
final String text ;
if (startCounter > 0) {
int get = (int) ((startCounter - System.currentTimeMillis()) / 1000l);
text = mapActivity.getString(R.string.shared_string_go) + " (" + get + ")";
} else {
text = mapActivity.getString(R.string.shared_string_go) ;
}
((TextView) routeGoControl.iv).setText(text);
} }
if (routePreparationLayout.getVisibility() != vis) { if (routePreparationLayout.getVisibility() != vis) {
routePreparationLayout.setVisibility(vis); routePreparationLayout.setVisibility(vis);
mapRouteInfoControlDialog.setVisible(showRouteCalculationControls); mapRouteInfoControlDialog.setVisible(showRouteCalculationControls);
if(showRouteCalculationControls) {
if(!mapActivity.getRoutingHelper().isFollowingMode() && !mapActivity.getRoutingHelper().isPauseNavigation()) {
startCounter();
}
} else {
stopCounter();
}
} }
float mapRotate = mapActivity.getMapView().getRotate(); float mapRotate = mapActivity.getMapView().getRotate();
if (mapRotate != cachedRotate) { if (mapRotate != cachedRotate) {
float c = cachedRotate - mapRotate;
cachedRotate = mapRotate; cachedRotate = mapRotate;
// Aply animation to image view // Aply animation to image view
compassHud.iv.invalidate(); compassHud.iv.invalidate();
@ -411,26 +494,16 @@ public class MapControlsLayer extends OsmandMapLayer {
} }
public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { public boolean onSingleTap(PointF point, RotatedTileBox tileBox) {
// TODO stop counter & show buttons if(mapRouteInfoControlDialog.onSingleTap(point, tileBox)) {
// for(MapControls m : allControls) { return true;
// if(m.isVisible() && m.onSingleTap(point, tileBox)){ }
// return true; stopCounter();
// }
// }
return false; return false;
} }
@Override @Override
public boolean onTouchEvent(MotionEvent event, RotatedTileBox tileBox) { public boolean onTouchEvent(MotionEvent event, RotatedTileBox tileBox) {
// TODO stop counter & show buttons stopCounter();
// if(!mapActivity.getRoutingHelper().isRoutePlanningMode() && mapActivity.getRoutingHelper().isFollowingMode())
// {
// if(!settings.SHOW_ZOOM_BUTTONS_NAVIGATION.get()) {
// zoomControls.showWithDelay(getParent(), TIMEOUT_TO_SHOW_BUTTONS);
// mapMenuControls.showWithDelay(getParent(), TIMEOUT_TO_SHOW_BUTTONS);
// }
// mapRoutePlanControl.showWithDelay(getParent(), TIMEOUT_TO_SHOW_BUTTONS);
// }
return false; return false;
} }
@ -570,7 +643,7 @@ public class MapControlsLayer extends OsmandMapLayer {
((ImageView) iv).setImageDrawable(ctx.getIconsCache().getIcon(resId, nightMode ? resDark : resLight)); ((ImageView) iv).setImageDrawable(ctx.getIconsCache().getIcon(resId, nightMode ? resDark : resLight));
} }
} else if (iv instanceof TextView) { } else if (iv instanceof TextView) {
((TextView) iv).setCompoundDrawables( ((TextView) iv).setCompoundDrawablesWithIntrinsicBounds(
ctx.getIconsCache().getIcon(resId, nightMode ? resDark : resLight), null, null, null); ctx.getIconsCache().getIcon(resId, nightMode ? resDark : resLight), null, null, null);
} }
} }

View file

@ -20,7 +20,6 @@ import net.osmand.plus.routing.RouteDirectionInfo;
import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.routing.RoutingHelper.IRouteInformationListener; import net.osmand.plus.routing.RoutingHelper.IRouteInformationListener;
import net.osmand.plus.views.ContextMenuLayer; import net.osmand.plus.views.ContextMenuLayer;
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
import net.osmand.plus.views.OsmandMapTileView; import net.osmand.plus.views.OsmandMapTileView;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.AlertDialog.Builder; import android.app.AlertDialog.Builder;
@ -28,9 +27,7 @@ import android.app.Dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener; import android.content.DialogInterface.OnDismissListener;
import android.content.Intent; import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.PointF; import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
@ -38,7 +35,6 @@ import android.view.WindowManager;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ListView; import android.widget.ListView;
import android.widget.Spinner; import android.widget.Spinner;