Use dialog fragment to delete answer

pull/157/head
M66B 5 years ago
parent 737eef3cbb
commit ce159b1776

@ -21,7 +21,7 @@ package eu.faircode.email;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.text.Spanned; import android.text.Spanned;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -41,6 +41,8 @@ import androidx.fragment.app.DialogFragment;
import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.bottomnavigation.BottomNavigationView;
import static android.app.Activity.RESULT_OK;
public class FragmentAnswer extends FragmentBase { public class FragmentAnswer extends FragmentBase {
private ViewGroup view; private ViewGroup view;
private EditText etName; private EditText etName;
@ -53,6 +55,8 @@ public class FragmentAnswer extends FragmentBase {
private long id = -1; private long id = -1;
private final static int REQUEST_DELETE = 1;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -143,13 +147,21 @@ public class FragmentAnswer extends FragmentBase {
} }
private void onActionDelete() { private void onActionDelete() {
new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner()) Bundle args = new Bundle();
.setMessage(R.string.title_ask_delete_answer) args.putString("question", getString(R.string.title_ask_delete_answer));
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override FragmentDialogAsk fragment = new FragmentDialogAsk();
public void onClick(DialogInterface dialog, int which) { fragment.setArguments(args);
fragment.setTargetFragment(FragmentAnswer.this, REQUEST_DELETE);
fragment.show(getFragmentManager(), "answer:delete");
}
private void onActionSave() {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putLong("id", id); args.putLong("id", id);
args.putString("name", etName.getText().toString());
args.putBoolean("hide", cbHide.isChecked());
args.putString("text", HtmlHelper.toHtml(etText.getText()));
new SimpleTask<Void>() { new SimpleTask<Void>() {
@Override @Override
@ -165,7 +177,25 @@ public class FragmentAnswer extends FragmentBase {
@Override @Override
protected Void onExecute(Context context, Bundle args) { protected Void onExecute(Context context, Bundle args) {
long id = args.getLong("id"); long id = args.getLong("id");
DB.getInstance(context).answer().deleteAnswer(id); String name = args.getString("name");
boolean hide = args.getBoolean("hide");
String text = args.getString("text");
DB db = DB.getInstance(context);
if (id < 0) {
EntityAnswer answer = new EntityAnswer();
answer.name = name;
answer.hide = hide;
answer.text = text;
answer.id = db.answer().insertAnswer(answer);
} else {
EntityAnswer answer = db.answer().getAnswer(id);
answer.name = name;
answer.hide = hide;
answer.text = text;
db.answer().updateAnswer(answer);
}
return null; return null;
} }
@ -178,19 +208,24 @@ public class FragmentAnswer extends FragmentBase {
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Helper.unexpectedError(getFragmentManager(), ex); Helper.unexpectedError(getFragmentManager(), ex);
} }
}.execute(FragmentAnswer.this, args, "answer:delete"); }.execute(this, args, "answer:save");
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_DELETE:
if (resultCode == RESULT_OK)
onDelete();
break;
} }
})
.setNegativeButton(android.R.string.cancel, null)
.show();
} }
private void onActionSave() { private void onDelete() {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putLong("id", id); args.putLong("id", id);
args.putString("name", etName.getText().toString());
args.putBoolean("hide", cbHide.isChecked());
args.putString("text", HtmlHelper.toHtml(etText.getText()));
new SimpleTask<Void>() { new SimpleTask<Void>() {
@Override @Override
@ -206,25 +241,7 @@ public class FragmentAnswer extends FragmentBase {
@Override @Override
protected Void onExecute(Context context, Bundle args) { protected Void onExecute(Context context, Bundle args) {
long id = args.getLong("id"); long id = args.getLong("id");
String name = args.getString("name"); DB.getInstance(context).answer().deleteAnswer(id);
boolean hide = args.getBoolean("hide");
String text = args.getString("text");
DB db = DB.getInstance(context);
if (id < 0) {
EntityAnswer answer = new EntityAnswer();
answer.name = name;
answer.hide = hide;
answer.text = text;
answer.id = db.answer().insertAnswer(answer);
} else {
EntityAnswer answer = db.answer().getAnswer(id);
answer.name = name;
answer.hide = hide;
answer.text = text;
db.answer().updateAnswer(answer);
}
return null; return null;
} }
@ -237,7 +254,7 @@ public class FragmentAnswer extends FragmentBase {
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Helper.unexpectedError(getFragmentManager(), ex); Helper.unexpectedError(getFragmentManager(), ex);
} }
}.execute(this, args, "answer:save"); }.execute(FragmentAnswer.this, args, "answer:delete");
} }
public static class FragmentInfo extends DialogFragment { public static class FragmentInfo extends DialogFragment {

Loading…
Cancel
Save