mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-06 09:03:56 +02:00
Added option to set target image size
This commit is contained in:
@@ -182,8 +182,8 @@ public class FragmentCompose extends FragmentBase {
|
||||
private boolean encrypt = false;
|
||||
private OpenPgpServiceConnection pgpService;
|
||||
|
||||
private static final int REDUCED_IMAGE_SIZE = 1440; // pixels
|
||||
private static final int REDUCED_IMAGE_QUALITY = 90; // percent
|
||||
static final int REDUCED_IMAGE_SIZE = 1280; // pixels
|
||||
static final int REDUCED_IMAGE_QUALITY = 90; // percent
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
@@ -1534,15 +1534,17 @@ public class FragmentCompose extends FragmentBase {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
boolean autoresize = prefs.getBoolean("autoresize", true);
|
||||
|
||||
if ((image || autoresize) &&
|
||||
if (autoresize &&
|
||||
("image/jpeg".equals(attachment.type) || "image/png".equals(attachment.type))) {
|
||||
BitmapFactory.Options options = new BitmapFactory.Options();
|
||||
options.inJustDecodeBounds = true;
|
||||
BitmapFactory.decodeFile(file.getAbsolutePath(), options);
|
||||
|
||||
int resize = prefs.getInt("resize", REDUCED_IMAGE_SIZE);
|
||||
|
||||
int factor = 1;
|
||||
while (options.outWidth / factor > REDUCED_IMAGE_SIZE ||
|
||||
options.outHeight / factor > REDUCED_IMAGE_SIZE)
|
||||
while (options.outWidth / factor > resize ||
|
||||
options.outHeight / factor > resize)
|
||||
factor *= 2;
|
||||
|
||||
Matrix rotation = ("image/jpeg".equals(attachment.type) ? getImageRotation(file) : null);
|
||||
|
||||
@@ -48,7 +48,6 @@ import android.widget.TimePicker;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -96,6 +95,8 @@ public class FragmentOptions extends FragmentBase implements SharedPreferences.O
|
||||
private SwitchCompat swAutoRead;
|
||||
private SwitchCompat swAutoMove;
|
||||
private SwitchCompat swAutoResize;
|
||||
private Spinner spAutoResize;
|
||||
private TextView tvAutoResize;
|
||||
private SwitchCompat swSender;
|
||||
private SwitchCompat swAutoSend;
|
||||
|
||||
@@ -176,6 +177,8 @@ public class FragmentOptions extends FragmentBase implements SharedPreferences.O
|
||||
swAutoRead = view.findViewById(R.id.swAutoRead);
|
||||
swAutoMove = view.findViewById(R.id.swAutoMove);
|
||||
swAutoResize = view.findViewById(R.id.swAutoResize);
|
||||
spAutoResize = view.findViewById(R.id.spAutoResize);
|
||||
tvAutoResize = view.findViewById(R.id.tvAutoResize);
|
||||
swSender = view.findViewById(R.id.swSender);
|
||||
swAutoSend = view.findViewById(R.id.swAutoSend);
|
||||
|
||||
@@ -297,13 +300,8 @@ public class FragmentOptions extends FragmentBase implements SharedPreferences.O
|
||||
spDownload.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
|
||||
Integer prev = (Integer) adapterView.getTag();
|
||||
if (!Objects.equals(prev, position)) {
|
||||
adapterView.setTag(position);
|
||||
|
||||
int[] values = getResources().getIntArray(R.array.downloadValues);
|
||||
prefs.edit().putInt("download", values[position]).apply();
|
||||
}
|
||||
int[] values = getResources().getIntArray(R.array.downloadValues);
|
||||
prefs.edit().putInt("download", values[position]).apply();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -479,6 +477,21 @@ public class FragmentOptions extends FragmentBase implements SharedPreferences.O
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
prefs.edit().putBoolean("autoresize", checked).apply();
|
||||
spAutoResize.setEnabled(checked);
|
||||
}
|
||||
});
|
||||
|
||||
spAutoResize.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
|
||||
int[] values = getResources().getIntArray(R.array.resizeValues);
|
||||
prefs.edit().putInt("resize", values[position]).apply();
|
||||
tvAutoResize.setText(getString(R.string.title_advanced_resize_pixels, values[position]));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
prefs.edit().remove("resize").apply();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -618,7 +631,6 @@ public class FragmentOptions extends FragmentBase implements SharedPreferences.O
|
||||
int[] downloadValues = getResources().getIntArray(R.array.downloadValues);
|
||||
for (int pos = 0; pos < downloadValues.length; pos++)
|
||||
if (downloadValues[pos] == download) {
|
||||
spDownload.setTag(pos);
|
||||
spDownload.setSelection(pos);
|
||||
break;
|
||||
}
|
||||
@@ -657,6 +669,17 @@ public class FragmentOptions extends FragmentBase implements SharedPreferences.O
|
||||
swAutoRead.setChecked(prefs.getBoolean("autoread", false));
|
||||
swAutoMove.setChecked(!prefs.getBoolean("automove", false));
|
||||
swAutoResize.setChecked(prefs.getBoolean("autoresize", true));
|
||||
|
||||
int resize = prefs.getInt("resize", FragmentCompose.REDUCED_IMAGE_SIZE);
|
||||
int[] resizeValues = getResources().getIntArray(R.array.resizeValues);
|
||||
for (int pos = 0; pos < resizeValues.length; pos++)
|
||||
if (resizeValues[pos] == resize) {
|
||||
spAutoResize.setSelection(pos);
|
||||
tvAutoResize.setText(getString(R.string.title_advanced_resize_pixels, resizeValues[pos]));
|
||||
break;
|
||||
}
|
||||
spAutoResize.setEnabled(swAutoResize.isChecked());
|
||||
|
||||
swSender.setChecked(prefs.getBoolean("sender", false));
|
||||
swAutoSend.setChecked(!prefs.getBoolean("autosend", false));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user