Skip to content

Commit

Permalink
Disable inner RenderingClasses if parent is disabled
Browse files Browse the repository at this point in the history
  • Loading branch information
Chumva committed Feb 26, 2025
1 parent 1e9ff38 commit 9103638
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package net.osmand.render;

import net.osmand.util.Algorithms;

public class RenderingClass {

private final String title;
Expand Down Expand Up @@ -74,6 +76,10 @@ public String getName() {
return name;
}

public String getParentName() {
return Algorithms.getFileNameWithoutExtension(name);
}

@Override
public String toString() {
return name;
Expand Down
26 changes: 17 additions & 9 deletions OsmAnd/src/net/osmand/core/android/MapRendererContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,8 @@
import net.osmand.plus.render.MapRenderRepositories;
import net.osmand.plus.render.RendererRegistry;
import net.osmand.plus.settings.backend.OsmandSettings;
import net.osmand.plus.settings.backend.preferences.CommonPreference;
import net.osmand.plus.utils.NativeUtilities;
import net.osmand.render.RenderingClass;
import net.osmand.render.RenderingRule;
import net.osmand.render.RenderingRuleProperty;
import net.osmand.render.RenderingRuleSearchRequest;
import net.osmand.render.RenderingRuleStorageProperties;
Expand All @@ -46,6 +44,7 @@
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
Expand Down Expand Up @@ -311,13 +310,17 @@ private void loadRenderer(String rendName) {
}
}

@NonNull
protected QStringStringHash getMapStyleSettings() {
// Apply map style settings
OsmandSettings settings = app.getSettings();
RenderingRulesStorage storage = app.getRendererRegistry().getCurrentSelectedRenderer();

Map<String, String> properties = new HashMap<>();
for (RenderingRuleProperty property : storage.PROPS.getCustomRules()) {
List<RenderingRuleProperty> customRules = storage.PROPS.getCustomRules();
Map<String, RenderingClass> renderingClasses = storage.getRenderingClasses();
Map<String, String> properties = new LinkedHashMap<>(customRules.size() + renderingClasses.size());

for (RenderingRuleProperty property : customRules) {
String attrName = property.getAttrName();
if (property.isBoolean()) {
properties.put(attrName, String.valueOf(settings.getRenderBooleanPropertyValue(attrName)));
Expand All @@ -328,13 +331,18 @@ protected QStringStringHash getMapStyleSettings() {
}
}
}
for (Map.Entry<String, RenderingClass> entry : storage.getRenderingClasses().entrySet()) {
Map<String, Boolean> parentsStates = new HashMap<>();
for (Map.Entry<String, RenderingClass> entry : renderingClasses.entrySet()) {
String name = entry.getKey();
RenderingClass renderingClass = entry.getValue();
boolean enabled = settings.getBooleanRenderClassProperty(renderingClass).get();

String name = renderingClass.getName();
boolean enabled = renderingClass.isEnabledByDefault();
CommonPreference<Boolean> preference = settings.getСustomBooleanRenderClassProperty(name, enabled);
properties.put(name, String.valueOf(preference.get()));
String parentName = renderingClass.getParentName();
if (parentName != null && parentsStates.containsKey(parentName) && !parentsStates.get(parentName)) {
enabled = false;
}
properties.put(name, String.valueOf(enabled));
parentsStates.put(name, enabled);
}
QStringStringHash styleSettings = new QStringStringHash();
for (Map.Entry<String, String> setting : properties.entrySet()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

renderingClass = app.getRouteLayersHelper().getSelectedRenderingClass();
preference = settings.getСustomBooleanRenderClassProperty(renderingClass.getName(), renderingClass.isEnabledByDefault());
preference = settings.getBooleanRenderClassProperty(renderingClass);
}

protected void setupHeader(@NonNull View view) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,7 @@ private View createHeaderRow(@NonNull RenderingClass renderingClass) {

@NonNull
private View createItemRow(@NonNull RenderingClass renderingClass, boolean showSubscreen, boolean showDivider) {
CommonPreference<Boolean> pref = settings.getСustomBooleanRenderClassProperty(
renderingClass.getName(), renderingClass.isEnabledByDefault());
CommonPreference<Boolean> pref = settings.getBooleanRenderClassProperty(renderingClass);
boolean enabled = pref.get();

ContextMenuItem item = new ContextMenuItem(renderingClass.getName())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@
import net.osmand.plus.views.mapwidgets.WidgetType;
import net.osmand.plus.views.mapwidgets.WidgetsPanel;
import net.osmand.plus.wikipedia.WikiArticleShowImages;
import net.osmand.render.RenderingClass;
import net.osmand.render.RenderingRuleProperty;
import net.osmand.render.RenderingRulesStorage;
import net.osmand.shared.gpx.ColoringPurpose;
Expand Down Expand Up @@ -3142,7 +3143,11 @@ public CommonPreference<Boolean> getCustomRoutingBooleanProperty(@NonNull String
}

@NonNull
public CommonPreference<Boolean> getСustomBooleanRenderClassProperty(@NonNull String name, boolean defaultValue) {
public CommonPreference<Boolean> getBooleanRenderClassProperty(@NonNull RenderingClass renderingClass) {
return getBooleanRenderClassProperty(renderingClass.getName(), renderingClass.isEnabledByDefault());
}

public CommonPreference<Boolean> getBooleanRenderClassProperty(@NonNull String name, boolean defaultValue) {
if (!customBooleanRenderClassProps.containsKey(name)) {
CommonPreference<Boolean> preference = new BooleanPreference(this, name, defaultValue).makeProfile();
customBooleanRenderClassProps.put(name, preference);
Expand Down

0 comments on commit 9103638

Please sign in to comment.