diff --git a/OsmAnd/res/menu/vidget_visibility_menu.xml b/OsmAnd/res/menu/vidget_visibility_menu.xml
deleted file mode 100644
index 9974a9d044..0000000000
--- a/OsmAnd/res/menu/vidget_visibility_menu.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
\ No newline at end of file
diff --git a/OsmAnd/res/menu/widget_visibility_menu.xml b/OsmAnd/res/menu/widget_visibility_menu.xml
new file mode 100644
index 0000000000..ee110585a9
--- /dev/null
+++ b/OsmAnd/res/menu/widget_visibility_menu.xml
@@ -0,0 +1,27 @@
+
+
\ No newline at end of file
diff --git a/OsmAnd/res/values/ids.xml b/OsmAnd/res/values/ids.xml
index e27aa4f93a..ca2120f6bb 100644
--- a/OsmAnd/res/values/ids.xml
+++ b/OsmAnd/res/values/ids.xml
@@ -1,4 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml
index cc71f116b6..1bbebedb1e 100644
--- a/OsmAnd/res/values/strings.xml
+++ b/OsmAnd/res/values/strings.xml
@@ -10,6 +10,7 @@
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
-->
+ Magnetic bearing
Relative bearing
Don\'t change route when you are off the way
Prevent automatic route recalculation when you are quite far from the right way
diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java
index 16fdafe17e..ff3eb0c45a 100644
--- a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java
+++ b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java
@@ -16,7 +16,7 @@ public class ContextMenuItem {
private final int titleId;
private String title;
@DrawableRes
- private final int mIcon;
+ private int mIcon;
@ColorRes
private int colorRes;
@DrawableRes
@@ -150,6 +150,10 @@ public class ContextMenuItem {
this.title = title;
}
+ public void setIcon(int iconId) {
+ this.mIcon = iconId;
+ }
+
public void setColorRes(int colorRes) {
this.colorRes = colorRes;
}
diff --git a/OsmAnd/src/net/osmand/plus/IconsCache.java b/OsmAnd/src/net/osmand/plus/IconsCache.java
index 97d0b1a0cd..b483d14b17 100644
--- a/OsmAnd/src/net/osmand/plus/IconsCache.java
+++ b/OsmAnd/src/net/osmand/plus/IconsCache.java
@@ -79,14 +79,6 @@ public class IconsCache {
return getDrawable(id, light ? R.color.icon_color : 0);
}
- public void paintMenuItem(MenuItem menuItem) {
- Drawable drawable = menuItem.getIcon();
- drawable = DrawableCompat.wrap(drawable);
- drawable.mutate();
- int color = ContextCompat.getColor(app, getDefaultColorRes(app));
- DrawableCompat.setTint(drawable, color);
- }
-
@ColorRes
public static int getDefaultColorRes(Context context) {
final OsmandApplication app = (OsmandApplication) context.getApplicationContext();
diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java
index 784eada357..9df9ed3f24 100644
--- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java
+++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java
@@ -965,8 +965,11 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis
}
public void refreshContent(boolean force) {
- if (visibleType == DashboardType.WAYPOINTS || visibleType == DashboardType.MAP_MARKERS
- || visibleType == DashboardType.MAP_MARKERS_SELECTION || force) {
+ if (visibleType == DashboardType.WAYPOINTS
+ || visibleType == DashboardType.MAP_MARKERS
+ || visibleType == DashboardType.MAP_MARKERS_SELECTION
+ || visibleType == DashboardType.CONFIGURE_SCREEN
+ || force) {
updateListAdapter();
} else if (visibleType == DashboardType.CONFIGURE_MAP || visibleType == DashboardType.ROUTE_PREFERENCES) {
int index = listView.getFirstVisiblePosition();
diff --git a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java
index 05f81bca06..e22d02b086 100644
--- a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java
@@ -21,11 +21,14 @@ import net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopTextView;
import net.osmand.plus.views.mapwidgets.MapMarkersWidgetsFactory;
import net.osmand.plus.views.mapwidgets.MapWidgetRegistry;
import net.osmand.plus.views.mapwidgets.MapWidgetRegistry.MapWidgetRegInfo;
+import net.osmand.plus.views.mapwidgets.MapWidgetRegistry.WidgetState;
import net.osmand.plus.views.mapwidgets.NextTurnInfoWidget;
import net.osmand.plus.views.mapwidgets.RouteInfoWidgetsFactory;
import net.osmand.plus.views.mapwidgets.RouteInfoWidgetsFactory.AlarmWidget;
+import net.osmand.plus.views.mapwidgets.RouteInfoWidgetsFactory.BearingWidgetState;
import net.osmand.plus.views.mapwidgets.RouteInfoWidgetsFactory.LanesControl;
import net.osmand.plus.views.mapwidgets.RouteInfoWidgetsFactory.RulerWidget;
+import net.osmand.plus.views.mapwidgets.RouteInfoWidgetsFactory.TimeControlWidgetState;
import net.osmand.plus.views.mapwidgets.TextInfoWidget;
import java.lang.reflect.Field;
@@ -82,6 +85,11 @@ public class MapInfoLayer extends OsmandMapLayer {
updateReg(calculateTextState(), reg);
}
+ public void registerSideWidget(TextInfoWidget widget, WidgetState widgetState, String key, boolean left, int priorityOrder) {
+ MapWidgetRegInfo reg = mapInfoControls.registerSideWidgetInternal(widget, widgetState, key, left, priorityOrder);
+ updateReg(calculateTextState(), reg);
+ }
+
public T getSideWidget(Class cl) {
return mapInfoControls.getSideWidget(cl);
}
@@ -120,9 +128,9 @@ public class MapInfoLayer extends OsmandMapLayer {
TextInfoWidget dist = ric.createDistanceControl(map);
registerSideWidget(dist, R.drawable.ic_action_target, R.string.map_widget_distance, "distance", false, 5);
TextInfoWidget time = ric.createTimeControl(map);
- registerSideWidget(time, R.drawable.ic_action_time, R.string.map_widget_time, "time", false, 10);
+ registerSideWidget(time, new TimeControlWidgetState(app), "time", false, 10);
TextInfoWidget bearing = ric.createBearingControl(map);
- registerSideWidget(bearing, R.drawable.ic_action_bearing, R.string.map_widget_bearing, "bearing", false, 11);
+ registerSideWidget(bearing, new BearingWidgetState(app), "bearing", false, 11);
if (settings.USE_MAP_MARKERS.get()) {
TextInfoWidget marker = mwf.createMapMarkerControl(map, true);
diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java
index c24d99d7fa..d4c085e71d 100644
--- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java
+++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java
@@ -6,6 +6,7 @@ import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.support.v7.app.AlertDialog;
+import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
@@ -16,6 +17,7 @@ import net.osmand.plus.ApplicationMode;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuItem;
import net.osmand.plus.IconsCache;
+import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.MapMarkersMode;
import net.osmand.plus.OsmandSettings.OsmandPreference;
@@ -140,12 +142,42 @@ public class MapWidgetRegistry {
return null;
}
+ public MapWidgetRegInfo registerSideWidgetInternal(TextInfoWidget widget,
+ WidgetState widgetState,
+ String key, boolean left, int priorityOrder) {
+ MapWidgetRegInfo ii = new MapWidgetRegInfo(key, widget, widgetState, priorityOrder, left);
+ processVisibleModes(key, ii);
+ if (widget != null) {
+ widget.setContentTitle(widgetState.getMenuTitleId());
+ }
+ if (left) {
+ this.leftWidgetSet.add(ii);
+ } else {
+ this.rightWidgetSet.add(ii);
+ }
+ return ii;
+ }
+
+
public MapWidgetRegInfo registerSideWidgetInternal(TextInfoWidget widget,
@DrawableRes int drawableMenu,
@StringRes int messageId,
String key, boolean left, int priorityOrder) {
MapWidgetRegInfo ii = new MapWidgetRegInfo(key, widget, drawableMenu,
messageId, priorityOrder, left);
+ processVisibleModes(key, ii);
+ if (widget != null) {
+ widget.setContentTitle(messageId);
+ }
+ if (left) {
+ this.leftWidgetSet.add(ii);
+ } else {
+ this.rightWidgetSet.add(ii);
+ }
+ return ii;
+ }
+
+ private void processVisibleModes(String key, MapWidgetRegInfo ii) {
for (ApplicationMode ms : ApplicationMode.values(settings)) {
boolean collapse = ms.isWidgetCollapsible(key);
boolean def = ms.isWidgetVisible(key);
@@ -168,15 +200,6 @@ public class MapWidgetRegistry {
ii.visibleCollapsible.add(ms);
}
}
- if (widget != null) {
- widget.setContentTitle(messageId);
- }
- if (left) {
- this.leftWidgetSet.add(ii);
- } else {
- this.rightWidgetSet.add(ii);
- }
- return ii;
}
private void restoreModes(Set set, Set mi, ApplicationMode mode) {
@@ -343,7 +366,7 @@ public class MapWidgetRegistry {
}
public String getText(Context ctx, final ApplicationMode mode, final MapWidgetRegInfo r) {
- return (r.visibleCollapsed(mode) ? " + " : " ") + ctx.getString(r.messageId);
+ return (r.visibleCollapsed(mode) ? " + " : " ") + ctx.getString(r.getMessageId());
}
public Set getRightWidgetSet() {
@@ -370,8 +393,8 @@ public class MapWidgetRegistry {
final boolean selected = r.visibleCollapsed(mode) || r.visible(mode);
final String desc = mapActivity.getString(R.string.shared_string_collapse);
- contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(r.messageId, mapActivity)
- .setIcon(r.drawableMenu)
+ contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(r.getMessageId(), mapActivity)
+ .setIcon(r.getDrawableMenu())
.setSelected(selected)
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
.setSecondaryIcon(R.drawable.ic_action_additional_option)
@@ -385,11 +408,32 @@ public class MapWidgetRegistry {
View textWrapper = view.findViewById(R.id.text_wrapper);
IconPopupMenu popup = new IconPopupMenu(view.getContext(), textWrapper);
MenuInflater inflater = popup.getMenuInflater();
- inflater.inflate(R.menu.vidget_visibility_menu, popup.getMenu());
+ final Menu menu = popup.getMenu();
+ inflater.inflate(R.menu.widget_visibility_menu, menu);
IconsCache ic = mapActivity.getMyApplication().getIconsCache();
- ic.paintMenuItem(popup.getMenu().findItem(R.id.action_show));
- ic.paintMenuItem(popup.getMenu().findItem(R.id.action_hide));
- ic.paintMenuItem(popup.getMenu().findItem(R.id.action_collapse));
+ menu.findItem(R.id.action_show).setIcon(ic.getThemedIcon(R.drawable.ic_action_view));
+ menu.findItem(R.id.action_hide).setIcon(ic.getThemedIcon(R.drawable.ic_action_hide));
+ menu.findItem(R.id.action_collapse).setIcon(ic.getThemedIcon(R.drawable.ic_action_widget_collapse));
+
+ final int[] menuIconIds = r.getDrawableMenuIds();
+ final int[] menuTitleIds = r.getMessageIds();
+ final int[] menuItemIds = r.getItemIds();
+ int checkedId = r.getItemId();
+ if (menuIconIds != null && menuTitleIds != null && menuItemIds != null
+ && menuIconIds.length == menuTitleIds.length && menuIconIds.length == menuItemIds.length) {
+ for (int i = 0; i < menuIconIds.length; i++) {
+ int iconId = menuIconIds[i];
+ int titleId = menuTitleIds[i];
+ int id = menuItemIds[i];
+ MenuItem menuItem = menu.add(R.id.single_selection_group, id, i, titleId)
+ .setChecked(id == checkedId);
+ menuItem.setIcon(menuItem.isChecked()
+ ? ic.getIcon(iconId, R.color.osmand_orange) : ic.getThemedIcon(iconId));
+ }
+ menu.setGroupCheckable(R.id.single_selection_group, true, true);
+ menu.setGroupVisible(R.id.single_selection_group, true);
+ }
+
popup.setOnMenuItemClickListener(
new IconPopupMenu.OnMenuItemClickListener() {
@Override
@@ -405,6 +449,23 @@ public class MapWidgetRegistry {
case R.id.action_collapse:
setVisibility(adapter, pos, true, true);
return true;
+ default:
+ if (menuItemIds != null) {
+ for (int menuItemId : menuItemIds) {
+ if (menuItem.getItemId() == menuItemId) {
+ r.changeState(menuItemId);
+ MapInfoLayer mil = mapActivity.getMapLayers().getMapInfoLayer();
+ if (mil != null) {
+ mil.recreateControls();
+ }
+ ContextMenuItem item = adapter.getItem(pos);
+ item.setIcon(r.getDrawableMenu());
+ item.setTitle(mapActivity.getResources().getString(r.getMessageId()));
+ adapter.notifyDataSetChanged();
+ return true;
+ }
+ }
+ }
}
return false;
}
@@ -443,9 +504,10 @@ public class MapWidgetRegistry {
public static class MapWidgetRegInfo implements Comparable {
public final TextInfoWidget widget;
@DrawableRes
- public final int drawableMenu;
+ private int drawableMenu;
@StringRes
- public final int messageId;
+ private int messageId;
+ private WidgetState widgetState;
public final String key;
public final boolean left;
public final int priorityOrder;
@@ -463,6 +525,69 @@ public class MapWidgetRegistry {
this.left = left;
}
+ public MapWidgetRegInfo(String key, TextInfoWidget widget, WidgetState widgetState,
+ int priorityOrder, boolean left) {
+ this.key = key;
+ this.widget = widget;
+ this.widgetState = widgetState;
+ this.priorityOrder = priorityOrder;
+ this.left = left;
+ }
+
+ public int getDrawableMenu() {
+ if (widgetState != null) {
+ return widgetState.getMenuIconId();
+ } else {
+ return drawableMenu;
+ }
+ }
+
+ public int getMessageId() {
+ if (widgetState != null) {
+ return widgetState.getMenuTitleId();
+ } else {
+ return messageId;
+ }
+ }
+
+ public int getItemId() {
+ if (widgetState != null) {
+ return widgetState.getMenuItemId();
+ } else {
+ return messageId;
+ }
+ }
+
+ public int[] getDrawableMenuIds() {
+ if (widgetState != null) {
+ return widgetState.getMenuIconIds();
+ } else {
+ return null;
+ }
+ }
+
+ public int[] getMessageIds() {
+ if (widgetState != null) {
+ return widgetState.getMenuTitleIds();
+ } else {
+ return null;
+ }
+ }
+
+ public int[] getItemIds() {
+ if (widgetState != null) {
+ return widgetState.getMenuItemIds();
+ } else {
+ return null;
+ }
+ }
+
+ public void changeState(int stateId) {
+ if (widgetState != null) {
+ widgetState.changeState(stateId);
+ }
+ }
+
public boolean visibleCollapsed(ApplicationMode mode) {
return visibleCollapsible.contains(mode);
}
@@ -483,7 +608,7 @@ public class MapWidgetRegistry {
@Override
public int hashCode() {
- return messageId;
+ return getMessageId();
}
@Override
@@ -496,16 +621,16 @@ public class MapWidgetRegistry {
return false;
}
MapWidgetRegInfo other = (MapWidgetRegInfo) obj;
- return messageId == other.messageId;
+ return getMessageId() == other.getMessageId();
}
@Override
public int compareTo(@NonNull MapWidgetRegInfo another) {
- if (messageId == another.messageId) {
+ if (getMessageId() == another.getMessageId()) {
return 0;
}
if (priorityOrder == another.priorityOrder) {
- return messageId - another.messageId;
+ return getMessageId() - another.getMessageId();
}
return priorityOrder - another.priorityOrder;
}
@@ -546,4 +671,27 @@ public class MapWidgetRegistry {
return false;
}
}
+
+ public static abstract class WidgetState {
+
+ private OsmandApplication ctx;
+
+ public OsmandApplication getCtx() {
+ return ctx;
+ }
+
+ public WidgetState(OsmandApplication ctx) {
+ this.ctx = ctx;
+ }
+
+ public abstract int getMenuTitleId();
+ public abstract int getMenuIconId();
+ public abstract int getMenuItemId();
+
+ public abstract int[] getMenuTitleIds();
+ public abstract int[] getMenuIconIds();
+ public abstract int[] getMenuItemIds();
+
+ public abstract void changeState(int stateId);
+ }
}
diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java
index c0e098574f..166203433f 100644
--- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java
+++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java
@@ -27,7 +27,6 @@ import net.osmand.Location;
import net.osmand.binary.RouteDataObject;
import net.osmand.data.LatLon;
import net.osmand.data.RotatedTileBox;
-import net.osmand.plus.MapMarkersHelper;
import net.osmand.plus.MapMarkersHelper.MapMarker;
import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmAndLocationProvider;
@@ -51,6 +50,7 @@ import net.osmand.plus.views.AnimateDraggingMapThread;
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.TurnPathHelper;
+import net.osmand.plus.views.mapwidgets.MapWidgetRegistry.WidgetState;
import net.osmand.router.RouteResultPreparation;
import net.osmand.router.TurnType;
import net.osmand.util.Algorithms;
@@ -196,11 +196,56 @@ public class RouteInfoWidgetsFactory {
// initial state
return nextTurnInfo;
}
-
-
+ public static class TimeControlWidgetState extends WidgetState {
+
+ public static final int TIME_CONTROL_WIDGET_STATE_ARRIVAL_TIME = R.id.time_control_widget_state_arrival_time;
+ public static final int TIME_CONTROL_WIDGET_STATE_TIME_TO_GO = R.id.time_control_widget_state_time_to_go;
+
+ private final OsmandPreference showArrival;
+
+ public TimeControlWidgetState(OsmandApplication ctx) {
+ super(ctx);
+ showArrival = ctx.getSettings().SHOW_ARRIVAL_TIME_OTHERWISE_EXPECTED_TIME;
+ }
+
+ @Override
+ public int getMenuTitleId() {
+ return showArrival.get() ? R.string.access_arrival_time : R.string.map_widget_time;
+ }
+
+ @Override
+ public int getMenuIconId() {
+ return showArrival.get() ? R.drawable.ic_action_time : R.drawable.ic_action_time_to_distance;
+ }
+
+ @Override
+ public int getMenuItemId() {
+ return showArrival.get() ? TIME_CONTROL_WIDGET_STATE_ARRIVAL_TIME : TIME_CONTROL_WIDGET_STATE_TIME_TO_GO;
+ }
+
+ @Override
+ public int[] getMenuTitleIds() {
+ return new int[]{R.string.access_arrival_time, R.string.map_widget_time};
+ }
+
+ @Override
+ public int[] getMenuIconIds() {
+ return new int[]{R.drawable.ic_action_time, R.drawable.ic_action_time_to_distance};
+ }
+
+ @Override
+ public int[] getMenuItemIds() {
+ return new int[]{TIME_CONTROL_WIDGET_STATE_ARRIVAL_TIME, TIME_CONTROL_WIDGET_STATE_TIME_TO_GO};
+ }
+
+ @Override
+ public void changeState(int stateId) {
+ showArrival.set(stateId == TIME_CONTROL_WIDGET_STATE_ARRIVAL_TIME);
+ }
+ }
public TextInfoWidget createTimeControl(final MapActivity map){
final RoutingHelper routingHelper = map.getRoutingHelper();
@@ -508,6 +553,55 @@ public class RouteInfoWidgetsFactory {
return distanceControl;
}
+
+ public static class BearingWidgetState extends WidgetState {
+
+ public static final int BEARING_WIDGET_STATE_RELATIVE_BEARING = R.id.bearing_widget_state_relative_bearing;
+ public static final int BEARING_WIDGET_STATE_MAGNETIC_BEARING = R.id.bearing_widget_state_magnetic_bearing;
+
+ private final OsmandPreference showRelativeBearing;
+
+ public BearingWidgetState(OsmandApplication ctx) {
+ super(ctx);
+ showRelativeBearing = ctx.getSettings().SHOW_RELATIVE_BEARING_OTHERWISE_REGULAR_BEARING;
+ }
+
+ @Override
+ public int getMenuTitleId() {
+ return showRelativeBearing.get() ? R.string.map_widget_bearing : R.string.map_widget_magnetic_bearing;
+ }
+
+ @Override
+ public int getMenuIconId() {
+ return showRelativeBearing.get() ? R.drawable.ic_action_relative_bearing : R.drawable.ic_action_bearing;
+ }
+
+ @Override
+ public int getMenuItemId() {
+ return showRelativeBearing.get() ? BEARING_WIDGET_STATE_RELATIVE_BEARING : BEARING_WIDGET_STATE_MAGNETIC_BEARING;
+ }
+
+ @Override
+ public int[] getMenuTitleIds() {
+ return new int[]{R.string.map_widget_magnetic_bearing, R.string.map_widget_bearing};
+ }
+
+ @Override
+ public int[] getMenuIconIds() {
+ return new int[]{R.drawable.ic_action_bearing, R.drawable.ic_action_relative_bearing};
+ }
+
+ @Override
+ public int[] getMenuItemIds() {
+ return new int[]{BEARING_WIDGET_STATE_MAGNETIC_BEARING, BEARING_WIDGET_STATE_RELATIVE_BEARING};
+ }
+
+ @Override
+ public void changeState(int stateId) {
+ showRelativeBearing.set(stateId == BEARING_WIDGET_STATE_RELATIVE_BEARING);
+ }
+ }
+
public TextInfoWidget createBearingControl(final MapActivity map) {
final int bearingResId = R.drawable.widget_bearing_day;
final int bearingNightResId = R.drawable.widget_bearing_night;
@@ -526,7 +620,9 @@ public class RouteInfoWidgetsFactory {
@Override
public boolean updateInfo(DrawSettings drawSettings) {
- int b = getBearing(showRelativeBearing.get());
+ boolean relative = showRelativeBearing.get();
+ setContentTitle(relative ? R.string.map_widget_bearing : R.string.map_widget_magnetic_bearing);
+ int b = getBearing(relative);
if (distChanged(cachedDegrees, b)) {
cachedDegrees = b;
if (b != -1000) {
@@ -590,15 +686,15 @@ public class RouteInfoWidgetsFactory {
@Override
public void onClick(View v) {
showRelativeBearing.set(!showRelativeBearing.get());
- bearingControl.setIcons(showRelativeBearing.get() ? bearingResId : relativeBearingResId,
- showRelativeBearing.get() ? bearingNightResId : relativeBearingNightResId);
+ bearingControl.setIcons(!showRelativeBearing.get() ? bearingResId : relativeBearingResId,
+ !showRelativeBearing.get() ? bearingNightResId : relativeBearingNightResId);
map.getMapView().refreshMap();
}
});
bearingControl.setText(null, null);
- bearingControl.setIcons(showRelativeBearing.get() ? bearingResId : relativeBearingResId,
- showRelativeBearing.get() ? bearingNightResId : relativeBearingNightResId);
+ bearingControl.setIcons(!showRelativeBearing.get() ? bearingResId : relativeBearingResId,
+ !showRelativeBearing.get() ? bearingNightResId : relativeBearingNightResId);
return bearingControl;
}