() -> ( )

This commit is contained in:
Sergey Solovyev 2013-06-16 16:24:22 +04:00
parent 7b19427222
commit 7407b7d5d2
3 changed files with 44 additions and 30 deletions

View File

@ -8,5 +8,5 @@
<Button xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@id/cpp_button_round_brackets"
a:text="()"
a:text="( )"
style="@style/cpp_simple_metro_digit_button_style" />

View File

@ -10,7 +10,7 @@
xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
a:id="@id/cpp_button_round_brackets"
c:textUp="("
a:text="()"
a:text="( )"
c:textDown=")"
c:textLeft="(…)"
c:directionTextScale="0.5;0.5;0.5;0.33"

View File

@ -1,9 +1,10 @@
package org.solovyev.android.calculator;
import org.solovyev.android.calculator.math.MathType;
import org.solovyev.common.text.Strings;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.solovyev.android.calculator.math.MathType;
import org.solovyev.common.text.Strings;
/**
* User: serso
@ -29,36 +30,49 @@ public class CalculatorKeyboardImpl implements CalculatorKeyboard {
boolean processed = processSpecialButtons(text);
if (!processed) {
int cursorPositionOffset = 0;
final StringBuilder textToBeInserted = new StringBuilder(text);
final MathType.Result mathType = MathType.getType(text, 0, false);
switch (mathType.getMathType()) {
case function:
textToBeInserted.append("()");
cursorPositionOffset = -1;
break;
case operator:
textToBeInserted.append("()");
cursorPositionOffset = -1;
break;
case comma:
textToBeInserted.append(" ");
break;
}
if (cursorPositionOffset == 0) {
if (MathType.openGroupSymbols.contains(text)) {
cursorPositionOffset = -1;
}
}
final CalculatorEditor editor = Locator.getInstance().getEditor();
editor.insert(textToBeInserted.toString(), cursorPositionOffset);
processText(prepareText(text));
}
}
}
private void processText(@Nonnull String text) {
int cursorPositionOffset = 0;
final StringBuilder textToBeInserted = new StringBuilder(text);
final MathType.Result mathType = MathType.getType(text, 0, false);
switch (mathType.getMathType()) {
case function:
textToBeInserted.append("()");
cursorPositionOffset = -1;
break;
case operator:
textToBeInserted.append("()");
cursorPositionOffset = -1;
break;
case comma:
textToBeInserted.append(" ");
break;
}
if (cursorPositionOffset == 0) {
if (MathType.openGroupSymbols.contains(text)) {
cursorPositionOffset = -1;
}
}
final CalculatorEditor editor = Locator.getInstance().getEditor();
editor.insert(textToBeInserted.toString(), cursorPositionOffset);
}
@Nonnull
private String prepareText(@Nonnull String text) {
if ("( )".equals(text)) {
return "()";
} else {
return text;
}
}
private boolean processSpecialButtons(@Nonnull String text) {
boolean result = false;