diff --git a/android/app/src/main/java/app/organicmaps/downloader/BottomPanel.java b/android/app/src/main/java/app/organicmaps/downloader/BottomPanel.java index a33bef4bc..c3710c084 100644 --- a/android/app/src/main/java/app/organicmaps/downloader/BottomPanel.java +++ b/android/app/src/main/java/app/organicmaps/downloader/BottomPanel.java @@ -45,6 +45,15 @@ class BottomPanel } }; + private final View.OnClickListener mRetryListener = new View.OnClickListener() + { + @Override + public void onClick(View v) + { + MapManager.warn3gAndRetry(mFragment.requireActivity(), mFragment.getCurrentRoot(), null); + } + }; + BottomPanel(DownloaderFragment fragment, View frame) { mFragment = fragment; @@ -72,6 +81,12 @@ class BottomPanel mButton.setOnClickListener(mDownloadListener); } + private void setRetryFailedStates() + { + mButton.setText(R.string.downloader_retry); + mButton.setOnClickListener(mRetryListener); + } + private void setCancelState() { mButton.setText(R.string.downloader_cancel_all); @@ -101,7 +116,7 @@ class BottomPanel } // Special case for "Countries" node when no maps currently downloaded. case STATUS_DOWNLOADABLE, STATUS_DONE, STATUS_PARTLY -> show = false; case STATUS_PROGRESS, STATUS_APPLYING, STATUS_ENQUEUED -> setCancelState(); - case STATUS_FAILED -> setDownloadAllState(); + case STATUS_FAILED -> setRetryFailedStates(); default -> throw new IllegalArgumentException("Inappropriate status for \"" + root + "\": " + status); } } @@ -119,6 +134,7 @@ class BottomPanel } case STATUS_DONE -> show = false; case STATUS_PROGRESS, STATUS_APPLYING, STATUS_ENQUEUED -> setCancelState(); + case STATUS_FAILED -> setRetryFailedStates(); default -> setDownloadAllState(); } }