write the formula above the result
This commit is contained in:
parent
1a7cd32464
commit
fe5efdd3c3
|
@ -4,4 +4,6 @@ public interface Calculator {
|
|||
void setValue(String value);
|
||||
|
||||
void setValueDouble(double d);
|
||||
|
||||
void setFormula(String value);
|
||||
}
|
||||
|
|
|
@ -8,17 +8,20 @@ public class CalculatorImpl {
|
|||
private String lastKey;
|
||||
private String lastOperation;
|
||||
private Calculator callback;
|
||||
private boolean isFirstOperation;
|
||||
|
||||
public CalculatorImpl(Calculator calculatorInterface) {
|
||||
callback = calculatorInterface;
|
||||
resetValues();
|
||||
setValue("0");
|
||||
setFormula("");
|
||||
}
|
||||
|
||||
public CalculatorImpl(Calculator calculatorInterface, String value) {
|
||||
callback = calculatorInterface;
|
||||
resetValues();
|
||||
displayedValue = value;
|
||||
setFormula("");
|
||||
}
|
||||
|
||||
private void resetValueIfNeeded() {
|
||||
|
@ -35,6 +38,7 @@ public class CalculatorImpl {
|
|||
lastKey = "";
|
||||
lastOperation = "";
|
||||
displayedValue = "";
|
||||
isFirstOperation = true;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
|
@ -42,6 +46,22 @@ public class CalculatorImpl {
|
|||
displayedValue = value;
|
||||
}
|
||||
|
||||
private void setFormula(String value) {
|
||||
callback.setFormula(value);
|
||||
}
|
||||
|
||||
private void updateFormula() {
|
||||
final String first = Formatter.doubleToString(baseValue);
|
||||
final String second = Formatter.doubleToString(secondValue);
|
||||
final String sign = getSign(lastOperation);
|
||||
|
||||
if (sign.equals("√")) {
|
||||
setFormula(sign + first);
|
||||
} else if (!sign.isEmpty()) {
|
||||
setFormula(first + sign + second);
|
||||
}
|
||||
}
|
||||
|
||||
public void setLastKey(String lastKey) {
|
||||
this.lastKey = lastKey;
|
||||
}
|
||||
|
@ -77,6 +97,10 @@ public class CalculatorImpl {
|
|||
}
|
||||
|
||||
public void calculateResult() {
|
||||
if (!isFirstOperation) {
|
||||
updateFormula();
|
||||
}
|
||||
|
||||
switch (lastOperation) {
|
||||
case Constants.PLUS:
|
||||
updateResult(baseValue + secondValue);
|
||||
|
@ -102,6 +126,7 @@ public class CalculatorImpl {
|
|||
default:
|
||||
break;
|
||||
}
|
||||
isFirstOperation = false;
|
||||
}
|
||||
|
||||
private void divideNumbers() {
|
||||
|
@ -162,6 +187,7 @@ public class CalculatorImpl {
|
|||
public void handleReset() {
|
||||
resetValues();
|
||||
setValue("0");
|
||||
setFormula("");
|
||||
}
|
||||
|
||||
public void handleEquals() {
|
||||
|
@ -190,6 +216,26 @@ public class CalculatorImpl {
|
|||
setValue(value);
|
||||
}
|
||||
|
||||
private String getSign(String lastOperation) {
|
||||
switch (lastOperation) {
|
||||
case Constants.PLUS:
|
||||
return "+";
|
||||
case Constants.MINUS:
|
||||
return "-";
|
||||
case Constants.MULTIPLY:
|
||||
return "*";
|
||||
case Constants.DIVIDE:
|
||||
return "/";
|
||||
case Constants.MODULO:
|
||||
return "%";
|
||||
case Constants.POWER:
|
||||
return "^";
|
||||
case Constants.ROOT:
|
||||
return "√";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public void numpadClicked(int id) {
|
||||
if (lastKey.equals(Constants.EQUALS))
|
||||
lastOperation = Constants.EQUALS;
|
||||
|
|
|
@ -13,6 +13,7 @@ import butterknife.OnLongClick;
|
|||
|
||||
public class MainActivity extends AppCompatActivity implements Calculator {
|
||||
@Bind(R.id.result) TextView result;
|
||||
@Bind(R.id.formula) TextView formula;
|
||||
|
||||
private CalculatorImpl calc;
|
||||
|
||||
|
@ -29,6 +30,9 @@ public class MainActivity extends AppCompatActivity implements Calculator {
|
|||
final Resources res = getResources();
|
||||
result.setBackgroundColor(res.getColor(android.R.color.white));
|
||||
result.setTextColor(res.getColor(R.color.dark_grey));
|
||||
|
||||
formula.setBackgroundColor(res.getColor(android.R.color.white));
|
||||
formula.setTextColor(res.getColor(R.color.dark_grey));
|
||||
}
|
||||
|
||||
@OnClick(R.id.btn_plus)
|
||||
|
@ -104,6 +108,11 @@ public class MainActivity extends AppCompatActivity implements Calculator {
|
|||
calc.setLastKey(Constants.DIGIT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFormula(String value) {
|
||||
formula.setText(value);
|
||||
}
|
||||
|
||||
public CalculatorImpl getCalc() {
|
||||
return calc;
|
||||
}
|
||||
|
|
|
@ -184,6 +184,12 @@ public class MyWidgetProvider extends AppWidgetProvider implements Calculator {
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFormula(String value) {
|
||||
remoteViews.setTextViewText(R.id.formula, value);
|
||||
widgetManager.updateAppWidget(widgetIds, remoteViews);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDeleted(Context context, int[] appWidgetIds) {
|
||||
super.onDeleted(context, appWidgetIds);
|
||||
|
|
|
@ -9,6 +9,18 @@
|
|||
android:orientation="vertical"
|
||||
tools:context="calculator.simplemobiletools.com.simple_calculator.MainActivity">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/formula"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="2.1"
|
||||
android:gravity="right|bottom"
|
||||
android:lines="1"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="@dimen/formula_text_size"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/result"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -3,5 +3,6 @@
|
|||
<dimen name="result_padding">64dp</dimen>
|
||||
<dimen name="config_text_size">18sp</dimen>
|
||||
<dimen name="button_text_size">28sp</dimen>
|
||||
<dimen name="display_text_size">36sp</dimen>
|
||||
<dimen name="formula_text_size">20sp</dimen>
|
||||
<dimen name="display_text_size">40sp</dimen>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in New Issue