From 82e7dc3b478d49df95992df81ed28e0114a43052 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 30 Sep 2022 10:46:09 +0200 Subject: [PATCH] Lock orientation --- .../java/eu/faircode/email/FragmentBase.java | 17 +++++++++++ .../eu/faircode/email/FragmentDialogBase.java | 30 ++++++++++++++----- .../email/FragmentDialogInsertLink.java | 6 ++++ .../java/eu/faircode/email/FragmentGmail.java | 2 ++ .../java/eu/faircode/email/FragmentOAuth.java | 2 ++ .../eu/faircode/email/FragmentQuickSetup.java | 2 ++ 6 files changed, 52 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentBase.java b/app/src/main/java/eu/faircode/email/FragmentBase.java index 34c97887bb..3c376d15bd 100644 --- a/app/src/main/java/eu/faircode/email/FragmentBase.java +++ b/app/src/main/java/eu/faircode/email/FragmentBase.java @@ -22,6 +22,7 @@ package eu.faircode.email; import static android.app.ActionBar.DISPLAY_SHOW_CUSTOM; import static android.app.Activity.RESULT_OK; +import android.app.Activity; import android.app.RecoverableSecurityException; import android.content.BroadcastReceiver; import android.content.Context; @@ -30,6 +31,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.IntentSender; import android.content.SharedPreferences; +import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Rect; @@ -85,6 +87,8 @@ public class FragmentBase extends Fragment { private int scrollToResid = 0; private int scrollToOffset = 0; + private Integer orientation = null; + private static final int REQUEST_ATTACHMENT = 51; private static final int REQUEST_ATTACHMENTS = 52; private static final int REQUEST_RECOVERABLE_PERMISSION = 53; @@ -409,9 +413,22 @@ public class FragmentBase extends Fragment { @Override public void onDestroy() { Log.i("Destroy " + this); + if (orientation != null) { + Activity activity = getActivity(); + if (activity != null) + activity.setRequestedOrientation(orientation); + } super.onDestroy(); } + protected void lockOrientation() { + Activity activity = getActivity(); + if (activity != null) { + orientation = activity.getRequestedOrientation(); + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); + } + } + @Override public void setHasOptionsMenu(boolean hasMenu) { super.setHasOptionsMenu(!isPane() && hasMenu); diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogBase.java b/app/src/main/java/eu/faircode/email/FragmentDialogBase.java index 782bcf3f6c..d422c13519 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogBase.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogBase.java @@ -22,8 +22,10 @@ package eu.faircode.email; import static android.app.Activity.RESULT_CANCELED; import static android.app.Activity.RESULT_OK; +import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.ActivityInfo; import android.os.Bundle; import androidx.annotation.NonNull; @@ -42,6 +44,7 @@ public class FragmentDialogBase extends DialogFragment { private LifecycleRegistry registry; private String targetRequestKey; private int targetRequestCode; + private Integer orientation = null; public String getRequestKey() { return Helper.getRequestKey(this); @@ -110,13 +113,6 @@ public class FragmentDialogBase extends DialogFragment { Log.d("Pause " + this); } - @Override - public void onDestroy() { - registry.setCurrentState(Lifecycle.State.DESTROYED); - super.onDestroy(); - Log.i("Destroy " + this); - } - @Override public void onStart() { registry.setCurrentState(Lifecycle.State.STARTED); @@ -135,6 +131,26 @@ public class FragmentDialogBase extends DialogFragment { Log.d("Stop " + this); } + @Override + public void onDestroy() { + registry.setCurrentState(Lifecycle.State.DESTROYED); + if (orientation != null) { + Activity activity = getActivity(); + if (activity != null) + activity.setRequestedOrientation(orientation); + } + super.onDestroy(); + Log.i("Destroy " + this); + } + + protected void lockOrientation() { + Activity activity = getActivity(); + if (activity != null) { + orientation = activity.getRequestedOrientation(); + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); + } + } + @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { String action = (data == null ? null : data.getAction()); diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java b/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java index 55ec850445..07df85dc3f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java @@ -73,6 +73,12 @@ public class FragmentDialogInsertLink extends FragmentDialogBase { private static final int METADATA_READ_TIMEOUT = 15 * 1000; // milliseconds private static final int REQUEST_SEND = 1; + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + lockOrientation(); + } + @Override public void onSaveInstanceState(@NonNull Bundle outState) { outState.putString("fair:link", etLink == null ? null : etLink.getText().toString()); diff --git a/app/src/main/java/eu/faircode/email/FragmentGmail.java b/app/src/main/java/eu/faircode/email/FragmentGmail.java index 54413ecb1b..c40e5ade25 100644 --- a/app/src/main/java/eu/faircode/email/FragmentGmail.java +++ b/app/src/main/java/eu/faircode/email/FragmentGmail.java @@ -106,6 +106,8 @@ public class FragmentGmail extends FragmentBase { pop = args.getBoolean("pop", false); recent = args.getBoolean("recent", false); update = args.getBoolean("update", true); + + lockOrientation(); } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentOAuth.java b/app/src/main/java/eu/faircode/email/FragmentOAuth.java index 2916a48b13..7196521ad9 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOAuth.java +++ b/app/src/main/java/eu/faircode/email/FragmentOAuth.java @@ -153,6 +153,8 @@ public class FragmentOAuth extends FragmentBase { pop = args.getBoolean("pop", false); recent = args.getBoolean("recent", false); update = args.getBoolean("update", true); + + lockOrientation(); } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java index eaf5818bc8..119919e1d7 100644 --- a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java @@ -119,6 +119,8 @@ public class FragmentQuickSetup extends FragmentBase { Bundle args = getArguments(); update = args.getBoolean("update", true); + + lockOrientation(); } @Override