From d910d78e6d491494d00f11547f72ba1cf6c8744e Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 22 Apr 2022 08:42:32 +0200 Subject: [PATCH] Added airplane mode warning --- .../eu/faircode/email/FragmentMessages.java | 33 +++++++++++++++++++ .../main/res/drawable/twotone_flight_24.xml | 10 ++++++ app/src/main/res/layout/fragment_messages.xml | 32 +++++++++++++++++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable/twotone_flight_24.xml diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 04c79fa494..5403f28b94 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -255,6 +255,7 @@ import me.everything.android.ui.overscroll.adapters.RecyclerViewOverScrollDecorA public class FragmentMessages extends FragmentBase implements SharedPreferences.OnSharedPreferenceChangeListener { private ViewGroup view; private SwipeRefreshLayoutEx swipeRefresh; + private TextView tvAirplane; private TextView tvSupport; private ImageButton ibHintSupport; private ImageButton ibHintSwipe; @@ -276,6 +277,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. private TextViewAutoCompleteAction etSearch; private BottomNavigationView bottom_navigation; private ContentLoadingProgressBar pbWait; + private Group grpAirplane; private Group grpSupport; private Group grpHintSupport; private Group grpHintSwipe; @@ -512,6 +514,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. // Get controls swipeRefresh = view.findViewById(R.id.swipeRefresh); + tvAirplane = view.findViewById(R.id.tvAirplane); tvSupport = view.findViewById(R.id.tvSupport); ibHintSupport = view.findViewById(R.id.ibHintSupport); ibHintSwipe = view.findViewById(R.id.ibHintSwipe); @@ -534,6 +537,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. bottom_navigation = view.findViewById(R.id.bottom_navigation); pbWait = view.findViewById(R.id.pbWait); + grpAirplane = view.findViewById(R.id.grpAirplane); grpSupport = view.findViewById(R.id.grpSupport); grpHintSupport = view.findViewById(R.id.grpHintSupport); grpHintSwipe = view.findViewById(R.id.grpHintSwipe); @@ -565,6 +569,16 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. } }); + grpAirplane.setVisibility(View.GONE); + tvAirplane.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(android.provider.Settings.ACTION_AIRPLANE_MODE_SETTINGS) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + v.getContext().startActivity(intent); + } + }); + grpSupport.setVisibility(View.GONE); tvSupport.setOnClickListener(new View.OnClickListener() { @Override @@ -4396,6 +4410,9 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); cm.registerNetworkCallback(builder.build(), networkCallback); + updateAirplaneMode(ConnectionHelper.airplaneMode(getContext())); + getContext().registerReceiver(airplanemode, new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED)); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); boolean compact = prefs.getBoolean("compact", false); int zoom = prefs.getInt("view_zoom", compact ? 0 : 1); @@ -4455,6 +4472,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); prefs.unregisterOnSharedPreferenceChangeListener(this); + getContext().unregisterReceiver(airplanemode); + ConnectivityManager cm = Helper.getSystemService(getContext(), ConnectivityManager.class); cm.unregisterNetworkCallback(networkCallback); @@ -4497,11 +4516,25 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. return; if (!rvMessage.isComputingLayout()) adapter.checkInternet(); + updateAirplaneMode(ConnectionHelper.airplaneMode(getContext())); } }); } }; + private BroadcastReceiver airplanemode = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + boolean on = intent.getBooleanExtra("state", false); + updateAirplaneMode(on); + } + }; + + private void updateAirplaneMode(boolean on) { + on = on && !ConnectionHelper.getNetworkState(getContext()).isConnected(); + grpAirplane.setVisibility(on ? View.VISIBLE : View.GONE); + } + private boolean checkDoze() { if (viewType != AdapterMessage.ViewType.UNIFIED) return false; diff --git a/app/src/main/res/drawable/twotone_flight_24.xml b/app/src/main/res/drawable/twotone_flight_24.xml new file mode 100644 index 0000000000..74ab4a25ab --- /dev/null +++ b/app/src/main/res/drawable/twotone_flight_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_messages.xml b/app/src/main/res/layout/fragment_messages.xml index 6a3ff977d7..54c51564fd 100644 --- a/app/src/main/res/layout/fragment_messages.xml +++ b/app/src/main/res/layout/fragment_messages.xml @@ -16,6 +16,30 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + + app:layout_constraintTop_toBottomOf="@+id/vSeparatorAirplane" /> + + Long press a folder for options, like adding a folder to the navigation menu for quick access To limit battery and network usage not all folders and not all messages will be synchronized by default + Airplane mode is on If you have a question or a problem, please use the support menu to get help Swipe left to trash; Swipe right to archive (if available); The swipe actions can be configured in the account settings Long press a message to start selecting multiple messages; Hold and swipe up or down to select more messages