Add E button to EditVariableFragment
This commit is contained in:
parent
858f3f32b2
commit
13e7a5f9fe
@ -22,14 +22,11 @@
|
|||||||
|
|
||||||
package org.solovyev.android.calculator;
|
package org.solovyev.android.calculator;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Build;
|
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
|
|
||||||
import org.solovyev.android.Check;
|
import org.solovyev.android.Check;
|
||||||
import org.solovyev.android.calculator.view.EditTextCompat;
|
import org.solovyev.android.calculator.view.EditTextCompat;
|
||||||
import org.solovyev.android.views.Adjuster;
|
import org.solovyev.android.views.Adjuster;
|
||||||
@ -58,12 +55,6 @@ public class EditorView extends EditTextCompat {
|
|||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
public EditorView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
|
||||||
super(context, attrs, defStyleAttr, defStyleRes);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
if (!App.isFloatingCalculator(getContext())) {
|
if (!App.isFloatingCalculator(getContext())) {
|
||||||
Adjuster.adjustText(this, 0.22f,
|
Adjuster.adjustText(this, 0.22f,
|
||||||
|
@ -34,6 +34,9 @@ import android.support.design.widget.TextInputLayout;
|
|||||||
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 android.support.v7.app.AlertDialog;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.text.InputFilter;
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -45,10 +48,11 @@ import android.widget.PopupWindow;
|
|||||||
import butterknife.Bind;
|
import butterknife.Bind;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import dagger.Lazy;
|
import dagger.Lazy;
|
||||||
|
import jscl.JsclMathEngine;
|
||||||
import jscl.math.function.IConstant;
|
import jscl.math.function.IConstant;
|
||||||
|
import midpcalc.Real;
|
||||||
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.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;
|
||||||
@ -87,6 +91,8 @@ public class EditVariableFragment extends BaseDialogFragment implements View.OnF
|
|||||||
TextInputLayout valueLabel;
|
TextInputLayout valueLabel;
|
||||||
@Bind(R.id.variable_value)
|
@Bind(R.id.variable_value)
|
||||||
EditText valueView;
|
EditText valueView;
|
||||||
|
@Bind(R.id.variable_exponent_button)
|
||||||
|
Button exponentButton;
|
||||||
@Bind(R.id.variable_description)
|
@Bind(R.id.variable_description)
|
||||||
EditText descriptionView;
|
EditText descriptionView;
|
||||||
@Inject
|
@Inject
|
||||||
@ -304,6 +310,13 @@ public class EditVariableFragment extends BaseDialogFragment implements View.OnF
|
|||||||
nameView.setOnFocusChangeListener(this);
|
nameView.setOnFocusChangeListener(this);
|
||||||
nameView.setOnKeyListener(this);
|
nameView.setOnKeyListener(this);
|
||||||
valueView.setOnFocusChangeListener(this);
|
valueView.setOnFocusChangeListener(this);
|
||||||
|
valueView.setEditableFactory(new Editable.Factory() {
|
||||||
|
@Override
|
||||||
|
public Editable newEditable(CharSequence source) {
|
||||||
|
return new NoFiltersEditable(source);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
exponentButton.setOnClickListener(this);
|
||||||
descriptionView.setOnFocusChangeListener(this);
|
descriptionView.setOnFocusChangeListener(this);
|
||||||
keyboardButton.setOnClickListener(this);
|
keyboardButton.setOnClickListener(this);
|
||||||
|
|
||||||
@ -352,6 +365,11 @@ public class EditVariableFragment extends BaseDialogFragment implements View.OnF
|
|||||||
showKeyboard();
|
showKeyboard();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case R.id.variable_exponent_button:
|
||||||
|
final int start = Math.max(valueView.getSelectionStart(), 0);
|
||||||
|
final int end = Math.max(valueView.getSelectionEnd(), 0);
|
||||||
|
valueView.getText().replace(Math.min(start, end), Math.max(start, end), "E", 0, 1);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
super.onClick(v);
|
super.onClick(v);
|
||||||
break;
|
break;
|
||||||
@ -379,6 +397,17 @@ public class EditVariableFragment extends BaseDialogFragment implements View.OnF
|
|||||||
keyboardWindow.show(new GreekFloatingKeyboard(keyboardUser), getDialog());
|
keyboardWindow.show(new GreekFloatingKeyboard(keyboardUser), getDialog());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class NoFiltersEditable extends SpannableStringBuilder {
|
||||||
|
public NoFiltersEditable(CharSequence source) {
|
||||||
|
super(source);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFilters(InputFilter[] filters) {
|
||||||
|
// we don't want filters as we want to support numbers in scientific notation
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class KeyboardUser implements FloatingKeyboard.User {
|
private class KeyboardUser implements FloatingKeyboard.User {
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package org.solovyev.android.calculator.view;
|
package org.solovyev.android.calculator.view;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.support.design.widget.TextInputEditText;
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@ -12,7 +12,7 @@ import org.solovyev.android.Check;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
public class EditTextCompat extends EditText {
|
public class EditTextCompat extends TextInputEditText {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static Method setShowSoftInputOnFocusMethod;
|
private static Method setShowSoftInputOnFocusMethod;
|
||||||
@ -30,11 +30,6 @@ public class EditTextCompat extends EditText {
|
|||||||
super(context, attrs, defStyleAttr);
|
super(context, attrs, defStyleAttr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
public EditTextCompat(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
|
||||||
super(context, attrs, defStyleAttr, defStyleRes);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void dontShowSoftInputOnFocusCompat() {
|
public void dontShowSoftInputOnFocusCompat() {
|
||||||
setShowSoftInputOnFocusCompat(false);
|
setShowSoftInputOnFocusCompat(false);
|
||||||
}
|
}
|
||||||
|
@ -65,12 +65,16 @@
|
|||||||
tools:ignore="UnusedAttribute" />
|
tools:ignore="UnusedAttribute" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
a:layout_width="match_parent"
|
||||||
|
a:layout_height="wrap_content">
|
||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
a:id="@+id/variable_value_label"
|
a:id="@+id/variable_value_label"
|
||||||
a:layout_width="match_parent"
|
a:layout_width="match_parent"
|
||||||
a:layout_height="wrap_content">
|
a:layout_height="wrap_content">
|
||||||
|
|
||||||
<org.solovyev.android.calculator.view.EditTextCompat
|
<EditText
|
||||||
a:id="@+id/variable_value"
|
a:id="@+id/variable_value"
|
||||||
a:layout_width="match_parent"
|
a:layout_width="match_parent"
|
||||||
a:layout_height="wrap_content"
|
a:layout_height="wrap_content"
|
||||||
@ -78,6 +82,20 @@
|
|||||||
a:inputType="numberDecimal|numberSigned" />
|
a:inputType="numberDecimal|numberSigned" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
a:id="@+id/variable_exponent_button"
|
||||||
|
a:layout_width="wrap_content"
|
||||||
|
a:layout_height="wrap_content"
|
||||||
|
a:layout_gravity="end|top"
|
||||||
|
a:background="?attr/selectableItemBackgroundBorderless"
|
||||||
|
a:minWidth="0dp"
|
||||||
|
a:padding="@dimen/cpp_image_button_padding"
|
||||||
|
a:text="@string/cpp_exponent"
|
||||||
|
a:textAllCaps="false"
|
||||||
|
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
tools:ignore="UnusedAttribute" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
a:layout_width="match_parent"
|
a:layout_width="match_parent"
|
||||||
a:layout_height="wrap_content">
|
a:layout_height="wrap_content">
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
<string name="dimensions_y_min" translatable="false">Y min</string>
|
<string name="dimensions_y_min" translatable="false">Y min</string>
|
||||||
<string name="dimensions_y_max" translatable="false">Y max</string>
|
<string name="dimensions_y_max" translatable="false">Y max</string>
|
||||||
<string name="cpp_function_body" translatable="false">f(x, y)</string>
|
<string name="cpp_function_body" translatable="false">f(x, y)</string>
|
||||||
|
<string name="cpp_show_greek_keyboard" translatable="false">αβγ</string>
|
||||||
|
<string name="cpp_exponent" translatable="false">E</string>
|
||||||
<string-array name="cpp_prefs_precisions" translatable="false">
|
<string-array name="cpp_prefs_precisions" translatable="false">
|
||||||
<item>0</item>
|
<item>0</item>
|
||||||
<item>1</item>
|
<item>1</item>
|
||||||
|
@ -115,7 +115,6 @@
|
|||||||
several devices.\n\n
|
several devices.\n\n
|
||||||
By clicking \'Continue\' button you will be redirected to the Google Play app to make the payment.</string>
|
By clicking \'Continue\' button you will be redirected to the Google Play app to make the payment.</string>
|
||||||
<string name="cpp_purchase_title">Purchase</string>
|
<string name="cpp_purchase_title">Purchase</string>
|
||||||
<string name="cpp_show_greek_keyboard" translatable="false">αβγ</string>
|
|
||||||
<string name="cpp_clear_history_title">Clear history?</string>
|
<string name="cpp_clear_history_title">Clear history?</string>
|
||||||
<string name="cpp_clear_history_message">All history will be cleared.</string>
|
<string name="cpp_clear_history_message">All history will be cleared.</string>
|
||||||
<string name="cpp_clear_history">Clear</string>
|
<string name="cpp_clear_history">Clear</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user