Style fixing
This commit is contained in:
parent
4434973733
commit
1dcd43258c
@ -9,10 +9,7 @@ import android.widget.LinearLayout;
|
||||
import org.solovyev.android.calculator.keyboard.BaseFloatingKeyboard;
|
||||
import org.solovyev.android.calculator.keyboard.FloatingKeyboard;
|
||||
import org.solovyev.android.calculator.view.EditTextLongClickEraser;
|
||||
import org.solovyev.android.views.dragbutton.DirectionDragButton;
|
||||
import org.solovyev.android.views.dragbutton.DirectionDragListener;
|
||||
import org.solovyev.android.views.dragbutton.DragDirection;
|
||||
import org.solovyev.android.views.dragbutton.DragEvent;
|
||||
import org.solovyev.android.views.dragbutton.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -35,7 +32,7 @@ public class FloatingCalculatorKeyboard extends BaseFloatingKeyboard {
|
||||
this.dragListener = new DirectionDragListener(user.getContext()) {
|
||||
@Override
|
||||
protected boolean onDrag(@NonNull View view, @NonNull DragEvent event, @NonNull DragDirection direction) {
|
||||
return buttonHandler.onDrag(view, direction);
|
||||
return Drag.hasDirectionText(view, direction) && buttonHandler.onDrag(view, direction);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -83,7 +83,6 @@ public final class Preferences {
|
||||
migratePreference(preferences, editor, Gui.layout, Deleted.layout);
|
||||
migratePreference(preferences, editor, Gui.useBackAsPrevious, Deleted.usePrevAsBack);
|
||||
migratePreference(preferences, editor, Gui.showReleaseNotes, Deleted.showReleaseNotes);
|
||||
migratePreference(preferences, editor, Gui.showEqualsButton, Deleted.showEqualsButton);
|
||||
migratePreference(preferences, editor, Gui.rotateScreen, Deleted.autoOrientation);
|
||||
final Gui.Layout layout = Deleted.layout.getPreference(preferences);
|
||||
if (layout == Gui.Layout.main_cellphone) {
|
||||
@ -137,7 +136,6 @@ public final class Preferences {
|
||||
Gui.layout.tryPutDefault(preferences, editor);
|
||||
Gui.showReleaseNotes.tryPutDefault(preferences, editor);
|
||||
Gui.useBackAsPrevious.tryPutDefault(preferences, editor);
|
||||
Gui.showEqualsButton.tryPutDefault(preferences, editor);
|
||||
Gui.rotateScreen.tryPutDefault(preferences, editor);
|
||||
Gui.keepScreenOn.tryPutDefault(preferences, editor);
|
||||
Gui.language.tryPutDefault(preferences, editor);
|
||||
|
@ -12,35 +12,20 @@ import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.solovyev.android.calculator.ActivityLauncher;
|
||||
import org.solovyev.android.calculator.App;
|
||||
import org.solovyev.android.calculator.BaseActivity;
|
||||
import org.solovyev.android.calculator.Calculator;
|
||||
import org.solovyev.android.calculator.Editor;
|
||||
import org.solovyev.android.calculator.Keyboard;
|
||||
import org.solovyev.android.calculator.Preferences;
|
||||
import org.solovyev.android.calculator.PreferredPreferences;
|
||||
import dagger.Lazy;
|
||||
import org.solovyev.android.calculator.*;
|
||||
import org.solovyev.android.calculator.buttons.CppSpecialButton;
|
||||
import org.solovyev.android.calculator.memory.Memory;
|
||||
import org.solovyev.android.views.Adjuster;
|
||||
import org.solovyev.android.views.dragbutton.DirectionDragButton;
|
||||
import org.solovyev.android.views.dragbutton.DirectionDragImageButton;
|
||||
import org.solovyev.android.views.dragbutton.DirectionDragListener;
|
||||
import org.solovyev.android.views.dragbutton.DirectionDragView;
|
||||
import org.solovyev.android.views.dragbutton.DragDirection;
|
||||
import org.solovyev.android.views.dragbutton.DragEvent;
|
||||
import org.solovyev.android.views.dragbutton.DragView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.solovyev.android.views.dragbutton.*;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.inject.Inject;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
|
||||
import static android.view.HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING;
|
||||
import static android.view.HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING;
|
||||
import static android.view.HapticFeedbackConstants.KEYBOARD_TAP;
|
||||
import static android.view.HapticFeedbackConstants.*;
|
||||
import static org.solovyev.android.calculator.App.cast;
|
||||
import static org.solovyev.android.calculator.Preferences.Gui.Layout.simple;
|
||||
import static org.solovyev.android.calculator.Preferences.Gui.Layout.simple_mobile;
|
||||
@ -71,6 +56,8 @@ public abstract class BaseKeyboardUi implements SharedPreferences.OnSharedPrefer
|
||||
@Inject
|
||||
ActivityLauncher launcher;
|
||||
@Inject
|
||||
Lazy<Memory> memory;
|
||||
@Inject
|
||||
PreferredPreferences preferredPreferences;
|
||||
protected int orientation = ORIENTATION_PORTRAIT;
|
||||
private int textSize;
|
||||
@ -81,7 +68,7 @@ public abstract class BaseKeyboardUi implements SharedPreferences.OnSharedPrefer
|
||||
listener = new DirectionDragListener(application) {
|
||||
@Override
|
||||
protected boolean onDrag(@NonNull View view, @NonNull DragEvent event, @NonNull DragDirection direction) {
|
||||
return BaseKeyboardUi.this.onDrag(view, direction);
|
||||
return Drag.hasDirectionText(view, direction) && BaseKeyboardUi.this.onDrag(view, direction);
|
||||
}
|
||||
};
|
||||
textScale = getTextScale(application);
|
||||
@ -136,6 +123,8 @@ public abstract class BaseKeyboardUi implements SharedPreferences.OnSharedPrefer
|
||||
prepareButton((ImageView) button);
|
||||
button.setOnDragListener(listener);
|
||||
button.setTypeface(typeface);
|
||||
button.setTextSize(textSize);
|
||||
Adjuster.adjustText(button, AdjusterHelper.instance, textScale, 0);
|
||||
}
|
||||
|
||||
protected final void prepareButton(@Nullable DirectionDragButton button) {
|
||||
@ -209,4 +198,19 @@ public abstract class BaseKeyboardUi implements SharedPreferences.OnSharedPrefer
|
||||
protected final void onClick(@Nonnull View v, @Nonnull CppSpecialButton b) {
|
||||
onClick(v, b.action);
|
||||
}
|
||||
|
||||
private static class AdjusterHelper implements Adjuster.Helper<DirectionDragImageButton> {
|
||||
|
||||
public static AdjusterHelper instance = new AdjusterHelper();
|
||||
|
||||
@Override
|
||||
public void apply(@NonNull DirectionDragImageButton view, float textSize) {
|
||||
view.setTextSize(textSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getTextSize(@NonNull DirectionDragImageButton view) {
|
||||
return view.getTextSize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,16 +10,15 @@ import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageButton;
|
||||
|
||||
import org.solovyev.android.calculator.ActivityLauncher;
|
||||
import org.solovyev.android.calculator.App;
|
||||
import org.solovyev.android.calculator.Display;
|
||||
import org.solovyev.android.calculator.DisplayState;
|
||||
import org.solovyev.android.calculator.Engine;
|
||||
import org.solovyev.android.calculator.R;
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
import jscl.AngleUnit;
|
||||
import jscl.NumeralBase;
|
||||
import jscl.math.Expression;
|
||||
import jscl.math.Generic;
|
||||
import org.solovyev.android.calculator.*;
|
||||
import org.solovyev.android.calculator.buttons.CppSpecialButton;
|
||||
import org.solovyev.android.calculator.history.History;
|
||||
import org.solovyev.android.calculator.memory.Memory;
|
||||
import org.solovyev.android.calculator.view.AngleUnitsButton;
|
||||
import org.solovyev.android.calculator.view.NumeralBasesButton;
|
||||
import org.solovyev.android.views.dragbutton.DirectionDragButton;
|
||||
@ -30,20 +29,8 @@ import org.solovyev.android.views.dragbutton.DragDirection;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
import dagger.Lazy;
|
||||
import jscl.AngleUnit;
|
||||
import jscl.NumeralBase;
|
||||
import jscl.math.Expression;
|
||||
import jscl.math.Generic;
|
||||
|
||||
import static org.solovyev.android.calculator.Engine.Preferences.angleUnit;
|
||||
import static org.solovyev.android.calculator.Engine.Preferences.multiplicationSign;
|
||||
import static org.solovyev.android.calculator.Engine.Preferences.numeralBase;
|
||||
import static org.solovyev.android.views.dragbutton.DragDirection.down;
|
||||
import static org.solovyev.android.views.dragbutton.DragDirection.left;
|
||||
import static org.solovyev.android.views.dragbutton.DragDirection.up;
|
||||
import static org.solovyev.android.calculator.Engine.Preferences.*;
|
||||
import static org.solovyev.android.views.dragbutton.DragDirection.*;
|
||||
|
||||
public class KeyboardUi extends BaseKeyboardUi {
|
||||
|
||||
@ -76,8 +63,6 @@ public class KeyboardUi extends BaseKeyboardUi {
|
||||
@Inject
|
||||
Display display;
|
||||
@Inject
|
||||
Lazy<Memory> memory;
|
||||
@Inject
|
||||
PartialKeyboardUi partialUi;
|
||||
@Bind(R.id.cpp_button_vars)
|
||||
DirectionDragButton variablesButton;
|
||||
@ -108,6 +93,9 @@ public class KeyboardUi extends BaseKeyboardUi {
|
||||
@Bind(R.id.cpp_button_like)
|
||||
ImageButton likeButton;
|
||||
@Nullable
|
||||
@Bind(R.id.cpp_button_percent)
|
||||
DirectionDragButton percentButton;
|
||||
@Nullable
|
||||
@Bind(R.id.cpp_button_memory)
|
||||
DirectionDragButton memoryButton;
|
||||
|
||||
@ -143,6 +131,7 @@ public class KeyboardUi extends BaseKeyboardUi {
|
||||
|
||||
prepareButton(periodButton);
|
||||
prepareButton(bracketsButton);
|
||||
prepareButton(percentButton);
|
||||
|
||||
prepareButton(button0);
|
||||
prepareButton(button1);
|
||||
@ -163,9 +152,9 @@ public class KeyboardUi extends BaseKeyboardUi {
|
||||
prepareButton(memoryButton);
|
||||
|
||||
if (isSimpleLayout()) {
|
||||
hideText(button1, up, down);
|
||||
hideText(button2, up, down);
|
||||
hideText(button3, up, down);
|
||||
hideText(button1, down);
|
||||
hideText(button2, down);
|
||||
hideText(button3, down);
|
||||
hideText(button4, down);
|
||||
hideText(button5, down);
|
||||
hideText(button7, left, up, down);
|
||||
@ -175,6 +164,7 @@ public class KeyboardUi extends BaseKeyboardUi {
|
||||
hideText(plusButton, up, down);
|
||||
hideText(copyButton, left, up, down);
|
||||
hideText(pasteButton, left, up, down);
|
||||
hideText(functionsButton, up, down);
|
||||
}
|
||||
multiplicationButton.setText(engine.getMultiplicationSign());
|
||||
toggleNumericDigits();
|
||||
@ -216,6 +206,7 @@ public class KeyboardUi extends BaseKeyboardUi {
|
||||
case R.id.cpp_button_9:
|
||||
case R.id.cpp_button_division:
|
||||
case R.id.cpp_button_period:
|
||||
case R.id.cpp_button_percent:
|
||||
case R.id.cpp_button_subtraction:
|
||||
case R.id.cpp_button_multiplication:
|
||||
case R.id.cpp_button_plus:
|
||||
@ -252,13 +243,13 @@ public class KeyboardUi extends BaseKeyboardUi {
|
||||
@Override
|
||||
protected boolean onDrag(@NonNull View view, @NonNull DragDirection direction) {
|
||||
switch (view.getId()) {
|
||||
case R.id.cpp_button_vars:
|
||||
launcher.showConstantEditor();
|
||||
return true;
|
||||
case R.id.cpp_button_functions:
|
||||
if (direction == up) {
|
||||
launcher.showFunctionEditor();
|
||||
return true;
|
||||
} else if (direction == down) {
|
||||
launcher.showConstantEditor();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
case R.id.cpp_button_history:
|
||||
@ -272,12 +263,6 @@ public class KeyboardUi extends BaseKeyboardUi {
|
||||
return false;
|
||||
case R.id.cpp_button_memory:
|
||||
return processMemoryButton(direction);
|
||||
case R.id.cpp_button_subtraction:
|
||||
if (direction == down) {
|
||||
launcher.showOperators();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
case R.id.cpp_button_copy:
|
||||
return processNumeralBaseButton(direction, (DirectionDragView) view);
|
||||
case R.id.cpp_button_paste:
|
||||
@ -307,6 +292,7 @@ public class KeyboardUi extends BaseKeyboardUi {
|
||||
}
|
||||
}
|
||||
if (value == null) {
|
||||
memory.get().show();
|
||||
return false;
|
||||
}
|
||||
switch (direction) {
|
||||
@ -316,9 +302,6 @@ public class KeyboardUi extends BaseKeyboardUi {
|
||||
case down:
|
||||
memory.get().subtract(value);
|
||||
return true;
|
||||
case left:
|
||||
memory.get().clear();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -3,14 +3,12 @@ package org.solovyev.android.calculator.keyboard;
|
||||
import android.app.Activity;
|
||||
import android.app.Application;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageButton;
|
||||
|
||||
import org.solovyev.android.calculator.Preferences;
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
import org.solovyev.android.calculator.R;
|
||||
import org.solovyev.android.calculator.buttons.CppSpecialButton;
|
||||
import org.solovyev.android.calculator.view.EditorLongClickEraser;
|
||||
@ -21,10 +19,6 @@ import org.solovyev.android.views.dragbutton.DragDirection;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
import static org.solovyev.android.calculator.Preferences.Gui.showEqualsButton;
|
||||
import static org.solovyev.android.calculator.Preferences.Gui.vibrateOnKeypress;
|
||||
import static org.solovyev.android.views.dragbutton.DragDirection.down;
|
||||
import static org.solovyev.android.views.dragbutton.DragDirection.up;
|
||||
@ -39,7 +33,7 @@ public class PartialKeyboardUi extends BaseKeyboardUi {
|
||||
DirectionDragImageButton leftButton;
|
||||
@Nullable
|
||||
@Bind(R.id.cpp_button_clear)
|
||||
Button clearButton;
|
||||
DirectionDragButton clearButton;
|
||||
@Nullable
|
||||
@Bind(R.id.cpp_button_erase)
|
||||
ImageButton eraseButton;
|
||||
@ -67,30 +61,14 @@ public class PartialKeyboardUi extends BaseKeyboardUi {
|
||||
prepareButton(eraseButton, IMAGE_SCALE_ERASE);
|
||||
longClickEraser = EditorLongClickEraser.attachTo(eraseButton, keyboard.isVibrateOnKeypress(), editor, calculator);
|
||||
}
|
||||
toggleEqualsButton();
|
||||
}
|
||||
|
||||
public void toggleEqualsButton() {
|
||||
if (equalsButton == null) {
|
||||
return;
|
||||
}
|
||||
if (orientation != Configuration.ORIENTATION_PORTRAIT && Preferences.Gui.rotateScreen.getPreference(preferences)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Preferences.Gui.showEqualsButton.getPreference(preferences)) {
|
||||
equalsButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
equalsButton.setVisibility(View.GONE);
|
||||
if(isSimpleLayout()) {
|
||||
hideText(equalsButton, down);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
|
||||
super.onSharedPreferenceChanged(preferences, key);
|
||||
if (equalsButton != null && showEqualsButton.isSameKey(key)) {
|
||||
toggleEqualsButton();
|
||||
}
|
||||
if (longClickEraser != null && vibrateOnKeypress.isSameKey(key)) {
|
||||
longClickEraser.setVibrateOnKeypress(vibrateOnKeypress.getPreference(preferences));
|
||||
}
|
||||
@ -105,6 +83,12 @@ public class PartialKeyboardUi extends BaseKeyboardUi {
|
||||
case R.id.cpp_button_left:
|
||||
editor.setCursorOnStart();
|
||||
return true;
|
||||
case R.id.cpp_button_clear:
|
||||
if(direction == up) {
|
||||
memory.get().clear();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
case R.id.cpp_button_equals:
|
||||
if (direction == down) {
|
||||
launcher.plotDisplayedExpression();
|
||||
|
@ -156,6 +156,10 @@ public class Memory {
|
||||
value = numeric(newValue);
|
||||
handler.removeCallbacks(writeTask);
|
||||
handler.postDelayed(writeTask, 3000L);
|
||||
show();
|
||||
}
|
||||
|
||||
public void show() {
|
||||
notifier.showMessage(getValue());
|
||||
}
|
||||
|
||||
|
@ -16,17 +16,33 @@ import static android.graphics.Matrix.MSCALE_Y;
|
||||
public class Adjuster {
|
||||
|
||||
private static final float[] MATRIX = new float[9];
|
||||
@NonNull
|
||||
private static Helper<TextView> textViewHelper = new Helper<TextView>() {
|
||||
@Override
|
||||
public void apply(@NonNull TextView view, float textSize) {
|
||||
view.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getTextSize(@NonNull TextView view) {
|
||||
return view.getTextSize();
|
||||
}
|
||||
};
|
||||
|
||||
public static void adjustText(@NonNull final TextView view, final float percentage) {
|
||||
adjustText(view, percentage, 0);
|
||||
adjustText(view, textViewHelper, percentage, 0);
|
||||
}
|
||||
|
||||
public static void adjustText(@NonNull final TextView view, final float percentage, final float minTextSizePxs) {
|
||||
public static void adjustText(@NonNull final TextView view, final float percentage, int minTextSizePxs) {
|
||||
adjustText(view, textViewHelper, percentage, minTextSizePxs);
|
||||
}
|
||||
|
||||
public static <V extends View> void adjustText(@NonNull final V view, @NonNull Helper<V> helper, final float percentage, final float minTextSizePxs) {
|
||||
ViewTreeObserver treeObserver = getTreeObserver(view);
|
||||
if (treeObserver == null) {
|
||||
return;
|
||||
}
|
||||
treeObserver.addOnPreDrawListener(new TextViewAdjuster(view, percentage, minTextSizePxs));
|
||||
treeObserver.addOnPreDrawListener(new TextViewAdjuster<V>(view, helper, percentage, minTextSizePxs));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@ -57,6 +73,12 @@ public class Adjuster {
|
||||
treeObserver.addOnPreDrawListener(new MaxWidthAdjuster(view, maxWidth));
|
||||
}
|
||||
|
||||
public interface Helper<V extends View> {
|
||||
void apply(@NonNull V view, float textSize);
|
||||
|
||||
float getTextSize(@NonNull V view);
|
||||
}
|
||||
|
||||
private static abstract class BaseViewAdjuster<V extends View> implements ViewTreeObserver.OnPreDrawListener {
|
||||
@NonNull
|
||||
protected final V view;
|
||||
@ -82,24 +104,26 @@ public class Adjuster {
|
||||
protected abstract boolean adjust(int width, int height);
|
||||
}
|
||||
|
||||
private static class TextViewAdjuster extends BaseViewAdjuster<TextView> {
|
||||
private static class TextViewAdjuster<V extends View> extends BaseViewAdjuster<V> {
|
||||
private final float percentage;
|
||||
private final float minTextSizePxs;
|
||||
private final Helper<V> helper;
|
||||
|
||||
public TextViewAdjuster(@NonNull TextView view, float percentage, float minTextSizePxs) {
|
||||
public TextViewAdjuster(@NonNull V view, @NonNull Helper<V> helper, float percentage, float minTextSizePxs) {
|
||||
super(view);
|
||||
this.helper = helper;
|
||||
this.percentage = percentage;
|
||||
this.minTextSizePxs = minTextSizePxs;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean adjust(int width, int height) {
|
||||
final float oldTextSize = Math.round(view.getTextSize());
|
||||
final float oldTextSize = Math.round(helper.getTextSize(view));
|
||||
final float newTextSize = Math.max(minTextSizePxs, Math.round(height * percentage));
|
||||
if (oldTextSize == newTextSize) {
|
||||
return true;
|
||||
}
|
||||
view.setTextSize(TypedValue.COMPLEX_UNIT_PX, newTextSize);
|
||||
helper.apply(view, newTextSize);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -41,20 +41,16 @@ public class DirectionDragButton extends DragButton implements DirectionDragView
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreDraw() {
|
||||
protected void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
final TextPaint paint = getPaint();
|
||||
if (baseTextPaint.getTextSize() != paint.getTextSize() ||
|
||||
baseTextPaint.getTypeface() != paint.getTypeface() ||
|
||||
baseTextPaint.getColor() != paint.getColor() ||
|
||||
baseTextPaint.getAlpha() != paint.getAlpha()) {
|
||||
baseTextPaint.set(paint);
|
||||
textView.setBaseTextPaint(paint);
|
||||
}
|
||||
return super.onPreDraw();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
textView.draw(canvas);
|
||||
}
|
||||
|
||||
|
@ -54,10 +54,19 @@ public class DirectionDragImageButton extends DragImageButton implements Directi
|
||||
|
||||
public void setTypeface(@Nonnull Typeface newTypeface) {
|
||||
final Typeface oldTypeface = baseTextPaint.getTypeface();
|
||||
if(oldTypeface == newTypeface) {
|
||||
if (oldTypeface == newTypeface) {
|
||||
return;
|
||||
}
|
||||
baseTextPaint.setTypeface(newTypeface);
|
||||
textView.setBaseTextPaint(baseTextPaint);
|
||||
}
|
||||
|
||||
public void setTextSize(float textSizePxs) {
|
||||
baseTextPaint.setTextSize(textSizePxs);
|
||||
textView.setBaseTextPaint(baseTextPaint);
|
||||
}
|
||||
|
||||
public float getTextSize() {
|
||||
return baseTextPaint.getTextSize();
|
||||
}
|
||||
}
|
||||
|
@ -127,7 +127,10 @@ public class DirectionTextView {
|
||||
paint.set(base);
|
||||
paint.setColor(color);
|
||||
paint.setAlpha(intAlpha());
|
||||
paint.setTypeface(Typeface.DEFAULT);
|
||||
final Typeface typeface = base.getTypeface();
|
||||
if (typeface != null && typeface.getStyle() != Typeface.NORMAL) {
|
||||
paint.setTypeface(Typeface.create(typeface, Typeface.NORMAL));
|
||||
}
|
||||
|
||||
// pre-calculate fixed height
|
||||
paint.setTextSize(Math.max(base.getTextSize() * DEF_SCALE, minTextSize));
|
||||
@ -176,7 +179,7 @@ public class DirectionTextView {
|
||||
}
|
||||
|
||||
public void draw(@NonNull Canvas canvas) {
|
||||
if (!visible || TextUtils.isEmpty(value)) {
|
||||
if (!hasValue()) {
|
||||
return;
|
||||
}
|
||||
if (position.x < 0 || position.y < 0) {
|
||||
@ -222,6 +225,10 @@ public class DirectionTextView {
|
||||
return visible ? value : "";
|
||||
}
|
||||
|
||||
public boolean hasValue() {
|
||||
return visible && !TextUtils.isEmpty(value);
|
||||
}
|
||||
|
||||
public void setValue(@NonNull String value) {
|
||||
if (TextUtils.equals(this.value, value)) {
|
||||
return;
|
||||
|
@ -3,8 +3,9 @@ package org.solovyev.android.views.dragbutton;
|
||||
import android.graphics.PointF;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.View;
|
||||
|
||||
final class Drag {
|
||||
public final class Drag {
|
||||
|
||||
private Drag() {
|
||||
}
|
||||
@ -19,6 +20,13 @@ final class Drag {
|
||||
return new PointF(p1.x - p2.x, p1.y - p2.y);
|
||||
}
|
||||
|
||||
public static boolean hasDirectionText(@NonNull View view, @NonNull DragDirection direction) {
|
||||
if (view instanceof DirectionDragView) {
|
||||
return ((DirectionDragView) view).getText(direction).hasValue();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static PointF sum(@NonNull PointF p1, @NonNull PointF p2) {
|
||||
return new PointF(p1.x + p2.x, p1.y + p2.y);
|
||||
|
@ -38,13 +38,7 @@
|
||||
a:orientation="horizontal">
|
||||
|
||||
<include
|
||||
layout="@layout/cpp_app_button_left"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="match_parent"
|
||||
a:layout_weight="1" />
|
||||
|
||||
<include
|
||||
layout="@layout/cpp_app_button_erase"
|
||||
layout="@layout/cpp_app_button_equals_no_bg"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="match_parent"
|
||||
a:layout_weight="1" />
|
||||
@ -53,17 +47,17 @@
|
||||
a:id="@+id/display"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="match_parent"
|
||||
a:layout_weight="4"
|
||||
a:layout_weight="5"
|
||||
a:orientation="horizontal" />
|
||||
|
||||
<include
|
||||
layout="@layout/cpp_app_button_clear"
|
||||
layout="@layout/cpp_app_button_erase"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="match_parent"
|
||||
a:layout_weight="1" />
|
||||
|
||||
<include
|
||||
layout="@layout/cpp_app_button_right"
|
||||
layout="@layout/cpp_app_button_clear"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="match_parent"
|
||||
a:layout_weight="1" />
|
||||
|
@ -34,10 +34,10 @@
|
||||
a:baselineAligned="false"
|
||||
a:orientation="horizontal">
|
||||
|
||||
<include layout="@layout/cpp_app_button_vars" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_copy" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_paste" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_7" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_8" />
|
||||
@ -48,7 +48,7 @@
|
||||
|
||||
<include layout="@layout/cpp_app_button_division" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_equals" />
|
||||
<include layout="@layout/cpp_app_button_memory" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -59,9 +59,9 @@
|
||||
a:baselineAligned="false"
|
||||
a:orientation="horizontal">
|
||||
|
||||
<include layout="@layout/cpp_app_button_functions" />
|
||||
<include layout="@layout/cpp_app_button_vars" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_paste" />
|
||||
<include layout="@layout/cpp_app_button_functions" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_4" />
|
||||
|
||||
@ -84,9 +84,9 @@
|
||||
a:baselineAligned="false"
|
||||
a:orientation="horizontal">
|
||||
|
||||
<include layout="@layout/cpp_app_button_operators" />
|
||||
<include layout="@layout/cpp_app_button_left" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_donate" />
|
||||
<include layout="@layout/cpp_app_button_right" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_1" />
|
||||
|
||||
|
@ -29,5 +29,6 @@
|
||||
a:id="@id/cpp_button_6"
|
||||
style="?attr/cpp_button_style_digit"
|
||||
a:text="6"
|
||||
c:directionTextUp="√"
|
||||
c:directionTextLeft="F"
|
||||
tools:ignore="HardcodedText" />
|
@ -29,7 +29,5 @@
|
||||
a:id="@id/cpp_button_9"
|
||||
style="?attr/cpp_button_style_digit"
|
||||
a:text="9"
|
||||
c:directionTextDown="e"
|
||||
c:directionTextLeft="0x:"
|
||||
c:directionTextUp="π"
|
||||
tools:ignore="HardcodedText" />
|
@ -22,9 +22,12 @@
|
||||
~ Site: http://se.solovyev.org
|
||||
-->
|
||||
|
||||
<Button
|
||||
<org.solovyev.android.views.dragbutton.DirectionDragButton
|
||||
a:id="@id/cpp_button_clear"
|
||||
style="?attr/cpp_button_style_control_image"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:background="@color/grey_850"
|
||||
a:text="@string/c_clear"
|
||||
app:directionTextUp="MC"
|
||||
a:textStyle="bold"/>
|
@ -29,6 +29,4 @@
|
||||
a:id="@id/cpp_button_division"
|
||||
style="?attr/cpp_button_style_operation"
|
||||
a:text="/"
|
||||
c:directionTextDown="√"
|
||||
c:directionTextUp="%"
|
||||
tools:ignore="HardcodedText" />
|
@ -29,8 +29,7 @@
|
||||
style="?attr/cpp_button_style_control"
|
||||
a:background="@drawable/button_no_bg"
|
||||
a:text="="
|
||||
a:textColor="?android:attr/textColorPrimary"
|
||||
c:directionTextColor="?android:attr/textColorPrimary"
|
||||
a:textColor="?attr/cpp_text_color"
|
||||
c:directionTextDown="@string/cpp_plot_button_text"
|
||||
c:directionTextUp="≡"
|
||||
tools:ignore="HardcodedText" />
|
@ -25,5 +25,6 @@
|
||||
<ImageButton
|
||||
xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:id="@id/cpp_button_erase"
|
||||
a:background="@color/cpp_material_light_darker"
|
||||
style="?attr/cpp_button_style_control_image"
|
||||
a:src="@drawable/ic_backspace_white_48dp" />
|
@ -31,4 +31,5 @@
|
||||
a:text="@string/cpp_kb_functions"
|
||||
a:textStyle="italic"
|
||||
c:directionTextUp="+ƒ"
|
||||
c:directionTextDown="+π"
|
||||
tools:ignore="HardcodedText" />
|
@ -27,5 +27,5 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
a:text="@string/cpp_kb_memory_recall"
|
||||
app:directionTextDown="@string/cpp_kb_memory_minus"
|
||||
app:directionTextLeft="@string/cpp_kb_memory_clear"
|
||||
app:directionTextUp="@string/cpp_kb_memory_plus" />
|
||||
app:directionTextUp="@string/cpp_kb_memory_plus"
|
||||
a:textStyle="bold"/>
|
@ -28,5 +28,4 @@
|
||||
a:id="@id/cpp_button_subtraction"
|
||||
style="?attr/cpp_button_style_operation"
|
||||
a:text="−"
|
||||
c:directionTextDown="@string/cpp_kb_operators"
|
||||
tools:ignore="HardcodedText" />
|
@ -29,7 +29,4 @@
|
||||
a:id="@id/cpp_button_multiplication"
|
||||
style="?attr/cpp_button_style_operation"
|
||||
a:text="×"
|
||||
c:directionTextDown="^2"
|
||||
c:directionTextLeft="Π"
|
||||
c:directionTextUp="^"
|
||||
tools:ignore="HardcodedText" />
|
34
app/src/main/res/layout/cpp_app_button_percent.xml
Normal file
34
app/src/main/res/layout/cpp_app_button_percent.xml
Normal file
@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
~ Copyright 2013 serso aka se.solovyev
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
~
|
||||
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
~ Contact details
|
||||
~
|
||||
~ Email: se.solovyev@gmail.com
|
||||
~ Site: http://se.solovyev.org
|
||||
-->
|
||||
|
||||
<org.solovyev.android.views.dragbutton.DirectionDragButton
|
||||
a:id="@id/cpp_button_percent"
|
||||
style="?attr/cpp_button_style_digit"
|
||||
xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
a:text="%"
|
||||
app:directionTextDown="^2"
|
||||
app:directionTextUp="^"
|
||||
tools:ignore="HardcodedText" />
|
@ -30,6 +30,6 @@
|
||||
style="?attr/cpp_button_style_digit"
|
||||
a:text="( )"
|
||||
c:directionTextDown=")"
|
||||
c:directionTextLeft="(.)"
|
||||
c:directionTextLeft="(…)"
|
||||
c:directionTextUp="("
|
||||
tools:ignore="HardcodedText" />
|
@ -30,5 +30,6 @@
|
||||
style="?attr/cpp_button_style_control"
|
||||
a:text="@string/cpp_kb_variables"
|
||||
a:textStyle="italic"
|
||||
c:directionTextUp="+π"
|
||||
c:directionTextDown="e"
|
||||
c:directionTextUp="π"
|
||||
tools:ignore="HardcodedText" />
|
@ -27,6 +27,23 @@
|
||||
a:layout_height="match_parent"
|
||||
a:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
a:layout_width="match_parent"
|
||||
a:layout_height="0dp"
|
||||
a:layout_weight="1">
|
||||
|
||||
<include layout="@layout/cpp_app_button_vars" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_functions" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_percent" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_erase" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_clear" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
a:layout_width="match_parent"
|
||||
a:layout_height="0dp"
|
||||
@ -38,9 +55,10 @@
|
||||
|
||||
<include layout="@layout/cpp_app_button_9" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_multiplication" />
|
||||
<include layout="@layout/cpp_app_button_division" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_memory" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_clear" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -55,9 +73,9 @@
|
||||
|
||||
<include layout="@layout/cpp_app_button_6" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_division" />
|
||||
<include layout="@layout/cpp_app_button_multiplication" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_erase" />
|
||||
<include layout="@layout/cpp_app_button_copy" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -72,23 +90,6 @@
|
||||
|
||||
<include layout="@layout/cpp_app_button_3" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_plus" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_copy" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
a:layout_width="match_parent"
|
||||
a:layout_height="0dp"
|
||||
a:layout_weight="1">
|
||||
|
||||
<include layout="@layout/cpp_app_button_round_brackets" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_0" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_dot" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_minus" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_paste" />
|
||||
@ -101,13 +102,13 @@
|
||||
a:layout_height="0dp"
|
||||
a:layout_weight="1">
|
||||
|
||||
<include layout="@layout/cpp_app_button_left" />
|
||||
<include layout="@layout/cpp_app_button_round_brackets" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_right" />
|
||||
<include layout="@layout/cpp_app_button_0" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_vars" />
|
||||
<include layout="@layout/cpp_app_button_dot" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_functions" />
|
||||
<include layout="@layout/cpp_app_button_plus" />
|
||||
|
||||
<include layout="@layout/cpp_app_button_history" />
|
||||
|
||||
|
5
app/src/main/res/values-land/dimens.xml
Normal file
5
app/src/main/res/values-land/dimens.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<item name="cpp_direction_text_scale" format="float" type="dimen">0.45</item>
|
||||
<item name="cpp_direction_text_scale_units" format="float" type="dimen">0.45</item>
|
||||
</resources>
|
@ -60,5 +60,6 @@
|
||||
<color name="grey_900">#212121</color>
|
||||
<color name="grey_950">#101010</color>
|
||||
<color name="grey_800">#424242</color>
|
||||
<color name="grey_850">#313131</color>
|
||||
|
||||
</resources>
|
@ -10,8 +10,8 @@
|
||||
<dimen name="cpp_button_padding">1px</dimen>
|
||||
<dimen name="cpp_direction_text_default_padding">2dp</dimen>
|
||||
<dimen name="cpp_direction_text_min_size">9dp</dimen>
|
||||
<item name="cpp_direction_text_scale" format="float" type="dimen">0.45</item>
|
||||
<item name="cpp_direction_text_scale_units" format="float" type="dimen">0.35</item>
|
||||
<item name="cpp_direction_text_scale" format="float" type="dimen">0.35</item>
|
||||
<item name="cpp_direction_text_scale_units" format="float" type="dimen">0.3</item>
|
||||
<dimen name="cpp_button_corner">1dp</dimen>
|
||||
|
||||
<dimen name="cpp_keyboard_button_direction_text_padding">4dp</dimen>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="cpp_kb_variables" translatable="false">π</string>
|
||||
<string name="cpp_kb_variables" translatable="false">π…</string>
|
||||
<string name="cpp_kb_functions" translatable="false">ƒ</string>
|
||||
<string name="cpp_kb_operators" translatable="false">∂</string>
|
||||
<string name="cpp_kb_undo" translatable="false">↶</string>
|
||||
|
@ -64,13 +64,6 @@
|
||||
a:key="autoOrientation"
|
||||
a:title="@string/cpp_prefs_auto_rotate_screen" />
|
||||
|
||||
|
||||
<android.preference.CheckBoxPreference
|
||||
a:defaultValue="true"
|
||||
a:key="showEqualsButton"
|
||||
a:summary="@string/c_show_equals_button_summary"
|
||||
a:title="@string/c_show_equals_button_title" />
|
||||
|
||||
<android.preference.CheckBoxPreference
|
||||
a:key="gui.keepScreenOn"
|
||||
a:title="@string/cpp_prefs_keep_screen_on" />
|
||||
|
Loading…
Reference in New Issue
Block a user