Decrease precision in ENG mode and migrate the settings
This commit is contained in:
parent
fa9288ada1
commit
3c03f3948d
@ -31,6 +31,7 @@ import android.text.TextUtils;
|
|||||||
import com.squareup.otto.Bus;
|
import com.squareup.otto.Bus;
|
||||||
|
|
||||||
import org.solovyev.android.Check;
|
import org.solovyev.android.Check;
|
||||||
|
import org.solovyev.android.calculator.Preferences.Gui;
|
||||||
import org.solovyev.android.calculator.functions.FunctionsRegistry;
|
import org.solovyev.android.calculator.functions.FunctionsRegistry;
|
||||||
import org.solovyev.android.calculator.math.MathType;
|
import org.solovyev.android.calculator.math.MathType;
|
||||||
import org.solovyev.android.calculator.operators.OperatorsRegistry;
|
import org.solovyev.android.calculator.operators.OperatorsRegistry;
|
||||||
@ -211,7 +212,7 @@ public class Engine implements SharedPreferences.OnSharedPreferenceChangeListene
|
|||||||
if (preferences.contains("org.solovyev.android.calculator.CalculatorModel_round_result")) {
|
if (preferences.contains("org.solovyev.android.calculator.CalculatorModel_round_result")) {
|
||||||
final boolean round = preferences.getBoolean("org.solovyev.android.calculator.CalculatorModel_round_result", true);
|
final boolean round = preferences.getBoolean("org.solovyev.android.calculator.CalculatorModel_round_result", true);
|
||||||
if (!round) {
|
if (!round) {
|
||||||
Preferences.Output.precision.putPreference(editor, NumberFormatter.MAX_PRECISION);
|
Preferences.Output.precision.putPreference(editor, NumberFormatter.ENG_PRECISION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// #initPreferences rely on all changes to be committed
|
// #initPreferences rely on all changes to be committed
|
||||||
@ -226,7 +227,7 @@ public class Engine implements SharedPreferences.OnSharedPreferenceChangeListene
|
|||||||
if (preferences.contains("engine.output.round")) {
|
if (preferences.contains("engine.output.round")) {
|
||||||
final boolean round = preferences.getBoolean("engine.output.round", true);
|
final boolean round = preferences.getBoolean("engine.output.round", true);
|
||||||
if (!round) {
|
if (!round) {
|
||||||
Preferences.Output.precision.putPreference(editor, NumberFormatter.MAX_PRECISION);
|
Preferences.Output.precision.putPreference(editor, NumberFormatter.ENG_PRECISION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// #initPreferences rely on all changes to be committed
|
// #initPreferences rely on all changes to be committed
|
||||||
@ -235,6 +236,16 @@ public class Engine implements SharedPreferences.OnSharedPreferenceChangeListene
|
|||||||
// 1. It was forgotten for 0 version
|
// 1. It was forgotten for 0 version
|
||||||
// 2. There is a bunch of new preferences
|
// 2. There is a bunch of new preferences
|
||||||
initPreferences(editor);
|
initPreferences(editor);
|
||||||
|
} else if (oldVersion == 2) {
|
||||||
|
final Integer precision = Preferences.Output.precision.getPreference(preferences);
|
||||||
|
final Gui.Mode mode = Gui.mode.getPreference(preferences);
|
||||||
|
if (precision == NumberFormatter.MAX_PRECISION && mode == Gui.Mode.engineer) {
|
||||||
|
// this might reset a user set value but:
|
||||||
|
// 1. It's done only once
|
||||||
|
// 2. Most of the people will be happy with this change (worst case scenario -
|
||||||
|
// precision is set back to MAX_PRECISION again)
|
||||||
|
Preferences.Output.precision.putPreference(editor, NumberFormatter.ENG_PRECISION);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Preferences.version.putDefault(editor);
|
Preferences.version.putDefault(editor);
|
||||||
editor.apply();
|
editor.apply();
|
||||||
@ -322,7 +333,7 @@ public class Engine implements SharedPreferences.OnSharedPreferenceChangeListene
|
|||||||
public static final StringPreference<String> multiplicationSign = StringPreference.of("engine.multiplicationSign", "×");
|
public static final StringPreference<String> multiplicationSign = StringPreference.of("engine.multiplicationSign", "×");
|
||||||
public static final StringPreference<NumeralBase> numeralBase = StringPreference.ofTypedValue("engine.numeralBase", "dec", EnumMapper.of(NumeralBase.class));
|
public static final StringPreference<NumeralBase> numeralBase = StringPreference.ofTypedValue("engine.numeralBase", "dec", EnumMapper.of(NumeralBase.class));
|
||||||
public static final StringPreference<AngleUnit> angleUnit = StringPreference.ofTypedValue("engine.angleUnit", "deg", EnumMapper.of(AngleUnit.class));
|
public static final StringPreference<AngleUnit> angleUnit = StringPreference.ofTypedValue("engine.angleUnit", "deg", EnumMapper.of(AngleUnit.class));
|
||||||
public static final Preference<Integer> version = IntegerPreference.of("engine.version", 2);
|
public static final Preference<Integer> version = IntegerPreference.of("engine.version", 3);
|
||||||
private static final List<String> preferenceKeys = new ArrayList<>();
|
private static final List<String> preferenceKeys = new ArrayList<>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
@ -56,7 +56,7 @@ enum CalculatorMode {
|
|||||||
Preferences.Gui.mode.putPreference(editor, Preferences.Gui.Mode.engineer);
|
Preferences.Gui.mode.putPreference(editor, Preferences.Gui.Mode.engineer);
|
||||||
Engine.Preferences.angleUnit.putPreference(editor, AngleUnit.rad);
|
Engine.Preferences.angleUnit.putPreference(editor, AngleUnit.rad);
|
||||||
Engine.Preferences.Output.notation.putPreference(editor, Engine.Notation.eng);
|
Engine.Preferences.Output.notation.putPreference(editor, Engine.Notation.eng);
|
||||||
Engine.Preferences.Output.precision.putPreference(editor, NumberFormatter.MAX_PRECISION);
|
Engine.Preferences.Output.precision.putPreference(editor, NumberFormatter.ENG_PRECISION);
|
||||||
|
|
||||||
editor.apply();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
package org.solovyev.common;
|
package org.solovyev.common;
|
||||||
|
|
||||||
|
import static java.lang.Math.pow;
|
||||||
|
|
||||||
|
import static midpcalc.Real.NumberFormat.FSE_ENG;
|
||||||
|
import static midpcalc.Real.NumberFormat.FSE_FIX;
|
||||||
|
import static midpcalc.Real.NumberFormat.FSE_NONE;
|
||||||
|
import static midpcalc.Real.NumberFormat.FSE_SCI;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
|
||||||
@ -7,12 +14,6 @@ import javax.annotation.Nonnull;
|
|||||||
|
|
||||||
import midpcalc.Real;
|
import midpcalc.Real;
|
||||||
|
|
||||||
import static java.lang.Math.pow;
|
|
||||||
import static midpcalc.Real.NumberFormat.FSE_ENG;
|
|
||||||
import static midpcalc.Real.NumberFormat.FSE_FIX;
|
|
||||||
import static midpcalc.Real.NumberFormat.FSE_NONE;
|
|
||||||
import static midpcalc.Real.NumberFormat.FSE_SCI;
|
|
||||||
|
|
||||||
public class NumberFormatter {
|
public class NumberFormatter {
|
||||||
|
|
||||||
public static final char NO_GROUPING = 0;
|
public static final char NO_GROUPING = 0;
|
||||||
@ -20,6 +21,7 @@ public class NumberFormatter {
|
|||||||
public static final int DEFAULT_MAGNITUDE = 5;
|
public static final int DEFAULT_MAGNITUDE = 5;
|
||||||
public static final int MIN_PRECISION = 1;
|
public static final int MIN_PRECISION = 1;
|
||||||
public static final int MAX_PRECISION = 15;
|
public static final int MAX_PRECISION = 15;
|
||||||
|
public static final int ENG_PRECISION = 10;
|
||||||
|
|
||||||
private final Real.NumberFormat numberFormat = new Real.NumberFormat();
|
private final Real.NumberFormat numberFormat = new Real.NumberFormat();
|
||||||
private final Real real = new Real();
|
private final Real real = new Real();
|
||||||
|
Loading…
Reference in New Issue
Block a user