diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java
index a69c9da7e1..d2867b4355 100644
--- a/app/src/main/java/eu/faircode/email/ActivityView.java
+++ b/app/src/main/java/eu/faircode/email/ActivityView.java
@@ -213,11 +213,21 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
Configuration config = getResources().getConfiguration();
boolean portrait2 = prefs.getBoolean("portrait2", false);
boolean portrait2c = prefs.getBoolean("portrait2c", false);
+ int portrait_min_size = prefs.getInt("portrait_min_size", 0);
boolean landscape = prefs.getBoolean("landscape", true);
- Log.i("Orientation=" + config.orientation +
- " portrait rows=" + portrait2 + " cols=" + portrait2c + " landscape cols=" + landscape);
-
- if (config.orientation == ORIENTATION_PORTRAIT && portrait2c)
+ int landscape_min_size = prefs.getInt("landscape_min_size", 0);
+ int layout = (config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK);
+ Log.i("Orientation=" + config.orientation + " layout=" + layout +
+ " portrait rows=" + portrait2 + " cols=" + portrait2c + " min=" + portrait_min_size +
+ " landscape cols=" + landscape + " min=" + landscape);
+
+ // 1=small, 2=normal, 3=large, 4=xlarge
+ if (layout > 0)
+ layout--;
+
+ if (layout < (config.orientation == ORIENTATION_PORTRAIT ? portrait_min_size : landscape_min_size))
+ layoutId = R.layout.activity_view_portrait;
+ else if (config.orientation == ORIENTATION_PORTRAIT && portrait2c)
layoutId = R.layout.activity_view_landscape_split;
else if (config.orientation == ORIENTATION_PORTRAIT || !landscape)
layoutId = (portrait2 ? R.layout.activity_view_portrait_split : R.layout.activity_view_portrait);
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptions.java b/app/src/main/java/eu/faircode/email/FragmentOptions.java
index 265104c3a1..a98d6959f2 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptions.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptions.java
@@ -126,7 +126,8 @@ public class FragmentOptions extends FragmentBase {
"check_authentication", "check_reply_domain", "check_mx", "check_blocklist",
"send_pending",
"startup", "cards", "beige", "tabular_card_bg", "shadow_unread", "shadow_highlight",
- "portrait2", "portrait2c", "landscape", "nav_count", "nav_unseen_drafts", "navbar_colorize",
+ "portrait2", "portrait2c", "portrait_min_size", "landscape", "landscape_min_size",
+ "nav_count", "nav_unseen_drafts", "navbar_colorize",
"indentation", "date", "date_fixed", "date_bold", "threading", "threading_unread",
"highlight_unread", "highlight_color", "color_stripe", "color_stripe_wide",
"avatars", "bimi", "gravatars", "favicons", "generated_icons", "identicons", "circular", "saturation", "brightness", "threshold",
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java
index 9a4e8fd4a9..529da694ec 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java
@@ -70,7 +70,9 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
private SwitchCompat swNavBarColorize;
private SwitchCompat swPortrait2;
private SwitchCompat swPortrait2c;
+ private Spinner spPortraitMinSize;
private SwitchCompat swLandscape;
+ private Spinner spLandscapeMinSize;
private SwitchCompat swNavOptions;
private SwitchCompat swNavMessageCount;
private SwitchCompat swNavUnseenDrafts;
@@ -203,7 +205,9 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
swDateBold = view.findViewById(R.id.swDateBold);
swPortrait2 = view.findViewById(R.id.swPortrait2);
swPortrait2c = view.findViewById(R.id.swPortrait2c);
+ spPortraitMinSize = view.findViewById(R.id.spPortraitMinSize);
swLandscape = view.findViewById(R.id.swLandscape);
+ spLandscapeMinSize = view.findViewById(R.id.spLandscapeMinSize);
swNavOptions = view.findViewById(R.id.swNavOptions);
swNavMessageCount = view.findViewById(R.id.swNavMessageCount);
swNavUnseenDrafts = view.findViewById(R.id.swNavUnseenDrafts);
@@ -404,6 +408,18 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
}
});
+ spPortraitMinSize.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int position, long id) {
+ prefs.edit().putInt("portrait_min_size", position).apply();
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent) {
+ prefs.edit().remove("portrait_min_size").apply();
+ }
+ });
+
swLandscape.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@@ -411,6 +427,18 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
}
});
+ spLandscapeMinSize.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int position, long id) {
+ prefs.edit().putInt("landscape_min_size", position).apply();
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent) {
+ prefs.edit().remove("landscape_min_size").apply();
+ }
+ });
+
swNavOptions.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@@ -1114,7 +1142,9 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
swDateBold.setEnabled(swDate.isChecked() || swDateFixed.isChecked());
swPortrait2.setChecked(prefs.getBoolean("portrait2", false));
swPortrait2c.setChecked(prefs.getBoolean("portrait2c", false) && !swPortrait2.isChecked());
+ spPortraitMinSize.setSelection(prefs.getInt("portrait_min_size", 0));
swLandscape.setChecked(prefs.getBoolean("landscape", true));
+ spLandscapeMinSize.setSelection(prefs.getInt("landscape_min_size", 0));
swNavOptions.setChecked(prefs.getBoolean("nav_options", true));
swNavMessageCount.setChecked(prefs.getBoolean("nav_count", false));
swNavUnseenDrafts.setChecked(prefs.getBoolean("nav_unseen_drafts", false));
diff --git a/app/src/main/res/layout/fragment_options_display.xml b/app/src/main/res/layout/fragment_options_display.xml
index cefad08e1a..66de4da18c 100644
--- a/app/src/main/res/layout/fragment_options_display.xml
+++ b/app/src/main/res/layout/fragment_options_display.xml
@@ -294,6 +294,44 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swPortrait2c" />
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/tvPortraitSplitMinHint" />
+
+
+
+
+
+
Landscape mode
Use two rows
Use two columns
+ Minimum screen size for splitting the screen
Show navigation menu options
Pin navigation menu
Hide navigation menu options?
@@ -746,6 +747,7 @@
Messages are only grouped by date if they are sorted by time
Whether this works depends on the Android version and variant
This will split the screen into parts
+ This is a condition intended for foldable devices
Group messages related to each other
The accent color of the theme will be used for highlighting
There might be a privacy risk
@@ -2144,6 +2146,13 @@
- AES-256
+
+ - Small
+ - Medium
+ - Large
+ - Extra large
+
+
17BA15C1AF55D925F98B99CEA4375D4CDF4C174B
200D0AA43A8ADBC7BB8237023C1553F4753CA7D2
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtFbxEbzL8u5accPGgBw/XdyiSS5BBE6ZQ9ELpKyJ/OQN+kdYniCAOw3lsQ/GuJScy4Y2HobqbBgLL8GLHG+Yu2EHC9dLjA3v2Mc25vvnfn86BsrpQvz1poN2n+roTBdq09FWbtebJ8m0hDBVmtfRi7RhTKIL4No3kodLhksdnucKjcFheubebWKgpmvbmw7NwuELhaZmyhw8WTtnQ4rZPMhjY1JJZgzwNExXgD7zzg4pJPkuQlfkuRkkvBpHpi3C7VDnYjrBlLHngI4wv3wxQBVwJqlvAT9PmX8dOVnTsWWdJdLQBZVWphuqVY54kjBIovN+o8w03WjsV9QiOQq+XwIDAQAB