Calculations on fly preference
This commit is contained in:
parent
401ff87e91
commit
ef141ed054
@ -51,6 +51,8 @@ public class CalculatorImpl implements Calculator, CalculatorEventListener {
|
||||
@NotNull
|
||||
private final Executor eventExecutor = Executors.newFixedThreadPool(1);
|
||||
|
||||
private volatile boolean calculateOnFly = true;
|
||||
|
||||
public CalculatorImpl() {
|
||||
this.addCalculatorEventListener(this);
|
||||
}
|
||||
@ -84,8 +86,8 @@ public class CalculatorImpl implements Calculator, CalculatorEventListener {
|
||||
@Override
|
||||
public void evaluate() {
|
||||
final CalculatorEditorViewState viewState = getEditor().getViewState();
|
||||
fireCalculatorEvent(CalculatorEventType.manual_calculation_requested, viewState);
|
||||
this.evaluate(JsclOperation.numeric, viewState.getText());
|
||||
final CalculatorEventData eventData = fireCalculatorEvent(CalculatorEventType.manual_calculation_requested, viewState);
|
||||
this.evaluate(JsclOperation.numeric, viewState.getText(), eventData.getSequenceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -98,8 +100,8 @@ public class CalculatorImpl implements Calculator, CalculatorEventListener {
|
||||
@Override
|
||||
public void simplify() {
|
||||
final CalculatorEditorViewState viewState = getEditor().getViewState();
|
||||
fireCalculatorEvent(CalculatorEventType.manual_calculation_requested, viewState);
|
||||
this.evaluate(JsclOperation.simplify, viewState.getText());
|
||||
final CalculatorEventData eventData = fireCalculatorEvent(CalculatorEventType.manual_calculation_requested, viewState);
|
||||
this.evaluate(JsclOperation.simplify, viewState.getText(), eventData.getSequenceId());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@ -140,6 +142,10 @@ public class CalculatorImpl implements Calculator, CalculatorEventListener {
|
||||
CalculatorLocatorImpl.getInstance().getHistory().load();
|
||||
}
|
||||
|
||||
public void setCalculateOnFly(boolean calculateOnFly) {
|
||||
this.calculateOnFly = calculateOnFly;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private CalculatorConversionEventData newConversionEventData(@NotNull Long sequenceId,
|
||||
@NotNull Generic value,
|
||||
@ -389,6 +395,7 @@ public class CalculatorImpl implements Calculator, CalculatorEventListener {
|
||||
|
||||
switch (calculatorEventType) {
|
||||
case editor_state_changed:
|
||||
if (calculateOnFly) {
|
||||
final CalculatorEditorChangeEventData editorChangeEventData = (CalculatorEditorChangeEventData) data;
|
||||
|
||||
final String newText = editorChangeEventData.getNewValue().getText();
|
||||
@ -397,6 +404,7 @@ public class CalculatorImpl implements Calculator, CalculatorEventListener {
|
||||
if (!newText.equals(oldText)) {
|
||||
evaluate(JsclOperation.numeric, editorChangeEventData.getNewValue().getText(), calculatorEventData.getSequenceId());
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case display_state_changed:
|
||||
|
@ -10,4 +10,7 @@
|
||||
|
||||
<string name="prefs_history_show_intermediate_calculations_title">Show intermediate calculations in history</string>
|
||||
<string name="prefs_history_show_intermediate_calculations_summary">If turned on all calculations will be shown on history screen</string>
|
||||
|
||||
<string name="p_calculations_calculate_on_fly_title">Result is calculated while typing expression</string>
|
||||
<string name="p_calculations_calculate_on_fly_summary">If turned on calculations are done automatically while typing expression</string>
|
||||
</resources>
|
@ -51,6 +51,11 @@
|
||||
a:defaultValue="5"
|
||||
range:boundaries="3;1000"/>
|
||||
|
||||
<android.preference.CheckBoxPreference
|
||||
a:key="calculations_calculate_on_fly"
|
||||
a:title="@string/p_calculations_calculate_on_fly_title"
|
||||
a:summary="@string/p_calculations_calculate_on_fly_summary"/>
|
||||
|
||||
</PreferenceScreen>
|
||||
|
||||
</PreferenceScreen>
|
@ -2,7 +2,10 @@ package org.solovyev.android.calculator;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
@ -21,13 +24,19 @@ import java.util.List;
|
||||
* Date: 9/22/12
|
||||
* Time: 5:42 PM
|
||||
*/
|
||||
public class AndroidCalculator implements Calculator, CalculatorEventListener {
|
||||
public class AndroidCalculator implements Calculator, CalculatorEventListener, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
@NotNull
|
||||
private final Calculator calculator = new CalculatorImpl();
|
||||
private final CalculatorImpl calculator = new CalculatorImpl();
|
||||
|
||||
public AndroidCalculator() {
|
||||
@NotNull
|
||||
private final Application context;
|
||||
|
||||
public AndroidCalculator(@NotNull Application application) {
|
||||
this.context = application;
|
||||
this.calculator.addCalculatorEventListener(this);
|
||||
|
||||
PreferenceManager.getDefaultSharedPreferences(application).registerOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
public static void showEvaluationError(@NotNull Context context, @NotNull final String errorMessage) {
|
||||
@ -121,6 +130,9 @@ public class AndroidCalculator implements Calculator, CalculatorEventListener {
|
||||
@Override
|
||||
public void init() {
|
||||
this.calculator.init();
|
||||
|
||||
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
this.calculator.setCalculateOnFly(CalculatorPreferences.Calculations.calculateOnFly.getPreference(prefs));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -215,4 +227,11 @@ public class AndroidCalculator implements Calculator, CalculatorEventListener {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(@NotNull SharedPreferences prefs, @NotNull String key) {
|
||||
if ( CalculatorPreferences.Calculations.calculateOnFly.getKey().equals(key) ) {
|
||||
this.calculator.setCalculateOnFly(CalculatorPreferences.Calculations.calculateOnFly.getPreference(prefs));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ public class CalculatorApplication extends android.app.Application {
|
||||
|
||||
super.onCreate();
|
||||
|
||||
final AndroidCalculator calculator = new AndroidCalculator();
|
||||
final AndroidCalculator calculator = new AndroidCalculator(this);
|
||||
|
||||
CalculatorLocatorImpl.getInstance().init(calculator,
|
||||
new AndroidCalculatorEngine(this),
|
||||
|
@ -29,6 +29,12 @@ public final class CalculatorPreferences {
|
||||
public static final Preference<Integer> appVersion = new IntegerPreference("application.version", -1);
|
||||
public static final Preference<Integer> appOpenedCounter = new IntegerPreference("app_opened_counter", 0);
|
||||
|
||||
public static class Calculations {
|
||||
|
||||
public static final Preference<Boolean> calculateOnFly = new BooleanPreference("calculations_calculate_on_fly", true);
|
||||
|
||||
}
|
||||
|
||||
public static class Gui {
|
||||
|
||||
public static final Preference<Theme> theme = StringPreference.newInstance("org.solovyev.android.calculator.CalculatorActivity_calc_theme", Theme.metro_blue_theme, Theme.class);
|
||||
@ -169,6 +175,7 @@ public final class CalculatorPreferences {
|
||||
applyDefaultPreference(preferences, Graph.lineColorImag);
|
||||
applyDefaultPreference(preferences, Graph.lineColorReal);
|
||||
applyDefaultPreference(preferences, History.showIntermediateCalculations);
|
||||
applyDefaultPreference(preferences, Calculations.calculateOnFly);
|
||||
|
||||
if ( !VibratorContainer.Preferences.hapticFeedbackEnabled.isSet(preferences) ) {
|
||||
VibratorContainer.Preferences.hapticFeedbackEnabled.putPreference(preferences, true);
|
||||
|
Loading…
Reference in New Issue
Block a user