diff --git a/brouter-routing-app/src/main/java/btools/routingapp/BInstallerActivity.java b/brouter-routing-app/src/main/java/btools/routingapp/BInstallerActivity.java index e14b800..ca09c6b 100644 --- a/brouter-routing-app/src/main/java/btools/routingapp/BInstallerActivity.java +++ b/brouter-routing-app/src/main/java/btools/routingapp/BInstallerActivity.java @@ -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 selectedTiles = mBInstallerView.getSelectedTiles(MASK_SELECTED_RD5); + downloadAll(selectedTiles); + mBInstallerView.clearAllTilesStatus(MASK_SELECTED_RD5); + } + + private void downloadInstalledTiles() { + ArrayList 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; diff --git a/brouter-routing-app/src/main/java/btools/routingapp/BInstallerView.java b/brouter-routing-app/src/main/java/btools/routingapp/BInstallerView.java index e8d82f6..50cd5a3 100644 --- a/brouter-routing-app/src/main/java/btools/routingapp/BInstallerView.java +++ b/brouter-routing-app/src/main/java/btools/routingapp/BInstallerView.java @@ -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 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());