Merge remote-tracking branch 'origin/master'

This commit is contained in:
Weblate 2012-08-19 19:50:11 +02:00
commit 8865ce2d80
12 changed files with 437 additions and 214 deletions

View file

@ -1015,19 +1015,19 @@
<filter viRendered="true" tag="highway" value="motorway" maxzoom="13" color="#6666CC"/> <filter viRendered="true" tag="highway" value="motorway" maxzoom="13" color="#6666CC"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="motorway" maxzoom="13" color="#809bff"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="motorway" maxzoom="13" color="#809bff"/ -->
<filter hmRendered="true" tag="highway" value="motorway" maxzoom="13" color="#809bff"/> <filter hmRendered="true" tag="highway" value="motorway" maxzoom="13" color="#809bff"/>
<filter tag="highway" value="motorway" maxzoom="13" color="#a58dff"/> <filter tag="highway" value="motorway" maxzoom="13" color="#809bff"/>
<filter viRendered="true" tag="highway" value="motorway_link" maxzoom="13" color="#6666CC"/> <filter viRendered="true" tag="highway" value="motorway_link" maxzoom="13" color="#6666CC"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="motorway_link" maxzoom="13" color="#809bff"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="motorway_link" maxzoom="13" color="#809bff"/ -->
<filter hmRendered="true" tag="highway" value="motorway_link" maxzoom="13" color="#809bff"/> <filter hmRendered="true" tag="highway" value="motorway_link" maxzoom="13" color="#809bff"/>
<filter tag="highway" value="motorway_link" maxzoom="13" color="#a58dff"/> <filter tag="highway" value="motorway_link" maxzoom="13" color="#809bff"/>
<filter viRendered="true" tag="highway" value="trunk" maxzoom="13" color="#A02067"/> <filter viRendered="true" tag="highway" value="trunk" maxzoom="13" color="#A02067"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="trunk" maxzoom="13" color="#df1346"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="trunk" maxzoom="13" color="#df1346"/ -->
<filter hmRendered="true" tag="highway" value="trunk" maxzoom="13" color="#ed154b"/> <filter hmRendered="true" tag="highway" value="trunk" maxzoom="13" color="#ed154b"/>
<filter tag="highway" value="trunk" maxzoom="13" color="#ffaf80"/> <filter tag="highway" value="trunk" maxzoom="13" color="#ed154b"/>
<filter viRendered="true" tag="highway" value="trunk_link" maxzoom="13" color="#A02067"/> <filter viRendered="true" tag="highway" value="trunk_link" maxzoom="13" color="#A02067"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="trunk_link" maxzoom="13" color="#df1346"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="trunk_link" maxzoom="13" color="#df1346"/ -->
<filter hmRendered="true" tag="highway" value="trunk_link" maxzoom="13" color="#ed154b"/> <filter hmRendered="true" tag="highway" value="trunk_link" maxzoom="13" color="#ed154b"/>
<filter tag="highway" value="trunk_link" maxzoom="13" color="#ffaf80"/> <filter tag="highway" value="trunk_link" maxzoom="13" color="#ed154b"/>
<groupFilter cap="ROUND"> <groupFilter cap="ROUND">
<filter minzoom="5" maxzoom="9" strokeWidth="5"/> <filter minzoom="5" maxzoom="9" strokeWidth="5"/>
<filter minzoom="10" maxzoom="10" strokeWidth="6"/> <filter minzoom="10" maxzoom="10" strokeWidth="6"/>
@ -1041,11 +1041,11 @@
<filter viRendered="true" tag="highway" value="primary" maxzoom="13" color="#C04D61"/> <filter viRendered="true" tag="highway" value="primary" maxzoom="13" color="#C04D61"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="primary" maxzoom="13" color="#eb989a"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="primary" maxzoom="13" color="#eb989a"/ -->
<filter hmRendered="true" tag="highway" value="primary" maxzoom="13" color="#ff80a0"/> <filter hmRendered="true" tag="highway" value="primary" maxzoom="13" color="#ff80a0"/>
<filter tag="highway" value="primary" maxzoom="13" color="#eb989a"/> <filter tag="highway" value="primary" maxzoom="13" color="#ff80a0"/>
<filter viRendered="true" tag="highway" value="primary_link" maxzoom="13" color="#C04D61"/> <filter viRendered="true" tag="highway" value="primary_link" maxzoom="13" color="#C04D61"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="primary_link" maxzoom="13" color="#eb989a"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="primary_link" maxzoom="13" color="#eb989a"/ -->
<filter hmRendered="true" tag="highway" value="primary_link" maxzoom="13" color="#ff80a0"/> <filter hmRendered="true" tag="highway" value="primary_link" maxzoom="13" color="#ff80a0"/>
<filter tag="highway" value="primary_link" maxzoom="13" color="#eb989a"/> <filter tag="highway" value="primary_link" maxzoom="13" color="#ff80a0"/>
<groupFilter cap="ROUND"> <groupFilter cap="ROUND">
<filter minzoom="7" maxzoom="9" strokeWidth="4"/> <filter minzoom="7" maxzoom="9" strokeWidth="4"/>
<filter minzoom="10" maxzoom="10" strokeWidth="5"/> <filter minzoom="10" maxzoom="10" strokeWidth="5"/>
@ -1059,11 +1059,11 @@
<filter viRendered="true" tag="highway" value="secondary" maxzoom="13" color="#F7D131"/> <filter viRendered="true" tag="highway" value="secondary" maxzoom="13" color="#F7D131"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="secondary" maxzoom="13" color="#fdd6a4"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="secondary" maxzoom="13" color="#fdd6a4"/ -->
<filter hmRendered="true" tag="highway" value="secondary" maxzoom="13" color="#ffd080"/> <filter hmRendered="true" tag="highway" value="secondary" maxzoom="13" color="#ffd080"/>
<filter tag="highway" value="secondary" maxzoom="13" color="#fdd6a4"/> <filter tag="highway" value="secondary" maxzoom="13" color="#ffd080"/>
<filter viRendered="true" tag="highway" value="secondary_link" maxzoom="13" color="#F7D131"/> <filter viRendered="true" tag="highway" value="secondary_link" maxzoom="13" color="#F7D131"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="secondary_link" maxzoom="13" color="#fdd6a4"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="secondary_link" maxzoom="13" color="#fdd6a4"/ -->
<filter hmRendered="true" tag="highway" value="secondary_link" maxzoom="13" color="#ffd080"/> <filter hmRendered="true" tag="highway" value="secondary_link" maxzoom="13" color="#ffd080"/>
<filter tag="highway" value="secondary_link" maxzoom="13" color="#fdd6a4"/> <filter tag="highway" value="secondary_link" maxzoom="13" color="#ffd080"/>
<groupFilter shadowRadius="1" cap="ROUND"> <groupFilter shadowRadius="1" cap="ROUND">
<filter minzoom="9" maxzoom="9" strokeWidth="3"/> <filter minzoom="9" maxzoom="9" strokeWidth="3"/>
<filter minzoom="10" maxzoom="10" strokeWidth="4"/> <filter minzoom="10" maxzoom="10" strokeWidth="4"/>
@ -1077,35 +1077,35 @@
<filter viRendered="true" tag="highway" value="motorway" color="#6666CC"/> <filter viRendered="true" tag="highway" value="motorway" color="#6666CC"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="motorway" color="#809bff"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="motorway" color="#809bff"/ -->
<filter hmRendered="true" tag="highway" value="motorway" color="#809bff"/> <filter hmRendered="true" tag="highway" value="motorway" color="#809bff"/>
<filter tag="highway" value="motorway" color="#a58dff"/> <filter tag="highway" value="motorway" color="#809bff"/>
<filter viRendered="true" tag="highway" value="motorway_link" color="#6666CC"/> <filter viRendered="true" tag="highway" value="motorway_link" color="#6666CC"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="motorway_link" color="#809bff"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="motorway_link" color="#809bff"/ -->
<filter hmRendered="true" tag="highway" value="motorway_link" color="#809bff"/> <filter hmRendered="true" tag="highway" value="motorway_link" color="#809bff"/>
<filter tag="highway" value="motorway_link" color="#a58dff"/> <filter tag="highway" value="motorway_link" color="#809bff"/>
<filter viRendered="true" tag="highway" value="trunk" color="#A02067"/> <filter viRendered="true" tag="highway" value="trunk" color="#A02067"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="trunk" color="#df1346"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="trunk" color="#df1346"/ -->
<filter hmRendered="true" tag="highway" value="trunk" color="#ed154b"/> <filter hmRendered="true" tag="highway" value="trunk" color="#ed154b"/>
<filter tag="highway" value="trunk" color="#ffaf80"/> <filter tag="highway" value="trunk" color="#ed154b"/>
<filter viRendered="true" tag="highway" value="trunk_link" color="#A02067"/> <filter viRendered="true" tag="highway" value="trunk_link" color="#A02067"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="trunk_link" color="#df1346"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="trunk_link" color="#df1346"/ -->
<filter hmRendered="true" tag="highway" value="trunk_link" color="#ed154b"/> <filter hmRendered="true" tag="highway" value="trunk_link" color="#ed154b"/>
<filter tag="highway" value="trunk_link" color="#ffaf80"/> <filter tag="highway" value="trunk_link" color="#ed154b"/>
<filter viRendered="true" tag="highway" value="primary" color="#C04D61"/> <filter viRendered="true" tag="highway" value="primary" color="#C04D61"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="primary" color="#eb989a"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="primary" color="#eb989a"/ -->
<filter hmRendered="true" tag="highway" value="primary" color="#ff80a0"/> <filter hmRendered="true" tag="highway" value="primary" color="#ff80a0"/>
<filter tag="highway" value="primary" color="#eb989a"/> <filter tag="highway" value="primary" color="#ff80a0"/>
<filter viRendered="true" tag="highway" value="primary_link" color="#C04D61"/> <filter viRendered="true" tag="highway" value="primary_link" color="#C04D61"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="primary_link" color="#eb989a"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="primary_link" color="#eb989a"/ -->
<filter hmRendered="true" tag="highway" value="primary_link" color="#ff80a0"/> <filter hmRendered="true" tag="highway" value="primary_link" color="#ff80a0"/>
<filter tag="highway" value="primary_link" color="#eb989a"/> <filter tag="highway" value="primary_link" color="#ff80a0"/>
<filter viRendered="true" tag="highway" value="secondary" color="#F7D131"/> <filter viRendered="true" tag="highway" value="secondary" color="#F7D131"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="secondary" color="#fdd6a4"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="secondary" color="#fdd6a4"/ -->
<filter hmRendered="true" tag="highway" value="secondary" color="#ffd080"/> <filter hmRendered="true" tag="highway" value="secondary" color="#ffd080"/>
<filter tag="highway" value="secondary" color="#fdd6a4"/> <filter tag="highway" value="secondary" color="#ffd080"/>
<filter viRendered="true" tag="highway" value="secondary_link" color="#F7D131"/> <filter viRendered="true" tag="highway" value="secondary_link" color="#F7D131"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="secondary_link" color="#fdd6a4"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="secondary_link" color="#fdd6a4"/ -->
<filter hmRendered="true" tag="highway" value="secondary_link" color="#ffd080"/> <filter hmRendered="true" tag="highway" value="secondary_link" color="#ffd080"/>
<filter tag="highway" value="secondary_link" color="#fdd6a4"/> <filter tag="highway" value="secondary_link" color="#ffd080"/>
<groupFilter shadowRadius="1" cap="ROUND"> <groupFilter shadowRadius="1" cap="ROUND">
<filter> <filter>
@ -1132,11 +1132,11 @@
<filter viRendered="true" tag="highway" value="tertiary" color="#F0CE30"/> <filter viRendered="true" tag="highway" value="tertiary" color="#F0CE30"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="tertiary" color="#fefeb3"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="tertiary" color="#fefeb3"/ -->
<filter hmRendered="true" tag="highway" value="tertiary" color="#ffff80"/> <filter hmRendered="true" tag="highway" value="tertiary" color="#ffff80"/>
<filter tag="highway" value="tertiary" color="#fefeb3"/> <filter tag="highway" value="tertiary" color="#ffff80"/>
<filter viRendered="true" tag="highway" value="tertiary_link" color="#F0CE30"/> <filter viRendered="true" tag="highway" value="tertiary_link" color="#F0CE30"/>
<!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="tertiary_link" color="#fefeb3"/ --> <!-- PALE-SCHEME filter hmRendered="true" tag="highway" value="tertiary_link" color="#fefeb3"/ -->
<filter hmRendered="true" tag="highway" value="tertiary_link" color="#ffff80"/> <filter hmRendered="true" tag="highway" value="tertiary_link" color="#ffff80"/>
<filter tag="highway" value="tertiary_link" color="#fefeb3"/> <filter tag="highway" value="tertiary_link" color="#ffff80"/>
<groupFilter shadowRadius="1" cap="ROUND"> <groupFilter shadowRadius="1" cap="ROUND">
<filter minzoom="10" maxzoom="10" strokeWidth="3"/> <filter minzoom="10" maxzoom="10" strokeWidth="3"/>
<filter minzoom="11" maxzoom="11" strokeWidth="4"/> <filter minzoom="11" maxzoom="11" strokeWidth="4"/>

View file

@ -9,7 +9,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:paddingLeft="10dp" android:paddingLeft="10dp"
android:src="@drawable/expandable_category_unpushed" /> />
<TextView android:id="@+id/local_openstreetmap_category_name" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" <TextView android:id="@+id/local_openstreetmap_category_name" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:textSize="21sp" android:layout_marginLeft="10dp"></TextView> android:textSize="21sp" android:layout_marginLeft="10dp"></TextView>

View file

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<resources><string name="show_warnings_title">Mostra els missatges d\'avís…</string> <resources><string name="show_warnings_title">Mostra els missatges d\'avís…</string>
<string name="map_widget_fluorescent">Rutes amb fluorescència</string> <string name="map_widget_fluorescent">Rutes amb fluorescència</string>
<string name="map_widget_show_ruler">Mostra el regle</string> <string name="map_widget_show_ruler">Mostra el regle</string>
@ -18,7 +18,7 @@
<string name="update_downlod_list">Torna a carregar la llista</string> <string name="update_downlod_list">Torna a carregar la llista</string>
<string name="starting_point_too_far">El punt d\'inici és massa lluny de la carretera més propera.</string> <string name="starting_point_too_far">El punt d\'inici és massa lluny de la carretera més propera.</string>
<string name="osmand_parking_time_limit_title">Indica el temps límit d\'aparcament</string> <string name="osmand_parking_time_limit_title">Indica el temps límit d\'aparcament</string>
<string name="osmand_parking_choose_type">Tria el tipus d'aparcament</string> <string name="osmand_parking_choose_type">Tria el tipus d\'aparcament</string>
<string name="avoid_unpaved">Evita les carreteres no pavimentades</string> <string name="avoid_unpaved">Evita les carreteres no pavimentades</string>
<string name="avoid_in_routing_title">Evita…</string> <string name="avoid_in_routing_title">Evita…</string>
<string name="monitoring_mode_on">Atura\n l\'enregistrament en GPX</string> <string name="monitoring_mode_on">Atura\n l\'enregistrament en GPX</string>
@ -200,8 +200,8 @@
<string name="use_transparent_map_theme">Tema transparent</string> <string name="use_transparent_map_theme">Tema transparent</string>
<string name="map_widget_appearance">Miscel·lània</string> <string name="map_widget_appearance">Miscel·lània</string>
<string name="gps_wakeup_interval">Interval de despertament del GPS: %s</string> <string name="gps_wakeup_interval">Interval de despertament del GPS: %s</string>
<string name="osmand_parking_event">Treu el cotxe de l'aparcament</string> <string name="osmand_parking_event">Treu el cotxe de l\'aparcament</string>
<string name="rendering_attr_appMode_description">Optimització del mapa per cada Perfil d'usuari</string> <string name="rendering_attr_appMode_description">Optimització del mapa per cada Perfil d\'usuari</string>
<string name="play_commands_of_currently_selected_voice">Reprodueix instruccions de la veu seleccionada</string> <string name="play_commands_of_currently_selected_voice">Reprodueix instruccions de la veu seleccionada</string>
<string name="scroll_map_by_gestures_descr">Desplaçament del mapa per gests a la pantalla tàctil</string> <string name="scroll_map_by_gestures_descr">Desplaçament del mapa per gests a la pantalla tàctil</string>
<string name="scroll_map_by_gestures">Desplaçament natural del mapa</string> <string name="scroll_map_by_gestures">Desplaçament natural del mapa</string>
@ -209,6 +209,6 @@
<string name="zoom_by_trackball">Utilitza el ratolí de bola per controlar el zoom</string> <string name="zoom_by_trackball">Utilitza el ratolí de bola per controlar el zoom</string>
<string name="use_short_object_names">Utilitza els noms dels objectes</string> <string name="use_short_object_names">Utilitza els noms dels objectes</string>
<string name="local_openstreetmap_were_uploaded">{0} PDI/errors van ser penjats</string> <string name="local_openstreetmap_were_uploaded">{0} PDI/errors van ser penjats</string>
<string name="local_openstreetmap_settings">PDI/errors d'OSM desats localment</string> <string name="local_openstreetmap_settings">PDI/errors d\'OSM desats localment</string>
<string name="local_openstreetmap_settings_descr">Mostra i gestiona els PDI/errors d'OSM de les bases de dades locals</string> <string name="local_openstreetmap_settings_descr">Mostra i gestiona els PDI/errors d\'OSM de les bases de dades locals</string>
</resources> </resources>

View file

@ -9,8 +9,12 @@
1. All your modified/created strings are in the top of the file (to make easier find what's translated). 1. 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 PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
--> -->
<string name="map_widget_vector_attributes">Rendering attributes:</string>
<string name="map_widget_renderer">Rendering style</string>
<string name="live_monitoring_mode_off">Start\n live tracking</string> <string name="live_monitoring_mode_off">Start\n live tracking</string>
<string name="live_monitoring_mode_on">Stop\n live tracking</string> <string name="live_monitoring_mode_on">Stop\n live tracking</string>
<string name="position_on_map_descr">Choose location of position marker on the map</string>
<string name="position_on_map">Position marker</string>
<string name="layer_map_appearance">Configure screen&#8230;</string> <string name="layer_map_appearance">Configure screen&#8230;</string>
<string name="show_lanes">Show lanes</string> <string name="show_lanes">Show lanes</string>
<string name="avoid_unpaved">Avoid unpaved roads</string> <string name="avoid_unpaved">Avoid unpaved roads</string>

View file

@ -5,20 +5,18 @@
<PreferenceCategory android:title="@string/profile_settings" android:key="profile_dep_cat"> <PreferenceCategory android:title="@string/profile_settings" android:key="profile_dep_cat">
<ListPreference android:summary="@string/settings_preset_descr" android:title="@string/settings_preset" android:key="application_mode"></ListPreference> <ListPreference android:summary="@string/settings_preset_descr" android:title="@string/settings_preset" android:key="application_mode"></ListPreference>
<!--
<PreferenceScreen android:key="appearance_settings" android:title="@string/map_settings" android:summary="@string/map_settings_descr"> <PreferenceScreen android:key="appearance_settings" android:title="@string/map_settings" android:summary="@string/map_settings_descr">
<ListPreference android:key="rotate_map" android:title="@string/rotate_map_to_bearing" android:summary="@string/rotate_map_to_bearing_descr"></ListPreference> <ListPreference android:key="rotate_map" android:title="@string/rotate_map_to_bearing" android:summary="@string/rotate_map_to_bearing_descr"></ListPreference>
<ListPreference android:key="daynight_mode" android:title="@string/daynight" android:summary="@string/daynight_descr"></ListPreference>
<PreferenceCategory android:title="@string/pref_vector_map">
<ListPreference android:key="renderer" android:title="@string/renderers" android:summary="@string/renderers_descr"></ListPreference>
<ListPreference android:key="map_text_size" android:title="@string/map_text_size" android:summary="@string/map_text_size_descr"/>
</PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>
-->
<PreferenceScreen android:key="routing_settings" android:title="@string/routing_settings" android:summary="@string/routing_settings_descr"> <PreferenceScreen android:key="routing_settings" android:title="@string/routing_settings" android:summary="@string/routing_settings_descr">
<ListPreference android:title="@string/router_service" android:key="router_service" android:summary="@string/router_service_descr"></ListPreference> <ListPreference android:title="@string/router_service" android:key="router_service" android:summary="@string/router_service_descr"></ListPreference>
<CheckBoxPreference android:summary="@string/fast_route_mode_descr" android:title="@string/fast_route_mode" <CheckBoxPreference android:summary="@string/fast_route_mode_descr" android:title="@string/fast_route_mode"
android:key="fast_route_mode"></CheckBoxPreference> android:key="fast_route_mode"></CheckBoxPreference>
<ListPreference android:title="@string/voice_provider" android:key="voice_provider" android:summary="@string/voice_provider_descr"></ListPreference> <ListPreference android:title="@string/voice_provider" android:key="voice_provider" android:summary="@string/voice_provider_descr"></ListPreference>
<ListPreference android:key="daynight_mode" android:title="@string/daynight" android:summary="@string/daynight_descr"></ListPreference>
<ListPreference android:key="auto_follow_route" android:title="@string/choose_auto_follow_route" <ListPreference android:key="auto_follow_route" android:title="@string/choose_auto_follow_route"
android:summary="@string/choose_auto_follow_route_descr"></ListPreference> android:summary="@string/choose_auto_follow_route_descr"></ListPreference>
<CheckBoxPreference android:title="@string/auto_zoom_map" android:summary="@string/auto_zoom_map_descr" android:key="auto_zoom_map"></CheckBoxPreference> <CheckBoxPreference android:title="@string/auto_zoom_map" android:summary="@string/auto_zoom_map_descr" android:key="auto_zoom_map"></CheckBoxPreference>

View file

@ -61,6 +61,8 @@ public class OsmandSettings {
T getModeValue(ApplicationMode m); T getModeValue(ApplicationMode m);
String getId(); String getId();
void resetToDefault();
} }
// These settings are stored in SharedPreferences // These settings are stored in SharedPreferences
@ -119,6 +121,11 @@ public class OsmandSettings {
public void overrideDefaultValue(ApplicationMode newDefaultValue) { public void overrideDefaultValue(ApplicationMode newDefaultValue) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Override
public void resetToDefault() {
set(ApplicationMode.DEFAULT);
};
@Override @Override
public boolean set(ApplicationMode val) { public boolean set(ApplicationMode val) {
@ -292,6 +299,11 @@ public class OsmandSettings {
public String getId() { public String getId() {
return id; return id;
} }
@Override
public void resetToDefault(){
set(getDefaultValue());
}
@Override @Override
public boolean set(T obj) { public boolean set(T obj) {
@ -1195,9 +1207,7 @@ public class OsmandSettings {
} }
RenderingRulesStorage loaded = ctx.getRendererRegistry().getRenderer(val); RenderingRulesStorage loaded = ctx.getRendererRegistry().getRenderer(val);
if (loaded != null) { if (loaded != null) {
ctx.getRendererRegistry().setCurrentSelectedRender(loaded);
super.setValue(prefs, val); super.setValue(prefs, val);
ctx.getResourceManager().getRenderer().clearCache();
return true; return true;
} }
return false; return false;
@ -1208,7 +1218,7 @@ public class OsmandSettings {
Map<String, CommonPreference<String>> customRendersProps = new LinkedHashMap<String, OsmandSettings.CommonPreference<String>>(); Map<String, CommonPreference<String>> customRendersProps = new LinkedHashMap<String, OsmandSettings.CommonPreference<String>>();
public CommonPreference<String> getCustomRenderProperty(String attrName){ public CommonPreference<String> getCustomRenderProperty(String attrName){
if(!customRendersProps.containsKey(attrName)){ if(!customRendersProps.containsKey(attrName)){
customRendersProps.put(attrName, new StringPreference("renderer_"+attrName, "").makeProfile()); customRendersProps.put(attrName, new StringPreference("nrenderer_"+attrName, "").makeProfile());
} }
return customRendersProps.get(attrName); return customRendersProps.get(attrName);
} }
@ -1219,6 +1229,14 @@ public class OsmandSettings {
pref.setModeDefaultValue(ApplicationMode.BICYCLE, "bicycle"); pref.setModeDefaultValue(ApplicationMode.BICYCLE, "bicycle");
} }
Map<String, CommonPreference<Boolean>> customBooleanRendersProps = new LinkedHashMap<String, OsmandSettings.CommonPreference<Boolean>>();
public CommonPreference<Boolean> getCustomRenderBooleanProperty(String attrName){
if(!customRendersProps.containsKey(attrName)){
customBooleanRendersProps.put(attrName, new BooleanPreference("nrenderer_"+attrName, false).makeProfile());
}
return customBooleanRendersProps.get(attrName);
}
public final OsmandPreference<Boolean> VOICE_MUTE = new BooleanPreference("voice_mute", false).makeGlobal(); public final OsmandPreference<Boolean> VOICE_MUTE = new BooleanPreference("voice_mute", false).makeGlobal();
// for background service // for background service

View file

@ -3,7 +3,6 @@ package net.osmand.plus.activities;
import java.io.File; import java.io.File;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
@ -19,7 +18,6 @@ import net.osmand.map.TileSourceManager.TileSourceTemplate;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.CommonPreference;
import net.osmand.plus.OsmandSettings.DayNightMode; import net.osmand.plus.OsmandSettings.DayNightMode;
import net.osmand.plus.OsmandSettings.MetricsConstants; import net.osmand.plus.OsmandSettings.MetricsConstants;
import net.osmand.plus.OsmandSettings.OsmandPreference; import net.osmand.plus.OsmandSettings.OsmandPreference;
@ -30,12 +28,12 @@ import net.osmand.plus.activities.CustomTitleBar.CustomTitleBarView;
import net.osmand.plus.render.NativeOsmandLibrary; import net.osmand.plus.render.NativeOsmandLibrary;
import net.osmand.plus.routing.RouteProvider.RouteService; import net.osmand.plus.routing.RouteProvider.RouteService;
import net.osmand.plus.views.SeekBarPreference; import net.osmand.plus.views.SeekBarPreference;
import net.osmand.render.RenderingRuleProperty;
import net.osmand.render.RenderingRulesStorage; import net.osmand.render.RenderingRulesStorage;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.AlertDialog.Builder; import android.app.AlertDialog.Builder;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener; import android.content.DialogInterface.OnMultiChoiceClickListener;
@ -117,12 +115,12 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference
seekBarPreferences.put(b.getId(), b); seekBarPreferences.put(b.getId(), b);
} }
public String getStringPropertyName(String propertyName, String defValue) { public static String getStringPropertyName(Context ctx, String propertyName, String defValue) {
try { try {
Field f = R.string.class.getField("rendering_attr_" + propertyName + "_name"); Field f = R.string.class.getField("rendering_attr_" + propertyName + "_name");
if (f != null) { if (f != null) {
Integer in = (Integer) f.get(null); Integer in = (Integer) f.get(null);
return getString(in); return ctx.getString(in);
} }
} catch (Exception e) { } catch (Exception e) {
System.err.println(e.getMessage()); System.err.println(e.getMessage());
@ -298,9 +296,9 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference
// List preferences // List preferences
registerListPreference(osmandSettings.ROTATE_MAP, screen, // registerListPreference(osmandSettings.ROTATE_MAP, screen,
new String[]{getString(R.string.rotate_map_none_opt), getString(R.string.rotate_map_bearing_opt), getString(R.string.rotate_map_compass_opt)}, // new String[]{getString(R.string.rotate_map_none_opt), getString(R.string.rotate_map_bearing_opt), getString(R.string.rotate_map_compass_opt)},
new Integer[]{OsmandSettings.ROTATE_MAP_NONE, OsmandSettings.ROTATE_MAP_BEARING, OsmandSettings.ROTATE_MAP_COMPASS}); // new Integer[]{OsmandSettings.ROTATE_MAP_NONE, OsmandSettings.ROTATE_MAP_BEARING, OsmandSettings.ROTATE_MAP_COMPASS});
registerListPreference(osmandSettings.MAP_SCREEN_ORIENTATION, screen, registerListPreference(osmandSettings.MAP_SCREEN_ORIENTATION, screen,
new String[] {getString(R.string.map_orientation_portrait), getString(R.string.map_orientation_landscape), getString(R.string.map_orientation_default)}, new String[] {getString(R.string.map_orientation_portrait), getString(R.string.map_orientation_landscape), getString(R.string.map_orientation_default)},
@ -344,33 +342,18 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference
} }
registerListPreference(osmandSettings.AUTO_FOLLOW_ROUTE, screen, entries, intValues); registerListPreference(osmandSettings.AUTO_FOLLOW_ROUTE, screen, entries, intValues);
Float[] floatValues = new Float[] {0.6f, 0.8f, 1.0f, 1.2f, 1.5f};
entries = new String[floatValues.length];
for (int i = 0; i < floatValues.length; i++) {
entries[i] = (int) (floatValues[i] * 100) +" %";
}
registerListPreference(osmandSettings.MAP_TEXT_SIZE, screen, entries, floatValues);
entries = new String[RouteService.values().length]; entries = new String[RouteService.values().length];
for(int i=0; i<entries.length; i++){ for(int i=0; i<entries.length; i++){
entries[i] = RouteService.values()[i].getName(); entries[i] = RouteService.values()[i].getName();
} }
registerListPreference(osmandSettings.ROUTER_SERVICE, screen, entries, RouteService.values()); registerListPreference(osmandSettings.ROUTER_SERVICE, screen, entries, RouteService.values());
entries = new String[ApplicationMode.values().length]; entries = new String[ApplicationMode.values().length];
for(int i=0; i<entries.length; i++){ for(int i=0; i<entries.length; i++){
entries[i] = ApplicationMode.values()[i].toHumanString(this); entries[i] = ApplicationMode.values()[i].toHumanString(this);
} }
registerListPreference(osmandSettings.APPLICATION_MODE, screen, entries, ApplicationMode.values()); registerListPreference(osmandSettings.APPLICATION_MODE, screen, entries, ApplicationMode.values());
Collection<String> rendererNames = getMyApplication().getRendererRegistry().getRendererNames();
entries = (String[]) rendererNames.toArray(new String[rendererNames.size()]);
registerListPreference(osmandSettings.RENDERER, screen, entries, entries);
createCustomRenderingProperties(false);
applicationModePreference = (ListPreference) screen.findPreference(osmandSettings.APPLICATION_MODE.getId()); applicationModePreference = (ListPreference) screen.findPreference(osmandSettings.APPLICATION_MODE.getId());
applicationModePreference.setOnPreferenceChangeListener(this); applicationModePreference.setOnPreferenceChangeListener(this);
@ -411,38 +394,6 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference
} }
} }
private void createCustomRenderingProperties(boolean update) {
RenderingRulesStorage renderer = getMyApplication().getRendererRegistry().getCurrentSelectedRenderer();
PreferenceCategory cat = (PreferenceCategory) findPreference("custom_vector_rendering");
if (cat != null) {
cat.removeAll();
if (renderer != null) {
for (RenderingRuleProperty p : renderer.PROPS.getCustomRules()) {
CommonPreference<String> custom = getMyApplication().getSettings().getCustomRenderProperty(p.getAttrName());
ListPreference lp = new ListPreference(this);
lp.setOnPreferenceChangeListener(this);
lp.setKey(custom.getId());
lp.setTitle(getStringPropertyName(p.getAttrName(), p.getName()));
lp.setSummary(getStringPropertyDescription(p.getAttrName(), p.getDescription()));
cat.addPreference(lp);
LinkedHashMap<String, Object> vals = new LinkedHashMap<String, Object>();
screenPreferences.put(custom.getId(), lp);
listPreferences.put(custom.getId(), custom);
listPrefValues.put(custom.getId(), vals);
String[] names = p.getPossibleValues();
for (int i = 0; i < names.length; i++) {
vals.put(names[i], names[i]);
}
}
if (update) {
updateAllSettings();
}
}
}
}
private void reloadVoiceListPreference(PreferenceScreen screen) { private void reloadVoiceListPreference(PreferenceScreen screen) {
String[] entries; String[] entries;
@ -583,14 +534,6 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference
+ osmandSettings.DAYNIGHT_MODE.get().toHumanString(this) + "]"); + osmandSettings.DAYNIGHT_MODE.get().toHumanString(this) + "]");
} }
} }
if (listPref.getId().equals(osmandSettings.RENDERER.getId())) {
if (changed) {
AccessibleToast.makeText(this, R.string.renderer_load_sucess, Toast.LENGTH_SHORT).show();
} else {
AccessibleToast.makeText(this, R.string.renderer_load_exception, Toast.LENGTH_SHORT).show();
}
createCustomRenderingProperties(true);
}
} else if (preference == applicationDir) { } else if (preference == applicationDir) {
warnAboutChangingStorage((String) newValue); warnAboutChangingStorage((String) newValue);
return false; return false;

View file

@ -1,19 +1,26 @@
package net.osmand.plus.extrasettings; package net.osmand.plus.extrasettings;
import java.util.Arrays;
import net.osmand.Version; import net.osmand.Version;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.CommonPreference;
import net.osmand.plus.OsmandSettings.OsmandPreference;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.ApplicationMode;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.SettingsActivity; import net.osmand.plus.activities.SettingsActivity;
import net.osmand.plus.views.MapInfoControls; import net.osmand.plus.views.MapInfoControls;
import net.osmand.plus.views.MapInfoControls.MapInfoControlRegInfo;
import net.osmand.plus.views.MapInfoLayer; import net.osmand.plus.views.MapInfoLayer;
import net.osmand.plus.views.OsmandMapTileView; import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.MapInfoControls.MapInfoControlRegInfo;
import net.osmand.plus.voice.CommandPlayer; import net.osmand.plus.voice.CommandPlayer;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.media.AudioManager; import android.media.AudioManager;
import android.preference.ListPreference; import android.preference.ListPreference;
import android.preference.Preference; import android.preference.Preference;
@ -50,17 +57,52 @@ public class OsmandExtraSettings extends OsmandPlugin {
return app.getString(R.string.extra_settings); return app.getString(R.string.extra_settings);
} }
@Override @Override
public void registerLayers(MapActivity activity) { public void registerLayers(final MapActivity activity) {
registerControls = true; registerControls = true;
final OsmandMapTileView view = activity.getMapView(); final OsmandMapTileView view = activity.getMapView();
final MapInfoLayer mapInfoLayer = activity.getMapLayers().getMapInfoLayer(); final MapInfoLayer mapInfoLayer = activity.getMapLayers().getMapInfoLayer();
final MapInfoControls mapInfoControls = mapInfoLayer.getMapInfoControls(); final MapInfoControls mapInfoControls = mapInfoLayer.getMapInfoControls();
final OsmandPreference<Float> textSizePref = view.getSettings().MAP_TEXT_SIZE;
final MapInfoControlRegInfo textSize = mapInfoControls.registerAppearanceWidget(0, R.string.map_text_size,
"text_size", textSizePref);
textSize.setStateChangeListener(new Runnable() {
@Override
public void run() {
final Float[] floatValues = new Float[] {0.6f, 0.8f, 1.0f, 1.2f, 1.5f};
String[] entries = new String[floatValues.length];
for (int i = 0; i < floatValues.length; i++) {
entries[i] = (int) (floatValues[i] * 100) +" %";
}
Builder b = new AlertDialog.Builder(view.getContext());
int i = Arrays.binarySearch(floatValues, textSizePref.get());
b.setSingleChoiceItems(entries, i, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
textSizePref.set(floatValues[which]);
app.getResourceManager().getRenderer().clearCache();
view.refreshMap(true);
dialog.dismiss();
}
});
b.show();
}
});
final MapInfoControlRegInfo showRuler = mapInfoControls.registerAppearanceWidget(0, R.string.map_widget_show_ruler,
"showRuler", view.getSettings().SHOW_RULER);
showRuler.setStateChangeListener(new Runnable() {
@Override
public void run() {
view.getSettings().SHOW_RULER.set(!view.getSettings().SHOW_RULER.get());
view.refreshMap();
}
});
final MapInfoControlRegInfo transparent = mapInfoControls.registerAppearanceWidget(0, R.string.map_widget_transparent, final MapInfoControlRegInfo transparent = mapInfoControls.registerAppearanceWidget(0, R.string.map_widget_transparent,
"transparent", view.getSettings().TRANSPARENT_MAP_THEME); "transparent", view.getSettings().TRANSPARENT_MAP_THEME);
transparent.setStateChangeListener(new Runnable() { transparent.setStateChangeListener(new Runnable() {
@Override @Override
public void run() { public void run() {
ApplicationMode am = view.getSettings().getApplicationMode();
view.getSettings().TRANSPARENT_MAP_THEME.set(!view.getSettings().TRANSPARENT_MAP_THEME.get()); view.getSettings().TRANSPARENT_MAP_THEME.set(!view.getSettings().TRANSPARENT_MAP_THEME.get());
mapInfoLayer.recreateControls(); mapInfoLayer.recreateControls();
} }
@ -71,11 +113,33 @@ public class OsmandExtraSettings extends OsmandPlugin {
fluorescent.setStateChangeListener(new Runnable() { fluorescent.setStateChangeListener(new Runnable() {
@Override @Override
public void run() { public void run() {
ApplicationMode am = view.getSettings().getApplicationMode();
view.getSettings().FLUORESCENT_OVERLAYS.set(!view.getSettings().FLUORESCENT_OVERLAYS.get()); view.getSettings().FLUORESCENT_OVERLAYS.set(!view.getSettings().FLUORESCENT_OVERLAYS.get());
view.refreshMap(); view.refreshMap();
} }
}); });
final CommonPreference<Integer> posPref = view.getSettings().POSITION_ON_MAP;
final MapInfoControlRegInfo posMap = mapInfoControls.registerAppearanceWidget(0, R.string.position_on_map,
"position_on_map", textSizePref);
posMap.setStateChangeListener(new Runnable() {
@Override
public void run() {
String[] entries = new String[] { activity.getString(R.string.position_on_map_center), activity.getString(R.string.position_on_map_bottom) };
final Integer[] vals = new Integer[] { OsmandSettings.CENTER_CONSTANT, OsmandSettings.BOTTOM_CONSTANT };
Builder b = new AlertDialog.Builder(view.getContext());
int i = Arrays.binarySearch(vals, posPref.get());
b.setSingleChoiceItems(entries, i, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
posPref.set(vals[which]);
activity.updateApplicationModeSettings();
view.refreshMap(true);
dialog.dismiss();
}
});
b.show();
}
});
} }
@Override @Override
@ -124,11 +188,13 @@ public class OsmandExtraSettings extends OsmandPlugin {
} }
PreferenceScreen appearance = (PreferenceScreen) screen.findPreference("appearance_settings"); // cat = new PreferenceCategory(app);
PreferenceCategory vectorSettings = new PreferenceCategory(app); // cat.setTitle(R.string.extra_settings);
vectorSettings.setTitle(R.string.pref_vector_rendering); // PreferenceScreen routing = (PreferenceScreen) screen.findPreference(SettingsActivity.SCREEN_ID_NAVIGATION_SETTINGS);
vectorSettings.setKey("custom_vector_rendering"); // routing.addPreference(cat);
appearance.addPreference(vectorSettings); // cat.addPreference(activity.createListPreference(settings.POSITION_ON_MAP,
// new String[] { activity.getString(R.string.position_on_map_center), activity.getString(R.string.position_on_map_bottom) },
// new Integer[] { OsmandSettings.CENTER_CONSTANT, OsmandSettings.BOTTOM_CONSTANT }, R.string.position_on_map,
// R.string.position_on_map_descr));
} }
} }

View file

@ -29,7 +29,6 @@ import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView; import android.widget.ExpandableListView;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo; import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
import android.widget.TextView; import android.widget.TextView;
@ -170,7 +169,7 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
switch (id) { switch (id) {
case DIALOG_PROGRESS_UPLOAD: case DIALOG_PROGRESS_UPLOAD:
UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask((ProgressDialog) dialog, remotepoi, UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask((ProgressDialog) dialog, remotepoi,
remotebug, toUpload.length); remotebug, toUpload.length);
uploadTask.execute(toUpload); uploadTask.execute(toUpload);
break; break;
} }
@ -188,10 +187,8 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
private boolean interruptUploading = false; private boolean interruptUploading = false;
public UploadOpenstreetmapPointAsyncTask(ProgressDialog progress, public UploadOpenstreetmapPointAsyncTask(ProgressDialog progress, OpenstreetmapRemoteUtil remotepoi, OsmBugsRemoteUtil remotebug,
OpenstreetmapRemoteUtil remotepoi, int listSize) {
OsmBugsRemoteUtil remotebug,
int listSize) {
this.progress = progress; this.progress = progress;
this.remotepoi = remotepoi; this.remotepoi = remotepoi;
this.remotebug = remotebug; this.remotebug = remotebug;
@ -203,7 +200,8 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
int uploaded = 0; int uploaded = 0;
for (OsmPoint point : points) { for (OsmPoint point : points) {
if (interruptUploading) break; if (interruptUploading)
break;
if (point.getGroup() == OsmPoint.Group.POI) { if (point.getGroup() == OsmPoint.Group.POI) {
OpenstreetmapPoint p = (OpenstreetmapPoint) point; OpenstreetmapPoint p = (OpenstreetmapPoint) point;
@ -214,10 +212,11 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
Node n; Node n;
if ((n = remotepoi.commitNodeImpl(p.getAction(), p.getEntity(), entityInfo, p.getComment())) != null) { if ((n = remotepoi.commitNodeImpl(p.getAction(), p.getEntity(), entityInfo, p.getComment())) != null) {
if (point.getId() != n.getId()) { if (point.getId() != n.getId()) {
//change all category points... // change all category points...
listAdapter.categoryIdChanged(point.getId(), n.getId()); listAdapter.categoryIdChanged(point.getId(), n.getId());
} }
remotepoi.updateNodeInIndexes(LocalOpenstreetmapActivity.this, p.getAction(), n, p.getEntity()); remotepoi.updateNodeInIndexes(LocalOpenstreetmapActivity.this, p.getAction(), n, p.getEntity());
dbpoi.deleteOpenstreetmap(p);
publishProgress(p); publishProgress(p);
uploaded++; uploaded++;
} }
@ -225,10 +224,13 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
OsmbugsPoint p = (OsmbugsPoint) point; OsmbugsPoint p = (OsmbugsPoint) point;
if (p.getAction() == OsmPoint.Action.CREATE) { if (p.getAction() == OsmPoint.Action.CREATE) {
remotebug.createNewBug(p.getLatitude(), p.getLongitude(), p.getText(), p.getAuthor()); remotebug.createNewBug(p.getLatitude(), p.getLongitude(), p.getText(), p.getAuthor());
dbbug.deleteOsmbugs(p);
} else if (p.getAction() == OsmPoint.Action.MODIFY) { } else if (p.getAction() == OsmPoint.Action.MODIFY) {
remotebug.addingComment(p.getId(), p.getText(), p.getAuthor()); remotebug.addingComment(p.getId(), p.getText(), p.getAuthor());
dbbug.deleteOsmbugs(p);
} else if (p.getAction() == OsmPoint.Action.DELETE) { } else if (p.getAction() == OsmPoint.Action.DELETE) {
remotebug.closingBug(p.getId()); remotebug.closingBug(p.getId());
dbbug.deleteOsmbugs(p);
} }
publishProgress(p); publishProgress(p);
uploaded++; uploaded++;
@ -243,11 +245,11 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
interruptUploading = false; interruptUploading = false;
progress.setOnCancelListener(new DialogInterface.OnCancelListener() { progress.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override @Override
public void onCancel(DialogInterface dialog) { public void onCancel(DialogInterface dialog) {
UploadOpenstreetmapPointAsyncTask.this.setInterruptUploading(true); UploadOpenstreetmapPointAsyncTask.this.setInterruptUploading(true);
} }
}); });
progress.setIndeterminate(false); progress.setIndeterminate(false);
progress.setMax(listSize); progress.setMax(listSize);
progress.setProgress(0); progress.setProgress(0);
@ -256,8 +258,10 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
@Override @Override
protected void onPostExecute(Integer result) { protected void onPostExecute(Integer result) {
listAdapter.notifyDataSetChanged(); listAdapter.notifyDataSetChanged();
if(result != null){ if (result != null) {
AccessibleToast.makeText(LocalOpenstreetmapActivity.this, MessageFormat.format(getString(R.string.local_openstreetmap_were_uploaded), result.intValue()), Toast.LENGTH_LONG).show(); AccessibleToast.makeText(LocalOpenstreetmapActivity.this,
MessageFormat.format(getString(R.string.local_openstreetmap_were_uploaded), result.intValue()), Toast.LENGTH_LONG)
.show();
} }
removeDialog(DIALOG_PROGRESS_UPLOAD); removeDialog(DIALOG_PROGRESS_UPLOAD);
} }

View file

@ -486,18 +486,23 @@ public class MapRenderRepositories {
RenderingRuleSearchRequest renderingReq = new RenderingRuleSearchRequest(storage); RenderingRuleSearchRequest renderingReq = new RenderingRuleSearchRequest(storage);
renderingReq.setBooleanFilter(renderingReq.ALL.R_NIGHT_MODE, nightMode); renderingReq.setBooleanFilter(renderingReq.ALL.R_NIGHT_MODE, nightMode);
for (RenderingRuleProperty customProp : storage.PROPS.getCustomRules()) { for (RenderingRuleProperty customProp : storage.PROPS.getCustomRules()) {
CommonPreference<String> settings = prefs.getCustomRenderProperty(customProp.getAttrName()); if (customProp.isBoolean()) {
String res = settings.get(); CommonPreference<Boolean> pref = prefs.getCustomRenderBooleanProperty(customProp.getAttrName());
if (!Algoritms.isEmpty(res)) { renderingReq.setBooleanFilter(customProp, pref.get());
if (customProp.isString()) { } else {
renderingReq.setStringFilter(customProp, res); CommonPreference<String> settings = prefs.getCustomRenderProperty(customProp.getAttrName());
} else if (customProp.isBoolean()) { String res = settings.get();
renderingReq.setBooleanFilter(customProp, "true".equalsIgnoreCase(res)); if (!Algoritms.isEmpty(res)) {
} else { if (customProp.isString()) {
try { renderingReq.setStringFilter(customProp, res);
renderingReq.setIntFilter(customProp, Integer.parseInt(res)); } else if (customProp.isBoolean()) {
} catch (NumberFormatException e) { renderingReq.setBooleanFilter(customProp, "true".equalsIgnoreCase(res));
e.printStackTrace(); } else {
try {
renderingReq.setIntFilter(customProp, Integer.parseInt(res));
} catch (NumberFormatException e) {
e.printStackTrace();
}
} }
} }
} }

View file

@ -2,14 +2,17 @@ package net.osmand.plus.views;
import java.util.Comparator; import java.util.Comparator;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.Iterator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import net.osmand.Algoritms;
import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.CommonPreference; import net.osmand.plus.OsmandSettings.CommonPreference;
import net.osmand.plus.OsmandSettings.OsmandPreference;
import net.osmand.plus.activities.ApplicationMode; import net.osmand.plus.activities.ApplicationMode;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -68,12 +71,12 @@ public class MapInfoControls {
} }
public MapInfoControlRegInfo registerAppearanceWidget(int drawable, int messageId, String key, public MapInfoControlRegInfo registerAppearanceWidget(int drawable, int messageId, String key,
CommonPreference<Boolean> pref) { OsmandPreference<?> pref) {
MapInfoControlRegInfo ii = new MapInfoControlRegInfo(); MapInfoControlRegInfo ii = new MapInfoControlRegInfo();
ii.defaultModes = EnumSet.noneOf(ApplicationMode.class); ii.defaultModes = EnumSet.noneOf(ApplicationMode.class);
ii.defaultCollapsible = null; ii.defaultCollapsible = null;
ii.key = key; ii.key = key;
ii.blPreference = pref; ii.preference = pref;
ii.visibleModes = EnumSet.noneOf(ApplicationMode.class); ii.visibleModes = EnumSet.noneOf(ApplicationMode.class);
ii.visibleCollapsible = null; ii.visibleCollapsible = null;
ii.drawable = drawable; ii.drawable = drawable;
@ -82,6 +85,32 @@ public class MapInfoControls {
return ii; return ii;
} }
public void removeApperanceWidgets(String category) {
Iterator<MapInfoControlRegInfo> it = appearanceWidgets.iterator();
while(it.hasNext()) {
if(Algoritms.objectEquals(it.next().category, category)) {
it.remove();
}
}
}
public MapInfoControlRegInfo registerAppearanceWidget(int drawable, String message, String key,
CommonPreference<?> pref, String subcategory) {
MapInfoControlRegInfo ii = new MapInfoControlRegInfo();
ii.defaultModes = EnumSet.noneOf(ApplicationMode.class);
ii.defaultCollapsible = null;
ii.key = key;
ii.category = subcategory;
ii.preference = pref;
ii.visibleModes = EnumSet.noneOf(ApplicationMode.class);
ii.visibleCollapsible = null;
ii.drawable = drawable;
ii.messageId = message.hashCode();
ii.message = message;
this.appearanceWidgets.add(ii);
return ii;
}
public MapInfoControlRegInfo registerTopWidget(View m, int drawable, int messageId, String key, int left, public MapInfoControlRegInfo registerTopWidget(View m, int drawable, int messageId, String key, int left,
EnumSet<ApplicationMode> appDefaultModes, int priorityOrder) { EnumSet<ApplicationMode> appDefaultModes, int priorityOrder) {
MapInfoControlRegInfo ii = new MapInfoControlRegInfo(); MapInfoControlRegInfo ii = new MapInfoControlRegInfo();
@ -93,8 +122,12 @@ public class MapInfoControls {
for(ApplicationMode ms : ApplicationMode.values() ) { for(ApplicationMode ms : ApplicationMode.values() ) {
boolean def = appDefaultModes.contains(ms); boolean def = appDefaultModes.contains(ms);
Set<String> set = visibleElements.get(ms); Set<String> set = visibleElements.get(ms);
if(set != null) { if (set != null) {
def = set.contains(key); if (set.contains(key)) {
def = true;
} else if (set.contains("-" + key)) {
def = false;
}
} }
if(def){ if(def){
ii.visibleModes.add(ms); ii.visibleModes.add(ms);
@ -124,8 +157,13 @@ public class MapInfoControls {
boolean def = appDefaultModes.contains(ms); boolean def = appDefaultModes.contains(ms);
Set<String> set = visibleElements.get(ms); Set<String> set = visibleElements.get(ms);
if(set != null) { if(set != null) {
def = set.contains(key); if (set.contains(key)) {
collapse = set.contains("+"+key); def = true;
} else if (set.contains("-" + key)) {
def = false;
} else if(set.contains("+"+key)){
collapse = true;
}
} }
if(def){ if(def){
ii.visibleModes.add(ms); ii.visibleModes.add(ms);
@ -145,45 +183,58 @@ public class MapInfoControls {
} }
private void restoreModes(Set<String> set, Set<MapInfoControlRegInfo> mi, ApplicationMode mode) { private void restoreModes(Set<String> set, Set<MapInfoControlRegInfo> mi, ApplicationMode mode) {
for(MapInfoControlRegInfo m : mi){ for (MapInfoControlRegInfo m : mi) {
if(m.visibleModes.contains(mode)) { if (m.preference == null) {
set.add(m.key) ; if (m.visibleModes.contains(mode)) {
} else if(m.visibleCollapsible != null && m.visibleCollapsible.contains(mode)) { set.add(m.key);
set.add("+"+m.key) ; } else if (m.visibleCollapsible != null && m.visibleCollapsible.contains(mode)) {
} set.add("+" + m.key);
} else {
set.add("-" + m.key);
}
}
} }
} }
public void changeVisibility(MapInfoControlRegInfo m, boolean visible, boolean collapse) { public void changeVisibility(MapInfoControlRegInfo m) {
ApplicationMode mode = settings.APPLICATION_MODE.get(); boolean selecteable = m.selecteable();
if(this.visibleElements.get(mode) == null){ if (selecteable) {
LinkedHashSet<String> set = new LinkedHashSet<String>(); ApplicationMode mode = settings.APPLICATION_MODE.get();
restoreModes(set, left, mode); boolean visible = m.visible(mode);
restoreModes(set, right, mode); boolean collapseEnabled = m.collapseEnabled(mode);
restoreModes(set, top, mode); boolean collapse = m.visibleCollapsed(mode);
this.visibleElements.put(mode, set); if (this.visibleElements.get(mode) == null) {
} LinkedHashSet<String> set = new LinkedHashSet<String>();
this.visibleElements.get(mode).remove(m.key); restoreModes(set, left, mode);
this.visibleElements.get(mode).remove("+" + m.key); restoreModes(set, right, mode);
m.visibleModes.remove(mode); restoreModes(set, top, mode);
if(m.visibleCollapsible != null) { this.visibleElements.put(mode, set);
m.visibleCollapsible.remove(mode); }
} // clear everything
if(visible) { this.visibleElements.get(mode).remove(m.key);
if(collapse && m.visibleCollapsible != null) { this.visibleElements.get(mode).remove("+" + m.key);
m.visibleCollapsible.add(mode); this.visibleElements.get(mode).remove("-" + m.key);
this.visibleElements.get(mode).add("+" + m.key); m.visibleModes.remove(mode);
if (m.visibleCollapsible != null) {
m.visibleCollapsible.remove(mode);
}
if (visible || collapse) {
if (collapseEnabled && !collapse) {
m.visibleCollapsible.add(mode);
this.visibleElements.get(mode).add("+" + m.key);
} else {
this.visibleElements.get(mode).add("-" + m.key);
}
} else { } else {
m.visibleModes.add(mode); m.visibleModes.add(mode);
this.visibleElements.get(mode).add(m.key); this.visibleElements.get(mode).add("" + m.key);
} }
StringBuilder bs = new StringBuilder();
for (String ks : this.visibleElements.get(mode)) {
bs.append(ks).append(";");
}
settings.MAP_INFO_CONTROLS.set(bs.toString());
} }
StringBuilder bs = new StringBuilder();
for(String ks : this.visibleElements.get(mode)){
bs.append(ks).append(";");
}
settings.MAP_INFO_CONTROLS.set(bs.toString());
if(m.stateChangeListener != null) { if(m.stateChangeListener != null) {
m.stateChangeListener.run(); m.stateChangeListener.run();
} }
@ -233,15 +284,19 @@ public class MapInfoControls {
private void resetDefault(ApplicationMode mode, Set<MapInfoControlRegInfo> set ){ private void resetDefault(ApplicationMode mode, Set<MapInfoControlRegInfo> set ){
for(MapInfoControlRegInfo ri : set) { for(MapInfoControlRegInfo ri : set) {
if(ri.visibleCollapsible != null) { if(ri.preference != null) {
ri.visibleCollapsible.remove(mode); ri.preference.resetToDefault();
} } else {
ri.visibleModes.remove(mode); if (ri.visibleCollapsible != null) {
if(ri.defaultCollapsible != null && ri.defaultCollapsible.contains(mode)) { ri.visibleCollapsible.remove(mode);
ri.visibleCollapsible.add(mode); }
} ri.visibleModes.remove(mode);
if(ri.defaultModes.contains(mode)) { if (ri.defaultCollapsible != null && ri.defaultCollapsible.contains(mode)) {
ri.visibleModes.add(mode); ri.visibleCollapsible.add(mode);
}
if (ri.defaultModes.contains(mode)) {
ri.visibleModes.add(mode);
}
} }
} }
} }
@ -251,6 +306,7 @@ public class MapInfoControls {
resetDefault(appMode, left); resetDefault(appMode, left);
resetDefault(appMode, right); resetDefault(appMode, right);
resetDefault(appMode, top); resetDefault(appMode, top);
resetDefault(appMode, appearanceWidgets);
this.visibleElements.put(appMode, null); this.visibleElements.put(appMode, null);
settings.MAP_INFO_CONTROLS.set(""); settings.MAP_INFO_CONTROLS.set("");
} }
@ -267,27 +323,41 @@ public class MapInfoControls {
public View m; public View m;
public int drawable; public int drawable;
public int messageId; public int messageId;
public String message;
private String key; private String key;
private int position; private int position;
private String category;
private EnumSet<ApplicationMode> defaultModes; private EnumSet<ApplicationMode> defaultModes;
private EnumSet<ApplicationMode> defaultCollapsible; private EnumSet<ApplicationMode> defaultCollapsible;
private EnumSet<ApplicationMode> visibleModes; private EnumSet<ApplicationMode> visibleModes;
private EnumSet<ApplicationMode> visibleCollapsible; private EnumSet<ApplicationMode> visibleCollapsible;
private CommonPreference<Boolean> blPreference = null; private OsmandPreference<?> preference = null;
private Runnable stateChangeListener = null; private Runnable stateChangeListener = null;
public int priorityOrder; public int priorityOrder;
public boolean visibleCollapsed(ApplicationMode mode){ public boolean visibleCollapsed(ApplicationMode mode){
return blPreference == null && visibleCollapsible != null && visibleCollapsible.contains(mode); return preference == null && visibleCollapsible != null && visibleCollapsible.contains(mode);
} }
public boolean collapseEnabled(ApplicationMode mode){ public boolean collapseEnabled(ApplicationMode mode){
return visibleCollapsible != null && blPreference == null; return visibleCollapsible != null && preference == null;
}
public String getCategory() {
return category;
}
public boolean selecteable(){
return preference == null || (preference.get() instanceof Boolean);
} }
public boolean visible(ApplicationMode mode){ public boolean visible(ApplicationMode mode){
if(blPreference != null) { if(preference != null) {
return blPreference.getModeValue(mode); Object value = preference.getModeValue(mode);
if(value instanceof Boolean) {
return ((Boolean) value).booleanValue();
}
return true;
} }
return visibleModes.contains(mode); return visibleModes.contains(mode);
} }
@ -300,7 +370,7 @@ public class MapInfoControls {
} }
public void setPreference(CommonPreference<Boolean> blPreference) { public void setPreference(CommonPreference<Boolean> blPreference) {
this.blPreference = blPreference; this.preference = blPreference;
} }

View file

@ -2,19 +2,33 @@ package net.osmand.plus.views;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.LinkedHashSet;
import java.util.Set;
import net.osmand.Algoritms;
import net.osmand.access.AccessibleToast;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.OsmandSettings.CommonPreference;
import net.osmand.plus.activities.ApplicationMode; import net.osmand.plus.activities.ApplicationMode;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.SettingsActivity;
import net.osmand.plus.extrasettings.OsmandExtraSettings;
import net.osmand.plus.routing.RouteDirectionInfo; import net.osmand.plus.routing.RouteDirectionInfo;
import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.views.MapInfoControls.MapInfoControlRegInfo; import net.osmand.plus.views.MapInfoControls.MapInfoControlRegInfo;
import net.osmand.render.RenderingRuleProperty;
import net.osmand.render.RenderingRulesStorage;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.AlertDialog.Builder; import android.app.AlertDialog.Builder;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Paint; import android.graphics.Paint;
@ -34,6 +48,7 @@ import android.view.WindowManager;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ImageView; import android.widget.ImageView;
@ -73,6 +88,8 @@ public class MapInfoLayer extends OsmandMapLayer {
private LockInfoControl lockInfoControl; private LockInfoControl lockInfoControl;
private String ADDITIONAL_VECTOR_RENDERING_CATEGORY;
public MapInfoLayer(MapActivity map, RouteLayer layer){ public MapInfoLayer(MapActivity map, RouteLayer layer){
this.map = map; this.map = map;
this.routeLayer = layer; this.routeLayer = layer;
@ -86,6 +103,7 @@ public class MapInfoLayer extends OsmandMapLayer {
scaleCoefficient *= 1.5f; scaleCoefficient *= 1.5f;
} }
ADDITIONAL_VECTOR_RENDERING_CATEGORY = map.getString(R.string.map_widget_vector_attributes);
paintText = new Paint(); paintText = new Paint();
paintText.setStyle(Style.FILL_AND_STROKE); paintText.setStyle(Style.FILL_AND_STROKE);
paintText.setColor(Color.BLACK); paintText.setColor(Color.BLACK);
@ -232,28 +250,91 @@ public class MapInfoLayer extends OsmandMapLayer {
private void registerAppearanceWidgets() { private void registerAppearanceWidgets() {
final MapInfoControlRegInfo showRuler = mapInfoControls.registerAppearanceWidget(0, R.string.map_widget_show_ruler, final MapInfoControlRegInfo vectorRenderer = mapInfoControls.registerAppearanceWidget(0, R.string.map_widget_renderer,
"showRuler", view.getSettings().SHOW_RULER); "renderer", view.getSettings().RENDERER);
showRuler.setStateChangeListener(new Runnable() { final OsmandApplication app = view.getApplication();
vectorRenderer.setStateChangeListener(new Runnable() {
@Override @Override
public void run() { public void run() {
ApplicationMode am = view.getSettings().getApplicationMode(); Builder bld = new AlertDialog.Builder(view.getContext());
view.getSettings().SHOW_RULER.set(!view.getSettings().SHOW_RULER.get()); bld.setTitle(R.string.renderers);
view.refreshMap(); Collection<String> rendererNames = app.getRendererRegistry().getRendererNames();
final String[] items = rendererNames.toArray(new String[rendererNames.size()]);
bld.setItems(items, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String renderer = items[which];
RenderingRulesStorage loaded = app.getRendererRegistry().getRenderer(renderer);
if (loaded != null) {
view.getSettings().RENDERER.set(renderer);
app.getRendererRegistry().setCurrentSelectedRender(loaded);
app.getResourceManager().getRenderer().clearCache();
view.refreshMap(true);
} else {
AccessibleToast.makeText(app, R.string.renderer_load_exception, Toast.LENGTH_SHORT).show();
}
createCustomRenderingProperties(loaded);
}
});
bld.show();
} }
}); });
final MapInfoControlRegInfo displayViewDirections = mapInfoControls.registerAppearanceWidget(0, R.string.map_widget_view_direction, final MapInfoControlRegInfo displayViewDirections = mapInfoControls.registerAppearanceWidget(0, R.string.map_widget_view_direction,
"viewDirection", view.getSettings().SHOW_VIEW_ANGLE); "viewDirection", view.getSettings().SHOW_VIEW_ANGLE);
displayViewDirections.setStateChangeListener(new Runnable() { displayViewDirections.setStateChangeListener(new Runnable() {
@Override @Override
public void run() { public void run() {
ApplicationMode am = view.getSettings().getApplicationMode();
view.getSettings().SHOW_VIEW_ANGLE.set(!view.getSettings().SHOW_VIEW_ANGLE.get()); view.getSettings().SHOW_VIEW_ANGLE.set(!view.getSettings().SHOW_VIEW_ANGLE.get());
map.updateApplicationModeSettings(); map.updateApplicationModeSettings();
} }
}); });
createCustomRenderingProperties(app.getRendererRegistry().getCurrentSelectedRenderer());
}
private void createCustomRenderingProperties(RenderingRulesStorage renderer) {
String categoryName = ADDITIONAL_VECTOR_RENDERING_CATEGORY;
mapInfoControls.removeApperanceWidgets(categoryName);
final OsmandApplication app = view.getApplication();
for (final RenderingRuleProperty p : renderer.PROPS.getCustomRules()) {
String propertyName = SettingsActivity.getStringPropertyName(view.getContext(), p.getAttrName(), p.getName());
if(p.isBoolean()) {
final CommonPreference<Boolean> pref = view.getApplication().getSettings().getCustomRenderBooleanProperty(p.getAttrName());
MapInfoControlRegInfo w = mapInfoControls.registerAppearanceWidget(0, propertyName, "rend_"+p.getAttrName(), pref, categoryName);
w.setStateChangeListener(new Runnable() {
@Override
public void run() {
pref.set(!pref.get());
app.getResourceManager().getRenderer().clearCache();
view.refreshMap(true);
}
});
} else {
final CommonPreference<String> pref = view.getApplication().getSettings().getCustomRenderProperty(p.getAttrName());
MapInfoControlRegInfo w = mapInfoControls.registerAppearanceWidget(0, propertyName, "rend_"+p.getAttrName(), pref, categoryName);
w.setStateChangeListener(new Runnable() {
@Override
public void run() {
Builder b = new AlertDialog.Builder(view.getContext());
int i = Arrays.asList(p.getPossibleValues()).indexOf(pref.get());
b.setSingleChoiceItems(p.getPossibleValues(), i, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
pref.set(p.getPossibleValues()[which]);
app.getResourceManager().getRenderer().clearCache();
view.refreshMap(true);
dialog.dismiss();
}
});
b.show();
}
});
}
}
} }
@ -336,6 +417,27 @@ public class MapInfoLayer extends OsmandMapLayer {
// update and create controls // update and create controls
recreateControls(); recreateControls();
} }
public Set<String> getSpecificVisibleCategories(Set<MapInfoControlRegInfo> m) {
Set<String> s = new LinkedHashSet<String>();
for(MapInfoControlRegInfo ms : m){
if(ms.getCategory() != null) {
s.add(ms.getCategory());
}
}
if(OsmandPlugin.getEnabledPlugin(OsmandExtraSettings.class) == null){
s.remove(ADDITIONAL_VECTOR_RENDERING_CATEGORY);
}
return s;
}
public void fillAppearanceWidgets(Set<MapInfoControlRegInfo> widgets, String category, ArrayList<Object> registry) {
for(MapInfoControlRegInfo w : widgets ) {
if(Algoritms.objectEquals(w.getCategory(), category)) {
registry.add(w);
}
}
}
public void openViewConfigureDialog() { public void openViewConfigureDialog() {
final OsmandSettings settings = view.getSettings(); final OsmandSettings settings = view.getSettings();
@ -348,8 +450,15 @@ public class MapInfoLayer extends OsmandMapLayer {
list.addAll(mapInfoControls.getRight()); list.addAll(mapInfoControls.getRight());
list.add(map.getString(R.string.map_widget_left_stack)); list.add(map.getString(R.string.map_widget_left_stack));
list.addAll(mapInfoControls.getLeft()); list.addAll(mapInfoControls.getLeft());
Set<MapInfoControlRegInfo> widgets = mapInfoControls.getAppearanceWidgets();
Set<String> cats = getSpecificVisibleCategories(widgets);
list.add(map.getString(R.string.map_widget_appearance)); list.add(map.getString(R.string.map_widget_appearance));
list.addAll(mapInfoControls.getAppearanceWidgets()); fillAppearanceWidgets(widgets, null, list);
for(String cat : cats) {
list.add(cat);
fillAppearanceWidgets(widgets, cat, list);
}
// final LayerMenuListener listener = new LayerMenuListener(adapter, mapView, settings); // final LayerMenuListener listener = new LayerMenuListener(adapter, mapView, settings);
@ -367,8 +476,13 @@ public class MapInfoLayer extends OsmandMapLayer {
Object o = list.get(position); Object o = list.get(position);
if(o instanceof MapInfoControlRegInfo) { if(o instanceof MapInfoControlRegInfo) {
final MapInfoControlRegInfo mi = (MapInfoControlRegInfo) o; final MapInfoControlRegInfo mi = (MapInfoControlRegInfo) o;
String s = mi.visibleCollapsed(mode)? " - " : " "; String s = mi.visibleCollapsed(mode)? " - " : " ";
tv.setText(s +map.getString(mi.messageId) +s); if(mi.message != null) {
tv.setText(s +mi.message +s);
} else {
tv.setText(s +map.getString(mi.messageId) +s);
}
// Put the image on the TextView // Put the image on the TextView
if (mi.drawable != 0) { if (mi.drawable != 0) {
tv.setPadding((int) (12 *scaleCoefficient), 0, 0, 0); tv.setPadding((int) (12 *scaleCoefficient), 0, 0, 0);
@ -377,29 +491,31 @@ public class MapInfoLayer extends OsmandMapLayer {
tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
tv.setPadding((int) (30 *scaleCoefficient), 0, 0, 0); tv.setPadding((int) (30 *scaleCoefficient), 0, 0, 0);
} }
final boolean selecteable = mi.selecteable();
boolean check = mi.visibleCollapsed(mode) || mi.visible(mode);
ch.setOnCheckedChangeListener(null); ch.setOnCheckedChangeListener(null);
ch.setChecked(check); if(!mi.selecteable()) {
ch.setVisibility(View.INVISIBLE);
} else {
boolean check = mi.visibleCollapsed(mode) || mi.visible(mode);
ch.setChecked(check);
ch.setVisibility(View.VISIBLE);
}
ch.setOnCheckedChangeListener(new OnCheckedChangeListener() { ch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(!isChecked) { mapInfoControls.changeVisibility(mi);
if(mi.visible(mode) && mi.collapseEnabled(mode)) { if (selecteable) {
mapInfoControls.changeVisibility(mi, true, true); ch.setChecked(mi.visible(mode) || mi.visibleCollapsed(mode));
ch.setChecked(true);
} else {
mapInfoControls.changeVisibility(mi, false, false);
}
} else {
mapInfoControls.changeVisibility(mi, true, false);
} }
String s = mi.visibleCollapsed(mode) ? " - " : " "; String s = mi.visibleCollapsed(mode) ? " - " : " ";
tv.setText(s + map.getString(mi.messageId) + s); if(mi.message != null) {
tv.setText(s +mi.message +s);
} else {
tv.setText(s +map.getString(mi.messageId) +s);
}
recreateControls(); recreateControls();
} }
}); });
ch.setVisibility(View.VISIBLE);
} else { } else {
tv.setText(o.toString()); tv.setText(o.toString());
tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
@ -417,11 +533,10 @@ public class MapInfoLayer extends OsmandMapLayer {
Object o = list.get(position); Object o = list.get(position);
if (o instanceof MapInfoControlRegInfo) { if (o instanceof MapInfoControlRegInfo) {
final MapInfoControlRegInfo mi = (MapInfoControlRegInfo) o; final MapInfoControlRegInfo mi = (MapInfoControlRegInfo) o;
final boolean selecteable = mi.selecteable();
boolean check = mi.visibleCollapsed(mode) || mi.visible(mode); boolean check = mi.visibleCollapsed(mode) || mi.visible(mode);
if (check) { if (check || selecteable) {
mapInfoControls.changeVisibility(mi, false, false); mapInfoControls.changeVisibility(mi);
} else {
mapInfoControls.changeVisibility(mi, true, false);
} }
recreateControls(); recreateControls();
} else if(o.toString().equals(map.getString(R.string.map_widget_reset))) { } else if(o.toString().equals(map.getString(R.string.map_widget_reset))) {