Mapsforge themes compatibility (#388) #100

This commit is contained in:
Longri
2017-08-23 12:22:52 +02:00
committed by Emux
parent f6d2db4c6f
commit b695d43fee
18 changed files with 1565 additions and 20 deletions

View File

@@ -1,6 +1,7 @@
/*
* Copyright 2010, 2011, 2012 mapsforge.org
* Copyright 2016 devemux86
* Copyright 2017 Longri
*
* 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
@@ -17,12 +18,16 @@ package org.oscim.android.filepicker;
import org.oscim.theme.ExternalRenderTheme;
import org.oscim.theme.ThemeFile;
import org.oscim.theme.ThemeUtils;
import org.oscim.theme.XmlMapsforgeThemeBuilder;
import org.oscim.theme.XmlThemeBuilder;
import org.oscim.tiling.TileSource.OpenResult;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import java.io.File;
import java.io.FileInputStream;
import javax.xml.parsers.SAXParserFactory;
@@ -34,9 +39,15 @@ public final class ValidRenderTheme implements ValidFileFilter {
@Override
public boolean accept(File file) {
try {
ThemeFile theme = new ExternalRenderTheme(file.getAbsolutePath());
XmlThemeBuilder renderThemeHandler = new XmlThemeBuilder(theme);
DefaultHandler renderThemeHandler;
if(ThemeUtils.isMapsforgeTheme(new FileInputStream(file))) {
renderThemeHandler = new XmlMapsforgeThemeBuilder(theme);
}else{
renderThemeHandler = new XmlThemeBuilder(theme);
}
XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
xmlReader.setContentHandler(renderThemeHandler);
xmlReader.parse(new InputSource(theme.getRenderThemeAsStream()));