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).
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="action_create">Action create</string>
<string name="action_modify">Action modify</string>
@ -32,6 +34,7 @@
<string name="shared_string_cancel">Cancel</string>
<string name="shared_string_dismiss">Dismiss</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_on">On</string>
<string name="shared_string_off">Off</string>

View file

@ -32,5 +32,10 @@
android:key="wake_on_voice_int"
android:title="@string/wake_on_voice"
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>
</PreferenceScreen>

View file

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

View file

@ -5,9 +5,14 @@ import java.util.ArrayList;
import java.util.List;
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.OsmandPreference;
import net.osmand.plus.R;
import net.osmand.plus.Version;
import net.osmand.plus.routing.RouteProvider.RouteService;
import net.osmand.router.GeneralRouter;
import net.osmand.router.GeneralRouter.RoutingParameter;
@ -185,13 +190,22 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
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();
}
private void prepareRoutingPrefs(PreferenceScreen screen) {
PreferenceCategory cat = (PreferenceCategory) screen.findPreference("routing_preferences");
cat.removeAll();

View file

@ -19,6 +19,7 @@ import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
@ -66,10 +67,14 @@ public class MapControlsLayer extends OsmandMapLayer {
private MapHudButton routeGoControl;
private MapHudButton compassHud;
private float cachedRotate = 0;
private static long startCounter;
private Runnable delayStart;
private Handler showUIHandler;
public MapControlsLayer(MapActivity activity) {
this.mapActivity = activity;
settings = activity.getMyApplication().getSettings();
}
@Override
@ -84,6 +89,7 @@ public class MapControlsLayer extends OsmandMapLayer {
// TODO
// rulerControl = init(new RulerControl(zoomControls, mapActivity, showUIHandler, scaleCoefficient), parent,
// rightGravity);
showUIHandler = new Handler();
initTransparencyBar(view, parent);
initZooms();
initControls();
@ -102,10 +108,41 @@ public class MapControlsLayer extends OsmandMapLayer {
@Override
public void draw(Canvas canvas) {
canvas.save();
canvas.rotate(cachedRotate, canvas.getWidth() / 2, canvas.getHeight() / 2);
canvas.rotate(cachedRotate, getIntrinsicWidth() / 2, getIntrinsicHeight() / 2);
original.draw(canvas);
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
@ -207,7 +244,12 @@ public class MapControlsLayer extends OsmandMapLayer {
@Override
public void onClick(View v) {
notifyClicked();
startNavigation();
RoutingHelper routingHelper = mapActivity.getMyApplication().getRoutingHelper();
if(!routingHelper.isFollowingMode() && !routingHelper.isRoutePlanningMode()) {
mapActivity.getMapActions().enterRoutePlanningMode(null, null, false);
} else {
startNavigation();
}
}
});
}
@ -318,7 +360,34 @@ public class MapControlsLayer extends OsmandMapLayer {
}
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();
}
}
@ -379,16 +448,30 @@ public class MapControlsLayer extends OsmandMapLayer {
int vis = showRouteCalculationControls ? View.VISIBLE : View.GONE;
if (showRouteCalculationControls) {
((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) {
routePreparationLayout.setVisibility(vis);
mapRouteInfoControlDialog.setVisible(showRouteCalculationControls);
if(showRouteCalculationControls) {
if(!mapActivity.getRoutingHelper().isFollowingMode() && !mapActivity.getRoutingHelper().isPauseNavigation()) {
startCounter();
}
} else {
stopCounter();
}
}
float mapRotate = mapActivity.getMapView().getRotate();
if (mapRotate != cachedRotate) {
float c = cachedRotate - mapRotate;
cachedRotate = mapRotate;
// Aply animation to image view
compassHud.iv.invalidate();
@ -411,26 +494,16 @@ public class MapControlsLayer extends OsmandMapLayer {
}
public boolean onSingleTap(PointF point, RotatedTileBox tileBox) {
// TODO stop counter & show buttons
// for(MapControls m : allControls) {
// if(m.isVisible() && m.onSingleTap(point, tileBox)){
// return true;
// }
// }
if(mapRouteInfoControlDialog.onSingleTap(point, tileBox)) {
return true;
}
stopCounter();
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event, RotatedTileBox tileBox) {
// TODO stop counter & show buttons
// 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);
// }
stopCounter();
return false;
}
@ -570,7 +643,7 @@ public class MapControlsLayer extends OsmandMapLayer {
((ImageView) iv).setImageDrawable(ctx.getIconsCache().getIcon(resId, nightMode ? resDark : resLight));
}
} else if (iv instanceof TextView) {
((TextView) iv).setCompoundDrawables(
((TextView) iv).setCompoundDrawablesWithIntrinsicBounds(
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.IRouteInformationListener;
import net.osmand.plus.views.ContextMenuLayer;
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
import net.osmand.plus.views.OsmandMapTileView;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
@ -28,9 +27,7 @@ import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
@ -38,7 +35,6 @@ import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.Spinner;