diff --git a/OsmAnd/res/drawable/drawer_divider.xml b/OsmAnd/res/drawable/drawer_divider.xml
index a9fab68742..d66e1a84f1 100644
--- a/OsmAnd/res/drawable/drawer_divider.xml
+++ b/OsmAnd/res/drawable/drawer_divider.xml
@@ -3,10 +3,12 @@
android:insetLeft="15dp"
android:insetRight="15dp" >
-
-
+
+
+
\ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java
index 5f8132cac7..86245e1059 100644
--- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java
+++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java
@@ -77,6 +77,7 @@ import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CheckBox;
+import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
@@ -776,8 +777,13 @@ public class MapActivityActions implements DialogProvider {
public void onItemClick(AdapterView> parent, View view, int which, long id) {
OnContextMenuClick click = cm.getClickAdapter(which);
if (click != null) {
- if (click.onContextMenuClick(listAdapter, cm.getElementId(which), which, false)) {
- mDrawerLayout.closeDrawer(mDrawerList);
+ CompoundButton btn = (CompoundButton) view.findViewById(R.id.check_item);
+ if (btn != null && btn.getVisibility() == View.VISIBLE) {
+ btn.setChecked(!btn.isChecked());
+ } else {
+ if (click.onContextMenuClick(listAdapter, cm.getElementId(which), which, false)) {
+ mDrawerLayout.closeDrawer(mDrawerList);
+ }
}
} else {
mDrawerLayout.closeDrawer(mDrawerList);
@@ -900,17 +906,13 @@ public class MapActivityActions implements DialogProvider {
optionsMenuHelper.item(R.string.target_points).icons(R.drawable.ic_action_flage_dark, R.drawable.ic_action_flage_light)
.listen(new OnContextMenuClick() {
@Override
- public boolean onContextMenuClick(ArrayAdapter> adapter, int itemId, int pos, boolean isChecked) {
- if (getMyApplication().getWaypointHelper().isRouteCalculated()) {
-
- final List deletedPoints = new ArrayList();
- ContextMenuAdapter cm = waypointDialogHelper.setListAdapter(app.getMapActivity(), mDrawerList, deletedPoints);
-
- return false;
- } else {
- openIntermediatePointsDialog();
- return true;
- }
+ public boolean onContextMenuClick(ArrayAdapter> adapter, int itemId, int pos,
+ boolean isChecked) {
+ final List deletedPoints = new ArrayList();
+ ContextMenuAdapter cm = waypointDialogHelper.setListAdapter(app.getMapActivity(),
+ mDrawerList, deletedPoints);
+ prepareOptionsMenu(cm);
+ return false;
}
}).reg();
}
diff --git a/OsmAnd/src/net/osmand/plus/configuremap/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/configuremap/ConfigureMapMenu.java
index 2f4caa185b..115e120680 100644
--- a/OsmAnd/src/net/osmand/plus/configuremap/ConfigureMapMenu.java
+++ b/OsmAnd/src/net/osmand/plus/configuremap/ConfigureMapMenu.java
@@ -125,10 +125,10 @@ public class ConfigureMapMenu {
private void createRenderingAttributeItems(final ContextMenuAdapter adapter, final MapActivity activity) {
adapter.item(R.string.map_widget_map_rendering).setCategory(true).layout(R.layout.drawer_list_sub_header).reg();
- String descr = activity.getMyApplication().getRendererRegistry().getCurrentSelectedRenderer().getName();
+ String descr = getRenderDescr(activity);
adapter.item(R.string.map_widget_renderer).listen(new OnContextMenuClick() {
@Override
- public boolean onContextMenuClick(ArrayAdapter> adapter, int itemId, int pos, boolean isChecked) {
+ public boolean onContextMenuClick(final ArrayAdapter> ad, int itemId, final int pos, boolean isChecked) {
AlertDialog.Builder bld = new AlertDialog.Builder(activity);
bld.setTitle(R.string.renderers);
final OsmandApplication app = activity.getMyApplication();
@@ -157,6 +157,8 @@ public class ConfigureMapMenu {
} else {
AccessibleToast.makeText(app, R.string.renderer_load_exception, Toast.LENGTH_SHORT).show();
}
+ adapter.setItemDescription(pos, getRenderDescr(activity));
+ ad.notifyDataSetInvalidated();
dialog.dismiss();
}
@@ -166,9 +168,9 @@ public class ConfigureMapMenu {
}
}).description(descr).layout(R.layout.drawer_list_doubleitem).reg();
- adapter.item(R.string.map_widget_day_night).description(activity.getMyApplication().getSettings().DAYNIGHT_MODE.get().toHumanString(activity)).listen(new OnContextMenuClick() {
+ adapter.item(R.string.map_widget_day_night).description(getDayNightDescr(activity)).listen(new OnContextMenuClick() {
@Override
- public boolean onContextMenuClick(ArrayAdapter> adapter, int itemId, int pos, boolean isChecked) {
+ public boolean onContextMenuClick(final ArrayAdapter> ad, int itemId, final int pos, boolean isChecked) {
final OsmandMapTileView view = activity.getMapView();
AlertDialog.Builder bld = new AlertDialog.Builder(view.getContext());
bld.setTitle(R.string.daynight);
@@ -183,6 +185,8 @@ public class ConfigureMapMenu {
view.getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.values()[which]);
refreshMapComplete(activity);
dialog.dismiss();
+ adapter.setItemDescription(pos, getDayNightDescr(activity));
+ ad.notifyDataSetInvalidated();
}
});
bld.show();
@@ -190,10 +194,9 @@ public class ConfigureMapMenu {
}
}).layout(R.layout.drawer_list_doubleitem).reg();
- int scale = (int)(activity.getMyApplication().getSettings().TEXT_SCALE.get() * 100);
adapter.item(R.string.text_size).listen(new OnContextMenuClick() {
@Override
- public boolean onContextMenuClick(ArrayAdapter> adapter, int itemId, int pos, boolean isChecked) {
+ public boolean onContextMenuClick(final ArrayAdapter> ad, int itemId, final int pos, boolean isChecked) {
final OsmandMapTileView view = activity.getMapView();
AlertDialog.Builder b = new AlertDialog.Builder(view.getContext());
// test old descr as title
@@ -212,21 +215,36 @@ public class ConfigureMapMenu {
public void onClick(DialogInterface dialog, int which) {
view.getSettings().TEXT_SCALE.set(txtValues[which]);
refreshMapComplete(activity);
+ adapter.setItemDescription(pos, getScale(activity));
+ ad.notifyDataSetInvalidated();
}
});
b.show();
return false;
}
- }).description(scale + " %").layout(R.layout.drawer_list_doubleitem).reg();
+ }).description(getScale(activity)).layout(R.layout.drawer_list_doubleitem).reg();
RenderingRulesStorage renderer = activity.getMyApplication().getRendererRegistry().getCurrentSelectedRenderer();
if (renderer != null) {
createCustomRenderingProperties(renderer, adapter, activity);
}
}
+
+ protected String getRenderDescr(final MapActivity activity) {
+ return activity.getMyApplication().getRendererRegistry().getCurrentSelectedRenderer().getName();
+ }
+
+ protected String getDayNightDescr(final MapActivity activity) {
+ return activity.getMyApplication().getSettings().DAYNIGHT_MODE.get().toHumanString(activity);
+ }
+
+ protected String getScale(final MapActivity activity) {
+ int scale = (int)(activity.getMyApplication().getSettings().TEXT_SCALE.get() * 100);
+ return scale + " %";
+ }
- private void createCustomRenderingProperties(RenderingRulesStorage renderer, ContextMenuAdapter adapter , final MapActivity activity){
+ private void createCustomRenderingProperties(RenderingRulesStorage renderer, final ContextMenuAdapter adapter , final MapActivity activity){
final OsmandMapTileView view = activity.getMapView();
adapter.item(R.string.map_widget_vector_attributes).setCategory(true).layout(R.layout.drawer_list_sub_header).reg();
final OsmandApplication app = view.getApplication();
@@ -256,7 +274,7 @@ public class ConfigureMapMenu {
adapter.item(propertyName).listen(new OnContextMenuClick() {
@Override
- public boolean onContextMenuClick(ArrayAdapter> adapter, int itemId, int pos, boolean isChecked) {
+ public boolean onContextMenuClick(final ArrayAdapter> ad, int itemId, final int pos, boolean isChecked) {
AlertDialog.Builder b = new AlertDialog.Builder(view.getContext());
// test old descr as title
b.setTitle(propertyDescr);
@@ -276,7 +294,9 @@ public class ConfigureMapMenu {
pref.set(p.getPossibleValues()[which]);
app.getResourceManager().getRenderer().clearCache();
view.refreshMap(true);
+ adapter.setItemDescription(pos, SettingsActivity.getStringPropertyValue(activity, pref.get()));
dialog.dismiss();
+ ad.notifyDataSetInvalidated();
}
});
b.show();
diff --git a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java
index e8e035358b..9f1b470147 100644
--- a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java
@@ -343,28 +343,34 @@ public class MapInfoLayer extends OsmandMapLayer {
return cm;
}
- private void addControls(ContextMenuAdapter adapter, Set top, final ApplicationMode mode) {
+ private void addControls(final ContextMenuAdapter adapter, Set top, final ApplicationMode mode) {
for(final MapWidgetRegInfo r : top){
- // String s = mi.visibleCollapsed(mode)? " - " : " ";
- // tv.setText(s +map.getString(mi.messageId) +s);
adapter.item(r.messageId).selected(r.visibleCollapsed(mode) || r.visible(mode) ? 1 : 0)
.icons(r.drawableDark, r.drawableLight).listen(new OnContextMenuClick() {
@Override
- public boolean onContextMenuClick(ArrayAdapter> adapter, int itemId, int pos, boolean isChecked) {
+ public boolean onContextMenuClick(ArrayAdapter> a, int itemId, int pos, boolean isChecked) {
final boolean selecteable = r.selecteable();
boolean check = r.visibleCollapsed(mode) || r.visible(mode);
if (check || selecteable) {
mapInfoControls.changeVisibility(r);
}
recreateControls();
- adapter.notifyDataSetInvalidated();
+ adapter.setItemName(pos, getText(mode, r));
+ adapter.setSelection(pos, r.visibleCollapsed(mode) || r.visible(mode) ? 1 : 0);
+ a.notifyDataSetInvalidated();
return false;
}
}).reg();
+ adapter.setItemName(adapter.length() - 1, getText(mode, r));
}
}
+
+ protected String getText(final ApplicationMode mode, final MapWidgetRegInfo r) {
+ return (r.visibleCollapsed(mode)? " - " : " ") + map.getString(r.messageId);
+ }
+
private int themeId = -1;
public void updateColorShadowsOfText(DrawSettings drawSettings) {
boolean transparent = view.getSettings().TRANSPARENT_MAP_THEME.get();