diff --git a/TODO.1.5 b/TODO.1.5 index b9a6e013a..0339eef46 100644 --- a/TODO.1.5 +++ b/TODO.1.5 @@ -5,7 +5,6 @@ litres: author photos 1.5.*: -* Advanced settings plugin does not run * Autogeneration for ApiMethods & ApiImplementations * Footnotes on the same page * Chinese books (mail from Eric) diff --git a/src/org/geometerplus/android/fbreader/api/ApiServerImplementation.java b/src/org/geometerplus/android/fbreader/api/ApiServerImplementation.java index 78dbfee31..b91d5b4e5 100644 --- a/src/org/geometerplus/android/fbreader/api/ApiServerImplementation.java +++ b/src/org/geometerplus/android/fbreader/api/ApiServerImplementation.java @@ -447,12 +447,11 @@ public class ApiServerImplementation extends ApiInterface.Stub implements Api, A } public boolean isZoneMapCustom(String name) throws ApiException { - // TODO: implement - return false; + return TapZoneMap.zoneMap(name).isCustom(); } public void deleteZoneMap(String name) throws ApiException { - // TODO: implement + TapZoneMap.deleteZoneMap(name); } public String getTapZoneAction(String name, int h, int v, boolean singleTap) { diff --git a/src/org/geometerplus/fbreader/fbreader/TapZoneMap.java b/src/org/geometerplus/fbreader/fbreader/TapZoneMap.java index 9150f6bb6..1b3ded355 100644 --- a/src/org/geometerplus/fbreader/fbreader/TapZoneMap.java +++ b/src/org/geometerplus/fbreader/fbreader/TapZoneMap.java @@ -27,13 +27,15 @@ import org.geometerplus.zlibrary.core.filesystem.ZLFile; import org.geometerplus.zlibrary.core.options.*; public class TapZoneMap { + private static final List ourPredefinedMaps = new LinkedList(); private static final ZLStringListOption ourMapsOption; static { - final List lst = new LinkedList(); // TODO: list files from default/tapzones - lst.add("left_to_right"); - lst.add("up"); - ourMapsOption = new ZLStringListOption("TapZones", "List", lst, "\000"); + ourPredefinedMaps.add("right_to_left"); + ourPredefinedMaps.add("left_to_right"); + ourPredefinedMaps.add("down"); + ourPredefinedMaps.add("up"); + ourMapsOption = new ZLStringListOption("TapZones", "List", ourPredefinedMaps, "\000"); } private static final Map ourMaps = new HashMap(); @@ -64,6 +66,18 @@ public class TapZoneMap { return map; } + public static void deleteZoneMap(String name) { + if (ourPredefinedMaps.contains(name)) { + return; + } + + ourMaps.remove(name); + + final List lst = new LinkedList(ourMapsOption.getValue()); + lst.remove(name); + ourMapsOption.setValue(lst); + } + public static enum Tap { singleTap, singleNotDoubleTap, @@ -88,6 +102,10 @@ public class TapZoneMap { new Reader().readQuietly(mapFile); } + public boolean isCustom() { + return !ourPredefinedMaps.contains(Name); + } + public int getHeight() { return myHeight.getValue(); }