diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java
index b0aefec3ec..2562cc8131 100644
--- a/app/src/main/java/eu/faircode/email/FragmentSetup.java
+++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java
@@ -50,6 +50,8 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.ScrollView;
import android.widget.TextView;
@@ -72,7 +74,7 @@ import androidx.preference.PreferenceManager;
import java.util.ArrayList;
import java.util.List;
-public class FragmentSetup extends FragmentBase {
+public class FragmentSetup extends FragmentBase implements SharedPreferences.OnSharedPreferenceChangeListener {
private ViewGroup view;
private TextView tvWelcome;
@@ -115,6 +117,7 @@ public class FragmentSetup extends FragmentBase {
private Button btnBackgroundRestricted;
private Button btnDataSaver;
private TextView tvStamina;
+ private CheckBox cbAlways;
private TextView tvBatteryUsage;
private TextView tvSyncStopped;
@@ -148,6 +151,8 @@ public class FragmentSetup extends FragmentBase {
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
setSubtitle(R.string.title_setup);
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
+
if (savedInstanceState != null)
manual = savedInstanceState.getBoolean("fair:manual");
@@ -199,6 +204,7 @@ public class FragmentSetup extends FragmentBase {
btnBackgroundRestricted = view.findViewById(R.id.btnBackgroundRestricted);
btnDataSaver = view.findViewById(R.id.btnDataSaver);
tvStamina = view.findViewById(R.id.tvStamina);
+ cbAlways = view.findViewById(R.id.cbAlways);
tvBatteryUsage = view.findViewById(R.id.tvBatteryUsage);
tvSyncStopped = view.findViewById(R.id.tvSyncStopped);
@@ -255,7 +261,6 @@ public class FragmentSetup extends FragmentBase {
ibWelcome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(view.getContext());
boolean setup_welcome = !prefs.getBoolean("setup_welcome", true);
prefs.edit().putBoolean("setup_welcome", setup_welcome).apply();
updateWelcome();
@@ -587,6 +592,14 @@ public class FragmentSetup extends FragmentBase {
}
});
+ cbAlways.setChecked(ServiceSynchronize.getPollInterval(getContext()) == 0);
+ cbAlways.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton v, boolean isChecked) {
+ prefs.edit().putInt("poll_interval", isChecked ? 0 : EntityAccount.DEFAULT_POLL_INTERVAL).apply();
+ }
+ });
+
tvBatteryUsage.setPaintFlags(tvBatteryUsage.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
tvBatteryUsage.setOnClickListener(new View.OnClickListener() {
@Override
@@ -608,7 +621,6 @@ public class FragmentSetup extends FragmentBase {
ibExtra.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(v.getContext());
boolean setup_extra = !prefs.getBoolean("setup_extra", false);
prefs.edit().putBoolean("setup_extra", setup_extra).apply();
updateExtra();
@@ -779,9 +791,23 @@ public class FragmentSetup extends FragmentBase {
grpDataSaver.setVisibility(View.GONE);
tvStamina.setVisibility(View.GONE);
+ PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this);
+
return view;
}
+ @Override
+ public void onDestroyView() {
+ PreferenceManager.getDefaultSharedPreferences(getContext()).unregisterOnSharedPreferenceChangeListener(this);
+ super.onDestroyView();
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+ if ("poll_interval".equals(key))
+ cbAlways.setChecked(ServiceSynchronize.getPollInterval(getContext()) == 0);
+ }
+
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean("fair:manual", manual);
diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml
index 6ea36eb094..2eee7a8864 100644
--- a/app/src/main/res/layout/fragment_setup.xml
+++ b/app/src/main/res/layout/fragment_setup.xml
@@ -867,6 +867,27 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnDataSaver" />
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/tvAlwaysRemark" />
Background restrictions are enabled
Data saver is enabled
Stamina mode is enabled
+ Instant new message notifications
+ If enabled, unstable connections, old network hardware, etc. may result in higher battery usage
Show advanced options
Go to inbox
Go