Add "Remove" button to PlotEditFunctionFragment
This commit is contained in:
@@ -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) {
|
||||
|
@@ -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();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user