From c34e23ef4803371606157bef9d9a3b3aa59881dc Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 23 Oct 2023 08:41:02 +0200 Subject: [PATCH] Added option to launch adjacent portrait/landscape --- .../faircode/email/FragmentOptionsMisc.java | 22 +++++++++---- .../main/java/eu/faircode/email/Helper.java | 21 ++++++------ .../main/res/layout/fragment_options_misc.xml | 33 ++++++++++++++++--- app/src/main/res/values/strings.xml | 2 ++ 4 files changed, 56 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index b0dca3dbe8..4f8f38108d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -248,7 +248,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private SwitchCompat swThreadByRef; private SwitchCompat swMdn; private SwitchCompat swAppChooser; - private SwitchCompat swAdjacent; + private SwitchCompat swAdjacentPortrait; + private SwitchCompat swAdjacentLandscape; private SwitchCompat swDeleteConfirmation; private SwitchCompat swDmarcViewer; private EditText etKeywords; @@ -314,7 +315,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc "exact_alarms", "native_dkim", "native_arc", "native_arc_whitelist", "webp", "easy_correct", "infra", "tld_flags", "dup_msgids", "thread_byref", "mdn", - "app_chooser", "adjacent", "delete_confirmation", "global_keywords", "test_iab" + "app_chooser", "adjacent_portrait", "adjacent_landscape", "delete_confirmation", "global_keywords", "test_iab" }; private final static String[] RESET_QUESTIONS = new String[]{ @@ -511,7 +512,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc swThreadByRef = view.findViewById(R.id.swThreadByRef); swMdn = view.findViewById(R.id.swMdn); swAppChooser = view.findViewById(R.id.swAppChooser); - swAdjacent = view.findViewById(R.id.swAdjacent); + swAdjacentPortrait = view.findViewById(R.id.swAdjacentPortrait); + swAdjacentLandscape = view.findViewById(R.id.swAdjacentLandscape); swDeleteConfirmation = view.findViewById(R.id.swDeleteConfirmation); swDmarcViewer = view.findViewById(R.id.swDmarcViewer); etKeywords = view.findViewById(R.id.etKeywords); @@ -1944,10 +1946,17 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } }); - swAdjacent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + swAdjacentPortrait.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { - prefs.edit().putBoolean("adjacent", checked).apply(); + prefs.edit().putBoolean("adjacent_portrait", checked).apply(); + } + }); + + swAdjacentLandscape.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("adjacent_landscape", checked).apply(); } }); @@ -2733,7 +2742,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc swThreadByRef.setChecked(prefs.getBoolean("thread_byref", true)); swMdn.setChecked(prefs.getBoolean("mdn", swExperiments.isChecked())); swAppChooser.setChecked(prefs.getBoolean("app_chooser", false)); - swAdjacent.setChecked(prefs.getBoolean("adjacent", false)); + swAdjacentPortrait.setChecked(prefs.getBoolean("adjacent_portrait", false)); + swAdjacentLandscape.setChecked(prefs.getBoolean("adjacent_landscape", false)); swDeleteConfirmation.setChecked(prefs.getBoolean("delete_confirmation", true)); swDmarcViewer.setChecked(Helper.isComponentEnabled(getContext(), ActivityDmarc.class)); etKeywords.setText(prefs.getString("global_keywords", null)); diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 9fa9c95d99..6ba4c351de 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -1008,12 +1008,7 @@ public class Helper { intent.setDataAndTypeAndNormalize(uri, type); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - // https://developer.android.com/guide/topics/large-screens/multi-window-support#launch_adjacent - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean adjacent = prefs.getBoolean("adjacent", false); - if (adjacent && - context instanceof ActivityView && - !((ActivityView) context).isSplit()) + if (launchAdjacent(context)) intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK); if (!TextUtils.isEmpty(name)) @@ -1127,11 +1122,7 @@ public class Helper { if (task) view.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - // https://developer.android.com/guide/topics/large-screens/multi-window-support#launch_adjacent - boolean adjacent = prefs.getBoolean("adjacent", false); - if (adjacent && - context instanceof ActivityView && - !((ActivityView) context).isSplit()) + if (launchAdjacent(context)) view.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK); if ("chooser".equals(open_with_pkg) && !open_with_tabs) { @@ -1212,6 +1203,14 @@ public class Helper { } } + private static boolean launchAdjacent(Context context) { + // https://developer.android.com/guide/topics/large-screens/multi-window-support#launch_adjacent + Configuration config = context.getResources().getConfiguration(); + boolean portrait = (config.orientation == Configuration.ORIENTATION_PORTRAIT); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + return prefs.getBoolean("adjacent_" + (portrait ? "portrait" : "landscape"), false); + } + static boolean customTabsWarmup(Context context) { if (context == null) return false; diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml index a7b0362aba..89d9ae2728 100644 --- a/app/src/main/res/layout/fragment_options_misc.xml +++ b/app/src/main/res/layout/fragment_options_misc.xml @@ -2380,16 +2380,39 @@ app:layout_constraintTop_toBottomOf="@id/swMdn" app:switchPadding="12dp" /> - + + + + Process MDNs Use Android app chooser Open side-by-side + Portrait mode + Landscape mode Permanent deletion confirmation If you turn this off, please do not complain if you accidentally delete messages irreversibly DMARC viewer