From 9bb054e18f32bc033834a6dbb56bc01152c811ac Mon Sep 17 00:00:00 2001 From: vshcherb Date: Wed, 27 Nov 2013 15:13:33 +0100 Subject: [PATCH 1/7] Add new app mode --- OsmAnd/res/drawable-hdpi/bicycle_small.png | Bin 1757 -> 0 bytes .../res/drawable-hdpi/bicycle_small_white.png | Bin 1788 -> 0 bytes OsmAnd/res/drawable-hdpi/car_small.png | Bin 3512 -> 0 bytes OsmAnd/res/drawable-hdpi/car_small_white.png | Bin 3508 -> 0 bytes OsmAnd/res/drawable-hdpi/default_small.png | Bin 1435 -> 0 bytes .../res/drawable-hdpi/default_small_old.png | Bin 4145 -> 0 bytes .../res/drawable-hdpi/default_small_white.png | Bin 1437 -> 0 bytes .../drawable-hdpi/default_small_white_old.png | Bin 3670 -> 0 bytes OsmAnd/res/layout/calculate_route.xml | 28 ---- OsmAnd/res/layout/mode_toggles.xml | 40 ------ .../src/net/osmand/plus/ApplicationMode.java | 127 +++++++++++++++++- .../net/osmand/plus/OsmandBackupAgent.java | 7 +- .../src/net/osmand/plus/OsmandSettings.java | 27 ++-- .../plus/activities/SettingsBaseActivity.java | 2 +- .../activities/SettingsGeneralActivity.java | 7 +- .../activities/actions/NavigateAction.java | 93 ++++++++----- .../audionotes/AudioVideoNotesPlugin.java | 5 +- .../development/OsmandDevelopmentPlugin.java | 4 +- .../DistanceCalculatorPlugin.java | 5 +- .../monitoring/OsmandMonitoringPlugin.java | 2 +- .../parkingpoint/ParkingPositionPlugin.java | 2 +- .../osmand/plus/srtmplugin/SRTMPlugin.java | 2 +- .../osmand/plus/views/MapControlsLayer.java | 28 ++-- .../net/osmand/plus/views/MapInfoLayer.java | 19 ++- .../osmand/plus/views/PointLocationLayer.java | 16 +-- .../views/mapwidgets/MapWidgetRegistry.java | 38 +++--- 26 files changed, 255 insertions(+), 197 deletions(-) delete mode 100644 OsmAnd/res/drawable-hdpi/bicycle_small.png delete mode 100644 OsmAnd/res/drawable-hdpi/bicycle_small_white.png delete mode 100644 OsmAnd/res/drawable-hdpi/car_small.png delete mode 100644 OsmAnd/res/drawable-hdpi/car_small_white.png delete mode 100644 OsmAnd/res/drawable-hdpi/default_small.png delete mode 100644 OsmAnd/res/drawable-hdpi/default_small_old.png delete mode 100644 OsmAnd/res/drawable-hdpi/default_small_white.png delete mode 100644 OsmAnd/res/drawable-hdpi/default_small_white_old.png diff --git a/OsmAnd/res/drawable-hdpi/bicycle_small.png b/OsmAnd/res/drawable-hdpi/bicycle_small.png deleted file mode 100644 index 0af49eced6ad3c8df6ceaddd9f37824fc835ca2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1757 zcmV<31|s>1P)*;0A;CZh5S1$UP^3y#B}6NxZAjCA4h^wxYY`yWhGK1>ujF4^Hwtayy<`)Wup8|lQD39_y z|41T{cr}~N{$5d(v3x%N-2D7}wzs!;8~~!x=%>2G-wekm9Xepc6Y*4Ni}ln^r3syQ_^pIKja*iy^PoVh@*s){BUv*t)l+wxJ;o)E9aydH?2<%EE60hsJ&IloC zO6hbimvbg2CjJ!+20xR_Yeox3YW!r|~V0IaUAzSI`xRaKn< zfPsO5PY(|dpN_?1M_kvfHw_%MZM)jj(=*a&G|Ht?=|C_Te4r_`=DO}#05A;Whi$#` z*6z7dsl3w8{eI|Z`4t3V5CA;SGupzmwbf`1yLLpQQN4A2{rdIq1Gvp`+zHn?F-k^)cLC^_+ID7I#;SR4SE=u~_UuNs^{*+x|r}Y|YNjCJ7x{8C0l>1XivSP`h3>=MIbj1pxm-R_E|(7hsJCiKlJr1} zyAzEa4Xs+Ob{+uY@%RjY_9s+fjLo-xq9}f>buMW%8qYW5Z?=+M*S)|PV}U>**wfSV zm9{#p-2{NaCf8fsT`^LvR*%`XeMc0<0aaC>d50MQ0MGLer_<@f0I;~Ycmf;0oy*O8 zNT<_>d7giGgPcKCRi6<>alp3iJJo9SSSK1gKI#gBuy0~w;v@hx8Vw_#&p%bK*Utw6 zfuTqw^3jozkxv3ZtyWuHSXh|E#-~F7=+!jslA;D!gHQmJ&VP$=wYjNN=sQbH1{s-E0vkpKYOw(l$~ zEPTCF6Tl`uJ`h6Up-||nilR)1!{MA|Su2%F<$SeTJ!4tcQ@A_cJ1Qjz!b~U>+8qvu zrv*V6tW+u&Yqi?>YPEW-`2}VRTiC)D-j06*tg@qzNIPwJ00000NkvXXu0mjf^v78l diff --git a/OsmAnd/res/drawable-hdpi/bicycle_small_white.png b/OsmAnd/res/drawable-hdpi/bicycle_small_white.png deleted file mode 100644 index 27ffa2d2bfe9eca1c00e5fdce0e0b9f6d703cf10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 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 diff --git a/OsmAnd/res/drawable-hdpi/default_small_white.png b/OsmAnd/res/drawable-hdpi/default_small_white.png deleted file mode 100644 index 342f37f124d14dcd282323def1a859820025b746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1437 zcmV;O1!DS%P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGqB>(^xB>_oNB=7(L02y>eSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+u3;o;$#p`oG6EOM6J{k*uic%!P=Fl>EgW#udE_y(8DwE+T$ z(Vv!ap+eg%LGe1B7J{gM_w&DQ~bN_+dP+h+qma44M{$IyySM z9*-xludnZPS6A1U?CN6}S&czcsyFNR`;WJ_wtDc!UrHv>)6;VT&un7@Qqet6+l&%0 zC4NLOIKQZyu7?+?s`QxJAV9b&+8M97nk z7<~c~b81wW5PB1Y)q8}Mar~OF91+PEuh;ttL~g24VM2Hf;*FjH)Fz$OoE={{4uxLa=1ws<< zzmv2(DJ@o2RaGsg2n^l{CMY=`DeI@_RiozmPk$JAjywVi@l`HQDF%pB81LG$`N@< zChAZdd6Yn2q;i72M$s7Ym*bdxt}l>5u&bfZiUlKL-LiU=WglQ8ljd-2dd za>LFM{2@udol(pVmBZ!#7-SaE8Rz|ey;Ep1KXXImqpQAXUD&Xi&;;8;Yb*)WAgycWPNUVn%6-{Kk~nL#2?R%f}YH#a9x)dmwZYLoUg}Q3%|kZ=Ad2TSDh~b~!=5xKM{ZPN`Bu z-+AOJdb6U>@hl(Yqz;pV;0pP3nmZ_qGABisjW2jlyuq#wKB6Odca?q@^b5c;D+iofF!IKsG(A+X@h9~Zb>u0%p(8+ltMRV@a-34vtoUJ&T5 rA+cX3^qjnLvgGUJ{9^Migw6IZ3(MF!)oh9i00000NkvXXu0mjff5Mut diff --git a/OsmAnd/res/drawable-hdpi/default_small_white_old.png b/OsmAnd/res/drawable-hdpi/default_small_white_old.png deleted file mode 100644 index 8a7e20a25a65eafb7c9c3813dd4d53b0ce0e4d4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3670 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 diff --git a/OsmAnd/res/layout/calculate_route.xml b/OsmAnd/res/layout/calculate_route.xml index 79084cd8bd..e3bab05f0e 100644 --- a/OsmAnd/res/layout/calculate_route.xml +++ b/OsmAnd/res/layout/calculate_route.xml @@ -12,35 +12,7 @@ android:gravity="center" android:orientation="horizontal" > - - - - - - - - - - - - \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/ApplicationMode.java b/OsmAnd/src/net/osmand/plus/ApplicationMode.java index f14589692e..10f2270019 100644 --- a/OsmAnd/src/net/osmand/plus/ApplicationMode.java +++ b/OsmAnd/src/net/osmand/plus/ApplicationMode.java @@ -1,23 +1,136 @@ package net.osmand.plus; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; -public enum ApplicationMode { +import android.content.Context; + + +public class ApplicationMode { /* * DEFAULT("Browse map"), CAR("Car"), BICYCLE("Bicycle"), PEDESTRIAN("Pedestrian"); */ - DEFAULT(R.string.app_mode_default), - CAR(R.string.app_mode_car), - BICYCLE(R.string.app_mode_bicycle), - PEDESTRIAN(R.string.app_mode_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); + + + private static List values = new ArrayList(); + private static ApplicationMode reg(int key, int iconId, String stringKey, ApplicationMode parent) { + return new ApplicationMode(key, iconId, stringKey, parent); + } private final int key; + private final ApplicationMode parent; + private String stringKey; + private int iconId; - ApplicationMode(int key) { + private ApplicationMode(int key, int iconId, String stringKey, ApplicationMode parent) { this.key = key; + this.iconId = iconId; + this.stringKey = stringKey; + this.stringKey = stringKey; + this.parent = parent; + } + + public static List getAplicationModes(ClientContext ctx) { + // TODO + OsmandSettings sets = ctx.getSettings(); + return values; + } + + public static List values(ClientContext ctx) { + // TODO + OsmandSettings sets = ctx.getSettings(); + return values; + } + + public static List values(OsmandSettings settings) { + // TODO + return values; + } + + public static List allPossibleValues(ClientContext ctx) { + // TODO + OsmandSettings sets = ctx.getSettings(); + return values; + } + + public ApplicationMode getParent() { + return parent; + } + + 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 { + return nightMode? R.drawable.app_mode_globus_dark : R.drawable.app_mode_globus_light; + } + } + + 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; + } + + 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; + } + + public String getStringKey() { + return stringKey; + } + + public int getIconId() { + return iconId; + } + + public int getStringResource() { + return key; } - public String toHumanString(ClientContext ctx) { + public String toHumanString(Context ctx) { return ctx.getString(key); } + public static Set allOf() { + return new HashSet(values); + } + + public static Set noneOf() { + return new HashSet(); + } + + public static Set of(ApplicationMode... modes ) { + HashSet ts = new HashSet(); + Collections.addAll(ts, modes); + return ts; + } + + public static ApplicationMode valueOfStringKey(String key, ApplicationMode def) { + for(ApplicationMode p : values) { + if(p.getStringKey().equals(key)) { + return p; + } + } + return def; + } + } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/OsmandBackupAgent.java b/OsmAnd/src/net/osmand/plus/OsmandBackupAgent.java index 80721b8c69..cad5f652ce 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandBackupAgent.java +++ b/OsmAnd/src/net/osmand/plus/OsmandBackupAgent.java @@ -1,5 +1,7 @@ package net.osmand.plus; +import java.util.List; + import android.app.backup.BackupAgentHelper; import android.app.backup.FileBackupHelper; import android.app.backup.SharedPreferencesBackupHelper; @@ -11,10 +13,11 @@ public class OsmandBackupAgent extends BackupAgentHelper { @Override public void onCreate() { - String[] prefs = new String[ApplicationMode.values().length + 1]; + List all = ApplicationMode.allPossibleValues((OsmandApplication) getApplicationContext()); + String[] prefs = new String[all.size() + 1]; prefs[0] = OsmandSettings.getSharedPreferencesName(null); int i = 1; - for (ApplicationMode m : ApplicationMode.values()) { + for (ApplicationMode m : all) { prefs[i++] = OsmandSettings.getSharedPreferencesName(m); } diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java index cf00701bdb..a163179890 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java @@ -121,7 +121,7 @@ public class OsmandSettings { if(mode == null){ return SHARED_PREFERENCES_NAME; } else { - return SHARED_PREFERENCES_NAME + "." + mode.name().toLowerCase(); + return SHARED_PREFERENCES_NAME + "." + mode.getStringKey().toLowerCase(); } } @@ -158,7 +158,7 @@ public class OsmandSettings { @Override public boolean set(ApplicationMode val) { ApplicationMode oldMode = currentMode; - boolean changed = settingsAPI.edit(globalPreferences).putString(getId(), val.name()).commit(); + boolean changed = settingsAPI.edit(globalPreferences).putString(getId(), val.getStringKey()).commit(); if(changed){ currentMode = val; profilePreferences = getProfilePreferences(currentMode); @@ -183,12 +183,8 @@ public class OsmandSettings { } protected ApplicationMode readApplicationMode() { - String s = settingsAPI.getString(globalPreferences, APPLICATION_MODE.getId(), ApplicationMode.DEFAULT.name()); - try { - return ApplicationMode.valueOf(s); - } catch (IllegalArgumentException e) { - return ApplicationMode.DEFAULT; - } + String s = settingsAPI.getString(globalPreferences, APPLICATION_MODE.getId(), ApplicationMode.DEFAULT.getStringKey()); + return ApplicationMode.valueOfStringKey(s, ApplicationMode.DEFAULT); } @@ -574,8 +570,19 @@ public class OsmandSettings { // this value string is synchronized with settings_pref.xml preference name public final CommonPreference USE_INTERNET_TO_DOWNLOAD_TILES = new BooleanPreference("use_internet_to_download_tiles", true).makeGlobal().cache(); - public final OsmandPreference DEFAULT_APPLICATION_MODE = new EnumIntPreference( - "default_application_mode", ApplicationMode.DEFAULT, ApplicationMode.values()).makeGlobal(); + public final OsmandPreference DEFAULT_APPLICATION_MODE = new CommonPreference("default_application_mode", ApplicationMode.DEFAULT) { + + @Override + protected ApplicationMode getValue(Object prefs, ApplicationMode defaultValue) { + String key = settingsAPI.getString(prefs, getId(), defaultValue.getStringKey()); + return ApplicationMode.valueOfStringKey(key, defaultValue); + } + + @Override + protected boolean setValue(Object prefs, ApplicationMode val) { + return settingsAPI.edit( prefs).putString(getId(), val.getStringKey()).commit(); + } + }; public final OsmandPreference DRIVING_REGION = new EnumIntPreference( "default_driving_region", DrivingRegion.EUROPE_ASIA, DrivingRegion.values()) { diff --git a/OsmAnd/src/net/osmand/plus/activities/SettingsBaseActivity.java b/OsmAnd/src/net/osmand/plus/activities/SettingsBaseActivity.java index 4d9fcf272b..b8228572e5 100644 --- a/OsmAnd/src/net/osmand/plus/activities/SettingsBaseActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/SettingsBaseActivity.java @@ -234,7 +234,7 @@ public abstract class SettingsBaseActivity extends SherlockPreferenceActivity im if (profileSettings) { modes.clear(); - for (ApplicationMode a : ApplicationMode.values()) { + for (ApplicationMode a : ApplicationMode.values(settings)) { if (a != ApplicationMode.DEFAULT) { modes.add(a); } diff --git a/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java b/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java index 0c402bd3ea..4ea463088f 100644 --- a/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java @@ -169,11 +169,12 @@ public class SettingsGeneralActivity extends SettingsBaseActivity { - entries = new String[ApplicationMode.values().length]; + ApplicationMode[] appModes = ApplicationMode.values(settings).toArray(new ApplicationMode[0]); + entries = new String[appModes.length]; for(int i=0; i values = new ArrayList(); + values.add(ApplicationMode.CAR); + values.add(ApplicationMode.BICYCLE); + values.add(ApplicationMode.PEDESTRIAN); + +// + View view = mapActivity.getLayoutInflater().inflate(R.layout.calculate_route, null); boolean osmandRouter = mapActivity.getMyApplication().getSettings().ROUTER_SERVICE.get() == RouteService.OSMAND; final CheckBox nonoptimal = (CheckBox) view.findViewById(R.id.OptimalCheckox); - final ToggleButton[] buttons = new ToggleButton[ApplicationMode.values().length]; - buttons[ApplicationMode.CAR.ordinal()] = (ToggleButton) view.findViewById(R.id.CarButton); - buttons[ApplicationMode.CAR.ordinal()].setButtonDrawable(R.drawable.ic_car ); - buttons[ApplicationMode.BICYCLE.ordinal()] = (ToggleButton) view.findViewById(R.id.BicycleButton); - buttons[ApplicationMode.BICYCLE.ordinal()].setButtonDrawable(R.drawable.ic_bicycle); - buttons[ApplicationMode.PEDESTRIAN.ordinal()] = (ToggleButton) view.findViewById(R.id.PedestrianButton); - buttons[ApplicationMode.PEDESTRIAN.ordinal()].setButtonDrawable(R.drawable.ic_pedestrian); + final ToggleButton[] buttons = createToggles(values, view); final Spinner fromSpinner = setupFromSpinner(mapView, name, view, style); final List toList = new ArrayList(); @@ -157,7 +169,7 @@ public class NavigateAction { if (buttons[i] != null) { final int ind = i; ToggleButton b = buttons[i]; - final ApplicationMode buttonAppMode = ApplicationMode.values()[i]; + final ApplicationMode buttonAppMode = values.get(i); b.setChecked(appMode == buttonAppMode); if(b.isChecked()) { nonoptimal.setChecked(!settings.OPTIMAL_ROUTE_MODE.getModeValue(buttonAppMode)); @@ -213,7 +225,7 @@ public class NavigateAction { return; } - ApplicationMode mode = getAppMode(buttons, settings); + ApplicationMode mode = getAppMode(buttons, settings, values); app.getRoutingHelper().setAppMode(mode); settings.OPTIMAL_ROUTE_MODE.setModeValue(mode, !nonoptimal.isChecked()); settings.FOLLOW_THE_ROUTE.set(false); @@ -246,7 +258,7 @@ public class NavigateAction { if (msg) { AccessibleToast.makeText(mapActivity, R.string.route_updated_loc_found, Toast.LENGTH_LONG).show(); } - ApplicationMode mode = getAppMode(buttons, settings); + ApplicationMode mode = getAppMode(buttons, settings, values); settings.OPTIMAL_ROUTE_MODE.setModeValue(mode, !nonoptimal.isChecked()); dialog.dismiss(); mapActivity.followRoute(mode, targets.getPointToNavigate(), targets.getIntermediatePoints(), @@ -261,7 +273,7 @@ public class NavigateAction { if ( tos != null && tos != targets.getPointToNavigate()) { targets.navigateToPoint(tos, false, -1); } - ApplicationMode mode = getAppMode(buttons, settings); + ApplicationMode mode = getAppMode(buttons, settings, values); navigateUsingGPX(mode); } }; @@ -277,6 +289,27 @@ public class NavigateAction { } builder.show(); } + + private static ToggleButton[] createToggles(final List values, View view) { + final ToggleButton[] buttons = new ToggleButton[values.size()]; + LinearLayout topLayout = (LinearLayout) view.findViewById(R.id.LinearLayout); + int k = 0; + int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, view.getResources().getDisplayMetrics()); + int metrics = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 64, view.getResources().getDisplayMetrics()); + for(ApplicationMode ma : values) { + ToggleButton tb = new ToggleButton(topLayout.getContext()); + buttons[k++] = tb; + tb.setTextOn(""); + tb.setTextOff(""); + tb.setContentDescription(ma.toHumanString(view.getContext())); + tb.setButtonDrawable(ma.getIconId()); + LayoutParams lp = new LinearLayout.LayoutParams(metrics, metrics); + lp.setMargins(left, 0, 0, 0); + topLayout.addView(tb, lp); + + } + return buttons; + } public String getRoutePointDescription(double lat, double lon) { return mapActivity.getString(R.string.route_descr_lat_lon, lat, lon); @@ -333,28 +366,22 @@ public class NavigateAction { public static View prepareAppModeView(Activity a, final Set selected, boolean showDefault, ViewGroup parent, final View.OnClickListener onClickListener) { - View view = a.getLayoutInflater().inflate(R.layout.mode_toggles, parent); + LinearLayout ll = (LinearLayout) a.getLayoutInflater().inflate(R.layout.mode_toggles, parent); OsmandSettings settings = ((OsmandApplication) a.getApplication()).getSettings(); - final ToggleButton[] buttons = new ToggleButton[ApplicationMode.values().length]; + final List values = new ArrayList(); if(showDefault) { - buttons[ApplicationMode.DEFAULT.ordinal()] = (ToggleButton) view.findViewById(R.id.DefaultButton); - buttons[ApplicationMode.DEFAULT.ordinal()].setButtonDrawable(R.drawable.ic_browse_map ); - } else { - view.findViewById(R.id.DefaultButton).setVisibility(View.GONE); + values.add(ApplicationMode.DEFAULT); } - buttons[ApplicationMode.CAR.ordinal()] = (ToggleButton) view.findViewById(R.id.CarButton); - buttons[ApplicationMode.CAR.ordinal()].setButtonDrawable(R.drawable.ic_car ); - buttons[ApplicationMode.BICYCLE.ordinal()] = (ToggleButton) view.findViewById(R.id.BicycleButton); - buttons[ApplicationMode.BICYCLE.ordinal()].setButtonDrawable(R.drawable.ic_bicycle); - buttons[ApplicationMode.PEDESTRIAN.ordinal()] = (ToggleButton) view.findViewById(R.id.PedestrianButton); - buttons[ApplicationMode.PEDESTRIAN.ordinal()].setButtonDrawable(R.drawable.ic_pedestrian); - + values.add(ApplicationMode.CAR); + values.add(ApplicationMode.BICYCLE); + values.add(ApplicationMode.PEDESTRIAN); + final ToggleButton[] buttons = createToggles(values, ll); ApplicationMode appMode = settings.getApplicationMode(); for (int i = 0; i < buttons.length; i++) { if (buttons[i] != null) { final int ind = i; ToggleButton b = buttons[i]; - final ApplicationMode buttonAppMode = ApplicationMode.values()[i]; + final ApplicationMode buttonAppMode = values.get(i); b.setChecked(appMode == buttonAppMode); if(appMode == buttonAppMode) { selected.add(appMode); @@ -367,7 +394,7 @@ public class NavigateAction { for (int j = 0; j < buttons.length; j++) { if (buttons[j] != null) { if(ind == j) { - selected.add(ApplicationMode.values()[j]); + selected.add(values.get(j)); } if (buttons[j].isChecked() != (ind == j)) { buttons[j].setChecked(ind == j); @@ -396,7 +423,7 @@ public class NavigateAction { }); } } - return view; + return ll; } private Spinner setupFromSpinner(final Location mapView, String name, View view, DirectionDialogStyle style) { @@ -463,12 +490,12 @@ public class NavigateAction { return mapActivity.getString(resId); } - private ApplicationMode getAppMode(ToggleButton[] buttons, OsmandSettings settings){ - for(int i=0; i modes){ + for (int i = 0; i < buttons.length; i++) { + if (buttons[i] != null && buttons[i].isChecked() && i < modes.size()) { + return modes.get(i); + } + } return settings.getApplicationMode(); } diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index 67a5099d6b..f4bbfb5a07 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -9,7 +9,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Comparator; -import java.util.EnumSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -468,8 +467,8 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { recordControl.setImageDrawable(activity.getResources().getDrawable(R.drawable.monitoring_rec_inactive)); setRecordListener(recordControl, activity); mapInfoLayer.getMapInfoControls().registerSideWidget(recordControl, R.drawable.widget_icon_av_inactive, - R.string.map_widget_av_notes, "audionotes", false, EnumSet.allOf(ApplicationMode.class), - EnumSet.noneOf(ApplicationMode.class), 22); + R.string.map_widget_av_notes, "audionotes", false, ApplicationMode.allOf(), + ApplicationMode.noneOf(), 22); mapInfoLayer.recreateControls(); } } diff --git a/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java b/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java index c6b13dd848..79c37cfe29 100644 --- a/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java +++ b/OsmAnd/src/net/osmand/plus/development/OsmandDevelopmentPlugin.java @@ -68,8 +68,8 @@ public class OsmandDevelopmentPlugin extends OsmandPlugin { } }; mapInfoLayer.getMapInfoControls().registerSideWidget(fps, 0, - R.string.map_widget_fps_info, "fps", false, EnumSet.noneOf(ApplicationMode.class), - EnumSet.noneOf(ApplicationMode.class), 30); + R.string.map_widget_fps_info, "fps", false, ApplicationMode.noneOf(), + ApplicationMode.noneOf(), 30); mapInfoLayer.recreateControls(); } } diff --git a/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java b/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java index 873fd83037..db0a06ff03 100644 --- a/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java +++ b/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java @@ -6,7 +6,6 @@ import java.io.File; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Date; -import java.util.EnumSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -115,8 +114,8 @@ public class DistanceCalculatorPlugin extends OsmandPlugin { distanceControl = createDistanceControl(activity, mapInfoLayer.getPaintText(), mapInfoLayer.getPaintSubText()); mapInfoLayer.getMapInfoControls().registerSideWidget(distanceControl, R.drawable.widget_distance, R.string.map_widget_distancemeasurement, "distance.measurement", false, - EnumSet.of(ApplicationMode.DEFAULT, ApplicationMode.PEDESTRIAN), - EnumSet.noneOf(ApplicationMode.class), 21); + ApplicationMode.of(ApplicationMode.DEFAULT, ApplicationMode.PEDESTRIAN), + ApplicationMode.noneOf(), 21); mapInfoLayer.recreateControls(); updateText(); } diff --git a/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java b/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java index dd1358768c..ace7628829 100644 --- a/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java +++ b/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java @@ -71,7 +71,7 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn layer.getMapInfoControls().registerSideWidget(monitoringControl, R.drawable.monitoring_rec_big, R.string.map_widget_monitoring, "monitoring", false, - EnumSet.of(ApplicationMode.BICYCLE, ApplicationMode.PEDESTRIAN), EnumSet.noneOf(ApplicationMode.class), 18); + ApplicationMode.of(ApplicationMode.BICYCLE, ApplicationMode.PEDESTRIAN), ApplicationMode.noneOf(), 18); layer.recreateControls(); } diff --git a/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java b/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java index 10cf7a6d67..c716397860 100644 --- a/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java +++ b/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java @@ -191,7 +191,7 @@ public class ParkingPositionPlugin extends OsmandPlugin { parkingPlaceControl = createParkingPlaceInfoControl(activity, mapInfoLayer.getPaintText(), mapInfoLayer.getPaintSubText()); mapInfoLayer.getMapInfoControls().registerSideWidget(parkingPlaceControl, R.drawable.widget_parking, R.string.map_widget_parking, "parking", false, - EnumSet.allOf(ApplicationMode.class), EnumSet.noneOf(ApplicationMode.class), 8); + ApplicationMode.allOf(), ApplicationMode.noneOf(), 8); mapInfoLayer.recreateControls(); } } diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java index dedc60cf59..2860603ab8 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java @@ -32,7 +32,7 @@ public class SRTMPlugin extends OsmandPlugin { OsmandSettings settings = app.getSettings(); CommonPreference pref = settings.getCustomRenderProperty("contourLines"); if(pref.get().equals("")) { - for(ApplicationMode m : ApplicationMode.values()) { + for(ApplicationMode m : ApplicationMode.allPossibleValues(app)) { if(pref.getModeValue(m).equals("")) { pref.setModeValue(m, "13"); } diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index a942dc4925..9c1c94c85c 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -160,19 +160,7 @@ public class MapControlsLayer extends OsmandMapLayer { if(appMode != cacheApplicationMode){ modeShadow.setBounds(backToMenuButton.getLeft() + (int) (2 * scaleCoefficient), backToMenuButton.getTop() - (int) (24 * scaleCoefficient), backToMenuButton.getRight() - (int) (4 * scaleCoefficient), backToMenuButton.getBottom()); - if(appMode == ApplicationMode.CAR){ - // cacheAppModeIcon = view.getResources().getDrawable(nightMode? R.drawable.car_small_white : R.drawable.car_small); - cacheAppModeIcon = view.getResources().getDrawable(nightMode? R.drawable.ic_action_car_dark : R.drawable.ic_action_car_light); - } else if(appMode == ApplicationMode.BICYCLE){ -// cacheAppModeIcon = view.getResources().getDrawable(nightMode? R.drawable.bicycle_small_white : R.drawable.bicycle_small); - cacheAppModeIcon = view.getResources().getDrawable(nightMode? R.drawable.ic_action_bicycle_dark : R.drawable.ic_action_bicycle_light); - } else if(appMode == ApplicationMode.PEDESTRIAN){ -// cacheAppModeIcon = view.getResources().getDrawable(nightMode? R.drawable.pedestrian_small_white : R.drawable.pedestrian_small); - cacheAppModeIcon = view.getResources().getDrawable(nightMode? R.drawable.ic_action_pedestrian_dark : R.drawable.ic_action_pedestrian_light); - } else { -// cacheAppModeIcon = view.getResources().getDrawable(nightMode? R.drawable.default_small_white : R.drawable.default_small); - cacheAppModeIcon = view.getResources().getDrawable(nightMode? R.drawable.app_mode_globus_dark : R.drawable.app_mode_globus_light); - } + cacheAppModeIcon = view.getResources().getDrawable(appMode.getSmallIcon(nightMode)); int l = modeShadow.getBounds().left + (modeShadow.getBounds().width() - cacheAppModeIcon.getMinimumWidth()) / 2; int t = (int) (modeShadow.getBounds().top + 2 * scaleCoefficient); cacheAppModeIcon.setBounds(l, t, l + cacheAppModeIcon.getMinimumWidth(), t + cacheAppModeIcon.getMinimumHeight()); @@ -186,12 +174,14 @@ public class MapControlsLayer extends OsmandMapLayer { private void onApplicationModePress() { final QuickAction mQuickAction = new QuickAction(backToMenuButton); - //int[] icons = new int[] { R.drawable.default_small, R.drawable.car_small, R.drawable.bicycle_small, R.drawable.pedestrian_small }; - int[] icons = new int[] { R.drawable.ic_action_globus_light, R.drawable.ic_action_car_light, R.drawable.ic_action_bicycle_light, R.drawable.ic_action_pedestrian_light }; - int[] values = new int[] { R.string.app_mode_default, R.string.app_mode_car, R.string.app_mode_bicycle, - R.string.app_mode_pedestrian }; - final ApplicationMode[] modes = new ApplicationMode[] { ApplicationMode.DEFAULT, ApplicationMode.CAR, ApplicationMode.BICYCLE, - ApplicationMode.PEDESTRIAN }; + List vls = ApplicationMode.values(activity.getMyApplication().getSettings()); + final ApplicationMode[] modes = vls.toArray(new ApplicationMode[vls.size()]); + int[] icons = new int[vls.size()]; + int[] values = new int[vls.size()]; + for(int k = 0; k < modes.length; k++) { + icons[k] = modes[k].getSmallIcon(false); + values[k] = modes[k].getStringResource(); + } for (int i = 0; i < 4; i++) { final ActionItem action = new ActionItem(); action.setTitle(view.getResources().getString(values[i])); diff --git a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java index a8663dbcc0..43a59b7bb5 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java @@ -3,7 +3,6 @@ package net.osmand.plus.views; import java.lang.reflect.Field; import java.util.ArrayList; -import java.util.EnumSet; import java.util.LinkedHashSet; import java.util.Set; @@ -171,10 +170,10 @@ public class MapInfoLayer extends OsmandMapLayer { alarmControl = ric.createAlarmInfoControl(app, map); // register right stack - EnumSet all = EnumSet.allOf(ApplicationMode.class); - EnumSet carBicycleDefault = EnumSet.of(ApplicationMode.CAR, ApplicationMode.DEFAULT, ApplicationMode.BICYCLE); - EnumSet exceptCar = EnumSet.of(ApplicationMode.BICYCLE, ApplicationMode.PEDESTRIAN, ApplicationMode.DEFAULT); - EnumSet none = EnumSet.noneOf(ApplicationMode.class); + Set all = ApplicationMode.allOf(); + Set carBicycleDefault = ApplicationMode.of(ApplicationMode.CAR, ApplicationMode.DEFAULT, ApplicationMode.BICYCLE); + Set exceptCar = ApplicationMode.of(ApplicationMode.BICYCLE, ApplicationMode.PEDESTRIAN, ApplicationMode.DEFAULT); + Set none = ApplicationMode.noneOf(); RoutingHelper routingHelper = app.getRoutingHelper(); NextTurnInfoWidget bigInfoControl = ric.createNextInfoControl(routingHelper, app, view.getSettings(), paintText, paintSubText, false); @@ -182,7 +181,7 @@ public class MapInfoLayer extends OsmandMapLayer { NextTurnInfoWidget smallInfoControl = ric.createNextInfoControl(routingHelper, app, view.getSettings(), paintSmallText, paintSmallSubText, true); mapInfoControls.registerSideWidget(smallInfoControl, R.drawable.widget_next_turn, R.string.map_widget_next_turn_small, "next_turn_small", true, - EnumSet.of(ApplicationMode.PEDESTRIAN), none, 10); + ApplicationMode.of(ApplicationMode.PEDESTRIAN), none, 10); NextTurnInfoWidget nextNextInfoControl = ric.createNextNextInfoControl(routingHelper, app, view.getSettings(), paintSmallText, paintSmallSubText, true); mapInfoControls.registerSideWidget(nextNextInfoControl, R.drawable.widget_next_turn, R.string.map_widget_next_next_turn, "next_next_turn",true, carBicycleDefault, none, 15); @@ -265,26 +264,26 @@ public class MapInfoLayer extends OsmandMapLayer { // we want that status bar lays over map stack controls topMargin -= topRectPadding.top; - FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, + FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.RIGHT); flp.rightMargin = STATUS_BAR_MARGIN_X; flp.topMargin = topMargin; rightStack.setLayoutParams(flp); - flp = new FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, + flp = new FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL | Gravity.TOP); flp.topMargin = (int) (topMargin + scaleCoefficient * 8); lanesControl.setLayoutParams(flp); - flp = new FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, + flp = new FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.LEFT); flp.leftMargin = STATUS_BAR_MARGIN_X; flp.topMargin = topMargin; leftStack.setLayoutParams(flp); - flp = new FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, + flp = new FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.TOP); flp.leftMargin = STATUS_BAR_MARGIN_X; flp.rightMargin = STATUS_BAR_MARGIN_X; diff --git a/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java b/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java index 10fd677e69..ecb6e29ee2 100644 --- a/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/PointLocationLayer.java @@ -6,16 +6,12 @@ import net.osmand.data.RotatedTileBox; import net.osmand.plus.ApplicationMode; import net.osmand.plus.OsmAndLocationProvider; import net.osmand.plus.R; -import net.osmand.util.MapUtils; -import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.RectF; -import android.util.DisplayMetrics; -import android.view.WindowManager; public class PointLocationLayer extends OsmandMapLayer { protected final static int RADIUS = 7; @@ -135,16 +131,8 @@ public class PointLocationLayer extends OsmandMapLayer { public void checkAppMode(ApplicationMode appMode) { if (appMode != this.appMode) { this.appMode = appMode; - if (appMode == ApplicationMode.CAR) { - bearingIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.car_bearing); - locationIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.car_location); - } else if (appMode == ApplicationMode.BICYCLE) { - bearingIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.bicycle_bearing); - locationIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.bicycle_location); - } else { - bearingIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.pedestrian_bearing); - locationIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.pedestrian_location); - } + bearingIcon = BitmapFactory.decodeResource(view.getResources(), appMode.getResourceBearing()); + locationIcon = BitmapFactory.decodeResource(view.getResources(), appMode.getResourceLocation()); } } diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java index 272b7de857..996387c2d8 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java @@ -49,7 +49,7 @@ public class MapWidgetRegistry { public MapWidgetRegistry(OsmandSettings settings) { this.settings = settings; - for(ApplicationMode ms : ApplicationMode.values() ) { + for(ApplicationMode ms : ApplicationMode.values(settings) ) { String mpf = settings.MAP_INFO_CONTROLS.getModeValue(ms); if(mpf.equals("")) { visibleElements.put(ms, null); @@ -65,11 +65,11 @@ public class MapWidgetRegistry { public MapWidgetRegInfo registerAppearanceWidget(int drawable, int messageId, String key, OsmandPreference pref) { MapWidgetRegInfo ii = new MapWidgetRegInfo(); - ii.defaultModes = EnumSet.noneOf(ApplicationMode.class); + ii.defaultModes = ApplicationMode.noneOf(); ii.defaultCollapsible = null; ii.key = key; ii.preference = pref; - ii.visibleModes = EnumSet.noneOf(ApplicationMode.class); + ii.visibleModes = ApplicationMode.noneOf(); ii.visibleCollapsible = null; ii.drawable = drawable; ii.messageId = messageId; @@ -89,12 +89,12 @@ public class MapWidgetRegistry { public MapWidgetRegInfo registerAppearanceWidget(int drawable, String message, String key, CommonPreference pref, String subcategory) { MapWidgetRegInfo ii = new MapWidgetRegInfo(); - ii.defaultModes = EnumSet.noneOf(ApplicationMode.class); + ii.defaultModes = ApplicationMode.noneOf(); ii.defaultCollapsible = null; ii.key = key; ii.category = subcategory; ii.preference = pref; - ii.visibleModes = EnumSet.noneOf(ApplicationMode.class); + ii.visibleModes = ApplicationMode.noneOf(); ii.visibleCollapsible = null; ii.drawable = drawable; ii.messageId = message.hashCode(); @@ -104,14 +104,14 @@ public class MapWidgetRegistry { } public MapWidgetRegInfo registerTopWidget(View m, int drawable, int messageId, String key, int left, - EnumSet appDefaultModes, int priorityOrder) { + Set appDefaultModes, int priorityOrder) { MapWidgetRegInfo ii = new MapWidgetRegInfo(); - ii.defaultModes = appDefaultModes.clone(); + ii.defaultModes = new TreeSet(appDefaultModes); ii.defaultCollapsible = null; ii.key = key; - ii.visibleModes = EnumSet.noneOf(ApplicationMode.class); + ii.visibleModes = ApplicationMode.noneOf(); ii.visibleCollapsible = null; - for(ApplicationMode ms : ApplicationMode.values() ) { + for(ApplicationMode ms : ApplicationMode.values(settings) ) { boolean def = appDefaultModes.contains(ms); Set set = visibleElements.get(ms); if (set != null) { @@ -139,14 +139,14 @@ public class MapWidgetRegistry { public void registerSideWidget(BaseMapWidget m, int drawable, int messageId, String key, boolean left, - EnumSet appDefaultModes, EnumSet defaultCollapsible, int priorityOrder) { + Set appDefaultModes, Set defaultCollapsible, int priorityOrder) { MapWidgetRegInfo ii = new MapWidgetRegInfo(); - ii.defaultModes = appDefaultModes.clone(); - ii.defaultCollapsible = defaultCollapsible.clone(); + ii.defaultModes = new TreeSet(appDefaultModes); + ii.defaultCollapsible = new TreeSet(defaultCollapsible); ii.key = key; - ii.visibleModes = EnumSet.noneOf(ApplicationMode.class); - ii.visibleCollapsible = EnumSet.noneOf(ApplicationMode.class); - for(ApplicationMode ms : ApplicationMode.values() ) { + ii.visibleModes = ApplicationMode.noneOf(); + ii.visibleCollapsible = ApplicationMode.noneOf(); + for(ApplicationMode ms : ApplicationMode.values(settings) ) { boolean collapse = defaultCollapsible.contains(ms);; boolean def = appDefaultModes.contains(ms); Set set = visibleElements.get(ms); @@ -326,10 +326,10 @@ public class MapWidgetRegistry { private String key; private int position; private String category; - private EnumSet defaultModes; - private EnumSet defaultCollapsible; - private EnumSet visibleModes; - private EnumSet visibleCollapsible; + private Set defaultModes; + private Set defaultCollapsible; + private Set visibleModes; + private Set visibleCollapsible; private OsmandPreference preference = null; private Runnable stateChangeListener = null; public int priorityOrder; From 83ccbe0eff944b9f1faf8296953f1949be2502e8 Mon Sep 17 00:00:00 2001 From: vshcherb Date: Wed, 27 Nov 2013 15:46:16 +0100 Subject: [PATCH 2/7] Add new app mode --- OsmAnd/res/values/strings.xml | 2 + .../src/net/osmand/plus/ApplicationMode.java | 37 +++++++++++++-- .../src/net/osmand/plus/OsmAndFormatter.java | 3 +- .../activities/actions/NavigateAction.java | 46 +++++++------------ .../plus/routing/RouteCalculationResult.java | 12 +---- .../osmand/plus/routing/RoutingHelper.java | 2 +- .../osmand/plus/views/MapControlsLayer.java | 2 +- .../views/mapwidgets/MapWidgetRegistry.java | 6 +-- 8 files changed, 61 insertions(+), 49 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index d21267ecf6..7b0fc81b91 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 --> + Boat + Aircraft Please visit https://code.google.com/p/osmand/wiki/FAQ to see frequently asked questions. Frequently Asked Questions You are going to delete %1$d osm changes. Are you sure? diff --git a/OsmAnd/src/net/osmand/plus/ApplicationMode.java b/OsmAnd/src/net/osmand/plus/ApplicationMode.java index 10f2270019..73f903e776 100644 --- a/OsmAnd/src/net/osmand/plus/ApplicationMode.java +++ b/OsmAnd/src/net/osmand/plus/ApplicationMode.java @@ -10,6 +10,7 @@ import android.content.Context; public class ApplicationMode { + private static List values = new ArrayList(); /* * DEFAULT("Browse map"), CAR("Car"), BICYCLE("Bicycle"), PEDESTRIAN("Pedestrian"); */ @@ -17,12 +18,14 @@ public class ApplicationMode { 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_browse_map, "aircraft", null); + public static final ApplicationMode BOAT = reg(R.string.app_mode_boat, R.drawable.ic_browse_map, "boat", null); - private static List values = new ArrayList(); - private static ApplicationMode reg(int key, int iconId, String stringKey, ApplicationMode parent) { - return new ApplicationMode(key, iconId, stringKey, parent); + ApplicationMode mode = new ApplicationMode(key, iconId, stringKey, parent); + values.add(mode); + return mode; } private final int key; private final ApplicationMode parent; @@ -76,6 +79,10 @@ public class ApplicationMode { } } + public boolean hasFastSpeed(){ + return getDefaultSpeed() > 10; + } + public int getResourceBearing() { if (this == ApplicationMode.CAR) { return R.drawable.car_bearing; @@ -133,4 +140,28 @@ 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; + } + + 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/OsmAndFormatter.java b/OsmAnd/src/net/osmand/plus/OsmAndFormatter.java index 89d0ed7bcf..564d8a659a 100644 --- a/OsmAnd/src/net/osmand/plus/OsmAndFormatter.java +++ b/OsmAnd/src/net/osmand/plus/OsmAndFormatter.java @@ -97,7 +97,8 @@ public class OsmAndFormatter { ApplicationMode am = settings.getApplicationMode(); float kmh = metersperseconds * 3.6f; if (mc == MetricsConstants.KILOMETERS_AND_METERS) { - if (kmh >= 10 || (am == ApplicationMode.CAR)) { + if (kmh >= 10 || am.hasFastSpeed()) { + // case of car return ((int) Math.round(kmh)) + " " + ctx.getString(R.string.km_h); } int kmh10 = (int) (kmh * 10f); diff --git a/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java b/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java index dc6efc351b..6cc7b49a2c 100644 --- a/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java +++ b/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java @@ -10,18 +10,19 @@ import net.osmand.Location; import net.osmand.access.AccessibleToast; import net.osmand.data.LatLon; import net.osmand.plus.ApplicationMode; +import net.osmand.plus.GPXUtilities.GPXFile; import net.osmand.plus.OsmAndLocationProvider; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.TargetPointsHelper; -import net.osmand.plus.GPXUtilities.GPXFile; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.routing.RouteProvider.GPXRouteParams; import net.osmand.plus.routing.RouteProvider.RouteService; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; +import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnMultiChoiceClickListener; import android.util.TypedValue; @@ -122,26 +123,14 @@ public class NavigateAction { final Location current = getLastKnownLocation(); Builder builder = new AlertDialog.Builder(mapActivity); final TargetPointsHelper targets = app.getTargetPointsHelper(); - final List values = new ArrayList(); - values.add(ApplicationMode.CAR); - values.add(ApplicationMode.BICYCLE); - values.add(ApplicationMode.PEDESTRIAN); - - -// + final List values = new ArrayList(ApplicationMode.values(app)); + values.remove(ApplicationMode.DEFAULT); View view = mapActivity.getLayoutInflater().inflate(R.layout.calculate_route, null); boolean osmandRouter = mapActivity.getMyApplication().getSettings().ROUTER_SERVICE.get() == RouteService.OSMAND; final CheckBox nonoptimal = (CheckBox) view.findViewById(R.id.OptimalCheckox); - final ToggleButton[] buttons = createToggles(values, view); + LinearLayout topLayout = (LinearLayout) view.findViewById(R.id.LinearLayout); + final ToggleButton[] buttons = createToggles(values, topLayout, mapActivity); final Spinner fromSpinner = setupFromSpinner(mapView, name, view, style); final List toList = new ArrayList(); @@ -290,18 +279,18 @@ public class NavigateAction { builder.show(); } - private static ToggleButton[] createToggles(final List values, View view) { + private static ToggleButton[] createToggles(final List values, LinearLayout topLayout, Context ctx) { final ToggleButton[] buttons = new ToggleButton[values.size()]; - LinearLayout topLayout = (LinearLayout) view.findViewById(R.id.LinearLayout); + int k = 0; - int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, view.getResources().getDisplayMetrics()); - int metrics = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 64, view.getResources().getDisplayMetrics()); + int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, ctx.getResources().getDisplayMetrics()); + int metrics = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 64, ctx.getResources().getDisplayMetrics()); for(ApplicationMode ma : values) { - ToggleButton tb = new ToggleButton(topLayout.getContext()); + ToggleButton tb = new ToggleButton(ctx); buttons[k++] = tb; tb.setTextOn(""); tb.setTextOff(""); - tb.setContentDescription(ma.toHumanString(view.getContext())); + tb.setContentDescription(ma.toHumanString(ctx)); tb.setButtonDrawable(ma.getIconId()); LayoutParams lp = new LinearLayout.LayoutParams(metrics, metrics); lp.setMargins(left, 0, 0, 0); @@ -368,14 +357,11 @@ public class NavigateAction { ViewGroup parent, final View.OnClickListener onClickListener) { LinearLayout ll = (LinearLayout) a.getLayoutInflater().inflate(R.layout.mode_toggles, parent); OsmandSettings settings = ((OsmandApplication) a.getApplication()).getSettings(); - final List values = new ArrayList(); - if(showDefault) { - values.add(ApplicationMode.DEFAULT); + final List values = new ArrayList(ApplicationMode.values((OsmandApplication) a.getApplication())); + if(!showDefault) { + values.remove(ApplicationMode.DEFAULT); } - values.add(ApplicationMode.CAR); - values.add(ApplicationMode.BICYCLE); - values.add(ApplicationMode.PEDESTRIAN); - final ToggleButton[] buttons = createToggles(values, ll); + final ToggleButton[] buttons = createToggles(values, ll, a); ApplicationMode appMode = settings.getApplicationMode(); for (int i = 0; i < buttons.length; i++) { if (buttons[i] != null) { diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java b/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java index 77c0dd8ee8..25953b5952 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java +++ b/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java @@ -299,16 +299,8 @@ public class RouteCalculationResult { return; } // speed m/s - float speed = 1.5f; - int minDistanceForTurn = 5; - if(mode == ApplicationMode.CAR){ - speed = 15.3f; - minDistanceForTurn = 35; - } else if(mode == ApplicationMode.BICYCLE){ - speed = 5.5f; - minDistanceForTurn = 12; - } - + float speed = mode.getDefaultSpeed(); + int minDistanceForTurn = mode.getMinDistanceForTurn(); List computeDirections = new ArrayList(); int[] listDistance = new int[locations.size()]; diff --git a/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java b/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java index 187ea23cbe..c096591c63 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java +++ b/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java @@ -263,7 +263,7 @@ public class RoutingHelper { recalculateRouteInBackground(currentLocation, finalLocation, intermediatePoints, currentGPXRoute, route.isCalculated() ? route : null); } - double projectDist = mode == ApplicationMode.CAR ? posTolerance : posTolerance / 2; + double projectDist = mode.hasFastSpeed() ? posTolerance : posTolerance / 2; if(returnUpdatedLocation && locationProjection != null && currentLocation.distanceTo(locationProjection) < projectDist) { return locationProjection; } else { diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index 9c1c94c85c..24b91505ef 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -182,7 +182,7 @@ public class MapControlsLayer extends OsmandMapLayer { icons[k] = modes[k].getSmallIcon(false); values[k] = modes[k].getStringResource(); } - for (int i = 0; i < 4; i++) { + for (int i = 0; i < modes.length; i++) { final ActionItem action = new ActionItem(); action.setTitle(view.getResources().getString(values[i])); action.setIcon(view.getResources().getDrawable(icons[i])); diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java index 996387c2d8..bbb147d94c 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java @@ -106,7 +106,7 @@ public class MapWidgetRegistry { public MapWidgetRegInfo registerTopWidget(View m, int drawable, int messageId, String key, int left, Set appDefaultModes, int priorityOrder) { MapWidgetRegInfo ii = new MapWidgetRegInfo(); - ii.defaultModes = new TreeSet(appDefaultModes); + ii.defaultModes = new LinkedHashSet(appDefaultModes); ii.defaultCollapsible = null; ii.key = key; ii.visibleModes = ApplicationMode.noneOf(); @@ -141,8 +141,8 @@ public class MapWidgetRegistry { public void registerSideWidget(BaseMapWidget m, int drawable, int messageId, String key, boolean left, Set appDefaultModes, Set defaultCollapsible, int priorityOrder) { MapWidgetRegInfo ii = new MapWidgetRegInfo(); - ii.defaultModes = new TreeSet(appDefaultModes); - ii.defaultCollapsible = new TreeSet(defaultCollapsible); + ii.defaultModes = new LinkedHashSet(appDefaultModes); + ii.defaultCollapsible = new LinkedHashSet(defaultCollapsible); ii.key = key; ii.visibleModes = ApplicationMode.noneOf(); ii.visibleCollapsible = ApplicationMode.noneOf(); From db3fdf58175224335e34becdd465f838cce3c43e Mon Sep 17 00:00:00 2001 From: vshcherb Date: Wed, 27 Nov 2013 16:58:12 +0100 Subject: [PATCH 3/7] Add new app mode --- .../drawable-hdpi/ic_action_aircraft_dark.png | Bin 0 -> 898 bytes .../drawable-hdpi/ic_action_aircraft_light.png | Bin 0 -> 1082 bytes .../drawable-hdpi/ic_action_sail_boat_dark.png | Bin 0 -> 1282 bytes .../drawable-hdpi/ic_action_sail_boat_light.png | Bin 0 -> 1512 bytes OsmAnd/res/drawable-hdpi/ic_aircraft.png | Bin 0 -> 1917 bytes OsmAnd/res/drawable-hdpi/ic_sail_boat.png | Bin 0 -> 2903 bytes .../drawable-large/ic_action_aircraft_dark.png | Bin 0 -> 898 bytes .../drawable-large/ic_action_aircraft_light.png | Bin 0 -> 1082 bytes .../drawable-large/ic_action_sail_boat_dark.png | Bin 0 -> 1282 bytes .../drawable-large/ic_action_sail_boat_light.png | Bin 0 -> 1512 bytes .../drawable-mdpi/ic_action_aircraft_dark.png | Bin 0 -> 553 bytes .../drawable-mdpi/ic_action_aircraft_light.png | Bin 0 -> 658 bytes .../drawable-mdpi/ic_action_sail_boat_dark.png | Bin 0 -> 797 bytes .../drawable-mdpi/ic_action_sail_boat_light.png | Bin 0 -> 958 bytes OsmAnd/res/drawable-mdpi/ic_aircraft.png | Bin 0 -> 1282 bytes OsmAnd/res/drawable-mdpi/ic_sail_boat.png | Bin 0 -> 1790 bytes .../drawable-xhdpi/ic_action_aircraft_dark.png | Bin 0 -> 1177 bytes .../drawable-xhdpi/ic_action_aircraft_light.png | Bin 0 -> 1382 bytes .../drawable-xhdpi/ic_action_sail_boat_dark.png | Bin 0 -> 1739 bytes .../drawable-xhdpi/ic_action_sail_boat_light.png | Bin 0 -> 2008 bytes OsmAnd/res/drawable-xhdpi/ic_aircraft.png | Bin 0 -> 2678 bytes OsmAnd/res/drawable-xhdpi/ic_sail_boat.png | Bin 0 -> 3899 bytes OsmAnd/src/net/osmand/plus/ApplicationMode.java | 8 ++++++-- .../plus/activities/actions/NavigateAction.java | 10 +++++++--- 24 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 OsmAnd/res/drawable-hdpi/ic_action_aircraft_dark.png create mode 100644 OsmAnd/res/drawable-hdpi/ic_action_aircraft_light.png create mode 100644 OsmAnd/res/drawable-hdpi/ic_action_sail_boat_dark.png create mode 100644 OsmAnd/res/drawable-hdpi/ic_action_sail_boat_light.png create mode 100644 OsmAnd/res/drawable-hdpi/ic_aircraft.png create mode 100644 OsmAnd/res/drawable-hdpi/ic_sail_boat.png create mode 100644 OsmAnd/res/drawable-large/ic_action_aircraft_dark.png create mode 100644 OsmAnd/res/drawable-large/ic_action_aircraft_light.png create mode 100644 OsmAnd/res/drawable-large/ic_action_sail_boat_dark.png create mode 100644 OsmAnd/res/drawable-large/ic_action_sail_boat_light.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_action_aircraft_dark.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_action_aircraft_light.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_action_sail_boat_dark.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_action_sail_boat_light.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_aircraft.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_sail_boat.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_action_aircraft_dark.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_action_aircraft_light.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_action_sail_boat_dark.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_action_sail_boat_light.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_aircraft.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_sail_boat.png diff --git a/OsmAnd/res/drawable-hdpi/ic_action_aircraft_dark.png b/OsmAnd/res/drawable-hdpi/ic_action_aircraft_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..772c6d4e0b4319e2108fec9bbadc7e79b11dac8a GIT binary patch literal 898 zcmV-|1AY97P)1jH>=zzQry@pTsYrI(#DpYvqY%PDHpP( z9KscHu~_A>&Zp1s(G1gkb9iTFU)xvj)YHs2^ZuXz^Zftsyz_pgnkqj^Rj$9r8R+f~ zx(>Jw6s&-oLIn$0INWuha0v?%xDFI7;Gghvx!jA>EHD#{1p~kba37p5l}fkb^5p6O z2^BXPi~*m(1Cl(p zAI!65pceEuFy01VLsuG*fVE%_h$=$6XQq|Jcl^W%SI3rsxuB1Ma24SU*aMHIRK=02 z0|7x(xZVIpgqS<|eF7XOaRR)XcA!xP@Z zSrwZG>cB)`noHel0xgLDk!IGEG>u0_hBN4;H&9b+1sIhY_;0{#E)RoK2>)Ul7i$1P zTFyp;>kz(ABQ#u5qG;5$qv{-aKBnafKTk5CX`re;0~;ZK97T@sA>7xCsin|lMG4Xz z;>Q8FKW7#0k54kNjzLSkfm-Xgk?6c1=&dN4-&#?6=MeCMm|8f$<%s$G?K`ny;619tPg#CHCXe3~2e= zpCgH;#YJ!o=sPhX#BmbwTXXPMgrqK`bfKB3afZp>FzzhSiqcN3re7=Q7l{AKbsf*2 z7;+{KGclk&Ph$ehcb@5Mc>!Drt|%DLcR=q^@X(m`T_Ii^CI+Y0Mlm>LM{V8#}33F$s*2V ztW5)x5a9m})Ye)buE;+nCPM%F6ruy#M`=H$qZ#qLiwNxw16q0)0R7otZKL`!WpfH` zf&Ud~Li{@$)wgQEmf$e2wGKD~h81ufFf5d{VXgz#N^3~$I$&5RYr|Xztd-V~xavFb Y8?id#F$UD%DgXcg07*qoM6N<$f=i~G+W-In literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/ic_action_aircraft_light.png b/OsmAnd/res/drawable-hdpi/ic_action_aircraft_light.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f3e91caaca46100024ed3330650f8ccfb9e7ea GIT binary patch literal 1082 zcmV-A1jYM_P)Wq}P9C`BR8sFOh>RQ8}+wTK=o-MENW(MBT37DbC}8`Qc*BteTF z1mzeSg{YGxDwv81W#TiN@jd;H%#CT9JNMi<4k6ru%gjCJd;I_Z?|k3Aqh+k~kG9V7 zXV?V(cLnVV*cDJzz&=8X0xG-P6;PH?F@RkGMFDkpXIWX9Pt!Cn3p=^8xx$f1WRUN7 z9UUD#MtM@LfadXd_Bk95H%aC)GcyO<+uMh&k|`-E*$8OA)9E}yoXrOQk(HH|7r|ig zS)%=v2%uIC!4Ad-1ju(l1o{31nF019Muf`C%kuzr9O9Mu2(^=bh}lQXhBYG)1#p(Y z6$Jf91lGp|8TQ&Kf4`oXs%-~!Rn*UA23&~1r)6wxtZ`&yB)nz>^guqJuNWmSaKAOK z8X*!lv)4rFryyL&{Yh*}5)n=W4Ey2b<>e<`U0r?2h^BOeVgnWx6}j^A@=mdKf@_+@ zfu*IT77~Y1+{5{Mh~jRZ0|NK~);3rLfZs%JZtnF!Ah2ZBH`d;eKyh*LHkZp)kE)Is zhxa7z;=Y3QQrX5d0QeL^Ua5c=zDb*yKDZPGnra^LFcS?KKl2yn=jZEa*4b18n;s!y zz%kiFV_vnIger++@sX>EL2!}#!nhdCsQ<`n+(h=KW0YpThT|@oWB~n1#act5P;+l@ z?>IgVs(6pJtQh~5a5#Lkr>EzeOiVKyQvytxgG`wkqd-x$`d5Up8+(TC?Vwc<5wHI$5Xn&?Daqv zys(oYuo}dG>;YR5C6mI_Srx9}x%|Cd#NS^KmRkOiP>XA@9WP}SeA zfU1J3{&oda6;$=NE1;^Ns=r+URRvZ3*L?+k1FqMNKmpA5(*OVf07*qoM6N<$f?hEL Ag#Z8m literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/ic_action_sail_boat_dark.png b/OsmAnd/res/drawable-hdpi/ic_action_sail_boat_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..8a07f7ed886d746f1066a679ee1b8995e89ea8ef GIT binary patch literal 1282 zcmV+d1^xPoP)q+b*Yzez+Nf(WEggA}xdQbaK7L#|*U zl~j~a1_k1WEEP1D%n~tM6ct+De!nwOU|HmJsC6fcPu~EbpxX#zK5N0_G|JL4EoE zS1ZJ{$^$P$_UAyry*zK_`AFF!N*BOvUjxavz#?C`7Ti!sxt6eG}3EHI$I;zIN z;X!s5cAf)g=h*+oyN3{=Hwu@+9)P@uk-5&zbw&#X+<@(yHS8B4U|nJMG$-Lvqpo-BmBZCInZS(@_ZUVOeHvqTPP|$7!Os_j&#-Je&R2u{_W}B&J zwx{=jJbP>hB|=g`mpchXuby=UFwli`ya2eD7bzxqMe-bXxT7GwJ9~3`s^0k!Bj8#( z@{-ckWhLajU(_ry0z5t61+L+)Do)soG0Um002#B4+zOusQT9!!blJR8WIK%}gor7w zNzlIug0-6Nr1E*l?#BzbEy-I1XZF<_%Iyz-AhR`Mab)1-FB9sxaQddoT9Y5YZ`3-TQ%A>6h4a=8+EH)mlO-cG)-s-UZUx zw7r*bXUtz`+{?YmnYq73uYCi4NS-g__j-^nNn>jl_!guwka{%br`NUv(~$v)c_vRx zkr=T3Zs7ONlxVh3*SJCN(#tCbu0dHXMii!~?B&0q7lgajsO4v literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/ic_action_sail_boat_light.png b/OsmAnd/res/drawable-hdpi/ic_action_sail_boat_light.png new file mode 100644 index 0000000000000000000000000000000000000000..266ae3b6251734ed7f7fdcefd61908f7f8e34ddf GIT binary patch literal 1512 zcmVP)2UQt7enUW)rtmiuAGdLGZ=57Ah+Bf>(rs(Tdc|Qw0SP zQK%0EMZ^bhFWRcDy5xRCLQ`!^vKrckUN%j3b6I~U%!KLeWo9X#n?^=P{>eAMd{L;lt*vcOZ*T9{s}cat zw#&dD9J^CW&7~w>FLL_ayX}|0w`T zTAY6#C%0u9*Z`oEW%LNT?lh6QJ~=sgaD04xCKnL4BT!pgyRN#r`WXgm$TpxJ0D$YE z%E3(flo`kR`}GM#QXq_RM-!Ze9ma0}e!TCDYZdnR% zx6(%kK+1?i0N9+RAL8UIeSLiwtk}L`A+Xv38dO7rHmUO&td4$J>8Amp61^Xa>@yoD zR~p&Q0dd6d_j}oS1xy>ClE^7`Gyp8MyNR6CN86;x%LD{jga~|W1~g?6u-n0?FMELi zkurhjR!wePMk%R1fNlWHUFb9-uQdRgU^#u=u0J_NAk!e~VMd}N(K)L-Ql@nA`Fyu} zJf23VvjhlWRp>v*yRDXX^&paR{+DiKK}5|`MO<#greF19=9(!h#xiN)c^ zSSqQ8O7&c^JQ>)ZSLM^l+$8mz>Bh+j0M5Th2Yvl6P7h%0UPJq`UF4(c!9G*LcLAL# zbbJ{=$B~a93mA6kH~^%CPr0&1-~ig?7@FmtwESfv)D}=6cHF9XN5P zI%BeX%1jPGjo*1n*}RjeNun<206L>{b92AY7K3Wrc?Qst$#AKWJcIn#p`oEa<##;! zav$*&?M}s+1}f=d3oz_51k#4d3q%@AvCZc&1|wa#SQ>*TGV-{&W5?SnVQwC6qW{3?fxlK#f#DIcgw53m!!zN!UsHe_ys<*y`9$ z`(~ncQxUdF3fjj;D|Kj_y;;dHH(!n%+Q0TEtG5!vPhW@(?#7(ma=5&`+HHL+ zmp!LwvWHA&w70}HG;n7y#D6vkiHT*$R$~P#7K=}s(>~Vv`A>ZuDCK|oEJ$q(>k6tk z%8%hjhcRcFyQVU{u7yt<_&$ajGM4{X44`ftZc-k|D%;V;oS6HS26J{3_uCNl9b+kN zA%7do$$x&AVSYiA599kiwAw@1u1|(8H|f*}*|@Tv1Z&Oe)F7CZie^If8Q-~q{aWMQ z12*h42z>{dGC5s7BkZL#@u>z%nVp;m-aT!KZ(70D~X*MKsie{-qA=`-!g26 zI7RJV(}oS4BDP~(m#mHN1)%e^SSuW_gSKyUyFKa+yEmL#sN#A{=lK{zm)>Aj;XHPh z)&e#Ay#$FUJ2DGjtuA@rQG6yTTa!OP#Njv9&wTi<6vE`l=vYr;EbGlpm0SF4ev~m0 z;ncds2L;(&mrkAe&GD-z8m$}mbdyKIy%O!G8bGw$3#?YM>Ew#N8spLHz!qQ zyVO4R5ptXFo}s-<;6Kr1!Ew<@b=u-Q#sh~+csgx!k*|@!wfk`Cuy&m$*_qQVqc}kld|#angm;3}<}2j`2l2kx#)_;bC}JhF>%7kVu%H6;xSek!pYNOKN22`w`b z;xc0Pg$*n2l6DwO4u*BM+AZuoHMn>-s0Q8xG7XW@Aia_=0xjRGPp#|>@ga}TW8FjD za0b}7s^VBxaHA7WAqt7B0@gk6cj`w8<55AM30hr=m0VFR{~*FRzI7y?bG7kyCQgC; zz2{5*v!_0ZPqu1=9_(UC;iR{tZq;*I#v1o^|GpGC&_97j(QiGPHpu?7SyJa0 zcfloH*0$Z#J=LTR5e1K}9=ZdmYGH+98zUYF#j?@Ht*r|X!;8oU;EwsvYHaUcE`KHQ z)ERka%P%>Ap+aITK1mME%u>*u|JJb;@-??AJNPsk3=Rv`r6u>G(BraDRcB^CPt}%~ z@1Yut$1Ng0A14+-Y#KTL3f8etzhMiq{bB_zNaMj>G_7-4n)+K6#}t=P2BuO3F?FaP{)phO!Le6pK`aUVO|1}(9zJq>JV$9Fso3XO^_@Nt@ z*kIK~Jv|ZkNap%PK9AI(O}|4PApNXESMmQS$$!NnX?4F;Y5<7I;@6XYunM599Z~gG GSn|J#GGK)O literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/ic_sail_boat.png b/OsmAnd/res/drawable-hdpi/ic_sail_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..88fa822fa97787fc46bc302462f2521561b19801 GIT binary patch literal 2903 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 TF!cFfVFnoLn(0()IY<2my53*x literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-large/ic_action_aircraft_dark.png b/OsmAnd/res/drawable-large/ic_action_aircraft_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..772c6d4e0b4319e2108fec9bbadc7e79b11dac8a GIT binary patch literal 898 zcmV-|1AY97P)1jH>=zzQry@pTsYrI(#DpYvqY%PDHpP( z9KscHu~_A>&Zp1s(G1gkb9iTFU)xvj)YHs2^ZuXz^Zftsyz_pgnkqj^Rj$9r8R+f~ zx(>Jw6s&-oLIn$0INWuha0v?%xDFI7;Gghvx!jA>EHD#{1p~kba37p5l}fkb^5p6O z2^BXPi~*m(1Cl(p zAI!65pceEuFy01VLsuG*fVE%_h$=$6XQq|Jcl^W%SI3rsxuB1Ma24SU*aMHIRK=02 z0|7x(xZVIpgqS<|eF7XOaRR)XcA!xP@Z zSrwZG>cB)`noHel0xgLDk!IGEG>u0_hBN4;H&9b+1sIhY_;0{#E)RoK2>)Ul7i$1P zTFyp;>kz(ABQ#u5qG;5$qv{-aKBnafKTk5CX`re;0~;ZK97T@sA>7xCsin|lMG4Xz z;>Q8FKW7#0k54kNjzLSkfm-Xgk?6c1=&dN4-&#?6=MeCMm|8f$<%s$G?K`ny;619tPg#CHCXe3~2e= zpCgH;#YJ!o=sPhX#BmbwTXXPMgrqK`bfKB3afZp>FzzhSiqcN3re7=Q7l{AKbsf*2 z7;+{KGclk&Ph$ehcb@5Mc>!Drt|%DLcR=q^@X(m`T_Ii^CI+Y0Mlm>LM{V8#}33F$s*2V ztW5)x5a9m})Ye)buE;+nCPM%F6ruy#M`=H$qZ#qLiwNxw16q0)0R7otZKL`!WpfH` zf&Ud~Li{@$)wgQEmf$e2wGKD~h81ufFf5d{VXgz#N^3~$I$&5RYr|Xztd-V~xavFb Y8?id#F$UD%DgXcg07*qoM6N<$f=i~G+W-In literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-large/ic_action_aircraft_light.png b/OsmAnd/res/drawable-large/ic_action_aircraft_light.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f3e91caaca46100024ed3330650f8ccfb9e7ea GIT binary patch literal 1082 zcmV-A1jYM_P)Wq}P9C`BR8sFOh>RQ8}+wTK=o-MENW(MBT37DbC}8`Qc*BteTF z1mzeSg{YGxDwv81W#TiN@jd;H%#CT9JNMi<4k6ru%gjCJd;I_Z?|k3Aqh+k~kG9V7 zXV?V(cLnVV*cDJzz&=8X0xG-P6;PH?F@RkGMFDkpXIWX9Pt!Cn3p=^8xx$f1WRUN7 z9UUD#MtM@LfadXd_Bk95H%aC)GcyO<+uMh&k|`-E*$8OA)9E}yoXrOQk(HH|7r|ig zS)%=v2%uIC!4Ad-1ju(l1o{31nF019Muf`C%kuzr9O9Mu2(^=bh}lQXhBYG)1#p(Y z6$Jf91lGp|8TQ&Kf4`oXs%-~!Rn*UA23&~1r)6wxtZ`&yB)nz>^guqJuNWmSaKAOK z8X*!lv)4rFryyL&{Yh*}5)n=W4Ey2b<>e<`U0r?2h^BOeVgnWx6}j^A@=mdKf@_+@ zfu*IT77~Y1+{5{Mh~jRZ0|NK~);3rLfZs%JZtnF!Ah2ZBH`d;eKyh*LHkZp)kE)Is zhxa7z;=Y3QQrX5d0QeL^Ua5c=zDb*yKDZPGnra^LFcS?KKl2yn=jZEa*4b18n;s!y zz%kiFV_vnIger++@sX>EL2!}#!nhdCsQ<`n+(h=KW0YpThT|@oWB~n1#act5P;+l@ z?>IgVs(6pJtQh~5a5#Lkr>EzeOiVKyQvytxgG`wkqd-x$`d5Up8+(TC?Vwc<5wHI$5Xn&?Daqv zys(oYuo}dG>;YR5C6mI_Srx9}x%|Cd#NS^KmRkOiP>XA@9WP}SeA zfU1J3{&oda6;$=NE1;^Ns=r+URRvZ3*L?+k1FqMNKmpA5(*OVf07*qoM6N<$f?hEL Ag#Z8m literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-large/ic_action_sail_boat_dark.png b/OsmAnd/res/drawable-large/ic_action_sail_boat_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..8a07f7ed886d746f1066a679ee1b8995e89ea8ef GIT binary patch literal 1282 zcmV+d1^xPoP)q+b*Yzez+Nf(WEggA}xdQbaK7L#|*U zl~j~a1_k1WEEP1D%n~tM6ct+De!nwOU|HmJsC6fcPu~EbpxX#zK5N0_G|JL4EoE zS1ZJ{$^$P$_UAyry*zK_`AFF!N*BOvUjxavz#?C`7Ti!sxt6eG}3EHI$I;zIN z;X!s5cAf)g=h*+oyN3{=Hwu@+9)P@uk-5&zbw&#X+<@(yHS8B4U|nJMG$-Lvqpo-BmBZCInZS(@_ZUVOeHvqTPP|$7!Os_j&#-Je&R2u{_W}B&J zwx{=jJbP>hB|=g`mpchXuby=UFwli`ya2eD7bzxqMe-bXxT7GwJ9~3`s^0k!Bj8#( z@{-ckWhLajU(_ry0z5t61+L+)Do)soG0Um002#B4+zOusQT9!!blJR8WIK%}gor7w zNzlIug0-6Nr1E*l?#BzbEy-I1XZF<_%Iyz-AhR`Mab)1-FB9sxaQddoT9Y5YZ`3-TQ%A>6h4a=8+EH)mlO-cG)-s-UZUx zw7r*bXUtz`+{?YmnYq73uYCi4NS-g__j-^nNn>jl_!guwka{%br`NUv(~$v)c_vRx zkr=T3Zs7ONlxVh3*SJCN(#tCbu0dHXMii!~?B&0q7lgajsO4v literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-large/ic_action_sail_boat_light.png b/OsmAnd/res/drawable-large/ic_action_sail_boat_light.png new file mode 100644 index 0000000000000000000000000000000000000000..266ae3b6251734ed7f7fdcefd61908f7f8e34ddf GIT binary patch literal 1512 zcmVP)2UQt7enUW)rtmiuAGdLGZ=57Ah+Bf>(rs(Tdc|Qw0SP zQK%0EMZ^bhFWRcDy5xRCLQ`!^vKrckUN%j3b6I~U%!KLeWo9X#n?^=P{>eAMd{L;lt*vcOZ*T9{s}cat zw#&dD9J^CW&7~w>FLL_ayX}|0w`T zTAY6#C%0u9*Z`oEW%LNT?lh6QJ~=sgaD04xCKnL4BT!pgyRN#r`WXgm$TpxJ0D$YE z%E3(flo`kR`}GM#QXq_RM-!Ze9ma0}e!TCDYZdnR% zx6(%kK+1?i0N9+RAL8UIeSLiwtk}L`A+Xv38dO7rHmUO&td4$J>8Amp61^Xa>@yoD zR~p&Q0dd6d_j}oS1xy>ClE^7`Gyp8MyNR6CN86;x%LD{jga~|W1~g?6u-n0?FMELi zkurhjR!wePMk%R1fNlWHUFb9-uQdRgU^#u=u0J_NAk!e~VMd}N(K)L-Ql@nA`Fyu} zJf23VvjhlWRp>v*yRDXX^&paR{+DiKK}5|`MO<#greF19=9(!h#xiN)c^ zSSqQ8O7&c^JQ>)ZSLM^l+$8mz>Bh+j0M5Th2Yvl6P7h%0UPJq`UF4(c!9G*LcLAL# zbbJ{=$B~a93mA6kH~^%CPr0&1-~ig?7@FmtwESfv)D}=6cHF9XN5P zI%BeX%1jPGjo*1n*}RjeNun<206L>{b92AY7K3Wrc?Qst$#AKWJcIn#p`oEa<##;! zav$&4G5{V+NcN+wu z77E}LmMzOVOTGFT4Unvy4f9Y3H*g?G6i@FV#1=Ex1^rNM(_=2#*XPQBf=R4j6Nbu^ z&DZ?BM8cRc8RESMDjb^I5%V*|-?}znOqB8*g>E>6Ew}^yq7Eo=5WZqQg7BW*dd5#+ zQ)U^dfk9}2LI+`0Xbqx>zd6KwZ^e{zmEcF1X5&NZM%J2nAA%-uGXKol0_?K?)k*kk z{#z16rc6oottLRHw;gn_>N6!|eI4P&EaH+Ob_OJ}Vb4} z_iR8Lslp16#vhVMXdgCV4ysIS4Ds=7#ceBK47Bpp-A^Ct15wz~b;77BqtmTQsv5)0 z>yu?YY!4EN)wxEX0d%O&;TYlwNGLgo(_xI5*Av!sOR~C+;o&qI*SPEQa2X|2Pf%b(M1q-D1rzs zf{o@+11f<)6e>ccVklY+xjR3voN$;sle?pKxgY$<@qX`p-}n8EGPc7<*9rL+XtKA4hK$J_R(jfrP^0~)lyauVq5P2&kGnvdRIz!Zh*m{&>r_s|5KhPw>t0pGgei1!+$cuq-VME5$nZ;1ZxsLnkz z;1DnXz32h-75Orq|4POwpU-RQbo!Q)ExX_E-)uIUoyY_PkW!qc)A!?Wle^0OKx$?A z*nb=p3WX`iTyoOiqVa@Gpfhw6{tFF~vhmJ|4g~M8lw?Z=I*|yl6VBuKh%6hTpLb_x zR2Gp4FrL?OG)Xf)pgb=}b?VlOLO}lUZWH}Rx7(d>x7)w|D}iFMIL-*pG57cB{M9hd seaA2?SQxt~B?#khz$PXTXCThNZ`{Z8At@1i!vFvP07*qoM6N<$f+fy5SO5S3 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/ic_action_sail_boat_dark.png b/OsmAnd/res/drawable-mdpi/ic_action_sail_boat_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..92f8b1b8bd03f175b9c7a51af1a0c27447eea34c GIT binary patch literal 797 zcmV+&1LFLNP)x~ zE_o7ik1%HD`2A{a?au78&pG=vGcU91-`;y&zVElbwbr+GuBL}eu7~~C^a5m#Kt7)z z#q#~l<#J!ES;lGrHsiP%fKS~H!0h|t^fKCpzMz$WT+0HIDFOg2$Jr57X9V~@!~0p@ z?^X&?F#yi`;p9A;7y~%O`$Dtw*(WC2)*gZ;rt6oK7*Z$~WvGaZQn@46 za1;O|RkD-?!0gv!DQRsZfWx$}ig|m_dp!`Xr3gv_;Jg7N2T-2`V-dh5+B_BU(geWG z%m6snp<#7*7Xz)MZ8*A+;Hazi|9mJK1kh!EQOnE88XQXEEB{{c?X%cU!(B=yeu}h697(4s{_z<!s281p1tjX~Sj zNIVYx>v;}CtpLm~1u!8v@@La?uR}MG8PA^$PslW6nvIf^_2z_U=v}D)9Gn`t>tTEc z0N$4WOHu?*(&~CoMuP*4Yw6FY;S|tu-_fgJ$>cKxIqNsbWpfFn`X@ bkY0d)%xK~v`2|yN00000NkvXXu0mjftIBSy literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/ic_action_sail_boat_light.png b/OsmAnd/res/drawable-mdpi/ic_action_sail_boat_light.png new file mode 100644 index 0000000000000000000000000000000000000000..5d667cb882adea4e2363db194410f924cf5d07a2 GIT binary patch literal 958 zcmV;v13~0k zyD+4X&^g^wA&X3*ERe8mrMAz0&)DM4&F$UFyz#){9L{;p^Zd^9agJ`o8aLe<+uyJb zP_PFY8ym~Q;c#SPV&ePXgt1_NrlzLWqN1W#gM)*CwE)lq&<(&{0D{fU%`L;j!vlqY z6yyP$&9>KQG+qMWx_H3pbav=;x@SO)=L=B?fPou##$vH;DFE`}f?lt$2jaHJYHH_D$l&d^&6tL5>ju*Z%bm57x76{D%-2NoWTh&Ta0EDHTb?J!)1SaZ%w-=voe^wIZ?s=o=auYKn`Cn~13c1ErZf5Q#+2C-;|c|D<*BSA?>K zA!i7ZhYciJ4Ra?qb70V%@&LDwFD)%uad|C!A|s(l=;gEO85@Q)y1FeTB_%z%GB}U@>5-9< zJIF`Va%BZ2;_`0xEO{8oD2g}UFDxwdPEJk+HG4n=dG&U3_zKhV0wH3Yd(M0CINN)W zH3|9Uti16qK;)4r)(C=le4N-nb-Uf4`6srn6o1i|20-l}C!3A*U6M?U^Nb%Q!&9G7 z4v=X9KwhEOGcRX+%lLtFadP2_`g|GyuJ1)y0G6nN7YJ7~-<^bwi!#<{827QZIjQUi zX9mdpN`X$vGM^H8`hF>0#t5I(<*WcyKm~$vsvyWACy&WH!VskV6hF;kv6S-%RPh43 zDaXX)6bgm>CX>m9%=Fyc+#m;i}CkfnD+;0#z6dpbVU6bxf&ig_8fQS1K#dDPG(k}Uq6BK30Z{@qE&#C#h!PMbP~!}U z5~y(jh*iK5C9pE~Lwyr(>;Yg~IG~?Ydo$f*z;O_fzZ38FeQs9Cl_B7HF8Mps4@k({ zIq<(YlLm*nJwrffjR0MDJh61D9v>x;Pm*8DJiat09#Ffz&lwrJXj>5i0ZJF?%`=|%=^8sEP9`#DDx;?<*ak6PDn;7C5HR$asYgfXcG6bBw;DNmB zAjRvYyHt!{>3x`U{CFtj{i2A=|JlWM%uBn-V>`WT)R7P)lKP=Ovsbk)5P7kzrEVQ);OBv`+hy zW)&qsi+E4?@}g{Ab{|K4njTY#&?jYhzk7-A%J{YPW_sR5WZXNCQc8g)_3#&A*>C-- zqD)#zUh}Ou0Y!j;*eGcCVKYp=koNc!5~*I3>H)WNgii z(fv2wv)B9yV7NlvB435&^UkK_!+Nq-Le)M0%NQk1|Q>JHOF$ArOzd;F3q1<;Bzd^9-f-;h^VRonu-u zvqk`g_D2&B)0%#C0TemfZJegr{vg{ZpP1g!J5HwCSe|_|%lCxZ?Xyx=h6u4tfcB|+ z6L%k>sPws7Xoy-}YkU2(w6#6O<;j@3p@lXvb1x;5+{O`(&G?7&^;WmHMi{V6Krz@| zpZwAU4Gm3@$&8)f+Dd!<@|O}x9H1@ov(qfUq_4V8qo2*?Bh7DN8v$lO_+!a1sbq7} zm%wbN!;P7WFf*_LpQ;iNh$ep~tgQvS9DdA9jJ1vQwB-!ow`^K90`3l9S~ew5X}zI< zffkfKbT;s+<%|ptP&ESR4B$S7P&~^U&*yS0^!5&eIWA~kH3IyR)NVQ=JoJzJ@f9`X z)y@n4_p53IDAD8*+7vxP1uz7z%zCp&T2>jW8UeHd97Bf5x*U69@S)~EtR`aCziI@S z1#GvUAi!=$oi?6OfYWBoZoEPPb~Ea<@q_}LHe+_<6$-GMQKyY36yUTOvm38afZdEb sZ9Jg>r_Gq%c!dJ&X4Glp)w}|(1ACZRP^C>w2LJ#707*qoM6N<$f{5jD`v3p{ literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/ic_sail_boat.png b/OsmAnd/res/drawable-mdpi/ic_sail_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..4f849eca94021f1252c237fbb37c74c58db18288 GIT binary patch literal 1790 zcmV3$g6vywqGt**0c0pz;OBDnQrJb3UXh0f+0-dt8Y=Wr4@WH?bV`2iq4;Z77Z*E{> zKnv*i1(;rBt5@}*Tpnct`d zK~)7H_YWYj1tPc(0Px-7^qj`8lkxEik*O7_P^Sh2)c{x>-uax8gTbJ>0`UHTw&&X0 z9quCId;&Qn8iFbS3if%1N$FHb|FLcXxV-xaCyVa4Q}S9>k?D&E0s!Xyw!)_jrn3U9 zPVX)Z_cBGF2Hjmg`D96^s0|6b60QKV!}k)Dyt8uzT~ff|+e;{4+yN5j?^hLPZcJG8 z_i9n%E~}$qGN;myurN3*0GIa=Qebw+e)J|I`iYgc5e}C|knyi?ls% z0F;KU<=!V{PD?50CHUPO3Puos#p&CC_JxFSQ7{cX1n@O>iYp@xFkJtH08koj+W`jT z(spI!2HUz!gLdC=q9fBOk!NyFXQ1Cy-1`6C#m~5HnNz|A6lr_H0Vo|pwVy%>E9Hcj zVrg6%JP!!vbk4U8Bhmu$3{Lq>ERY0{tgPF{q47RCiy1(^v*}Sz{JW8(X%WyDc8B7Q zWSu_>;F>OnV>V zV@7WxiK0&pW`{M^#YT4&&vyGr+yDp*1y0WdiO|jXD9-)j^=>cD3Em?k8n(HuRzCrS zcpjC-#YwUI3#8NKc-dO0piE}07N>bHVsSGEAaqfV*d+x1Nk4!3=RYlY2kt5(@xqd+8w1Z$?(0!`gp$jm=nQTBrjw{eirFGR``dYYGuNX26XJesTW4J0B#|r zbS^6XB&5SRi?;ZJ95ts(=p0#D8`Qe6!%} zI+>EPyUjQDpIw?QBzpf68ze51^~mA#e%b%o>EbchmF-g;mxdUa;dRuI@syDds^*%` zDciI6oJ~s~Fj(v~R{-c1_etaTWD`XS#&$)m0JFopoiQGeu>e9@w!)1u3RfC2YA4`c zBYw+3N@U}&IPYWaeQsmeD-rBP@f}dcLG~htgDE8fJB1NGD-^^T840*SMFq`V!pK)q zPXD5m3`7lB9u1190feXlB9t?b>Qjn9JNbkhCv-S|6vZ*rbqnvf+QXrW00SFc4o~}} z28b#@1a~ur@K@wwnY+@sE6?JcrqhvEIcHBJn6?^luU)qL_4=Kll1JWArM$aIGcxe3Yb_}(MC$;W0FL^swp-dx0W}|AzWI4Vknd+W}!ON z7x6jbD{2KqY$-_}&;TUqz^LYyrU2DYC#fM#0ZBSAs=1{pKsD4!YDiN+k`9b&ZfOco g4Rw+lN_hqR3$)~1U*W_}_y7O^07*qoM6N<$f(4XE?EnA( literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_aircraft_dark.png b/OsmAnd/res/drawable-xhdpi/ic_action_aircraft_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..787ad1b9a531273fc5589645c2631ab2b9d4fe66 GIT binary patch literal 1177 zcmV;K1ZMk*P)7{?v+^gt*Nl39|XklBMWJ($NLLOe*slR{o3C2k^KNQOv;2$>~A#$?Ka$b+E} z*BFKC_t!c)j(yJF>)f-?+B)m2fBW3M*ZPM4`o1;YRE;v1RGG(L!xP{$pv)QYB~a!G z;3q*}0=@*woB>|~Wu5?j74RkCOW;3bpsK2>0d5ZjeL)w{94MRLfQR5LxRgqzs=~r6 zdI{iMU5x(3`1dg5w%^g+l0IX>7!!0p71#K<5-Ggx+ZP9GE` ztmf5+^U46#=UmV%Ph*wCNpJusHED@J)%SQX3TRR*M847K5ZH>|w^0-nm4LKCf>H1b zf#!uw8uJ?_(Psu@I0!L~njC0ksq~IF5s# zOnvv^?+IXl`EKL)9~1nz3bv#7W+4hHRFEL37lDQqq1XiBGvKs8=yegEbYTmswh<*v0O0Ue?cu%3Q{z-O=tsD49t zSZ4Iwn$gx=(6|~7Yg45eeJ{4}S3}P~U84}NkzU$zrsX_8R^iCIAV(N&=~R6y&HDq@ ze|1Hquc@w*p#D(^&?cuMtFzYb<(X+n;HveZU@Fl5yjY^qpNy@i#Zs85Ckg@Dk?jVZ zvK-Kwy8~PRy@2YwRSZs^BKV~-=>4rSlmInibaen(7MBxw^lGk|p583QVLvJXI({Ao z`F3}<{wcLJpJ-L+k)!iXf}dxr*rt6X0!$Xn=Q+zpd5*Rpcz+aV8~l{)(qTpCh#*-+ z8}0C76B`1wS3dv>-L7iSe*~N$D3PGj(%C_m7ePzp1K!Vwy5tthP-Fs(!z*}>wlJn+ z@EMIbf#`1FFM)veywDaoNLJA2n1!u^n%WZ34lCP1qdeAh6ul0Vx;pNPgg}7+Et{(Y zKEB}H1o~>FiB+r!kS92;Gx|8t259a72ws9G;2wB{b7W1dY&kzy&zq#3DDA-y?N3>M`w!Bx!1ZerwGMJWF4?RgFU_Vaj!bGA&&unV{ zPDu(s!-$g-U;=D{54sjl|0Crf!LKTH@UrKM0No#KF#(_BxvUhsz952K5ujV9*~yjfM+fdXo9JHH!kTbo~6oBO}bCBV&qHfO*sfi_P7cM)_;z%79`XTU9iHctR|7jR3!Edd8I zFgQ5a)z{Y->gebQYMS;SE({clMakxC+?Tn}ah>N`G;&XQ2~12(c%#v%7%mtYw>lmS z2Jh|c?A(jvPm9wA^Dk^{Y>Imlnc$PBxnF#$Qa#G*j z-QDB7f67FC*HV3x`KNn&dXCS|&i-ozR>oBmaLZ;S67j9At-S&Xkt!QG{y$B0PnH)a z>U(FYzV|S8ml@DHGP39+9KJRBjE|p423R}MXet&;&Z?8mKZlnFXo_>k=c?g_g?fAno5S)4c|=tag8*=#md z>iu=aAvBD>H>w9A1_tP?6t-lnV71WbXbx_O$R z_NQ(2x#e5%O(a{G)uKFpSQQ~03AVA07s+zfDX^i*K~4{-v`P@(tt%m4rY07*qoM6N<$f;Vf9?*IS* literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_sail_boat_dark.png b/OsmAnd/res/drawable-xhdpi/ic_action_sail_boat_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..5a8da90b12d1cc45de62288c720a9e7931a6fb3d GIT binary patch literal 1739 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 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/ic_sail_boat.png b/OsmAnd/res/drawable-xhdpi/ic_sail_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e1dc61249bd670683bdd5c23648549b162dbb9 GIT binary patch literal 3899 zcmd5<={ppB)c(zwv1ZFIyO^;rB}1CV&X5`M*mv2YB74Y?Gzt+>*$K&-tYPe=gm@ky z%h*$vkuvsqz5l`c@%?bl`EagtU*|g4eV=ok1iYCcE3+Uo0D#rlNYCOl68_g1=}&z( z+VwL4>`-GpZObsH4M!G#%l`z>tJAGw>2HxK*J9nYwbQ>z+Zmg`c^u9u`cGt?Ri&nT zu%C&XTTa>3P#v}&ZP(j?zFcqDA<*l`Yxh`!2mUOHP{^|myB5N=4L33}y1TU&nsLpu zWpi_;fAULP#Bk2!fZ1*~Etf`XKg^>Yt z0USIs>6l-aW63|wFrl)eJRsaaND=breYHFRO6Zm%`|m!73H#;wL;;Cv`D&sQ^<1>n$Ux1-+Jr#Sixp}1eWOJpHw{*{1l2|!vY-b zLflTdZZhs)nU0yIxjvb;>iY4&jY8bomKj2>km=c{B<-dKy0iQ~P*AYIPA_)(ws!@j#vxz>~KD8%QHDig`0^~zw6mb=0*4R*pyUrpS|nMGk_?F2Uv ziKeq+D%U;P9xseJ3RHLWpU!MP6PwM@u`W$hRSvgrI_qvrn9S|4#O}A~VhWB5GNx*K znZc#!n34DDzvra06OCbD$LW^b!Ed}PU&)i|M^o%#HzUn`9bfjBNGJ=3nAwBS>*P@U z3Qn?^Ly02}?a#aK;~J$&)Gm)?aTI-t9gAnZ%L~KT+Ld_1U-{7=JO4I< z{%Lf{%l}k$2y1{5T4eYuI3c1LgjmvO&kcbldft3Zfe%I!&8_tf|N1SboEfO7uNMX! zZ<=A{==oy45?QGz zN?+Xl*r)oF&KoqVBNB6$%L5YX0_`0eAQ*l3L#?5@%&yvC3*I1k5EsJfZ1zxjJPubs zp6Qf{ots~GX8~gNjm*&doUxi_@ilG`KV4qtyQy!v!5%Z@g`<`E9W z-mgZ&zU%p&@Y_l}W(DmN258B@hZNC+pPx=%+@q~i>n;M>S5Ry5Dd`5!M;0GEh)6-; z8Gae(I?d55Y4?_j!G}eeM6ETK?TRMf&o~`Ru~c5r^CRfctneE0dKJ;7K4&p|-c*2*-P>r&%YN%()<(K#owKgu^*DDKa18xe zQwqKIuNobOG1gTPy{`)6WFtsYM;c={->G^(=!?;^vm_OV3_^_msABs@Pw5}&>3+DR zmE;(=oDaIy$F^C!AcT6_j{odyPb$9q#awMoq^^M)BBANlDZ0{VdkH>C{WWvEKOibB z$C6I4x??N&2bP?l;7y};cO@*__}3QMjYrK51}4seR2L33oz#(=-@;(uosx5U+q=*% zNGB?fJjt3Q{5pHWjrr*{GWGpI<5tq3isB$fV?kFJ(-4;|*UrG8G# zP=vn!8(A3r_7z33*eu=PVlR`g`1ph+HqZs4J-@ALW8{1CH3sI=DIW2Y-C* zX+wE+#Z*9*er;3nOIMmYgI=dMnm<4%J=>{1%1uz|E%IRkanH2;vaB;>M}vkECo9#K z-L_n9luQ8V<^Pt?zqsc5T<_8yvw>sM)Tq>Ct4BqI?di(zN^V-VvEs;ht)gYv7woiH z{^m!fo|1y#LWzV3)aKLgq9L~o+W_BFw7Li9zw=rItNgmzyTE`>Zi~(aYedsd%A1Pup zO@2lvrGgNb_JDs?GAfeXc;}laP2Xx$W?ni2P9T2&5Jl3OU4GSrY-hp!Cq-6YPIP3d zeXL)|jyu??v7y%en@$p)G&*2->L6Aso53WAzCa0ROF{uWoxv`_D%rve?=*6HVzG#J+2|K`E5 z!s9CCvLK8ma#GrN1EU@4wONB*<>(@WNw>xq^}gM8nU-QfEy z98)Cb_5?{UU8^UX{nXX6g6bb@8kD{v{jmd8@8@TwbAkbEczdyqL3&3lok&%ssDyn& zEDYqvm}m9~H^1;=nvCCV`ATBMxl|_Fb;cD3zZN$|hcm1)w)t`h5@ddM+AxcM44_!Y zjcHzh2Rr=&1cIl0eu{#oLe zm5~ZI5CF9v@8>Td1ofwwM#Bjyln58MXx4$w=EBb)#z#hr$37)2fMKytFsP>!Hz0xx z;Qx4dWi^u3^gUA0nB<+#wZ|AK<1jAsVps2FmTkkkMF@eqGs4H(9Y(Hv=;0Qc0(<|^ zz#<@Q@gK(OgoTue=Q@Vt3%}-_wLbTUREkXBt#tUVaqZiFFmb?{c;eZ7?-u2n)9A&6 zrTjER#@(Q;J(e2PV-cZ_K+}~y^y}PXdsHR-(cUL@zUNd%v}fhX$6}v#yYo_=1Iwj- zHGXWTLRh@{=?ALmihkFA=k@Vh_=e22gUu+rt=+H|kHYvnH$rJa4=4k=7xkuiq#&sH zt-nIkjbno?=+ue}?O&`1+BmhU1=RG0yhm-8uxM^8op~|G^ui`S6t5^p0miQ4fG~A+Q*rV}NcQ*QiLU+pruSIMKGvEu64K&7Ilrr@DfC-xH0#A`pnSgJFMr`!&vCF zrOS2BwKmkn{X`e*qwL9UxaD23`n139qA>O{3r$nQAR3uWGA6!zd3HBgsslu$R=FAS|o04?>0qm z8?tzhuofRjhm|1ct}UW=H<*MD$AvX9*j61YKVwmk68$4Z+51)(`b7MyWPEs&m!l2g zik&yfo=5G>c{VLClL1CjNG7|t`(aW1G507dV%;5O-cs=T+mkpEIpkMxhP7WHw_ zKd};sH9r62PcGw0ukS6m7#c2`70^0Z$plR8(kd>;j2cui8mFFqV%#cInM5cdDj4Ch z#0)HYyqzVO!R~)K>8WzSh_fgv0SP9oLoE!dfS7*bu2dm#ah@?2X#RgvNTXX!lN*#| Tb7?z$ih;4dnO>ESOYHvuOW7WC literal 0 HcmV?d00001 diff --git a/OsmAnd/src/net/osmand/plus/ApplicationMode.java b/OsmAnd/src/net/osmand/plus/ApplicationMode.java index 73f903e776..b26f7c8e4c 100644 --- a/OsmAnd/src/net/osmand/plus/ApplicationMode.java +++ b/OsmAnd/src/net/osmand/plus/ApplicationMode.java @@ -18,8 +18,8 @@ public class ApplicationMode { 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_browse_map, "aircraft", null); - public static final ApplicationMode BOAT = reg(R.string.app_mode_boat, R.drawable.ic_browse_map, "boat", 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); private static ApplicationMode reg(int key, int iconId, String stringKey, ApplicationMode parent) { @@ -74,6 +74,10 @@ public class ApplicationMode { 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; } diff --git a/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java b/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java index 6cc7b49a2c..5ec78337c4 100644 --- a/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java +++ b/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java @@ -31,8 +31,9 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; +import android.widget.FrameLayout; +import android.widget.HorizontalScrollView; import android.widget.LinearLayout; -import android.widget.LinearLayout.LayoutParams; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; @@ -281,6 +282,9 @@ public class NavigateAction { private static ToggleButton[] createToggles(final List values, LinearLayout topLayout, Context ctx) { final ToggleButton[] buttons = new ToggleButton[values.size()]; + HorizontalScrollView scroll = new HorizontalScrollView(ctx); + + topLayout.addView(scroll); int k = 0; int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, ctx.getResources().getDisplayMetrics()); @@ -292,9 +296,9 @@ public class NavigateAction { tb.setTextOff(""); tb.setContentDescription(ma.toHumanString(ctx)); tb.setButtonDrawable(ma.getIconId()); - LayoutParams lp = new LinearLayout.LayoutParams(metrics, metrics); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(metrics, metrics); lp.setMargins(left, 0, 0, 0); - topLayout.addView(tb, lp); + scroll.addView(tb, lp); } return buttons; From 93df290e0e839c734edf3578ac3f9c1022f88694 Mon Sep 17 00:00:00 2001 From: vshcherb Date: Wed, 27 Nov 2013 17:14:46 +0100 Subject: [PATCH 4/7] Add new app mode --- .../drawable-hdpi/ic_action_motorcycle_dark.png | Bin 0 -> 1166 bytes .../drawable-hdpi/ic_action_motorcycle_light.png | Bin 0 -> 1404 bytes .../drawable-hdpi/ic_action_trekking_dark.png | Bin 0 -> 1126 bytes .../drawable-hdpi/ic_action_trekking_light.png | Bin 0 -> 1345 bytes OsmAnd/res/drawable-hdpi/ic_motorcycle.png | Bin 0 -> 2736 bytes OsmAnd/res/drawable-hdpi/ic_trekking.png | Bin 0 -> 2535 bytes OsmAnd/res/drawable-large/bicycle_small.png | Bin 1757 -> 0 bytes .../res/drawable-large/bicycle_small_white.png | Bin 1788 -> 0 bytes OsmAnd/res/drawable-large/car_small.png | Bin 3512 -> 0 bytes OsmAnd/res/drawable-large/car_small_white.png | Bin 3508 -> 0 bytes OsmAnd/res/drawable-large/default_small.png | Bin 1435 -> 0 bytes OsmAnd/res/drawable-large/default_small_old.png | Bin 4145 -> 0 bytes .../res/drawable-large/default_small_white.png | Bin 1437 -> 0 bytes .../drawable-large/default_small_white_old.png | Bin 3670 -> 0 bytes .../drawable-large/ic_action_motorcycle_dark.png | Bin 0 -> 1166 bytes .../ic_action_motorcycle_light.png | Bin 0 -> 1404 bytes .../drawable-large/ic_action_trekking_dark.png | Bin 0 -> 1126 bytes .../drawable-large/ic_action_trekking_light.png | Bin 0 -> 1345 bytes .../drawable-mdpi/ic_action_motorcycle_dark.png | Bin 0 -> 701 bytes .../drawable-mdpi/ic_action_motorcycle_light.png | Bin 0 -> 861 bytes .../drawable-mdpi/ic_action_trekking_dark.png | Bin 0 -> 723 bytes .../drawable-mdpi/ic_action_trekking_light.png | Bin 0 -> 866 bytes OsmAnd/res/drawable-mdpi/ic_motorcycle.png | Bin 0 -> 1667 bytes OsmAnd/res/drawable-mdpi/ic_trekking.png | Bin 0 -> 1572 bytes .../drawable-xhdpi/ic_action_motorcycle_dark.png | Bin 0 -> 1656 bytes .../ic_action_motorcycle_light.png | Bin 0 -> 1928 bytes .../drawable-xhdpi/ic_action_trekking_dark.png | Bin 0 -> 1563 bytes .../drawable-xhdpi/ic_action_trekking_light.png | Bin 0 -> 1761 bytes OsmAnd/res/drawable-xhdpi/ic_motorcycle.png | Bin 0 -> 3673 bytes OsmAnd/res/drawable-xhdpi/ic_trekking.png | Bin 0 -> 3580 bytes .../plus/activities/actions/NavigateAction.java | 13 ++++++++----- 31 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 OsmAnd/res/drawable-hdpi/ic_action_motorcycle_dark.png create mode 100644 OsmAnd/res/drawable-hdpi/ic_action_motorcycle_light.png create mode 100644 OsmAnd/res/drawable-hdpi/ic_action_trekking_dark.png create mode 100644 OsmAnd/res/drawable-hdpi/ic_action_trekking_light.png create mode 100644 OsmAnd/res/drawable-hdpi/ic_motorcycle.png create mode 100644 OsmAnd/res/drawable-hdpi/ic_trekking.png delete mode 100644 OsmAnd/res/drawable-large/bicycle_small.png delete mode 100644 OsmAnd/res/drawable-large/bicycle_small_white.png delete mode 100644 OsmAnd/res/drawable-large/car_small.png delete mode 100644 OsmAnd/res/drawable-large/car_small_white.png delete mode 100644 OsmAnd/res/drawable-large/default_small.png delete mode 100644 OsmAnd/res/drawable-large/default_small_old.png delete mode 100644 OsmAnd/res/drawable-large/default_small_white.png delete mode 100644 OsmAnd/res/drawable-large/default_small_white_old.png create mode 100644 OsmAnd/res/drawable-large/ic_action_motorcycle_dark.png create mode 100644 OsmAnd/res/drawable-large/ic_action_motorcycle_light.png create mode 100644 OsmAnd/res/drawable-large/ic_action_trekking_dark.png create mode 100644 OsmAnd/res/drawable-large/ic_action_trekking_light.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_action_motorcycle_dark.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_action_motorcycle_light.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_action_trekking_dark.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_action_trekking_light.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_motorcycle.png create mode 100644 OsmAnd/res/drawable-mdpi/ic_trekking.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_action_motorcycle_dark.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_action_motorcycle_light.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_action_trekking_dark.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_action_trekking_light.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_motorcycle.png create mode 100644 OsmAnd/res/drawable-xhdpi/ic_trekking.png diff --git a/OsmAnd/res/drawable-hdpi/ic_action_motorcycle_dark.png b/OsmAnd/res/drawable-hdpi/ic_action_motorcycle_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..0600f57d892635fc27c7fabe9ab61bd84c2b534d GIT binary patch literal 1166 zcmV;91abR`P)7{^`vo;5oOA!W&utXZ@BpeB3BNP~t3lMfg(g!#e;DWl1hWM|Z%tRu`=^I_7E z=wha7NBHECzq3KZfz|@ix3e*QfKW{0HhbK?Se0~w4&)$j7Q7>Ms#6(F&GRQhp>I&J()?h z5dUcCiE{@S?#P1QLUHd(b`BhaxU-EBH*jEC7zZZEAcw}kKrRWMrw--+60>ulAJUUR zZ3ESBQ=olaPqic97AOPdK#Md5D0@!Z5*)beR5(;Fu0?G2_koa21-;{#{2e-lCP0Na zusjZq3Kd5VU~ofZM}qD^3t1`8XX2NPjibL7G>gHA1IQi+M?npc0XhL4eA-S+Kmq*s zqH#ubz!ep966AId|o^b$iVqVaWy2D)o0?mJQjd?Kz%h`%94QYKGL&m zhvCYEM`y)|5W&a1uLtcxBIpKGKC{sAhaei`?offwrTtiN!Q_olx;5vjZ g3A_xr44`ZEU!v$%K+Fd_0ssI207*qoM6N<$f~jmD{{R30 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/ic_action_motorcycle_light.png b/OsmAnd/res/drawable-hdpi/ic_action_motorcycle_light.png new file mode 100644 index 0000000000000000000000000000000000000000..ac248eecc3913c598c14f78de51e89cb8485e03c GIT binary patch literal 1404 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 D@;jEu literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/ic_motorcycle.png b/OsmAnd/res/drawable-hdpi/ic_motorcycle.png new file mode 100644 index 0000000000000000000000000000000000000000..92f0c6f545799578ce25185865ee8b057d56a7f1 GIT binary patch literal 2736 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 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-hdpi/ic_trekking.png b/OsmAnd/res/drawable-hdpi/ic_trekking.png new file mode 100644 index 0000000000000000000000000000000000000000..805ee9dcba82e2a931511146acce369f4415d2a0 GIT binary patch literal 2535 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 diff --git a/OsmAnd/res/drawable-large/bicycle_small_white.png b/OsmAnd/res/drawable-large/bicycle_small_white.png deleted file mode 100644 index 27ffa2d2bfe9eca1c00e5fdce0e0b9f6d703cf10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 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 diff --git a/OsmAnd/res/drawable-large/default_small_white.png b/OsmAnd/res/drawable-large/default_small_white.png deleted file mode 100644 index 342f37f124d14dcd282323def1a859820025b746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1437 zcmV;O1!DS%P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGqB>(^xB>_oNB=7(L02y>eSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+u3;o;$#p`oG6EOM6J{k*uic%!P=Fl>EgW#udE_y(8DwE+T$ z(Vv!ap+eg%LGe1B7J{gM_w&DQ~bN_+dP+h+qma44M{$IyySM z9*-xludnZPS6A1U?CN6}S&czcsyFNR`;WJ_wtDc!UrHv>)6;VT&un7@Qqet6+l&%0 zC4NLOIKQZyu7?+?s`QxJAV9b&+8M97nk z7<~c~b81wW5PB1Y)q8}Mar~OF91+PEuh;ttL~g24VM2Hf;*FjH)Fz$OoE={{4uxLa=1ws<< zzmv2(DJ@o2RaGsg2n^l{CMY=`DeI@_RiozmPk$JAjywVi@l`HQDF%pB81LG$`N@< zChAZdd6Yn2q;i72M$s7Ym*bdxt}l>5u&bfZiUlKL-LiU=WglQ8ljd-2dd za>LFM{2@udol(pVmBZ!#7-SaE8Rz|ey;Ep1KXXImqpQAXUD&Xi&;;8;Yb*)WAgycWPNUVn%6-{Kk~nL#2?R%f}YH#a9x)dmwZYLoUg}Q3%|kZ=Ad2TSDh~b~!=5xKM{ZPN`Bu z-+AOJdb6U>@hl(Yqz;pV;0pP3nmZ_qGABisjW2jlyuq#wKB6Odca?q@^b5c;D+iofF!IKsG(A+X@h9~Zb>u0%p(8+ltMRV@a-34vtoUJ&T5 rA+cX3^qjnLvgGUJ{9^Migw6IZ3(MF!)oh9i00000NkvXXu0mjff5Mut diff --git a/OsmAnd/res/drawable-large/default_small_white_old.png b/OsmAnd/res/drawable-large/default_small_white_old.png deleted file mode 100644 index 8a7e20a25a65eafb7c9c3813dd4d53b0ce0e4d4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3670 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 diff --git a/OsmAnd/res/drawable-large/ic_action_motorcycle_dark.png b/OsmAnd/res/drawable-large/ic_action_motorcycle_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..0600f57d892635fc27c7fabe9ab61bd84c2b534d GIT binary patch literal 1166 zcmV;91abR`P)7{^`vo;5oOA!W&utXZ@BpeB3BNP~t3lMfg(g!#e;DWl1hWM|Z%tRu`=^I_7E z=wha7NBHECzq3KZfz|@ix3e*QfKW{0HhbK?Se0~w4&)$j7Q7>Ms#6(F&GRQhp>I&J()?h z5dUcCiE{@S?#P1QLUHd(b`BhaxU-EBH*jEC7zZZEAcw}kKrRWMrw--+60>ulAJUUR zZ3ESBQ=olaPqic97AOPdK#Md5D0@!Z5*)beR5(;Fu0?G2_koa21-;{#{2e-lCP0Na zusjZq3Kd5VU~ofZM}qD^3t1`8XX2NPjibL7G>gHA1IQi+M?npc0XhL4eA-S+Kmq*s zqH#ubz!ep966AId|o^b$iVqVaWy2D)o0?mJQjd?Kz%h`%94QYKGL&m zhvCYEM`y)|5W&a1uLtcxBIpKGKC{sAhaei`?offwrTtiN!Q_olx;5vjZ g3A_xr44`ZEU!v$%K+Fd_0ssI207*qoM6N<$f~jmD{{R30 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-large/ic_action_motorcycle_light.png b/OsmAnd/res/drawable-large/ic_action_motorcycle_light.png new file mode 100644 index 0000000000000000000000000000000000000000..ac248eecc3913c598c14f78de51e89cb8485e03c GIT binary patch literal 1404 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 D@;jEu literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/ic_action_motorcycle_dark.png b/OsmAnd/res/drawable-mdpi/ic_action_motorcycle_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b92489902c8edc6361bf9c3a06aba8395adbdc99 GIT binary patch literal 701 zcmV;u0z&FR0wIxOlGuLco{ z_ovwe+~DhWIEwKU)i}WTEaVt5)%15^ttE-X-+_qvHcQ_O70?6d_23eeS=#IT;^ z=NQ*{5@`i0uUGsWKD+SI7OV$tLnS<8{vz|&8Rs*u2@)`j!2*Vda4Ke8ZXEX0>sDy> zt6(4Kop9SLe46mt#>5a@2A!Q2(0_#%vlpAHAOU(#k3lco#DSPmCD#FZ!SB-wz+47h z1XPU~=D(PE-I~WR4riF3$5z{=t@-HsyCQ67K*ocxNr7PwHiGuEfdCV+E3l18s1;v= z5AYuJZmfnz{NKg;_+7(njC6R)Kv!-QdU2i%O74C)RnvQ*r&`tM!C&vhUoD}3!=;Le jXBP?xD-c#7=@s}5-sQs~CycZQ00000NkvXXu0mjfYS7sQ1VP;uLex!WO5jD9VjnjJLC{^@ zB}ot#U4#&!o0--KB1yxn)o#SOkF)iA!-XD?n_{t>9e6nJ`@GNd|No!oeb0NOoD4rw zhWT@{0u0+M3ho_0i?w`o$g4I zbb5Na$?y07OeaFC1G3$2-w9X|ma8aAgeraNma^|oz)wKFUW)`lcggWCTL8dKfNq_e z2$xen2!9G{l>rpwMa0%K7H`c*#If)Jk%tg`N95pB z@Qn@*4vuPWm6o%rs%kGF^{lO$J=F?8y|nfnpclpA)5;^}5yYE6qe)?EFb-=Q#HHk&(hwK~=L#Z3{@-VT01lz3 za68}j)uExG?@p()hPek@Bgg@7rVFi%^A}VjN$2pj%-N%cYC#z|_n z*=*tv+C&1C)Zotp_yuIS*dE-*Bp7o);9XoyW#nAOf1g-|@o^4wi^*j2Fy9UCg_HtN z+5p&otQ)|mV&4(s=Bho7?>)X-0-(IS+-R{_#AT(QnVAWWjEwx61(xYT2mZ1C{{Gwe zl*-D=e527QDxW~W&6EOWgD(+OfCaG_wh5b}lIswCQ}4ZcP7!s8J&FG-_64(Id9hfm zlXLYsr2w&5TU%=hg+j*|io>H5H(?|a=^h>)o=iucTo;Fzyo1a)U}M;0x+m_5dC!Xe nhD#NbDlRJ^+ktEcGTwpTa7tD%;dJXW00000NkvXXu0mjf*F=)P literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/ic_action_trekking_dark.png b/OsmAnd/res/drawable-mdpi/ic_action_trekking_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f5895d03cbac958c5e7ec8aa90ca6842775f51 GIT binary patch literal 723 zcmV;^0xbQBP)6o$Q}locZVh>I4sh-jBfYav8GL}&<+p;;tRT2Wzyy2*Z#3W89OQY1*C!i7XZ zL{N*Ms6|*3gqB7bQ9%VRgnp*yg){Lr$XxBtH?#4=!#DTbJLi4x`OciVK~{#3AjA4u z(+2*#0)<`K1VJz~)h&%;U?XBD9Kn7J)TYzGPQ>;*f*&wYmQDkU5xW9; zCfbI9%iavI=lLXG0Rsqqkr1(kEGyw1v1d~i*Zq^~0fg3Y?@^cwz0d=V&<~Fhf8mOA z|9mwk@oQnGLJg3tm?RyLW66%O7QkL7`F%d0LhzeaMwM!T24cg>Oe8gc_&mOR9SSYU zPu8_?9%RftK3bLDu5$DZt53()sAnR{fX6p~uS)e|t!N8{| z25vh~uRN#WJDhcrcJjF!4!~BB;9V#|yfT@%u7z!Z8g7Xt`Ng^c>Y>6(T#wKbowH>{ zET3U1G^fIVnr$1XsUDE98xglE>WNa~VuKE37-{MjmQ9KE}R36VjZePUEG9E1BVfk35{Vr zxdzg5Gck&Ra;uWJCTvHb1fC*RXHBVh0+|{kR_e_FVv9(A3p4>wBGzYO8p&PooS5Db zG!If=0g}eY@=G*!Ag1vvF};$t!VO|)ycj@a4v95@GzY2?dTskI1J!(PfaAn(`ZBPc z#0TLLA{XQ0CU%Im2CBIB%9jD{{a2_(ME`bw4=SJ+mGz*JtkIm>9zZ~USbF)mihxY~ zb8vkVfg-M5aJEH%%}0psO1wYuJoJqyEJ4)k(*`nLfj<)s2ryNZr_TTY002ovPDHLk FV1f+IM1%kU literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/ic_action_trekking_light.png b/OsmAnd/res/drawable-mdpi/ic_action_trekking_light.png new file mode 100644 index 0000000000000000000000000000000000000000..65df95be313685971ff30cfb879eddaf97b96d4f GIT binary patch literal 866 zcmV-o1D*VdP)6{4wz7?>e8el%3?~X(wmlutI*Xu2( z`h6N8^Pep(EoT;!z($kFbdJi`sGv_;TU%cmM!@6oSS=Qd+iW)XQ0agG`Tc%-HkY}2e zI=~zgaw$rd%W2jpxw`dmak(e_9Om<1DUXn0>i1U+Nk84SpKeOBI&j$ww_Y>Q} zNDvD{$b$#!=j8zi)RWAqCdpyE+H^WyLGo?7#Mc0d$(oZ=JUl#{a5x+;mWSs}pscKH z9f@{Q^=63B=prxls)#4p^BT;T)>kSfTo3}2<#W5;D{VI0b)EcEwqL^t$U&e5U!`)J zN+Q9QGhu-KGNZu#FX@aBgA~fQp9QuBOpf- z=^La20(Kv;_d2jzV%@|hK1d8vfa>=GzMK5LG?)gi(sm0t6#>AHG2TMpks$d!n1R8qa%KOYW52~a1SUDs7NN0ue-XshVMI_INpKR2G=c%P63t66Fr#_Fj~NSQ@#QR<*iByeYH z7At5ANpUkU%>$;9Th$bcS)p+FKCa|aBp%NG5oB3ujupXXadodA=;tXR&Bp%OJ{RwX zzcjPqAsuTGL&&fSdre_lX)(Njw>5Cy*ly%^ zlxT~JXQ0~0?##lzqlimj@|~G)>n`Bu7L@>~_FIFZqbh67Bwy7ibtg#(2J9LeU{;-qY>2|;SNPZhY6?nt|4!xPD@`7XXlif7FEBh zal>s`vm!%Sc6#jhe4U(w7t~hcUIzyxk<_tl(NKnK2L0T6qmp<|YX#o9uo$a0QQHDc zmar3M_bv%^#25nuABC42)x7zRkQ*wdzeAcT$yqv!u5@^KssqB)5>KneP@EN`>;;@% zdm91xR0giK<>bN#_=I_T;q;ykIF?y^lCIG~y*<}^v^Spt6o3wi}}edoIW)AG>QG4%*sJ1=m4LHqusnOoH@*Xda@oMOJv! zq_-@Mr_A-|0NW;~SQy&*hd&j_q2+F15%SR00WSYq;4*z?DDsG4-gW{An+LmTh}lZW z9GR0zKn5es5DJ~{WeldU`ZDA84fzHt)7Qm&T8dFSerNiZyOjL@(0?z1oH=WG_`hSG z!K(KYN!dbfEi<)J3Rc?+ZEI0&?0|H66_w3kFL8@X0jFQ0KbI(VRy0Sf`c>H|qfUe? zy4W?k0RN3py((#P)`GrAGePUy3qOvPU(4TFwL7Om>uC*e@|TiqZiJtBd%1%_H>v7D z!hfa)*$Z8>Cn|0uH5AHZa&MD8l6L5-qk5y)4-vvMcjk-&ak)>Pl|Jo8k8%+~@UTbc zn_U{3>jFxa_F)6=j$Q#{iRtUQ!ItQ%d)^}6TF%*9gA^_6%Y2dutsv8x_G-QIs9q{L zG?a{p^_?C0(6p&$A>p`M5Ke(#=!`8nkvsqw=FEZX#qmGb257_->^tx_ZaoTXsGW?tA7U$b9&Z1()5 zv?6(+p5M(Ao=uf+Aps>3apjwfe_>=bIo@8Nj5T;4j$xZQ?f@CJv#%F}2tq$~lng=? zT6|!dKI|9kuW7$g6IgfER1@RYlol@EL46!Ex9Rq3hYh+rcD2JIp5+~@6a~ww*5pL) zpV4Bj+-G0YG9`vS5~`avUJ-nk%~#${SeMx^w$?P_wM*8pd^T1}NRQ0q0~TPXW3*HW zk30J-lofQ_el5(tvjl@w);_=}?-o3MTgXx5>r$v9Ql|W3U3Km&^x7f$&XmDO%C0Ck z!B8LiIn`#M3V`goT(Hs-J>$b>TNMyBUBpJHT?exzNbW`Q;MD#QcO04QCf3z;l?+Gz z;t3=d5=#u1U!{}bx%%|%zKg^vd^+MOrr`RME4cPSNl_Ag|DDT-f0o3q+QHL(^NIgN zd{=(v1YzGgQSsA`2d4m}aO?%l85nGW<-9LXizNLYGj9XBg^n~b4jS%xF8_8e0O!*l Ju(_{2p|9e literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-mdpi/ic_trekking.png b/OsmAnd/res/drawable-mdpi/ic_trekking.png new file mode 100644 index 0000000000000000000000000000000000000000..46efef4f18e370eff84a2cd868b7d66f968e216b GIT binary patch literal 1572 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 O0000U%)1nXuGE6B`J zO7U4_&wnZ?66_)>5rqc%h_dVNyXbM8L-%s6xJIcH`zEY8eXYoA%)x7R*0nY&PLC+}HLBQJ9j)Ei!&?ukp0k{JK##bZ(g#Rf3+lHLv z0r(39jI2lk1PT(?aJk3>a61G{tYiWn1>86fz$p;0xsnM`_%A|wIY6!iymYPJ5_<`n zY0#eQASB2G_VM{+z;ADLmK_4S8U&~eOU+$fK7 z-HCjSd}9b{^ns%P9q3;|%JQBl8v!`h1*cv^IynGnZV!Qgqu8zD^JNhrzvTWL?6fCv zHu^t+Vgj-OyXR670Vb@Mg|X=)uW z5oL)0oSKRQ!#z%n!O3s28-~ra0-V**oc!3spkr36^ z;$R)NCt|P((KguC_H*+rhe8n`-31}tKYU-zv)?&h@ak780lj&~f*1!T;p8?5xXzFj zWj-5)Kutnit4O%tMxI;9bn?1aDgkqOy0W;artlxAc?iW))qpNG>*g$2gdnu)TNJpWR@Uyu9%IX@e6(vt_^phoDa2vB-?^)=yt z7oTTD*y;96>{K6!ZK+Cx%({FxUTbe3E^jrbs@Tm!-`|67CwZBkb5lU5aQbB~w|fvO0v13->~UCD3D7in1?lP`;X`z@ z;z-CO0VWDA=BizrkA&6e=W6E|MO5Ypz~OrUBw(5f=Wv;c+~|n}WsFLUoFrtC0IdLT z1lv}VGfd~+z?kVU+eJdA2*6owYd0d=b-syc|K9YXLpOqpw!SK%yINBjEv(2I0V0#a8g`JA1c`Y+j07sPp>IG<*w+``r5WxO&0K1oacAa0Fspqpy zz+jwjss>qY1)x;bY0)5TEH@vs6icwJ&m;kWQMGs_VxJGH>~$ZY6a_8<^fDY`DW1mm zi>wlG3y$08`>ORl3m~lm&IW0VQQT~lS}OZvuOet(%fveXC-wI?Rc?c}1~AG1BO86} zGsDQ!p41b7gO`KyEhH$p>ll1E1gJ#rBR~n$*~Y;60+cQb1cd8Q+%O!keu8CCtM;yuf5JpFcLk$@L)T2*2-o#%~ky~rF9 z(35+r7X(e^bmx>wZ3N($=DfmKdHui0WI%i#H~J<5Yyx)EFCei+_cRlre}8U44kN1U z=yO30P&yCP!H9N-%js)JL*6q|OMn?k<@DOb{9O=o%gAhx^)6UQ|ASHeu~UwrBB~Bv zRuua?Vf&I!hfDqOH1w|#kcLr6(uZ0EB*}gne!CU{X&8kheW>~fI0l&Vbzjua9JK%d N002ovPDHLkV1mME+s^<1 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_trekking_light.png b/OsmAnd/res/drawable-xhdpi/ic_action_trekking_light.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d06d6ce36698b88b87c6a198355d5064b25744 GIT binary patch literal 1761 zcmV<71|Io|P)B#{6rEU!0ztv@6T{Lor!?^aWbZ~(U3Oo3SfRu#gR2kV|QpBVwATb z>#LcWnX&Ql@k{xB-Q)2zar`w>$9YBy{r;fez)1W0+m9;&IXO9Zxm+%Z>*@YKgc`Ot zHa7kOL61SsBTBm$BHFmV!gBaZO-)S`*QQHg@eG~V+*lof2IR=h5)Bgyzk_&W?+}zv;A!`+lHB6HqTY>j<<#_?exv#`XL>ao#y!`M)1rbreh_*fn#MjHrK>~3piLwdo;GYuuagj zWhDQhP1XYbN1xI*%dg=-zE|;VsU3{^7!v_x^jw^K)$G>+wU-fe1AZRYWk$BN9pPCb z_ow&_n?-c`g+2)~CB2AaQq3_sx|!?CC62Lu6eIcQ9uQCgQP)aJN@fiV46Nh(JRQR> ziFw)<&}In&-ouewObED$M5VG5g<8sRUJq0h_hp)V3$wvBKxt{ItE;Q)VUpc)z(&(P z!1;VnPtQpfQHv}y4F)P|sPZRsC*kyV0b@Yc4WhK|OnI{bKcBuot5cn&)&Y#_avXfz z08}6H-yrgbfO{Fu=Z%!YGY$dpTrio;QUu_zgVVK7%~k|tXJ^liiHVVFk$Sk1 z|51|N-*N*m`D}DnbD5|^f>e^^{{uq~TMfdDD7 z+m`@#flq1+mJWt_>d6z&Xxo)_h*yTvn1?U6QC?=Hmk)Cq+CxN?=u^DCH_;ftx)ag zznhS0*6U|!1u**00c43dF2znxZ|fy8e_*T_7qA+AE3fWdfu`z6)@PfbZwL z5Afdx8hvTk59@tGpJfS7 z0C8B>^c@`?p0>8O-eAG2cCtMN{Or!o&f~4Et^XSJmo)}$>-bcolv5-99e?{Vy&fOy zk6WRCga9jyLMVNRC?J&VTj94O3b4W`gwls8uYmsnvoC{gm(eiN00000NkvXXu0mjf Dn4(4y literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/ic_motorcycle.png b/OsmAnd/res/drawable-xhdpi/ic_motorcycle.png new file mode 100644 index 0000000000000000000000000000000000000000..c267eb04a71c1cec229cc1eb7f9ddca70eb540cf GIT binary patch literal 3673 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 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/drawable-xhdpi/ic_trekking.png b/OsmAnd/res/drawable-xhdpi/ic_trekking.png new file mode 100644 index 0000000000000000000000000000000000000000..8b19c0b0528c5ffd23c76a90a49ecc1ba98e8824 GIT binary patch literal 3580 zcmd5<_ct33_fBGq8i{`FT}sugy&9t>c0=qD(b5`4?M(-@$7`!uY0=W6s`iXsi3&;- zHHugjR7)japL4!{!+YKz?!D(e=RD7O&bjBFb8nKRx#1;dUSVmus z`3WSW^ZRdB)x2^)#+bfNHhj zxa1tVy62&~ucgA*xL9a^+X8p_fKsZTOF?*z7y16Xi?tu3vLT` z;se&Iet02kwuqL|3itzUPIX?8V0)`{*daLmKTtx`|XiqStR_l!Y%8W-wl)#coM zbH~N36*vnmu1VZV6gA6H-ln7CYTP_o8cSdk6QTP4zlLd~kLTPlS&Rxk;WrGr(^Ao4 z#kVcdVK$J@IUY=lUu1gfZt@fn+iTH3>S#PlEPm2eT<4F8Sjwd}$}ATNxikn0{eJaT zY@lnHqg`NF>ppp7V`LE#{2tlqYy$8tDDn?_m81%ix+_EBFHy322k}bDB=7w|tw%`H z!+TO1B4omn(0P|hKGJ<`@>>9IcXLQCp#owNGboOg=xCQS zqTYP^SKY%Y-B$3=$}bd_LEmlpyUT4jM3{Xsy3$hc+f56Bo}PC3$j~TKOt5~CI`5g| z-#SA|2_h*rPOEs;Sj*G8W0td~W=m?ozDeby*$uP9hZP2q9qp0W^uUZI+vi;s*)r;& zaiQvQL^iRbf56UF(%<=$a$NR~H8?@tS(g@Jst)C`-jy5A&+f z0j}l9PYR1P>m7Av$%TTYURN=ehyDzTXfM5W_2yXHB*|fXvF^*K!fnUbd7lmRVN&+cbnRr!oF8NdqZNQlBK~6* zW#~S6;+he9S_WA|WQK5tngy2ZpIGxq0HzTPN&Wnk6ZyngHn>x=2Md5k>U!T{)9-U+ z_RfZ|zuDgjX+xKGWwkvq>A4^f;4C$}()rq)fa+SErk8Yx{fJQQnK%a!wCz6K*Rz(& zE+&=G_h|pKS#V5;2&01U;hFpGkfR+eu3xh8T!DnN;vQ>Bj54Dc@#GK|(0H4lov00z zNL*6eVN{NgzOGS1f<4{0V()UD`b|oh(MaWCE}7i!!S4+kxnsQ=5Jg+Z1FwT0OmXGA0t1LeBAk zGn2?#LP^2jRt51VK$Kc5!Q@U8-J1G#;M`Y`6oKY?F@oDYX459|2f48b-q^pTydG*sj zVL3bPJeLb$MRiP)EQ?2i9bH)d$HRL@cvU9oK?KM!4z{t(ppG$dvoZ=Co{eqVG`?p& z`@#8AbA*dX^8*7ej;vSV&QpE08_>JoYfz6qf1vBKje#UH?z=vXG#rN0Lv zcRW`8=rW?aUOeYNTz#~X0}Xk=6*lIyse3%53296PfLBT= zSBsjc@+J@H3F1U+SMF>TFY@j0?v|w7n^{%x+9!vtYG$g5hVJ;bEj_JB|?kK)2;bLpK4!Q#4~0Q zAhai;IfWGqGDq1Er)s9v(cyGiaZIoeWXoO;tv?f4rHzVLyq~M9jQVgTIPupUciz{R z0Nw+AZMIYR8Ais|+0mHFGF^ol34P>Y`V~(L-p!6CO4?jgq)&v!Fxcxx2)PdA-1hy&15p0{(LsFN5D!m%iM+L!?-2z* z)p-*2$P`d?D zIkmbO>7wTrqFDzcS<4N63Kw(YN1KxI!?SmM(ybr1F8!>X;@z+%UEvr5)8aLg(nn}V z&((N;Z0@{tYs?McLOobq0e~*m4O8=@)#G_Ek^#!M_p8_p#Briu7&PvVGof1W;Ljpd zr#JIAfN!r`KRr9m*;m~9MmL@4`DUmUCYQ#uex`W*mbw<8loUueC3i$Usiac7kjI4p zn}4qLMc)O~8PMbF&aI^nlH^xzygl6wYVAq*YTsuayKe{(k%i3{l!|fxM1$1J1k%T#F_NS5Gqt;Nbv#kEQ90 z&2+H+_XMF^esq^ozkLwVbx!`9#K3G>%uWY9Dtx?Ab%ZiU*;@^tFe2rkab7ig{-;d} ze3fsGP5|%o{l0yDv_$hv=T8lZp!C5dJ*U$3D#Zr95%W?kGlsPs*?dE#>RJHJjPOoW z<)Cr& Date: Wed, 27 Nov 2013 17:37:12 +0100 Subject: [PATCH 5/7] Add new app mode --- OsmAnd/res/values/strings.xml | 2 + .../src/net/osmand/plus/ApplicationMode.java | 154 +++++++++++------- .../activities/actions/NavigateAction.java | 3 +- 3 files changed, 95 insertions(+), 64 deletions(-) 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; From 9c1df69e11ed70b535999ee8ff3aae4715ae4414 Mon Sep 17 00:00:00 2001 From: vshcherb Date: Wed, 27 Nov 2013 17:48:58 +0100 Subject: [PATCH 6/7] Add new app mode --- .../src/net/osmand/plus/ApplicationMode.java | 52 ++++++++++++------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/ApplicationMode.java b/OsmAnd/src/net/osmand/plus/ApplicationMode.java index 65f28a4c9a..1d67647a5d 100644 --- a/OsmAnd/src/net/osmand/plus/ApplicationMode.java +++ b/OsmAnd/src/net/osmand/plus/ApplicationMode.java @@ -14,7 +14,7 @@ public class ApplicationMode { /* * DEFAULT("Browse map"), CAR("Car"), BICYCLE("Bicycle"), PEDESTRIAN("Pedestrian"); */ - public static final ApplicationMode DEFAULT = create(R.string.app_mode_default, "default").speed(1.5f, 5). + public static final ApplicationMode DEFAULT = create(R.string.app_mode_default, "default").speed(1.5f, 5).defLocation(). 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(). @@ -32,10 +32,11 @@ public class ApplicationMode { 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). + public static final ApplicationMode HIKING = create(R.string.app_mode_hiking, "hiking").speed(1.5f, 5).parent(PEDESTRIAN). 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(). + public static final ApplicationMode MOTORCYCLE = create(R.string.app_mode_motorcycle, "motorcycle").speed(15.3f, 40). + carLocation().parent(CAR). icon(R.drawable.ic_motorcycle, R.drawable.ic_action_motorcycle_light, R.drawable.ic_action_motorcycle_dark).reg(); @@ -62,13 +63,18 @@ public class ApplicationMode { return this; } + public ApplicationModeBuilder parent(ApplicationMode parent){ + applicationMode.parent = parent; + return this; + } + public ApplicationModeBuilder bicycleLocation(){ applicationMode.bearingIcon = R.drawable.bicycle_bearing; applicationMode.locationIcon = R.drawable.bicycle_location; return this; } - public ApplicationModeBuilder manLocation(){ + public ApplicationModeBuilder defLocation(){ applicationMode.bearingIcon = R.drawable.pedestrian_bearing; applicationMode.locationIcon = R.drawable.pedestrian_location; return this; @@ -129,6 +135,30 @@ public class ApplicationMode { return values; } + public static Set allOf() { + return new HashSet(values); + } + + public static Set noneOf() { + return new HashSet(); + } + + public static Set of(ApplicationMode... modes ) { + HashSet ts = new HashSet(); + Collections.addAll(ts, modes); + return ts; + } + + public static List getModesDerivedFrom(ApplicationMode am) { + List list = new ArrayList(); + for(ApplicationMode a : values) { + if(a == am || a.getParent() == am) { + list.add(a); + } + } + return list; + } + public ApplicationMode getParent() { return parent; } @@ -164,20 +194,6 @@ public class ApplicationMode { public String toHumanString(Context ctx) { return ctx.getString(key); } - - public static Set allOf() { - return new HashSet(values); - } - - public static Set noneOf() { - return new HashSet(); - } - - public static Set of(ApplicationMode... modes ) { - HashSet ts = new HashSet(); - Collections.addAll(ts, modes); - return ts; - } public static ApplicationMode valueOfStringKey(String key, ApplicationMode def) { for(ApplicationMode p : values) { From 0f948a33bb1db7884ec25d6209a54cedee1c4820 Mon Sep 17 00:00:00 2001 From: vshcherb Date: Thu, 28 Nov 2013 01:08:52 +0100 Subject: [PATCH 7/7] Temporarily comment application modes --- .../src/net/osmand/plus/ApplicationMode.java | 41 +++++++------------ .../activities/actions/NavigateAction.java | 4 +- 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/ApplicationMode.java b/OsmAnd/src/net/osmand/plus/ApplicationMode.java index 1d67647a5d..2e3442d05b 100644 --- a/OsmAnd/src/net/osmand/plus/ApplicationMode.java +++ b/OsmAnd/src/net/osmand/plus/ApplicationMode.java @@ -26,18 +26,18 @@ public class ApplicationMode { 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).parent(PEDESTRIAN). - 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().parent(CAR). - icon(R.drawable.ic_motorcycle, R.drawable.ic_action_motorcycle_light, R.drawable.ic_action_motorcycle_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).parent(PEDESTRIAN). +// 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().parent(CAR). +// icon(R.drawable.ic_motorcycle, R.drawable.ic_action_motorcycle_light, R.drawable.ic_action_motorcycle_dark).reg(); private static class ApplicationModeBuilder { @@ -112,38 +112,27 @@ public class ApplicationMode { this.stringKey = stringKey; } - public static List getAplicationModes(ClientContext ctx) { - // TODO - OsmandSettings sets = ctx.getSettings(); - return values; - } - - public static List values(ClientContext ctx) { - // TODO - OsmandSettings sets = ctx.getSettings(); - return values; - } - public static List values(OsmandSettings settings) { // TODO return values; } public static List allPossibleValues(ClientContext ctx) { - // TODO - OsmandSettings sets = ctx.getSettings(); return values; } public static Set allOf() { + // TODO return new HashSet(values); } public static Set noneOf() { + // TODO return new HashSet(); } public static Set of(ApplicationMode... modes ) { + // TODO HashSet ts = new HashSet(); Collections.addAll(ts, modes); return ts; diff --git a/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java b/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java index 0f6d50a7e5..3600e47e6a 100644 --- a/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java +++ b/OsmAnd/src/net/osmand/plus/activities/actions/NavigateAction.java @@ -124,7 +124,7 @@ public class NavigateAction { final Location current = getLastKnownLocation(); Builder builder = new AlertDialog.Builder(mapActivity); final TargetPointsHelper targets = app.getTargetPointsHelper(); - final List values = new ArrayList(ApplicationMode.values(app)); + final List values = new ArrayList(ApplicationMode.values(app.getSettings())); values.remove(ApplicationMode.DEFAULT); View view = mapActivity.getLayoutInflater().inflate(R.layout.calculate_route, null); @@ -363,7 +363,7 @@ public class NavigateAction { ViewGroup parent, final View.OnClickListener onClickListener) { LinearLayout ll = (LinearLayout) a.getLayoutInflater().inflate(R.layout.mode_toggles, parent); OsmandSettings settings = ((OsmandApplication) a.getApplication()).getSettings(); - final List values = new ArrayList(ApplicationMode.values((OsmandApplication) a.getApplication())); + final List values = new ArrayList(ApplicationMode.values(settings)); if(!showDefault) { values.remove(ApplicationMode.DEFAULT); }