Move all download handling to BInstallerActivity

This commit is contained in:
Manuel Fuhr 2021-10-15 19:10:26 +02:00
parent 7b6fce1481
commit 0eba6cb345
2 changed files with 17 additions and 42 deletions

View file

@ -62,8 +62,11 @@ public class BInstallerActivity extends Activity {
view -> {
if (mBInstallerView.getSelectedTiles(MASK_DELETED_RD5).size() > 0) {
showConfirmDelete();
} else if (mBInstallerView.getSelectedTiles(MASK_SELECTED_RD5).size() > 0) {
downloadSelectedTiles();
} else {
downloadInstalledTiles();
}
mBInstallerView.toggleDownload();
}
);
mDownloadInfo = findViewById(R.id.view_download_progress);
@ -204,6 +207,17 @@ public class BInstallerActivity extends Activity {
scanExistingFiles();
}
private void downloadSelectedTiles() {
ArrayList<Integer> selectedTiles = mBInstallerView.getSelectedTiles(MASK_SELECTED_RD5);
downloadAll(selectedTiles);
mBInstallerView.clearAllTilesStatus(MASK_SELECTED_RD5);
}
private void downloadInstalledTiles() {
ArrayList<Integer> selectedTiles = mBInstallerView.getSelectedTiles(MASK_INSTALLED_RD5);
downloadAll(selectedTiles);
}
private int tileForBaseName(String basename) {
String uname = basename.toUpperCase(Locale.ROOT);
int idx = uname.indexOf("_");
@ -219,7 +233,7 @@ public class BInstallerActivity extends Activity {
return (ilon + 180) / 5 + 72 * ((ilat + 90) / 5);
}
protected String baseNameForTile(int tileIndex) {
private String baseNameForTile(int tileIndex) {
int lon = (tileIndex % 72) * 5 - 180;
int lat = (tileIndex / 72) * 5 - 90;
String slon = lon < 0 ? "W" + (-lon) : "E" + lon;

View file

@ -26,7 +26,6 @@ public class BInstallerView extends View {
public static final int MASK_DELETED_RD5 = 2;
public static final int MASK_INSTALLED_RD5 = 4;
public static final int MASK_CURRENT_RD5 = 8;
private final File baseDir;
private final File segmentDir;
private final Matrix mat;
private final Bitmap bmp;
@ -42,7 +41,6 @@ public class BInstallerView extends View {
Paint pnt_1 = new Paint();
Paint pnt_2 = new Paint();
Paint paint = new Paint();
Activity mActivity;
int btnh = 40;
int btnw = 160;
float tx, ty;
@ -57,7 +55,6 @@ public class BInstallerView extends View {
public BInstallerView(Context context, AttributeSet attrs) {
super(context, attrs);
mActivity = (Activity) context;
DisplayMetrics metrics = new DisplayMetrics();
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);
@ -73,7 +70,7 @@ public class BInstallerView extends View {
imgw = (int) (imgwOrig / scaleOrig);
imgh = (int) (imghOrig / scaleOrig);
baseDir = ConfigHelper.getBaseDir(getContext());
File baseDir = ConfigHelper.getBaseDir(getContext());
segmentDir = new File(baseDir, "brouter/segments4");
try {
@ -133,46 +130,10 @@ public class BInstallerView extends View {
mOnClickListener = listener;
}
protected String baseNameForTile(int tileIndex) {
int lon = (tileIndex % 72) * 5 - 180;
int lat = (tileIndex / 72) * 5 - 90;
String slon = lon < 0 ? "W" + (-lon) : "E" + lon;
String slat = lat < 0 ? "S" + (-lat) : "N" + lat;
return slon + "_" + slat;
}
private int gridPos2Tileindex(int ix, int iy) {
return (35 - iy) * 72 + (ix >= 70 ? ix - 70 : ix + 2);
}
public void toggleDownload() {
int min_size = Integer.MAX_VALUE;
ArrayList<Integer> downloadList = new ArrayList<>();
// prepare download list
for (int ix = 0; ix < 72; ix++) {
for (int iy = 0; iy < 36; iy++) {
int tidx = gridPos2Tileindex(ix, iy);
if ((tileStatus[tidx] & MASK_SELECTED_RD5) != 0) {
int tilesize = BInstallerSizes.getRd5Size(tidx);
downloadList.add(tidx);
if (tilesize > 0 && tilesize < min_size) {
min_size = tilesize;
}
}
}
}
if (downloadList.size() > 0) {
// isDownloading = true;
((BInstallerActivity) getContext()).downloadAll(downloadList);
for (Integer i : downloadList) {
tileStatus[i] ^= tileStatus[i] & MASK_SELECTED_RD5;
}
downloadList.clear();
}
}
private int tileIndex(float x, float y) {
int ix = (int) (72.f * x / bmp.getWidth());
int iy = (int) (36.f * y / bmp.getHeight());