Add "Remove" button to PlotEditFunctionFragment

This commit is contained in:
serso
2016-03-02 07:43:08 +01:00
parent c661775772
commit 031feddc1d
8 changed files with 60 additions and 56 deletions

View File

@@ -38,6 +38,7 @@ import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import butterknife.Bind;
import butterknife.ButterKnife;
import org.solovyev.android.Check;
import org.solovyev.android.calculator.*;
import org.solovyev.android.calculator.keyboard.FloatingKeyboardWindow;
import org.solovyev.android.calculator.view.EditTextCompat;
@@ -113,7 +114,10 @@ public abstract class BaseFunctionFragment extends BaseDialogFragment implements
builder.setNegativeButton(R.string.cpp_cancel, null);
builder.setPositiveButton(R.string.cpp_done, null);
builder.setTitle(isNewFunction() ? R.string.function_create_function :
R.string.function_edit_function);
R.string.function_edit_function);
if (!isNewFunction()) {
builder.setNeutralButton(R.string.cpp_delete, null);
}
}
protected final boolean isNewFunction() {
@@ -205,12 +209,18 @@ public abstract class BaseFunctionFragment extends BaseDialogFragment implements
case DialogInterface.BUTTON_POSITIVE:
tryClose();
break;
case DialogInterface.BUTTON_NEUTRAL:
Check.isNotNull(function);
showRemovalDialog(function);
break;
default:
super.onClick(dialog, which);
break;
}
}
protected abstract void showRemovalDialog(@NonNull CppFunction function);
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (v.getId() == R.id.function_body) {

View File

@@ -7,13 +7,12 @@ import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AlertDialog;
import jscl.math.function.Function;
import org.solovyev.android.Check;
import org.solovyev.android.calculator.App;
import org.solovyev.android.calculator.Engine;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.entities.EntityRemovalDialog;
import org.solovyev.android.calculator.RemovalConfirmationDialog;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -54,39 +53,6 @@ public class EditFunctionFragment extends BaseFunctionFragment {
return fragment;
}
@Override
protected void onPrepareDialog(@NonNull AlertDialog.Builder builder) {
super.onPrepareDialog(builder);
if (!isNewFunction()) {
builder.setNeutralButton(R.string.cpp_delete, null);
}
}
private void showRemovalDialog(@NonNull final CppFunction function) {
EntityRemovalDialog.showForFunction(getActivity(), function.name,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Check.isTrue(which == DialogInterface.BUTTON_POSITIVE);
functionsRegistry.remove(function.toJsclBuilder().create());
dismiss();
}
});
}
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_NEUTRAL:
Check.isNotNull(function);
showRemovalDialog(function);
break;
default:
super.onClick(dialog, which);
break;
}
}
@Override
protected boolean applyData(@Nonnull @NonNull CppFunction function) {
try {
@@ -128,4 +94,16 @@ public class EditFunctionFragment extends BaseFunctionFragment {
clearError(nameLabel);
return true;
}
protected void showRemovalDialog(@NonNull final CppFunction function) {
RemovalConfirmationDialog.showForFunction(getActivity(), function.name,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Check.isTrue(which == DialogInterface.BUTTON_POSITIVE);
functionsRegistry.remove(function.toJsclBuilder().create());
dismiss();
}
});
}
}

View File

@@ -37,7 +37,7 @@ import org.solovyev.android.calculator.Calculator;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.entities.BaseEntitiesFragment;
import org.solovyev.android.calculator.entities.Category;
import org.solovyev.android.calculator.entities.EntityRemovalDialog;
import org.solovyev.android.calculator.RemovalConfirmationDialog;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -90,7 +90,7 @@ public class FunctionsFragment extends BaseEntitiesFragment<Function> {
}
return true;
case R.string.cpp_delete:
EntityRemovalDialog.showForFunction(getActivity(), function.getName(), new DialogInterface.OnClickListener() {
RemovalConfirmationDialog.showForFunction(getActivity(), function.getName(), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Check.isTrue(which == DialogInterface.BUTTON_POSITIVE);