|
1 | 1 | /*
|
2 | 2 | * Copyright 2014 Hannes Janetzek
|
3 | 3 | * Copyright 2016-2017 devemux86
|
| 4 | + * Copyright 2017 Longri |
4 | 5 | *
|
5 | 6 | * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
6 | 7 | *
|
|
25 | 26 | import org.oscim.android.filepicker.FilePicker;
|
26 | 27 | import org.oscim.android.filepicker.FilterByFileExtension;
|
27 | 28 | import org.oscim.android.filepicker.ValidMapFile;
|
| 29 | +import org.oscim.android.filepicker.ValidRenderTheme; |
28 | 30 | import org.oscim.core.MapPosition;
|
29 | 31 | import org.oscim.core.Tile;
|
30 | 32 | import org.oscim.layers.TileGridLayer;
|
|
38 | 40 | import org.oscim.scalebar.MapScaleBar;
|
39 | 41 | import org.oscim.scalebar.MapScaleBarLayer;
|
40 | 42 | import org.oscim.scalebar.MetricUnitAdapter;
|
| 43 | +import org.oscim.theme.ExternalRenderTheme; |
41 | 44 | import org.oscim.theme.VtmThemes;
|
42 | 45 | import org.oscim.tiling.source.mapfile.MapFileTileSource;
|
43 | 46 | import org.oscim.tiling.source.mapfile.MapInfo;
|
44 | 47 |
|
45 | 48 | public class MapsforgeMapActivity extends MapActivity {
|
46 | 49 | private static final int SELECT_MAP_FILE = 0;
|
| 50 | + private static final int SELECT_THEME_FILE = 1; |
47 | 51 |
|
48 | 52 | private TileGridLayer mGridLayer;
|
49 | 53 | private DefaultMapScaleBar mMapScaleBar;
|
@@ -71,6 +75,13 @@ public MapFilePicker() {
|
71 | 75 | }
|
72 | 76 | }
|
73 | 77 |
|
| 78 | + public static class ThemeFilePicker extends FilePicker { |
| 79 | + public ThemeFilePicker() { |
| 80 | + setFileDisplayFilter(new FilterByFileExtension(".xml")); |
| 81 | + setFileSelectFilter(new ValidRenderTheme()); |
| 82 | + } |
| 83 | + } |
| 84 | + |
74 | 85 | @Override
|
75 | 86 | public boolean onCreateOptionsMenu(Menu menu) {
|
76 | 87 | getMenuInflater().inflate(R.menu.theme_menu, menu);
|
@@ -106,6 +117,11 @@ public boolean onOptionsItemSelected(MenuItem item) {
|
106 | 117 | item.setChecked(true);
|
107 | 118 | return true;
|
108 | 119 |
|
| 120 | + case R.id.theme_load: |
| 121 | + startActivityForResult(new Intent(MapsforgeMapActivity.this, ThemeFilePicker.class), |
| 122 | + SELECT_THEME_FILE); |
| 123 | + return true; |
| 124 | + |
109 | 125 | case R.id.gridlayer:
|
110 | 126 | if (item.isChecked()) {
|
111 | 127 | item.setChecked(false);
|
@@ -163,6 +179,20 @@ protected void onActivityResult(int requestCode, int resultCode, Intent intent)
|
163 | 179 |
|
164 | 180 | mPrefs.clear();
|
165 | 181 | }
|
| 182 | + } else if (requestCode == SELECT_THEME_FILE) { |
| 183 | + if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) { |
| 184 | + finish(); |
| 185 | + return; |
| 186 | + } |
| 187 | + |
| 188 | + String themePath = intent.getStringExtra(FilePicker.SELECTED_FILE); |
| 189 | + |
| 190 | + ExternalRenderTheme externalRenderTheme = new ExternalRenderTheme(themePath); |
| 191 | + try { |
| 192 | + mMap.setTheme(externalRenderTheme, true); |
| 193 | + } catch (Exception e) { |
| 194 | + e.printStackTrace(); |
| 195 | + } |
166 | 196 | }
|
167 | 197 | }
|
168 | 198 |
|
|
0 commit comments