Layer enabled state #342 improvements
This commit is contained in:
parent
9fff945978
commit
8ab2195500
@ -11,6 +11,7 @@
|
|||||||
- OkHttp external cache [#135](https://github.com/mapsforge/vtm/issues/135)
|
- OkHttp external cache [#135](https://github.com/mapsforge/vtm/issues/135)
|
||||||
- Texture atlas improvements [#301](https://github.com/mapsforge/vtm/pull/301) [#304](https://github.com/mapsforge/vtm/pull/304)
|
- Texture atlas improvements [#301](https://github.com/mapsforge/vtm/pull/301) [#304](https://github.com/mapsforge/vtm/pull/304)
|
||||||
- vtm-ios-example module [#326](https://github.com/mapsforge/vtm/issues/326)
|
- vtm-ios-example module [#326](https://github.com/mapsforge/vtm/issues/326)
|
||||||
|
- Handle layers enabled state [#342](https://github.com/mapsforge/vtm/issues/342)
|
||||||
- Gretty plugin at web modules [#338](https://github.com/mapsforge/vtm/issues/338)
|
- Gretty plugin at web modules [#338](https://github.com/mapsforge/vtm/issues/338)
|
||||||
- Many other minor improvements and bug fixes
|
- Many other minor improvements and bug fixes
|
||||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.8.0)
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.8.0)
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 2013 Hannes Janetzek
|
||||||
* Copyright 2016-2017 devemux86
|
* Copyright 2016-2017 devemux86
|
||||||
|
* Copyright 2017 Longri
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@ -26,7 +28,6 @@ import org.oscim.layers.GroupLayer;
|
|||||||
import org.oscim.layers.Layer;
|
import org.oscim.layers.Layer;
|
||||||
import org.oscim.layers.TileGridLayer;
|
import org.oscim.layers.TileGridLayer;
|
||||||
import org.oscim.layers.tile.buildings.BuildingLayer;
|
import org.oscim.layers.tile.buildings.BuildingLayer;
|
||||||
import org.oscim.map.Layers;
|
|
||||||
import org.oscim.map.Map;
|
import org.oscim.map.Map;
|
||||||
import org.oscim.map.ViewController;
|
import org.oscim.map.ViewController;
|
||||||
import org.oscim.theme.VtmThemes;
|
import org.oscim.theme.VtmThemes;
|
||||||
@ -160,38 +161,6 @@ public class InputHandler implements InputProcessor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean toggleBuildingLayer(Layers layers) {
|
|
||||||
//search building layer
|
|
||||||
for (Layer l : layers) {
|
|
||||||
if (l instanceof BuildingLayer) {
|
|
||||||
l.setEnabled(!l.isEnabled());
|
|
||||||
return true;
|
|
||||||
} else if (l instanceof GroupLayer) {
|
|
||||||
if (toggleBuildingLayer(((GroupLayer) l).layers)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean toggleBuildingLayer(List<Layer> layers) {
|
|
||||||
for (Layer l : layers) {
|
|
||||||
if (l instanceof BuildingLayer) {
|
|
||||||
l.setEnabled(!l.isEnabled());
|
|
||||||
return true;
|
|
||||||
} else if (l instanceof GroupLayer) {
|
|
||||||
if (toggleBuildingLayer(((GroupLayer) l).layers)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean keyUp(int keycode) {
|
public boolean keyUp(int keycode) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
@ -285,4 +254,18 @@ public class InputHandler implements InputProcessor {
|
|||||||
mMap.updateMap(false);
|
mMap.updateMap(false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean toggleBuildingLayer(List<Layer> layers) {
|
||||||
|
for (Layer layer : layers) {
|
||||||
|
if (layer instanceof BuildingLayer) {
|
||||||
|
layer.setEnabled(!layer.isEnabled());
|
||||||
|
return true;
|
||||||
|
} else if (layer instanceof GroupLayer) {
|
||||||
|
if (toggleBuildingLayer(((GroupLayer) layer).layers)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016 devemux86
|
* Copyright 2016-2017 devemux86
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
@ -39,4 +39,11 @@ public class GroupLayer extends Layer {
|
|||||||
layer.onDetach();
|
layer.onDetach();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setEnableHandler(EnableHandler handler) {
|
||||||
|
for (Layer layer : layers) {
|
||||||
|
layer.setEnableHandler(handler);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
|
* Copyright 2017 Longri
|
||||||
|
* Copyright 2017 devemux86
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@ -21,17 +23,13 @@ import org.oscim.renderer.LayerRenderer;
|
|||||||
|
|
||||||
public abstract class Layer {
|
public abstract class Layer {
|
||||||
|
|
||||||
public interface EnableChangeHandler{
|
|
||||||
void changed(boolean enabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Layer(Map map) {
|
public Layer(Map map) {
|
||||||
mMap = map;
|
mMap = map;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean mEnabled = true;
|
private boolean mEnabled = true;
|
||||||
|
private EnableHandler mHandler;
|
||||||
protected final Map mMap;
|
protected final Map mMap;
|
||||||
private EnableChangeHandler handler;
|
|
||||||
|
|
||||||
protected LayerRenderer mRenderer;
|
protected LayerRenderer mRenderer;
|
||||||
|
|
||||||
@ -48,19 +46,16 @@ public abstract class Layer {
|
|||||||
public void setEnabled(boolean enabled) {
|
public void setEnabled(boolean enabled) {
|
||||||
boolean changed = mEnabled != enabled;
|
boolean changed = mEnabled != enabled;
|
||||||
mEnabled = enabled;
|
mEnabled = enabled;
|
||||||
if (changed && this.handler != null) this.handler.changed(mEnabled);
|
if (mHandler != null && changed)
|
||||||
|
mHandler.changed(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEnabled() {
|
public boolean isEnabled() {
|
||||||
return mEnabled;
|
return mEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setChangeHandler(EnableChangeHandler handler) {
|
public void setEnableHandler(EnableHandler handler) {
|
||||||
this.handler = handler;
|
mHandler = handler;
|
||||||
}
|
|
||||||
|
|
||||||
public void removeEnabledChangeHandler() {
|
|
||||||
this.handler = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,4 +67,8 @@ public abstract class Layer {
|
|||||||
public Map map() {
|
public Map map() {
|
||||||
return mMap;
|
return mMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface EnableHandler {
|
||||||
|
void changed(boolean enabled);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 Hannes Janetzek
|
* Copyright 2013 Hannes Janetzek
|
||||||
* Copyright 2016 devemux86
|
* Copyright 2016-2017 devemux86
|
||||||
* Copyright 2016 Andrey Novikov
|
* Copyright 2016 Andrey Novikov
|
||||||
|
* Copyright 2017 Longri
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@ -36,6 +37,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
|||||||
public final class Layers extends AbstractList<Layer> {
|
public final class Layers extends AbstractList<Layer> {
|
||||||
|
|
||||||
private final Map mMap;
|
private final Map mMap;
|
||||||
|
private final Layer.EnableHandler mEnableHandler;
|
||||||
|
|
||||||
private final List<Layer> mLayerList = new CopyOnWriteArrayList<>();
|
private final List<Layer> mLayerList = new CopyOnWriteArrayList<>();
|
||||||
private final List<Integer> mGroupList = new ArrayList<>();
|
private final List<Integer> mGroupList = new ArrayList<>();
|
||||||
@ -47,8 +49,15 @@ public final class Layers extends AbstractList<Layer> {
|
|||||||
|
|
||||||
Layers(Map map) {
|
Layers(Map map) {
|
||||||
mMap = map;
|
mMap = map;
|
||||||
|
mEnableHandler = new Layer.EnableHandler() {
|
||||||
|
@Override
|
||||||
|
public void changed(boolean enabled) {
|
||||||
|
mDirtyLayers = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized Layer get(int index) {
|
public synchronized Layer get(int index) {
|
||||||
return mLayerList.get(index);
|
return mLayerList.get(index);
|
||||||
@ -81,41 +90,11 @@ public final class Layers extends AbstractList<Layer> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
layer.setChangeHandler(layerEnabledChangeHandler);
|
layer.setEnableHandler(mEnableHandler);
|
||||||
if(layer instanceof GroupLayer){
|
|
||||||
addEnableChangeHandlerToGroupLayer((GroupLayer) layer);
|
|
||||||
}
|
|
||||||
mLayerList.add(index, layer);
|
mLayerList.add(index, layer);
|
||||||
mDirtyLayers = true;
|
mDirtyLayers = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addEnableChangeHandlerToGroupLayer(GroupLayer gl){
|
|
||||||
for (Layer l: gl.layers){
|
|
||||||
if(l instanceof GroupLayer){
|
|
||||||
addEnableChangeHandlerToGroupLayer((GroupLayer)l);
|
|
||||||
}else{
|
|
||||||
l.setChangeHandler(layerEnabledChangeHandler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void removeEnableChangeHandlerToGroupLayer(GroupLayer gl){
|
|
||||||
for (Layer l: gl.layers){
|
|
||||||
if(l instanceof GroupLayer){
|
|
||||||
removeEnableChangeHandlerToGroupLayer((GroupLayer)l);
|
|
||||||
}else{
|
|
||||||
l.removeEnabledChangeHandler();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Layer.EnableChangeHandler layerEnabledChangeHandler = new Layer.EnableChangeHandler() {
|
|
||||||
@Override
|
|
||||||
public void changed(boolean enabled) {
|
|
||||||
mDirtyLayers = true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add using layer groups.
|
* Add using layer groups.
|
||||||
*/
|
*/
|
||||||
@ -145,7 +124,6 @@ public final class Layers extends AbstractList<Layer> {
|
|||||||
Layer remove = mLayerList.remove(index);
|
Layer remove = mLayerList.remove(index);
|
||||||
|
|
||||||
// unbind removed layer
|
// unbind removed layer
|
||||||
remove.removeEnabledChangeHandler();
|
|
||||||
if (remove instanceof UpdateListener)
|
if (remove instanceof UpdateListener)
|
||||||
mMap.events.unbind((UpdateListener) remove);
|
mMap.events.unbind((UpdateListener) remove);
|
||||||
if (remove instanceof InputListener)
|
if (remove instanceof InputListener)
|
||||||
@ -160,7 +138,6 @@ public final class Layers extends AbstractList<Layer> {
|
|||||||
if (gl instanceof InputListener)
|
if (gl instanceof InputListener)
|
||||||
mMap.input.unbind((InputListener) gl);
|
mMap.input.unbind((InputListener) gl);
|
||||||
}
|
}
|
||||||
removeEnableChangeHandlerToGroupLayer((GroupLayer) remove);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// update layer group pointers
|
// update layer group pointers
|
||||||
@ -170,6 +147,7 @@ public final class Layers extends AbstractList<Layer> {
|
|||||||
mGroupIndex.put(group, pointer - 1);
|
mGroupIndex.put(group, pointer - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remove.setEnableHandler(null);
|
||||||
return remove;
|
return remove;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,6 +176,7 @@ public final class Layers extends AbstractList<Layer> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remove.setEnableHandler(null);
|
||||||
return remove;
|
return remove;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user