diff --git a/android-app/src/main/java/org/solovyev/android/calculator/drag/DirectionDragButton.java b/android-app/src/main/java/org/solovyev/android/calculator/drag/DirectionDragButton.java index 5e0a5581..d2852340 100644 --- a/android-app/src/main/java/org/solovyev/android/calculator/drag/DirectionDragButton.java +++ b/android-app/src/main/java/org/solovyev/android/calculator/drag/DirectionDragButton.java @@ -28,6 +28,7 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.text.TextPaint; +import android.text.TextUtils; import android.util.AttributeSet; import org.solovyev.common.math.Point2d; import org.solovyev.common.text.NumberParser; @@ -117,7 +118,7 @@ public class DirectionDragButton extends DragButton { } } - protected static enum GuiDragDirection { + public static enum GuiDragDirection { up(DragDirection.up, 0) { @Override public int getAttributeId() { @@ -240,7 +241,7 @@ public class DirectionDragButton extends DragButton { } @Nonnull - private final Map textDataMap = new EnumMap(GuiDragDirection.class); + private final Map textDataMap = new EnumMap<>(GuiDragDirection.class); @Nonnull protected String directionTextScale = DEFAULT_DIRECTION_TEXT_SCALE; @@ -312,6 +313,7 @@ public class DirectionDragButton extends DragButton { initDirectionTextPaint(basePaint, textData); textData.position = textData.direction.getTextPosition(textData.paint, basePaint, textData.text, getText(), getWidth(), getHeight()); } + invalidate(); } } @@ -361,9 +363,20 @@ public class DirectionDragButton extends DragButton { } } + public void setText(@Nullable String text, @Nonnull GuiDragDirection direction) { + if (!TextUtils.isEmpty(text)) { + final DirectionTextData data = new DirectionTextData(direction, text); + initDirectionTextPaint(getPaint(), data); + textDataMap.put(direction, data); + } else { + textDataMap.remove(direction); + } + measureText(); + } + @Nullable private String getText(@Nonnull GuiDragDirection direction) { - DirectionTextData td = this.textDataMap.get(direction); + DirectionTextData td = textDataMap.get(direction); if (td == null) { return null; } else { diff --git a/android-app/src/main/java/org/solovyev/android/calculator/wizard/ChooseModeWizardStep.java b/android-app/src/main/java/org/solovyev/android/calculator/wizard/ChooseModeWizardStep.java index 2a72d693..6b4b0ebb 100644 --- a/android-app/src/main/java/org/solovyev/android/calculator/wizard/ChooseModeWizardStep.java +++ b/android-app/src/main/java/org/solovyev/android/calculator/wizard/ChooseModeWizardStep.java @@ -29,6 +29,7 @@ import android.widget.Spinner; import android.widget.TextView; import org.solovyev.android.calculator.Preferences; import org.solovyev.android.calculator.R; +import org.solovyev.android.calculator.drag.DirectionDragButton; import javax.annotation.Nonnull; @@ -42,6 +43,7 @@ import static org.solovyev.android.calculator.wizard.CalculatorMode.*; */ public class ChooseModeWizardStep extends WizardFragment implements AdapterView.OnItemSelectedListener { + private DirectionDragButton button; private TextView description; @Override @@ -59,12 +61,23 @@ public class ChooseModeWizardStep extends WizardFragment implements AdapterView. spinner.setSelection(mode == simple ? 0 : 1); spinner.setOnItemSelectedListener(this); + button = (DirectionDragButton) root.findViewById(R.id.wizard_mode_button); description = (TextView) root.findViewById(R.id.wizard_mode_description); updateDescription(mode); } private void updateDescription(@Nonnull CalculatorMode mode) { - description.setText(mode == simple ? R.string.cpp_wizard_mode_simple_description : R.string.cpp_wizard_mode_engineer_description); + boolean simple = mode == CalculatorMode.simple; + description.setText(simple ? R.string.cpp_wizard_mode_simple_description : R.string.cpp_wizard_mode_engineer_description); + if (simple) { + button.setText("", DirectionDragButton.GuiDragDirection.up); + button.setText("", DirectionDragButton.GuiDragDirection.down); + button.setText("", DirectionDragButton.GuiDragDirection.left); + } else { + button.setText("sin", DirectionDragButton.GuiDragDirection.up); + button.setText("ln", DirectionDragButton.GuiDragDirection.down); + button.setText("i", DirectionDragButton.GuiDragDirection.left); + } } @Override diff --git a/android-app/src/main/res/layout/cpp_wizard_step_choose_mode.xml b/android-app/src/main/res/layout/cpp_wizard_step_choose_mode.xml index bd73451a..203ea75c 100644 --- a/android-app/src/main/res/layout/cpp_wizard_step_choose_mode.xml +++ b/android-app/src/main/res/layout/cpp_wizard_step_choose_mode.xml @@ -33,18 +33,43 @@ a:layout_height="wrap_content" a:textAppearance="@android:style/TextAppearance.Large" style="@style/WizardLabel" - a:text="@string/cpp_wizard_mode_title"/> + a:layout_marginBottom="20dp" + a:text="@string/cpp_wizard_mode_title" /> + a:layout_marginBottom="20dp" + style="@style/WizardLabel" /> - + a:orientation="vertical" + a:gravity="center_horizontal|top"> + + + + + + + + diff --git a/android-app/src/main/res/values/theme.xml b/android-app/src/main/res/values/theme.xml index 398e3719..b1a0678d 100644 --- a/android-app/src/main/res/values/theme.xml +++ b/android-app/src/main/res/values/theme.xml @@ -97,7 +97,7 @@ @color/cpp_metro_button_light - -