From 76a6dad91b1b4af409d16c229d962f00b160a0c9 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 2 Sep 2019 11:29:48 +0200 Subject: [PATCH] Moved data saver --- .../java/eu/faircode/email/ActivitySetup.java | 32 ----------------- .../java/eu/faircode/email/FragmentSetup.java | 34 +++++++++++++++++++ app/src/main/res/layout/fragment_setup.xml | 34 +++++++++++++++++-- 3 files changed, 65 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java index 5056551b5a..9cb8a05049 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySetup.java +++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java @@ -31,18 +31,15 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; -import android.content.pm.PackageManager; import android.content.res.AssetFileDescriptor; import android.content.res.Configuration; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.media.Ringtone; import android.media.RingtoneManager; -import android.net.ConnectivityManager; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.provider.Settings; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.MenuItem; @@ -68,7 +65,6 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.google.android.material.snackbar.Snackbar; import com.google.android.material.textfield.TextInputLayout; import org.json.JSONArray; @@ -106,7 +102,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac private ActionBarDrawerToggle drawerToggle; private ConstraintLayout drawerContainer; private RecyclerView rvMenu; - private Snackbar sbDataSaver; private boolean hasAccount; private String password; @@ -252,20 +247,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac adapter.set(menus); - sbDataSaver = Snackbar.make(view, R.string.title_setup_data, Snackbar.LENGTH_INDEFINITE); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - final Intent settings = new Intent( - Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS, - Uri.parse("package:" + BuildConfig.APPLICATION_ID)); - if (settings.resolveActivity(getPackageManager()) != null) - sbDataSaver.setAction(R.string.title_setup_manage, new View.OnClickListener() { - @Override - public void onClick(View view) { - startActivity(settings); - } - }); - } - getSupportFragmentManager().addOnBackStackChangedListener(this); if (getSupportFragmentManager().getFragments().size() == 0) { @@ -320,16 +301,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac iff.addAction(ACTION_EDIT_ACCOUNT); iff.addAction(ACTION_EDIT_IDENTITY); lbm.registerReceiver(receiver, iff); - - // https://developer.android.com/training/basics/network-ops/data-saver.html - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); - if (cm != null) { - int status = cm.getRestrictBackgroundStatus(); - if (status == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED) - sbDataSaver.show(); - } - } } @Override @@ -337,9 +308,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac super.onPause(); LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this); lbm.unregisterReceiver(receiver); - - if (sbDataSaver.isShown()) - sbDataSaver.dismiss(); } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 24b604d0f2..6c478b5a3d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -28,6 +28,8 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; +import android.net.ConnectivityManager; +import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.PowerManager; @@ -73,9 +75,12 @@ public class FragmentSetup extends FragmentBase { private Button btnDoze; private Button btnBattery; + private Button btnDataSaver; + private Button btnInbox; private Group grpWelcome; + private Group grpDataSaver; private int textColorPrimary; private int colorWarning; @@ -117,9 +122,12 @@ public class FragmentSetup extends FragmentBase { btnDoze = view.findViewById(R.id.btnDoze); btnBattery = view.findViewById(R.id.btnBattery); + btnDataSaver = view.findViewById(R.id.btnDataSaver); + btnInbox = view.findViewById(R.id.btnInbox); grpWelcome = view.findViewById(R.id.grpWelcome); + grpDataSaver = view.findViewById(R.id.grpDataSaver); PackageManager pm = getContext().getPackageManager(); final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); @@ -191,6 +199,20 @@ public class FragmentSetup extends FragmentBase { } }); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + final Intent settings = new Intent( + Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS, + Uri.parse("package:" + BuildConfig.APPLICATION_ID)); + + btnDataSaver.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startActivity(settings); + } + }); + btnDataSaver.setEnabled(settings.resolveActivity(pm) != null); + } + btnInbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -219,6 +241,7 @@ public class FragmentSetup extends FragmentBase { boolean welcome = prefs.getBoolean("welcome", true); grpWelcome.setVisibility(welcome ? View.VISIBLE : View.GONE); + grpDataSaver.setVisibility(View.GONE); int[] grantResults = new int[permissions.length]; for (int i = 0; i < permissions.length; i++) @@ -349,6 +372,17 @@ public class FragmentSetup extends FragmentBase { tvDozeDone.setText(ignoring ? R.string.title_setup_done : R.string.title_setup_to_do); tvDozeDone.setTextColor(ignoring ? textColorPrimary : colorWarning); tvDozeDone.setCompoundDrawablesWithIntrinsicBounds(ignoring ? check : null, null, null, null); + + // https://developer.android.com/training/basics/network-ops/data-saver.html + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE); + if (cm != null) { + int status = cm.getRestrictBackgroundStatus(); + grpDataSaver.setVisibility( + status == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED + ? View.VISIBLE : View.GONE); + } + } } @Override diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml index d059a092e0..4f3cce381b 100644 --- a/app/src/main/res/layout/fragment_setup.xml +++ b/app/src/main/res/layout/fragment_setup.xml @@ -451,6 +451,29 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/btnDoze" /> + + +