import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.KeyEvent;
-import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
// Create a variable for the file name string.
String fileNameString;
+ // Get the index of the end of `filename=` from the file name string.
+ int fileNameIndex = contentDisposition.indexOf("filename=") + 9;
+
// Parse the filename from `contentDisposition`.
if (contentDisposition.contains("filename=\"")) { // The file name is contained in a string surrounded by `""`.
fileNameString = contentDisposition.substring(contentDisposition.indexOf("filename=\"") + 10, contentDisposition.indexOf("\"", contentDisposition.indexOf("filename=\"") + 10));
- } else if (contentDisposition.contains("filename=") && ((contentDisposition.indexOf(";", contentDisposition.indexOf("filename=") + 9)) > 0 )) {
+ } else if (contentDisposition.contains("filename=") && ((contentDisposition.indexOf(";", fileNameIndex)) > 0 )) {
// The file name is contained in a string beginning with `filename=` and ending with `;`.
- fileNameString = contentDisposition.substring(contentDisposition.indexOf("filename=") + 9, contentDisposition.indexOf(";", contentDisposition.indexOf("filename=") + 9));
+ fileNameString = contentDisposition.substring(fileNameIndex, contentDisposition.indexOf(";", fileNameIndex));
} else if (contentDisposition.contains("filename=")) { // The file name is contained in a string beginning with `filename=` and proceeding to the end of `contentDisposition`.
- fileNameString = contentDisposition.substring(contentDisposition.indexOf("filename=") + 9);
+ fileNameString = contentDisposition.substring(fileNameIndex);
} else { // `contentDisposition` does not contain the filename, so use the last path segment of the URL.
Uri downloadUri = Uri.parse(urlString);
fileNameString = downloadUri.getLastPathSegment();
fileSize = String.format(Locale.getDefault(), "%.3g", (float) fileSizeLong / 1048576) + " MB";
}
- // Remove the warning below that `getActivity()` might be null;
- assert getActivity() != null;
-
- // Get the activity's layout inflater.
- LayoutInflater layoutInflater = getActivity().getLayoutInflater();
-
- // Use an alert dialog builder to create the alert dialog.
- AlertDialog.Builder dialogBuilder;
-
// Get a handle for the shared preferences.
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false);
boolean darkTheme = sharedPreferences.getBoolean("dark_theme", false);
+ // Use an alert dialog builder to create the alert dialog.
+ AlertDialog.Builder dialogBuilder;
+
// Set the style according to the theme.
if (darkTheme) {
dialogBuilder = new AlertDialog.Builder(getActivity(), R.style.PrivacyBrowserAlertDialogDark);
// Set the title.
dialogBuilder.setTitle(R.string.save_as);
+ // Set the icon according to the theme.
+ if (darkTheme) {
+ dialogBuilder.setIcon(R.drawable.save_dialog_dark);
+ } else {
+ dialogBuilder.setIcon(R.drawable.save_dialog_light);
+ }
+
+ // Remove the warning below that `getActivity()` might be null;
+ assert getActivity() != null;
+
// Set the view. The parent view is `null` because it will be assigned by `AlertDialog`.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.download_file_dialog, null));
+ dialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.download_file_dialog, null));
// Set an listener on the negative button.
dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {