Added setup more options

This commit is contained in:
M66B
2022-02-08 12:39:24 +01:00
parent 9836329852
commit 811c543fa2
5 changed files with 143 additions and 15 deletions

View File

@@ -19,6 +19,8 @@ package eu.faircode.email;
Copyright 2018-2022 by Marcel Bokhorst (M66B)
*/
import static android.app.Activity.RESULT_OK;
import android.Manifest;
import android.app.ActivityManager;
import android.app.Dialog;
@@ -110,6 +112,7 @@ public class FragmentSetup extends FragmentBase {
private TextView tvSyncStopped;
private Button btnApp;
private Button btnDelete;
private Group grpInexactAlarms;
private Group grpBackgroundRestricted;
@@ -178,6 +181,7 @@ public class FragmentSetup extends FragmentBase {
tvSyncStopped = view.findViewById(R.id.tvSyncStopped);
btnApp = view.findViewById(R.id.btnApp);
btnDelete = view.findViewById(R.id.btnDelete);
grpInexactAlarms = view.findViewById(R.id.grpInexactAlarms);
grpBackgroundRestricted = view.findViewById(R.id.grpBackgroundRestricted);
@@ -579,6 +583,19 @@ public class FragmentSetup extends FragmentBase {
}
});
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle args = new Bundle();
args.putBoolean("all", true);
FragmentDialogSelectAccount fragment = new FragmentDialogSelectAccount();
fragment.setArguments(args);
fragment.setTargetFragment(FragmentSetup.this, ActivitySetup.REQUEST_DELETE_ACCOUNT);
fragment.show(getParentFragmentManager(), "setup:delete");
}
});
// Initialize
FragmentDialogTheme.setBackground(getContext(), view, false);
@@ -772,6 +789,22 @@ public class FragmentSetup extends FragmentBase {
cardManual.setVisibility(manual ? View.VISIBLE : View.GONE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
switch (requestCode) {
case ActivitySetup.REQUEST_DELETE_ACCOUNT:
if (resultCode == RESULT_OK && data != null)
onDeleteAccount(data.getBundleExtra("args"));
break;
}
} catch (Throwable ex) {
Log.e(ex);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
for (int i = 0; i < permissions.length; i++)
@@ -790,6 +823,48 @@ public class FragmentSetup extends FragmentBase {
btnPermissions.setEnabled(!granted);
}
private void onDeleteAccount(Bundle args) {
long account = args.getLong("account");
String name = args.getString("name");
new AlertDialog.Builder(view.getContext())
.setIcon(R.drawable.twotone_warning_24)
.setTitle(name)
.setMessage(R.string.title_account_delete)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Bundle args = new Bundle();
args.putLong("id", account);
new SimpleTask<Void>() {
@Override
protected Void onExecute(Context context, Bundle args) throws Throwable {
long id = args.getLong("id");
DB db = DB.getInstance(context);
db.account().deleteAccount(id);
return null;
}
@Override
protected void onException(Bundle args, Throwable ex) {
Log.unexpectedError(getParentFragmentManager(), ex);
}
}.execute(FragmentSetup.this, args, "setup:delete");
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Do nothing
}
})
.show();
}
private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {