Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
74ec219475
3 changed files with 36 additions and 104 deletions
|
@ -185,16 +185,10 @@ public abstract class OsmandPlugin {
|
||||||
|
|
||||||
public void registerOptionsMenuItems(MapActivity mapActivity, ContextMenuAdapter helper) {}
|
public void registerOptionsMenuItems(MapActivity mapActivity, ContextMenuAdapter helper) {}
|
||||||
|
|
||||||
public void loadLocalIndexes(List<LocalIndexInfo> result, LoadLocalIndexTask loadTask) {}
|
|
||||||
|
|
||||||
public void updateLocation(Location location) {}
|
public void updateLocation(Location location) {}
|
||||||
|
|
||||||
public void contextMenuLocalIndexes(Activity activity, Fragment fragment, Object info, ContextMenuAdapter adapter) {};
|
public void contextMenuLocalIndexes(Activity activity, Fragment fragment, Object info, ContextMenuAdapter adapter) {};
|
||||||
|
|
||||||
public void updateLocalIndexDescription(LocalIndexInfo info) {}
|
|
||||||
|
|
||||||
public void optionsMenuLocalIndexes(Activity activity, Fragment fragment, ContextMenuAdapter optionsMenuAdapter) {};
|
|
||||||
|
|
||||||
public List<String> indexingFiles(IProgress progress) { return null;}
|
public List<String> indexingFiles(IProgress progress) { return null;}
|
||||||
|
|
||||||
public boolean mapActivityKeyUp(MapActivity mapActivity, int keyCode) {
|
public boolean mapActivityKeyUp(MapActivity mapActivity, int keyCode) {
|
||||||
|
@ -328,17 +322,6 @@ public abstract class OsmandPlugin {
|
||||||
plugin.registerOptionsMenuItems(map, helper);
|
plugin.registerOptionsMenuItems(map, helper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static void onUpdateLocalIndexDescription(LocalIndexInfo info) {
|
|
||||||
for (OsmandPlugin plugin : getEnabledPlugins()) {
|
|
||||||
plugin.updateLocalIndexDescription(info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void onLoadLocalIndexes(List<LocalIndexInfo> result, LoadLocalIndexTask loadTask) {
|
|
||||||
for (OsmandPlugin plugin : getEnabledPlugins()) {
|
|
||||||
plugin.loadLocalIndexes(result, loadTask);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void onContextMenuActivity(Activity activity, Fragment fragment, Object info, ContextMenuAdapter adapter) {
|
public static void onContextMenuActivity(Activity activity, Fragment fragment, Object info, ContextMenuAdapter adapter) {
|
||||||
for (OsmandPlugin plugin : getEnabledPlugins()) {
|
for (OsmandPlugin plugin : getEnabledPlugins()) {
|
||||||
|
|
|
@ -2,26 +2,18 @@ package net.osmand.plus.activities;
|
||||||
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.RandomAccessFile;
|
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.text.MessageFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
import java.util.TreeSet;
|
|
||||||
|
|
||||||
import net.osmand.IndexConstants;
|
import net.osmand.IndexConstants;
|
||||||
import net.osmand.binary.BinaryMapIndexReader;
|
|
||||||
import net.osmand.map.ITileSource;
|
import net.osmand.map.ITileSource;
|
||||||
import net.osmand.map.TileSourceManager;
|
import net.osmand.map.TileSourceManager;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.SQLiteTileSource;
|
import net.osmand.plus.SQLiteTileSource;
|
||||||
import net.osmand.plus.download.LocalIndexesFragment.LoadLocalIndexTask;
|
import net.osmand.plus.download.LocalIndexesFragment.LoadLocalIndexTask;
|
||||||
|
@ -65,22 +57,20 @@ public class LocalIndexHelper {
|
||||||
public void updateDescription(LocalIndexInfo info){
|
public void updateDescription(LocalIndexInfo info){
|
||||||
File f = new File(info.getPathToData());
|
File f = new File(info.getPathToData());
|
||||||
if(info.getType() == LocalIndexType.MAP_DATA){
|
if(info.getType() == LocalIndexType.MAP_DATA){
|
||||||
updateObfFileInformation(info, f);
|
Map<String, String> ifns = app.getResourceManager().getIndexFileNames();
|
||||||
|
if(ifns.containsKey(info.getFileName())) {
|
||||||
|
info.setDescription(ifns.get(info.getFileName()));
|
||||||
|
} else {
|
||||||
|
info.setDescription(getInstalledDate(f));
|
||||||
|
}
|
||||||
} else if(info.getType() == LocalIndexType.VOICE_DATA){
|
} else if(info.getType() == LocalIndexType.VOICE_DATA){
|
||||||
info.setDescription(getInstalledDate(f));
|
info.setDescription(getInstalledDate(f));
|
||||||
} else if(info.getType() == LocalIndexType.TTS_VOICE_DATA){
|
} else if(info.getType() == LocalIndexType.TTS_VOICE_DATA){
|
||||||
info.setDescription(getInstalledDate(f));
|
info.setDescription(getInstalledDate(f));
|
||||||
} else if(info.getType() == LocalIndexType.TILES_DATA){
|
} else if(info.getType() == LocalIndexType.TILES_DATA){
|
||||||
Set<Integer> zooms = new TreeSet<Integer>();
|
|
||||||
ITileSource template ;
|
ITileSource template ;
|
||||||
if(f.isDirectory() && TileSourceManager.isTileSourceMetaInfoExist(f)){
|
if(f.isDirectory() && TileSourceManager.isTileSourceMetaInfoExist(f)){
|
||||||
template = TileSourceManager.createTileSourceTemplate(new File(info.getPathToData()));
|
template = TileSourceManager.createTileSourceTemplate(new File(info.getPathToData()));
|
||||||
for(String s : f.list()){
|
|
||||||
try {
|
|
||||||
zooms.add(Integer.parseInt(s));
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if(f.isFile() && f.getName().endsWith(SQLiteTileSource.EXT)){
|
} else if(f.isFile() && f.getName().endsWith(SQLiteTileSource.EXT)){
|
||||||
template = new SQLiteTileSource(app, f, TileSourceManager.getKnownSourceTemplates());
|
template = new SQLiteTileSource(app, f, TileSourceManager.getKnownSourceTemplates());
|
||||||
} else {
|
} else {
|
||||||
|
@ -91,10 +81,7 @@ public class LocalIndexHelper {
|
||||||
if(template.getExpirationTimeMinutes() >= 0) {
|
if(template.getExpirationTimeMinutes() >= 0) {
|
||||||
descr += "\n" + app.getString(R.string.local_index_tile_data_expire, template.getExpirationTimeMinutes());
|
descr += "\n" + app.getString(R.string.local_index_tile_data_expire, template.getExpirationTimeMinutes());
|
||||||
}
|
}
|
||||||
descr += "\n" + app.getString(R.string.local_index_tile_data_zooms, zooms.toString());
|
|
||||||
info.setDescription(descr);
|
info.setDescription(descr);
|
||||||
} else {
|
|
||||||
OsmandPlugin.onUpdateLocalIndexDescription(info);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +96,6 @@ public class LocalIndexHelper {
|
||||||
loadSrtmData(app.getAppPath(IndexConstants.SRTM_INDEX_DIR), result, loadTask);
|
loadSrtmData(app.getAppPath(IndexConstants.SRTM_INDEX_DIR), result, loadTask);
|
||||||
loadVoiceData(app.getAppPath(IndexConstants.VOICE_INDEX_DIR), result, false, loadTask);
|
loadVoiceData(app.getAppPath(IndexConstants.VOICE_INDEX_DIR), result, false, loadTask);
|
||||||
loadVoiceData(app.getAppPath(IndexConstants.TTSVOICE_INDEX_EXT_ZIP), result, true, loadTask);
|
loadVoiceData(app.getAppPath(IndexConstants.TTSVOICE_INDEX_EXT_ZIP), result, true, loadTask);
|
||||||
OsmandPlugin.onLoadLocalIndexes(result, loadTask);
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -128,6 +114,7 @@ public class LocalIndexHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(info != null){
|
if(info != null){
|
||||||
|
updateDescription(info);
|
||||||
result.add(info);
|
result.add(info);
|
||||||
loadTask.loadFile(info);
|
loadTask.loadFile(info);
|
||||||
}
|
}
|
||||||
|
@ -141,6 +128,7 @@ public class LocalIndexHelper {
|
||||||
for (File tileFile : listFilesSorted(tilesPath)) {
|
for (File tileFile : listFilesSorted(tilesPath)) {
|
||||||
if (tileFile.isFile() && tileFile.getName().endsWith(SQLiteTileSource.EXT)) {
|
if (tileFile.isFile() && tileFile.getName().endsWith(SQLiteTileSource.EXT)) {
|
||||||
LocalIndexInfo info = new LocalIndexInfo(LocalIndexType.TILES_DATA, tileFile, backup);
|
LocalIndexInfo info = new LocalIndexInfo(LocalIndexType.TILES_DATA, tileFile, backup);
|
||||||
|
updateDescription(info);
|
||||||
result.add(info);
|
result.add(info);
|
||||||
loadTask.loadFile(info);
|
loadTask.loadFile(info);
|
||||||
} else if (tileFile.isDirectory()) {
|
} else if (tileFile.isDirectory()) {
|
||||||
|
@ -149,9 +137,9 @@ public class LocalIndexHelper {
|
||||||
if(!TileSourceManager.isTileSourceMetaInfoExist(tileFile)){
|
if(!TileSourceManager.isTileSourceMetaInfoExist(tileFile)){
|
||||||
info.setCorrupted(true);
|
info.setCorrupted(true);
|
||||||
}
|
}
|
||||||
|
updateDescription(info);
|
||||||
result.add(info);
|
result.add(info);
|
||||||
loadTask.loadFile(info);
|
loadTask.loadFile(info);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -172,6 +160,7 @@ public class LocalIndexHelper {
|
||||||
for (File mapFile : listFilesSorted(mapPath)) {
|
for (File mapFile : listFilesSorted(mapPath)) {
|
||||||
if (mapFile.isFile() && mapFile.getName().endsWith(IndexConstants.BINARY_MAP_INDEX_EXT)) {
|
if (mapFile.isFile() && mapFile.getName().endsWith(IndexConstants.BINARY_MAP_INDEX_EXT)) {
|
||||||
LocalIndexInfo info = new LocalIndexInfo(LocalIndexType.SRTM_DATA, mapFile, false);
|
LocalIndexInfo info = new LocalIndexInfo(LocalIndexType.SRTM_DATA, mapFile, false);
|
||||||
|
updateDescription(info);
|
||||||
result.add(info);
|
result.add(info);
|
||||||
loadTask.loadFile(info);
|
loadTask.loadFile(info);
|
||||||
}
|
}
|
||||||
|
@ -188,6 +177,7 @@ public class LocalIndexHelper {
|
||||||
if(loadedMaps.containsKey(mapFile.getName()) && !backup){
|
if(loadedMaps.containsKey(mapFile.getName()) && !backup){
|
||||||
info.setLoaded(true);
|
info.setLoaded(true);
|
||||||
}
|
}
|
||||||
|
updateDescription(info);
|
||||||
result.add(info);
|
result.add(info);
|
||||||
loadTask.loadFile(info);
|
loadTask.loadFile(info);
|
||||||
}
|
}
|
||||||
|
@ -198,24 +188,6 @@ public class LocalIndexHelper {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private MessageFormat format = new MessageFormat("\t {0}, {1} NE \n\t {2}, {3} NE", Locale.US);
|
|
||||||
|
|
||||||
private void updateObfFileInformation(LocalIndexInfo info, File mapFile) {
|
|
||||||
try {
|
|
||||||
RandomAccessFile mf = new RandomAccessFile(mapFile, "r");
|
|
||||||
BinaryMapIndexReader reader = new BinaryMapIndexReader(mf);
|
|
||||||
|
|
||||||
info.setNotSupported(reader.getVersion() != IndexConstants.BINARY_MAP_VERSION);
|
|
||||||
StringBuilder builder = new StringBuilder();
|
|
||||||
builder.append(getInstalledDate(reader.getDateCreated(), null));
|
|
||||||
info.setDescription(builder.toString());
|
|
||||||
reader.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
info.setCorrupted(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public enum LocalIndexType {
|
public enum LocalIndexType {
|
||||||
|
|
|
@ -251,55 +251,32 @@ public class DownloadIndexAdapter extends OsmandBaseExpandableListAdapter implem
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (indexFileNames != null) {
|
if (indexFileNames != null && e.isAlreadyDownloaded(indexFileNames)) {
|
||||||
if (e.isAlreadyDownloaded(indexFileNames)) {
|
if (e.getType() == DownloadActivityType.HILLSHADE_FILE
|
||||||
if (e.getType() == DownloadActivityType.HILLSHADE_FILE
|
|| e.getType() == DownloadActivityType.SRTM_COUNTRY_FILE) {
|
||||||
|| e.getType() == DownloadActivityType.SRTM_COUNTRY_FILE) {
|
String sfName = e.getTargetFileName();
|
||||||
String sfName = e.getTargetFileName();
|
if (indexActivatedFileNames.containsKey(sfName)) {
|
||||||
if (indexActivatedFileNames.containsKey(sfName)) {
|
name.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
|
||||||
name.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
|
// next case since present hillshade files cannot be deactivated, but are not in
|
||||||
// next case since present hillshade files cannot be deactivated, but are not in indexActivatedFileNames
|
// indexActivatedFileNames
|
||||||
} else if (e.getType() == DownloadActivityType.HILLSHADE_FILE) {
|
} else if (e.getType() == DownloadActivityType.HILLSHADE_FILE) {
|
||||||
name.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
|
name.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
|
||||||
} else {
|
} else {
|
||||||
name.setTypeface(Typeface.DEFAULT, Typeface.ITALIC);
|
name.setTypeface(Typeface.DEFAULT, Typeface.ITALIC);
|
||||||
}
|
|
||||||
} else if (e.getDate(format) != null) {
|
|
||||||
String sfName = e.getTargetFileName();
|
|
||||||
|
|
||||||
final boolean updatableResource = indexActivatedFileNames.containsKey(sfName);
|
|
||||||
if (updatableResource && !DownloadActivity.downloadListIndexThread.checkIfItemOutdated(e)) {
|
|
||||||
description.setText(indexActivatedFileNames.get(sfName) + " " + e.getSizeDescription(clctx));
|
|
||||||
//up to date
|
|
||||||
uptodate.setText(downloadFragment.getResources().getString(R.string.local_index_installed) + ": "
|
|
||||||
+ indexActivatedFileNames.get(sfName));
|
|
||||||
uptodate.setVisibility(View.VISIBLE);
|
|
||||||
update.setVisibility(View.GONE);
|
|
||||||
} else if (indexFileNames.containsKey(sfName) && !DownloadActivity.downloadListIndexThread.checkIfItemOutdated(e)) {
|
|
||||||
description.setText(indexFileNames.get(sfName) + " " + e.getSizeDescription(clctx));
|
|
||||||
//up to date
|
|
||||||
uptodate.setText(downloadFragment.getResources().getString(R.string.local_index_installed) + ": "
|
|
||||||
+ indexFileNames.get(sfName));
|
|
||||||
uptodate.setVisibility(View.VISIBLE);
|
|
||||||
update.setVisibility(View.GONE);
|
|
||||||
} else if (updatableResource) {
|
|
||||||
String updatedDescr = indexActivatedFileNames.get(sfName) + " " + e.getSizeDescription(clctx);
|
|
||||||
description.setText(updatedDescr);
|
|
||||||
//needed to be updated
|
|
||||||
update.setText(downloadFragment.getResources().getString(R.string.local_index_installed) + ": "
|
|
||||||
+ e.getDate(format));
|
|
||||||
uptodate.setVisibility(View.GONE);
|
|
||||||
update.setVisibility(View.VISIBLE);
|
|
||||||
} else {
|
|
||||||
description.setText(name.getText() + "\n" + downloadFragment.getResources().getString(R.string.local_index_installed) + ": "
|
|
||||||
+ indexFileNames.get(sfName));
|
|
||||||
//needed to be updated
|
|
||||||
update.setText(downloadFragment.getResources().getString(R.string.local_index_installed) + ": "
|
|
||||||
+ e.getDate(format));
|
|
||||||
uptodate.setVisibility(View.GONE);
|
|
||||||
update.setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
String sfName = e.getTargetFileName();
|
||||||
|
final boolean updatableResource = indexActivatedFileNames.containsKey(sfName);
|
||||||
|
String date = updatableResource ? indexActivatedFileNames.get(sfName) : indexFileNames.get(sfName);
|
||||||
|
boolean outdated = DownloadActivity.downloadListIndexThread.checkIfItemOutdated(e);
|
||||||
|
description.setText(date + " " + e.getSizeDescription(clctx));
|
||||||
|
// up to date
|
||||||
|
String updateDescr = downloadFragment.getResources().getString(R.string.local_index_installed) + ": "
|
||||||
|
+ date;
|
||||||
|
uptodate.setText(updateDescr);
|
||||||
|
update.setText(updateDescr);
|
||||||
|
uptodate.setVisibility(outdated ? View.VISIBLE : View.GONE);
|
||||||
|
update.setVisibility(outdated ? View.GONE : View.VISIBLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return row;
|
return row;
|
||||||
|
|
Loading…
Reference in a new issue