ZipXmlThemeResourceProvider: add method to just scan zip for xml themes (#807)

This commit is contained in:
Emux
2021-02-22 14:06:03 +02:00
committed by GitHub
parent 22ed9653ec
commit ddf94ae2ca
3 changed files with 75 additions and 15 deletions

View File

@@ -238,10 +238,9 @@ public class MapsforgeActivity extends MapActivity {
return;
try {
Uri uri = data.getData();
final Uri uri = data.getData();
final ZipXmlThemeResourceProvider resourceProvider = new ZipXmlThemeResourceProvider(new ZipInputStream(new BufferedInputStream(getContentResolver().openInputStream(uri))));
final List<String> xmlThemes = resourceProvider.getXmlThemes();
final List<String> xmlThemes = ZipXmlThemeResourceProvider.scanXmlThemes(new ZipInputStream(new BufferedInputStream(getContentResolver().openInputStream(uri))));
if (xmlThemes.isEmpty())
return;
@@ -250,13 +249,17 @@ public class MapsforgeActivity extends MapActivity {
builder.setSingleChoiceItems(xmlThemes.toArray(new String[0]), -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
ThemeFile theme = new ZipRenderTheme(xmlThemes.get(which), resourceProvider);
if (mTheme != null)
mTheme.dispose();
mTheme = mMap.setTheme(theme);
mapsforgeTheme(mTheme);
mMenu.findItem(R.id.theme_external_archive).setChecked(true);
try {
dialog.dismiss();
ThemeFile theme = new ZipRenderTheme(xmlThemes.get(which), new ZipXmlThemeResourceProvider(new ZipInputStream(new BufferedInputStream(getContentResolver().openInputStream(uri)))));
if (mTheme != null)
mTheme.dispose();
mTheme = mMap.setTheme(theme);
mapsforgeTheme(mTheme);
mMenu.findItem(R.id.theme_external_archive).setChecked(true);
} catch (IOException e) {
e.printStackTrace();
}
}
});
builder.show();