- // Create a default file name string.
- String defaultFileName = "";
-
- // Set the default file name according to the type.
- switch (saveType) {
- case StoragePermissionDialog.SAVE_ARCHIVE:
- defaultFileName = getString(R.string.webpage_mht);
- break;
-
- case StoragePermissionDialog.SAVE_IMAGE:
- defaultFileName = getString(R.string.webpage_png);
- break;
- }
-
- // Create a string for the default file path.
- String defaultFilePath;
-
- // Set the default file path according to the storage permission state.
- if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { // The storage permission has been granted.
- // Set the default file path to use the external public directory.
- defaultFilePath = Environment.getExternalStorageDirectory() + "/" + defaultFileName;
- } else { // The storage permission has not been granted.
- // Set the default file path to use the external private directory.
- defaultFilePath = context.getExternalFilesDir(null) + "/" + defaultFileName;
+ // Remove the incorrect warnings that the views might be null.
+ assert urlTextInputLayout != null;
+ assert urlEditText != null;
+ assert fileNameEditText != null;
+ assert browseButton != null;
+ assert fileSizeTextView != null;
+ assert fileExistsWarningTextView != null;
+ assert storagePermissionTextView != null;
+
+ // Set the file size text view.
+ fileSizeTextView.setText(fileSizeString);
+
+ // Modify the layout based on the save type.
+ if (saveType == StoragePermissionDialog.SAVE_URL) { // A URL is being saved.
+ // Populate the URL edit text. This must be done before the text change listener is created below so that the file size isn't requested again.
+ urlEditText.setText(urlString);
+
+ // Update the file size and the status of the save button when the URL changes.
+ urlEditText.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+ // Do nothing.
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+ // Do nothing.
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+ // Cancel the get URL size AsyncTask if it is running.
+ if ((getUrlSize != null)) {
+ getUrlSize.cancel(true);
+ }
+
+ // Get the current URL to save.
+ String urlToSave = urlEditText.getText().toString();
+
+ // Wipe the file size text view.
+ fileSizeTextView.setText("");
+
+ // Get the file size for the current URL.
+ getUrlSize = new GetUrlSize(context, alertDialog, userAgentString, cookiesEnabled).execute(urlToSave);
+
+ // Enable the save button if the URL and file name are populated.
+ saveButton.setEnabled(!urlToSave.isEmpty() && !fileNameEditText.getText().toString().isEmpty());
+ }
+ });
+ } else { // An archive or an image is being saved.
+ // Hide the URL edit text and the file size text view.
+ urlTextInputLayout.setVisibility(View.GONE);
+ fileSizeTextView.setVisibility(View.GONE);