diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml
index 7b0fc81b91..c4a27193e0 100644
--- a/OsmAnd/res/values/strings.xml
+++ b/OsmAnd/res/values/strings.xml
@@ -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
-->
+ Hiking
+ Motorcycle
Boat
Aircraft
Please visit https://code.google.com/p/osmand/wiki/FAQ to see frequently asked questions.
diff --git a/OsmAnd/src/net/osmand/plus/ApplicationMode.java b/OsmAnd/src/net/osmand/plus/ApplicationMode.java
index b26f7c8e4c..65f28a4c9a 100644
--- a/OsmAnd/src/net/osmand/plus/ApplicationMode.java
+++ b/OsmAnd/src/net/osmand/plus/ApplicationMode.java
@@ -14,30 +14,96 @@ public class ApplicationMode {
/*
* DEFAULT("Browse map"), CAR("Car"), BICYCLE("Bicycle"), PEDESTRIAN("Pedestrian");
*/
- public static final ApplicationMode DEFAULT = reg(R.string.app_mode_default, R.drawable.ic_browse_map, "default", null);
- public static final ApplicationMode CAR = reg(R.string.app_mode_car, R.drawable.ic_car, "car", null);
- public static final ApplicationMode BICYCLE = reg(R.string.app_mode_bicycle, R.drawable.ic_bicycle, "bicycle", null);
- public static final ApplicationMode PEDESTRIAN = reg(R.string.app_mode_pedestrian, R.drawable.ic_pedestrian, "pedestrian", null);
- public static final ApplicationMode AIRCRAFT = reg(R.string.app_mode_aircraft, R.drawable.ic_aircraft, "aircraft", null);
- public static final ApplicationMode BOAT = reg(R.string.app_mode_boat, R.drawable.ic_sail_boat, "boat", null);
+ public static final ApplicationMode DEFAULT = create(R.string.app_mode_default, "default").speed(1.5f, 5).
+ icon(R.drawable.ic_browse_map, R.drawable.app_mode_globus_light, R.drawable.app_mode_globus_dark).reg();
+
+ public static final ApplicationMode CAR = create(R.string.app_mode_car, "car").speed(15.3f, 35).carLocation().
+ icon(R.drawable.ic_car, R.drawable.ic_action_car_light, R.drawable.ic_action_car_dark).reg();
+
+ public static final ApplicationMode BICYCLE = create(R.string.app_mode_bicycle, "bicycle").speed(5.5f, 15).bicycleLocation().
+ icon(R.drawable.ic_bicycle, R.drawable.ic_action_bicycle_light, R.drawable.ic_action_bicycle_dark).reg();
+
+ public static final ApplicationMode PEDESTRIAN = create(R.string.app_mode_pedestrian, "pedestrian").speed(1.5f, 5).
+ icon(R.drawable.ic_pedestrian, R.drawable.ic_action_pedestrian_light, R.drawable.ic_action_parking_dark).reg();
+
+ public static final ApplicationMode AIRCRAFT = create(R.string.app_mode_aircraft, "aircraft").speed(40f, 100).carLocation().
+ icon(R.drawable.ic_aircraft, R.drawable.ic_action_aircraft_light, R.drawable.ic_action_aircraft_dark).reg();
+
+ public static final ApplicationMode BOAT = create(R.string.app_mode_boat, "boat").speed(5.5f, 20).carLocation().
+ icon(R.drawable.ic_sail_boat, R.drawable.ic_action_sail_boat_light, R.drawable.ic_action_sail_boat_dark).reg();
+
+ public static final ApplicationMode HIKING = create(R.string.app_mode_hiking, "hiking").speed(1.5f, 5).
+ icon(R.drawable.ic_trekking, R.drawable.ic_action_trekking_light, R.drawable.ic_action_trekking_dark).reg();
+
+ public static final ApplicationMode MOTORCYCLE = create(R.string.app_mode_motorcycle, "motorcycle").speed(15.3f, 40).carLocation().
+ icon(R.drawable.ic_motorcycle, R.drawable.ic_action_motorcycle_light, R.drawable.ic_action_motorcycle_dark).reg();
- private static ApplicationMode reg(int key, int iconId, String stringKey, ApplicationMode parent) {
- ApplicationMode mode = new ApplicationMode(key, iconId, stringKey, parent);
- values.add(mode);
- return mode;
- }
- private final int key;
- private final ApplicationMode parent;
- private String stringKey;
- private int iconId;
+ private static class ApplicationModeBuilder {
+
+
+ private ApplicationMode applicationMode;
- private ApplicationMode(int key, int iconId, String stringKey, ApplicationMode parent) {
+ public ApplicationMode reg() {
+ values.add(applicationMode);
+ return applicationMode;
+ }
+
+ public ApplicationModeBuilder icon(int bigIcon, int smallIconLight, int smallIconDark) {
+ applicationMode.iconId = bigIcon;
+ applicationMode.smallIconLight = smallIconLight;
+ applicationMode.smallIconDark = smallIconDark;
+ return this;
+ }
+
+ public ApplicationModeBuilder carLocation(){
+ applicationMode.bearingIcon = R.drawable.car_bearing;
+ applicationMode.locationIcon = R.drawable.car_location;
+ return this;
+ }
+
+ public ApplicationModeBuilder bicycleLocation(){
+ applicationMode.bearingIcon = R.drawable.bicycle_bearing;
+ applicationMode.locationIcon = R.drawable.bicycle_location;
+ return this;
+ }
+
+ public ApplicationModeBuilder manLocation(){
+ applicationMode.bearingIcon = R.drawable.pedestrian_bearing;
+ applicationMode.locationIcon = R.drawable.pedestrian_location;
+ return this;
+ }
+
+ public ApplicationModeBuilder speed(float defSpeed, int distForTurn) {
+ applicationMode.defaultSpeed = defSpeed;
+ applicationMode.minDistanceForTurn = distForTurn;
+ return this;
+ }
+ }
+
+ private static ApplicationModeBuilder create(int key, String stringKey) {
+ ApplicationModeBuilder builder = new ApplicationModeBuilder();
+ builder.applicationMode = new ApplicationMode(key, stringKey);
+ return builder;
+ }
+
+
+
+ private final int key;
+ private final String stringKey;
+
+ private ApplicationMode parent;
+ private int iconId = R.drawable.ic_browse_map;
+ private int smallIconDark = R.drawable.app_mode_globus_dark ;
+ private int smallIconLight = R.drawable.app_mode_globus_light ;
+ private float defaultSpeed = 10f;
+ private int minDistanceForTurn = 50;
+ private int bearingIcon = R.drawable.pedestrian_bearing;
+ private int locationIcon = R.drawable.pedestrian_location;
+
+ private ApplicationMode(int key, String stringKey) {
this.key = key;
- this.iconId = iconId;
this.stringKey = stringKey;
- this.stringKey = stringKey;
- this.parent = parent;
}
public static List getAplicationModes(ClientContext ctx) {
@@ -68,19 +134,7 @@ public class ApplicationMode {
}
public int getSmallIcon(boolean nightMode) {
- if(this == ApplicationMode.CAR){
- return nightMode? R.drawable.ic_action_car_dark : R.drawable.ic_action_car_light;
- } else if(this == ApplicationMode.BICYCLE){
- return nightMode? R.drawable.ic_action_bicycle_dark : R.drawable.ic_action_bicycle_light;
- } else if(this == ApplicationMode.PEDESTRIAN){
- return nightMode? R.drawable.ic_action_pedestrian_dark : R.drawable.ic_action_pedestrian_light;
- } else if(this == ApplicationMode.BOAT){
- return nightMode? R.drawable.ic_action_sail_boat_dark : R.drawable.ic_action_sail_boat_light;
- } else if(this == ApplicationMode.AIRCRAFT){
- return nightMode? R.drawable.ic_action_aircraft_dark : R.drawable.ic_action_aircraft_light;
- } else {
- return nightMode? R.drawable.app_mode_globus_dark : R.drawable.app_mode_globus_light;
- }
+ return nightMode? smallIconDark : smallIconLight;
}
public boolean hasFastSpeed(){
@@ -88,21 +142,11 @@ public class ApplicationMode {
}
public int getResourceBearing() {
- if (this == ApplicationMode.CAR) {
- return R.drawable.car_bearing;
- } else if (this == ApplicationMode.BICYCLE) {
- return R.drawable.bicycle_bearing;
- }
- return R.drawable.pedestrian_bearing;
+ return bearingIcon;
}
public int getResourceLocation() {
- if (this == ApplicationMode.CAR) {
- return R.drawable.car_location;
- } else if (this == ApplicationMode.BICYCLE) {
- return R.drawable.bicycle_location;
- }
- return R.drawable.pedestrian_location;
+ return locationIcon;
}
public String getStringKey() {
@@ -143,29 +187,15 @@ public class ApplicationMode {
}
return def;
}
-
+
public float getDefaultSpeed() {
- float speed = 1.5f;
- if(this == ApplicationMode.CAR){
- speed = 15.3f;
- } else if(this == ApplicationMode.BICYCLE || this == ApplicationMode.BOAT){
- speed = 5.5f;
- } else if(this == ApplicationMode.AIRCRAFT){
- speed = 40f;
- }
- return speed;
+ return defaultSpeed;
}
public int getMinDistanceForTurn() {
- int minDistanceForTurn = 5;
- if(this == ApplicationMode.CAR){
- minDistanceForTurn = 35;
- } else if(this == ApplicationMode.AIRCRAFT){
- minDistanceForTurn = 100;
- } else if(this == ApplicationMode.BICYCLE || this == ApplicationMode.BOAT){
- minDistanceForTurn = 12;
- }
return minDistanceForTurn;
}
+
+
}
\ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java b/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java
index 5c90e6aa39..0f6d50a7e5 100644
--- a/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java
+++ b/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java
@@ -31,10 +31,9 @@ import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
+import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
-import android.widget.HorizontalScrollView;
-import android.widget.ScrollView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;