diff --git a/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java b/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java
index b237b3366..174543afa 100644
--- a/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java
+++ b/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java
@@ -14,8 +14,10 @@ import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.ComponentName;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.location.Location;
import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.view.View;
import androidx.activity.result.ActivityResultLauncher;
@@ -42,6 +44,7 @@ import com.google.android.material.button.MaterialButton;
import com.google.android.material.checkbox.MaterialCheckBox;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.progressindicator.LinearProgressIndicator;
+import com.google.android.material.textfield.TextInputEditText;
import com.google.android.material.textview.MaterialTextView;
import java.util.List;
import java.util.Objects;
@@ -54,6 +57,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
private MaterialTextView mTvMessage;
private LinearProgressIndicator mProgress;
private MaterialButton mBtnDownload;
+ private MaterialButton mBtnAdvanced;
private MaterialCheckBox mChbDownloadCountry;
private String mCurrentCountry;
@@ -267,6 +271,9 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
mProgress = findViewById(R.id.progressbar);
mBtnDownload = findViewById(R.id.btn_download_resources);
mChbDownloadCountry = findViewById(R.id.chb_download_country);
+ mBtnAdvanced = findViewById(R.id.btn_advanced);
+
+ mBtnAdvanced.setOnClickListener(v -> openCustomServerDialog());
mBtnListeners = new View.OnClickListener[BTN_COUNT];
mBtnNames = new String[BTN_COUNT];
@@ -291,6 +298,11 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
{
mBtnDownload.setOnClickListener(mBtnListeners[action]);
mBtnDownload.setText(mBtnNames[action]);
+
+ // Allow changing server only when idle or after an error.
+ boolean advancedEnabled = (action == DOWNLOAD || action == TRY_AGAIN);
+ mBtnAdvanced.setEnabled(advancedEnabled);
+ mBtnAdvanced.setAlpha(advancedEnabled ? 1f : 0.5f);
}
private void doDownload()
@@ -390,6 +402,39 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
}
}
+ private void openCustomServerDialog()
+ {
+ View dialogView = getLayoutInflater().inflate(R.layout.dialog_custom_map_server, null);
+ TextInputEditText edit = dialogView.findViewById(R.id.edit_custom_map_server);
+
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ String current = prefs.getString(getString(R.string.pref_custom_map_download_url), "");
+ edit.setText(current);
+
+ new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog)
+ .setTitle(R.string.download_resources_custom_url_title)
+ .setMessage(R.string.download_resources_custom_url_message)
+ .setView(dialogView)
+ .setNegativeButton(android.R.string.cancel, null)
+ .setPositiveButton(R.string.save, (dialog, which) -> {
+ String url = "";
+ if (edit.getText() != null)
+ url = edit.getText().toString().trim();
+
+ // Persist for future runs + Settings screen
+ prefs.edit()
+ .putString(getString(R.string.pref_custom_map_download_url), url)
+ .apply();
+
+ // Apply to native + reset meta configs
+ Framework.applyCustomMapDownloadUrl(this, url);
+
+ // Recompute total bytes (it can change with another server)
+ prepareFilesDownload(false);
+ })
+ .show();
+ }
+
private void showErrorDialog(int result)
{
if (mAlertDialog != null && mAlertDialog.isShowing())
diff --git a/android/app/src/main/res/layout/button_with_progress.xml b/android/app/src/main/res/layout/button_with_progress.xml
index 4df8f2b39..8f4029c56 100644
--- a/android/app/src/main/res/layout/button_with_progress.xml
+++ b/android/app/src/main/res/layout/button_with_progress.xml
@@ -6,6 +6,15 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
+
+
+
+
+