Add "Remove" button to PlotEditFunctionFragment
This commit is contained in:
parent
c661775772
commit
031feddc1d
@ -1,15 +1,13 @@
|
|||||||
package org.solovyev.android.calculator.entities;
|
package org.solovyev.android.calculator;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.support.annotation.StringRes;
|
import android.support.annotation.StringRes;
|
||||||
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AlertDialog;
|
||||||
import org.solovyev.android.calculator.App;
|
|
||||||
import org.solovyev.android.calculator.R;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public class EntityRemovalDialog {
|
public class RemovalConfirmationDialog {
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
private final Activity activity;
|
private final Activity activity;
|
||||||
@ -20,7 +18,7 @@ public class EntityRemovalDialog {
|
|||||||
@StringRes
|
@StringRes
|
||||||
private final int message;
|
private final int message;
|
||||||
|
|
||||||
private EntityRemovalDialog(@Nonnull Activity activity, @Nonnull String name, @Nonnull DialogInterface.OnClickListener listener, int message) {
|
private RemovalConfirmationDialog(@Nonnull Activity activity, @Nonnull String name, @Nonnull DialogInterface.OnClickListener listener, int message) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
@ -28,11 +26,11 @@ public class EntityRemovalDialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void showForFunction(@Nonnull Activity activity, @Nonnull String name, @Nonnull DialogInterface.OnClickListener listener) {
|
public static void showForFunction(@Nonnull Activity activity, @Nonnull String name, @Nonnull DialogInterface.OnClickListener listener) {
|
||||||
new EntityRemovalDialog(activity, name, listener, R.string.function_removal_confirmation_question).show();
|
new RemovalConfirmationDialog(activity, name, listener, R.string.function_removal_confirmation_question).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void showForVariable(@Nonnull Activity activity, @Nonnull String name, @Nonnull DialogInterface.OnClickListener listener) {
|
public static void showForVariable(@Nonnull Activity activity, @Nonnull String name, @Nonnull DialogInterface.OnClickListener listener) {
|
||||||
new EntityRemovalDialog(activity, name, listener, R.string.c_var_removal_confirmation_question).show();
|
new RemovalConfirmationDialog(activity, name, listener, R.string.c_var_removal_confirmation_question).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void show() {
|
private void show() {
|
@ -38,6 +38,7 @@ import android.view.inputmethod.InputMethodManager;
|
|||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import butterknife.Bind;
|
import butterknife.Bind;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
import org.solovyev.android.Check;
|
||||||
import org.solovyev.android.calculator.*;
|
import org.solovyev.android.calculator.*;
|
||||||
import org.solovyev.android.calculator.keyboard.FloatingKeyboardWindow;
|
import org.solovyev.android.calculator.keyboard.FloatingKeyboardWindow;
|
||||||
import org.solovyev.android.calculator.view.EditTextCompat;
|
import org.solovyev.android.calculator.view.EditTextCompat;
|
||||||
@ -114,6 +115,9 @@ public abstract class BaseFunctionFragment extends BaseDialogFragment implements
|
|||||||
builder.setPositiveButton(R.string.cpp_done, null);
|
builder.setPositiveButton(R.string.cpp_done, null);
|
||||||
builder.setTitle(isNewFunction() ? R.string.function_create_function :
|
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() {
|
protected final boolean isNewFunction() {
|
||||||
@ -205,12 +209,18 @@ public abstract class BaseFunctionFragment extends BaseDialogFragment implements
|
|||||||
case DialogInterface.BUTTON_POSITIVE:
|
case DialogInterface.BUTTON_POSITIVE:
|
||||||
tryClose();
|
tryClose();
|
||||||
break;
|
break;
|
||||||
|
case DialogInterface.BUTTON_NEUTRAL:
|
||||||
|
Check.isNotNull(function);
|
||||||
|
showRemovalDialog(function);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
super.onClick(dialog, which);
|
super.onClick(dialog, which);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected abstract void showRemovalDialog(@NonNull CppFunction function);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
||||||
if (v.getId() == R.id.function_body) {
|
if (v.getId() == R.id.function_body) {
|
||||||
|
@ -7,13 +7,12 @@ import android.os.Bundle;
|
|||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.v4.app.FragmentActivity;
|
import android.support.v4.app.FragmentActivity;
|
||||||
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentManager;
|
||||||
import android.support.v7.app.AlertDialog;
|
|
||||||
import jscl.math.function.Function;
|
import jscl.math.function.Function;
|
||||||
import org.solovyev.android.Check;
|
import org.solovyev.android.Check;
|
||||||
import org.solovyev.android.calculator.App;
|
import org.solovyev.android.calculator.App;
|
||||||
import org.solovyev.android.calculator.Engine;
|
import org.solovyev.android.calculator.Engine;
|
||||||
import org.solovyev.android.calculator.R;
|
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.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@ -54,39 +53,6 @@ public class EditFunctionFragment extends BaseFunctionFragment {
|
|||||||
return fragment;
|
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
|
@Override
|
||||||
protected boolean applyData(@Nonnull @NonNull CppFunction function) {
|
protected boolean applyData(@Nonnull @NonNull CppFunction function) {
|
||||||
try {
|
try {
|
||||||
@ -128,4 +94,16 @@ public class EditFunctionFragment extends BaseFunctionFragment {
|
|||||||
clearError(nameLabel);
|
clearError(nameLabel);
|
||||||
return true;
|
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.R;
|
||||||
import org.solovyev.android.calculator.entities.BaseEntitiesFragment;
|
import org.solovyev.android.calculator.entities.BaseEntitiesFragment;
|
||||||
import org.solovyev.android.calculator.entities.Category;
|
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.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@ -90,7 +90,7 @@ public class FunctionsFragment extends BaseEntitiesFragment<Function> {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case R.string.cpp_delete:
|
case R.string.cpp_delete:
|
||||||
EntityRemovalDialog.showForFunction(getActivity(), function.getName(), new DialogInterface.OnClickListener() {
|
RemovalConfirmationDialog.showForFunction(getActivity(), function.getName(), new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
Check.isTrue(which == DialogInterface.BUTTON_POSITIVE);
|
Check.isTrue(which == DialogInterface.BUTTON_POSITIVE);
|
||||||
|
@ -1,11 +1,6 @@
|
|||||||
package org.solovyev.android.calculator.plot;
|
package org.solovyev.android.calculator.plot;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import org.solovyev.android.plotter.Function;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
|
|
||||||
import jscl.math.Generic;
|
import jscl.math.Generic;
|
||||||
import jscl.math.JsclInteger;
|
import jscl.math.JsclInteger;
|
||||||
import jscl.math.NumericWrapper;
|
import jscl.math.NumericWrapper;
|
||||||
@ -13,6 +8,9 @@ import jscl.math.function.CustomFunction;
|
|||||||
import jscl.math.numeric.Complex;
|
import jscl.math.numeric.Complex;
|
||||||
import jscl.math.numeric.Numeric;
|
import jscl.math.numeric.Numeric;
|
||||||
import jscl.math.numeric.Real;
|
import jscl.math.numeric.Real;
|
||||||
|
import org.solovyev.android.plotter.Function;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public class ExpressionFunction extends Function {
|
public class ExpressionFunction extends Function {
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@ -39,6 +37,9 @@ public class ExpressionFunction extends Function {
|
|||||||
} else {
|
} else {
|
||||||
name = function.toString();
|
name = function.toString();
|
||||||
}
|
}
|
||||||
|
if (name.length() > 10) {
|
||||||
|
name = name.substring(0, 10) + "...";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return imaginary ? "Im(" + name + ")" : name;
|
return imaginary ? "Im(" + name + ")" : name;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package org.solovyev.android.calculator.plot;
|
package org.solovyev.android.calculator.plot;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
@ -11,9 +12,11 @@ import android.widget.SeekBar;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import butterknife.Bind;
|
import butterknife.Bind;
|
||||||
import jscl.math.function.CustomFunction;
|
import jscl.math.function.CustomFunction;
|
||||||
|
import org.solovyev.android.Check;
|
||||||
import org.solovyev.android.calculator.App;
|
import org.solovyev.android.calculator.App;
|
||||||
import org.solovyev.android.calculator.AppComponent;
|
import org.solovyev.android.calculator.AppComponent;
|
||||||
import org.solovyev.android.calculator.R;
|
import org.solovyev.android.calculator.R;
|
||||||
|
import org.solovyev.android.calculator.RemovalConfirmationDialog;
|
||||||
import org.solovyev.android.calculator.functions.BaseFunctionFragment;
|
import org.solovyev.android.calculator.functions.BaseFunctionFragment;
|
||||||
import org.solovyev.android.calculator.functions.CppFunction;
|
import org.solovyev.android.calculator.functions.CppFunction;
|
||||||
import org.solovyev.android.plotter.Color;
|
import org.solovyev.android.plotter.Color;
|
||||||
@ -51,8 +54,7 @@ public class PlotEditFunctionFragment extends BaseFunctionFragment
|
|||||||
super(R.layout.fragment_plot_function_edit);
|
super(R.layout.fragment_plot_function_edit);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void show(@Nullable PlotFunction function, @Nonnull
|
public static void show(@Nullable PlotFunction function, @Nonnull FragmentManager fm) {
|
||||||
FragmentManager fm) {
|
|
||||||
App.showDialog(create(function), "plot-function-editor", fm);
|
App.showDialog(create(function), "plot-function-editor", fm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,4 +186,19 @@ public class PlotEditFunctionFragment extends BaseFunctionFragment
|
|||||||
public void onStopTrackingTouch(SeekBar seekBar) {
|
public void onStopTrackingTouch(SeekBar seekBar) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void showRemovalDialog(@NonNull final CppFunction function) {
|
||||||
|
Check.isNotNull(plotFunction);
|
||||||
|
final String functionName = plotFunction.function.getName();
|
||||||
|
Check.isNotNull(functionName);
|
||||||
|
RemovalConfirmationDialog.showForFunction(getActivity(), functionName,
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
Check.isTrue(which == DialogInterface.BUTTON_POSITIVE);
|
||||||
|
plotter.remove(plotFunction);
|
||||||
|
dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ import dagger.Lazy;
|
|||||||
import jscl.math.function.IConstant;
|
import jscl.math.function.IConstant;
|
||||||
import org.solovyev.android.Check;
|
import org.solovyev.android.Check;
|
||||||
import org.solovyev.android.calculator.*;
|
import org.solovyev.android.calculator.*;
|
||||||
import org.solovyev.android.calculator.entities.EntityRemovalDialog;
|
import org.solovyev.android.calculator.RemovalConfirmationDialog;
|
||||||
import org.solovyev.android.calculator.functions.FunctionsRegistry;
|
import org.solovyev.android.calculator.functions.FunctionsRegistry;
|
||||||
import org.solovyev.android.calculator.keyboard.FloatingKeyboard;
|
import org.solovyev.android.calculator.keyboard.FloatingKeyboard;
|
||||||
import org.solovyev.android.calculator.keyboard.FloatingKeyboardWindow;
|
import org.solovyev.android.calculator.keyboard.FloatingKeyboardWindow;
|
||||||
@ -193,7 +193,7 @@ public class EditVariableFragment extends BaseDialogFragment implements View.OnF
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showRemovalDialog(@NonNull final CppVariable variable) {
|
private void showRemovalDialog(@NonNull final CppVariable variable) {
|
||||||
EntityRemovalDialog.showForVariable(getActivity(), variable.name,
|
RemovalConfirmationDialog.showForVariable(getActivity(), variable.name,
|
||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
@ -34,7 +34,7 @@ import org.solovyev.android.Check;
|
|||||||
import org.solovyev.android.calculator.*;
|
import org.solovyev.android.calculator.*;
|
||||||
import org.solovyev.android.calculator.entities.BaseEntitiesFragment;
|
import org.solovyev.android.calculator.entities.BaseEntitiesFragment;
|
||||||
import org.solovyev.android.calculator.entities.Category;
|
import org.solovyev.android.calculator.entities.Category;
|
||||||
import org.solovyev.android.calculator.entities.EntityRemovalDialog;
|
import org.solovyev.android.calculator.RemovalConfirmationDialog;
|
||||||
import org.solovyev.android.calculator.math.MathType;
|
import org.solovyev.android.calculator.math.MathType;
|
||||||
import org.solovyev.common.JPredicate;
|
import org.solovyev.common.JPredicate;
|
||||||
import org.solovyev.common.collections.Collections;
|
import org.solovyev.common.collections.Collections;
|
||||||
@ -118,7 +118,7 @@ public class VariablesFragment extends BaseEntitiesFragment<IConstant> {
|
|||||||
EditVariableFragment.showDialog(CppVariable.builder(variable).build(), activity);
|
EditVariableFragment.showDialog(CppVariable.builder(variable).build(), activity);
|
||||||
return true;
|
return true;
|
||||||
case R.string.cpp_delete:
|
case R.string.cpp_delete:
|
||||||
EntityRemovalDialog.showForVariable(getActivity(), variable.getName(), new DialogInterface.OnClickListener() {
|
RemovalConfirmationDialog.showForVariable(getActivity(), variable.getName(), new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
Check.isTrue(which == DialogInterface.BUTTON_POSITIVE);
|
Check.isTrue(which == DialogInterface.BUTTON_POSITIVE);
|
||||||
|
Loading…
Reference in New Issue
Block a user