Mapsforge themes compatibility improvements #388 #100

This commit is contained in:
Emux
2017-09-02 18:36:49 +03:00
parent b695d43fee
commit f4f8eb8d1c
20 changed files with 276 additions and 229 deletions

View File

@@ -21,8 +21,8 @@
android:id="@+id/theme_newtron"
android:title="@string/theme_newtron" />
<item
android:id="@+id/theme_load"
android:title="@string/theme_load" />
android:id="@+id/theme_external"
android:title="@string/theme_external" />
</group>
<item

View File

@@ -6,6 +6,7 @@
<string name="theme_osmagray">Osmagray</string>
<string name="theme_tubes">Tubes</string>
<string name="theme_newtron">NewTron</string>
<string name="theme_external">External theme</string>
<string name="ok">OK</string>
<string name="cancel">Cancel</string>
<string name="error">Error</string>
@@ -17,6 +18,5 @@
<string name="style_1">Show nature</string>
<string name="style_2">Hide nature</string>
<string name="menu_gridlayer">Grid</string>
<string name="theme_load">load theme extern</string>
</resources>

View File

@@ -43,11 +43,10 @@ public final class ValidRenderTheme implements ValidFileFilter {
try {
ThemeFile theme = new ExternalRenderTheme(file.getAbsolutePath());
DefaultHandler renderThemeHandler;
if(ThemeUtils.isMapsforgeTheme(new FileInputStream(file))) {
if (ThemeUtils.isMapsforgeTheme(new FileInputStream(file)))
renderThemeHandler = new XmlMapsforgeThemeBuilder(theme);
}else{
else
renderThemeHandler = new XmlThemeBuilder(theme);
}
XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
xmlReader.setContentHandler(renderThemeHandler);
xmlReader.parse(new InputSource(theme.getRenderThemeAsStream()));

View File

@@ -51,6 +51,7 @@ public class MapsforgeMapActivity extends MapActivity {
private TileGridLayer mGridLayer;
private DefaultMapScaleBar mMapScaleBar;
private Menu mMenu;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -85,6 +86,7 @@ public class MapsforgeMapActivity extends MapActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.theme_menu, menu);
mMenu = menu;
return true;
}
@@ -117,8 +119,8 @@ public class MapsforgeMapActivity extends MapActivity {
item.setChecked(true);
return true;
case R.id.theme_load:
startActivityForResult(new Intent(MapsforgeMapActivity.this, ThemeFilePicker.class),
case R.id.theme_external:
startActivityForResult(new Intent(this, ThemeFilePicker.class),
SELECT_THEME_FILE);
return true;
@@ -181,18 +183,13 @@ public class MapsforgeMapActivity extends MapActivity {
}
} else if (requestCode == SELECT_THEME_FILE) {
if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) {
finish();
return;
}
String themePath = intent.getStringExtra(FilePicker.SELECTED_FILE);
ExternalRenderTheme externalRenderTheme = new ExternalRenderTheme(themePath);
try {
mMap.setTheme(externalRenderTheme, true);
} catch (Exception e) {
e.printStackTrace();
}
String file = intent.getStringExtra(FilePicker.SELECTED_FILE);
ExternalRenderTheme externalRenderTheme = new ExternalRenderTheme(file);
mMap.setTheme(externalRenderTheme);
mMenu.findItem(R.id.theme_external).setChecked(true);
}
}