| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 24811759
Bug: 21960281
Bug: 22047258
No substantive changes.
Reformat to 100 columns.
Correct and/or remove obsolete comments and occasional bits of clearly
dead code.
Better follow coding conventions.
Rename variables for both internal consistency and consistency with
other files. This included a few renamings in Calculator.java
and CalculatorResult.java, and a comment fix in CalculatorResult.java.
Rename public fields per coding convention. Correctly declare more
nested classes static.
Document FIXME issues to be addressed in followup CL. This includes
a careful look at the msd computations. I cannot construct any
failing examples, but I also cannot currently construct a correctness
argument.
Change-Id: I5c67493eeb7730edb4b3ca3ba1cb8b7d2b87dbc2
(cherry picked from commit abe2862bc936dd083b5ba19b68c68ea4cc44b2f6)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 22882700
We did not correctly calculate the extra space we might need to add
a decimal point to a scientific notation results. We also
incorrectly assumed that minus signs are the same width as a
digit. As a workaround we now reserve extra space for the possible
non-digit characters to ensure that a result is never inadvertently
truncated.
Change-Id: I79b499121703cd51bbbf3e1d85b2285a2dd5e025
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 21957088
Shorten timeouts.
We usually do short computations first, so this helps to avoid
starting absurdly big ones.
Check size of result before converting to decimal. If the decimal
conversion is likely to time out anyway, just pretent we timed out.
This turns out to avoid a lot of problems, since BigInteger decimal
conversion is the clear bottleneck for something like 100000!
And its uninterruptible.
Remove the timeout in one case in which we had previously forgotten.
Check for interrupts in a couple of more places in BoundedRational.
One of these caused log(10^100000) to hang for a long time.
One or two trivial cleanups in code that was touched anyway.
Change-Id: I3494a8ed28f681fb26634ecd90042e2f2a8008a8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 19190211
Bug: 19202945
Bug: 21052751
Bug: 19165054
Bug: 22594908
Add TtsSpans for operators that are otherwise misread by TalkBack.
Force correct reading for some individual characters.
This greatly improves Talkback for advanced operators in Calculator.
This is imperfect. There is no guarantee that the strings I'm
using will work in all languages. But they're almost certainly better than
what we have now. And it makes parentheses and factorial usable,
though perhaps a bit verbose.
We also no longer pronounce "sine" as "sin".
Removed some now obsolete TODO comments.
Change-Id: I5236f682be828699e08dca04ee6fa073269964f6
|
|
|
|
|
|
|
|
|
|
| |
Bug: 22481292
This could result in display of an old result.
Factor out code to start a result evaluation.
Change-Id: I651d4386323c0abd7a86176b386072093345a1b1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 21470972
Support pasting of numbers using scientific notation with 'E'. This
is intentionally very restricted to dodge ambiguities with the
constant e. We only accept a scientific notation constant if it is
1) Contained within a single pasted text element.
2) Uses capital 'E' to introduce the exponent.
3) Does not contain an explicit '+' in the exponent.
We do currently use the same notion of 'digit' as elsewhere, i.e.
Character.isDigit(), which might be too general.
For consistency, and to make sure that we can recognize machine
generated output, this also adds a few more aliases for text input
of arithmetic operators.
For consistency, always use 'E' internally for scientific notation as
well.
We ensure that a pasted numeric string is not concatenated with
a pre-existing constant. This is a judgment call, but it means
that pasting a previous calculator result gets similar treatment
whether or not we are still running the same calculator instance.
We support limited editing on exponents. Once an exponent is deleted,
the only way to restore it is via pasting. The 10^x button
produces similar results, though with different operator precedence
behavior.
Change-Id: I2d0f3dceb641cdad327fd3c3540b5eea38030146
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Bug: 21048155
Bug: 19189356
Incrementally announce additions to the formula.
Explicitly announce result after hitting equals.
Announce when display is cleared.
Remove old FIXME comment after a bit more testing.
Change-Id: I836ff6672de3f891888b2724470290c8721d4fcf
|
|/
|
|
|
|
|
|
|
|
| |
Bug: 22208425
Most of the mathematical operators/symbols (e.g. "π") cannot be encoded
using "ISO-8859-1" however they still should be aligned using the
default capital letter height ("H").
Change-Id: I4ca6674de6e6a96b0ce513ecd8acea775f2e7081
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 20650813
This preserves fraction and "with leading digits" displays during
rotation.
It also turns out to easily support copy, which is a useful bonus,
since it was an obvious hole in the UI for the fraction display.
For the "with leading digits" display, this is similar to a
plain display copy, but it allows character-level selection.
Much of the code here was cloned from Justin's.
Change-Id: I4805280fa6a46f06833be0bde9563c3ce04dca45
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 246391
Only ignore trailing BINARY operators when computing instant results.
We used to be much more aggressive.
Also ignore trailing binary operators when the user hits "=".
This makes us consistent with the L design and ensures that instant
results don't turn into errors when the user hits "=".
Change-Id: I260e95d152168b70774330ac95d5bc567cf79b3d
|
|
|
|
|
|
|
|
|
| |
Bug: 20667245
Update calculator code to reflect the fact that CR Errors have
become exceptions, and they are now delcared local to CR.
Change-Id: Ie9c9e10cef2f98a23856aa9e49328ae7ba52c9bc
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Bug: 21471857
Bug: 20819212
End rather than cancel() in-progress animation in the event of user
interaction.
Discard input that interrupted a computation only for delete,
and clear, where it seems to make sense.
Use similar interruption logic for physical keyboard input as for
touch.
Make integer exponentiation more interruptible. This remains
imperfect; the latencies in a single BigInteger multiplication
can be high. Filed b/21957088 to track that.
Clear "instant" result before launching reevaluation. Otherwise the
example from b/21957088 shows incorrect instant results for an
uncomfortably long time as it's being entered.
Correct some of the state maintenance operations in Calculator.java.
The ANIMATE state was not being used correctly.
Remove redundant cancelAll() and onCancelled() calls.
Add an option to cancel without a message. Use it for clear.
Change-Id: Ibab90dca0cb894e7985642f212ff41030f2fc52d
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 22041219
Restore default scrolling position when hitting enter after scrolling
an instant display result.
We could instead preserve the position and fix the display logic to
no longer get confused by a non-default initial position. But this
feels more natural to me.
Change-Id: I43bb936b5bb1b5af7a7befb90fdfc0f745fb7729
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Bug: 21986868
Bug: 21960281
Fix and restructure the formatting and scroll-limit-calculation
code. This code is inherently tricky, and has had more bugs than
we would like to admit to. Use the opportunity to clean up the
code a bit, renaming variables consistently.
The good news is that the code seems to be getting slightly
simpler with each bug fix.
This fixes several separate off-by-one errors related to result
formatting:
The expLen() exponent string length calculation was off by 1
for exact powers of 10.
The dropDigits calculation in the formatting code was off for
negative exponents just shorter than an exact power of 10.
The exponent space calculation for a few results like -1.2*10^-8
was off by one.
For a result like -10^-500 we did not reserve space for the leading
minus sign, since that's not computed until after scrolling.
[Less serious] The ellipses were omitted when we had just barely
scrolled a leading minus sign off the screen. (This only occurred
in exactly one position, which could never be the default one.)
Change-Id: If1bfbbb70a624998be3d996592d129b16aade745
|
|/
|
|
|
| |
Bug: 21756459
Change-Id: Id8889c8a1f7cda255de2eeebedfbdc1fad7634b1
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Bug: 21759654
Previously the number of displayed digits didn't quite match the
number of digits in the normal display, and results with positive
exponents always came out as inexact. This fixes both.
Remove an obsolete FIXME comment.
Change-Id: I9aa0217d7804218c54fe929e59dfbc6bbf880db7
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 20503008
Correctly provide content position information to the ActionMode so
that menues can be better positioned.
Highlight a result that's about to be copied.
Ensure that the end of the current formula becomes visible when
the paste menu appears.
Change-Id: I318985776e59175b827d5089c0ca4978f3a658cb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 21495243
This changes the behavior to be much more compatible with L.
We generally do not allow consecutive binary operators to be inserted.
In the case of a minus operator however, the logic is more complicated.
We do allow a minus after multiplication, division and power.
When the minus is explicitly entered, so the user sees our corrections,
we do not allow a minus after additive operators. In pasted text,
we do.
We no longer reject additions that would result in implicit
multiplications. We do immediately reject binary operators in leading
contexts, e.g. after a left parenthesis, in which they must result in
a syntax error.
Change-Id: I1d35d74335371f6f113808d68a4f293b699d9bd0
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Bug: 21921280
Also some general refactoring of CalculatorText.
Change-Id: If10f7329f1bfb4c2967c1c85f160efe6d3d1390c
|
|/
|
|
|
|
|
|
|
| |
Bug: 21789679
Also adds some tests for digitsRequired(), including one that fails
without this CL.
Change-Id: Ib007e753f90c019c37666d71c1cfd02301dcd360
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 21497671
Fix mChangedValue handling, so that it is only reset after an actual
evaluation, and is set when an expression is "collapsed".
Consistently produce instant results for solitary pre-evaluated
expressions if and only if they involve an abbreviation.
Change-Id: I4e1f824e2353cbe78b1827f3930c72666832cff4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 21474616
Rewrite getShortString() to also look at the least significant digit
information when available, and try to mimic the display formatting
code wherever appropriate. As a result, when the user hits "=",
followed by "+" transitions are now more frequently smooth.
Revise the evaluation heuristics so the we are more aggressive
with the initial evaluation precision, and try harder to discover
the leading digit in a near-zero number. Some of this is necessary
to keep getShortString() happy. This version should also now
guarantee that we are never worse than double precision floating
pointing in displaying very small nonzero numbers. If we display
a number as zero, the old calculator would have, too. (And now
you can scroll to see whether it really is.)
Up the BoundedRational bit limit to improve the chances of identifying
exact results.
In general, the incremental computation cost for operating on
larger BigIntegers appears relatively low, so it makes sense to
trade longer computations for fewer calls.
Change-Id: I33066845b832753c109fcaf27f883b48e7e119d2
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Bug: 21405924
Bug: 21529236
Bug: 21534231
This limits the display of trailing zeroes to the case in which
they avoid the need for scientic notation, and to the case of
results we did not identify as rational. This means that you
can use scrolling as an indicator of whether there may be more
digits.
The old code exhibited some misbehavior around this, the most
serious of which was probably the second bug listed above.
This now uses scientific notation more aggressively for small
numbers (b/21534231).
This patch unfortunately needs to deal with many odd corner cases
to make sure that we stop scrolling at just the right point, before
the first trailing zero appears, even if there are exponents
involved. I tested as many corner cases as I could think of.
And the testing exposed other preexisting bugs.
I do not know of a good way to avoid this without reverting
to the old scroll-through-trailing-zeroes behavior.
This significantly changes the behavior on e.g.
10^30 (Previously allowed scrolling to the decimal point, now is
unscrollable.)
10^-20 (Weird initial display with trailing zeroes; which could not
be reproduced after scrolling.)
It turns out that formatResult() scientific notation formatting
could accidentally extend the input result by 1 or 2 characters.
Based on my testing, the one character case was actually a feature:
Since there was a decimal point in the result the extra ellipsis
space seems to always give us plenty of room. The two character
case whoever sometimes resulted in wrapping, and is fixed here.
The one character case is now official. Ideally we should check
that we actually have enough space; currently I just assume a
single additional character.
Disallow scrolling left of the default position. This seems
more consistent with TextView scrolling and eliminates some
crufty code.
Fixed an off-by-one error in getPreferredPrec, which resulted in
positive results that were one character too short.
Change-Id: I13657377d098055def99e7a173f71f40d361fe3c
|
| |
| |
| |
| |
| | |
Bug: 21706513
Change-Id: I4646cd1d9a2d67e6e8241ecbb5b960b440c458d2
|
| |
| |
| |
| |
| |
| | |
Bug: 20497138
Bug: 20648856
Change-Id: Id71e2c1922447957b61e3c06b205f991f01eea27
|
|/
|
|
|
|
|
|
|
|
|
|
| |
Bug: 18908042
- Hide the descendents of the non-current pad using the
IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS flag.
- Intercept touch events that may be sent to the non-current pad.
- Allow DPAD key events to be handled by the formula TextView so that
it can be scrolled using a hardware keyboard.
Change-Id: Ib92c72f939a6b7469eed060adcc5cefdcfc98666
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 21493470
Add x^2 10^x and e^x functions, to make the recently added INV key
work as expected.
Implement % functionality.
10^x is essentially just macro expansions for now.
% and x^2 need trivial evaluator support to provide reasonable display
syntax.
We decided to add evaluator support for exp() as well.
Add corresponding exp() support to BoundedRational and its tests.
Tiny incidental changes for problems uncovered in the process:
Fix bug in tests/README.txt
Evaluate the constant e only once.
Add one more power test along with the exp() test.
Fix proguard.flags so BRTest runs again.
Change-Id: I26cfcaf6d99aeec11387297cc5586e2ddcab6add
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 20915670
Bug: 21489377
- Adjust font metrics across all supported device configurations to
support font scaling and min touch size requirements.
- Support proper font scaling for non-scrollable results when performing
the evaluate animation.
- Remove restriction for only using 4/5 of the width of the result
display (NOTE: the result's textSize must match the formula's
minTextSize).
- Add AlignedTextView base class to ensure formula/result padding is
based on the displayed text's ascent/baseline.
Change-Id: Id53e9bdc6e699fb05fdf331a6a472ecc170edf38
|
|
|
|
| |
Change-Id: I2db32c54d0ceb3bd055129a08193fb3e65dc0ff3
|
|
|
|
|
|
|
|
|
|
| |
Bug: 7263319
Bug: 20841915
- Switch to using GridLayout instead of custom ViewGroup.
- Added '%' operator button (Note: evaluation support WIP).
Change-Id: I0d07f01fe4224c43e53c916b034362d906bea405
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 21447808
This changes the existing heuristics to compute ahead significantly
more aggressively. In my testing, this typically managed to prevent
blanks from being displayed even during rapid scrolling. We start
the next computation once we get near the end of what we've
currently computed. By the time we get to the end, the new
results are ready.
With this change, we typically compute to nearly 100 digits even
without scrolling, and the amount we compute ahead increases as
we've scrolled further. With the previous asin() CL, that seems to be
fine. I suspect, but have not confirmed, that for this size
BigInteger operations, much of the latency is fixed, e.g. JNI,
overhead, and the number of digits is not yet critical anyway.
This should reduce the total amount of computation, and hence battery
usage, during "extreme scrolling", since the evaluation precision
now increases geometrically.
Update a copyright notice.
Change-Id: If3a162016b8ffbacc872361aaa99c77c7fd578a2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reformat to 100 columns. Use indentation, especially for switch
statements, that matches current coding style.
Update some obsolete comments.
Break a single-line if-statement into 3 lines.
No substantive code changes.
This was requested during review of previous CL for b/21282652, but
factored out into a separate CL.
Change-Id: Id5f319ff2226703b413fb08f265677ce7d4dd205
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Bug: 21282652
Consistently use key labels to internationalize result.
This makes the Farsi locale, and possibly others where we diverge
from the normal digit representation specified by the locale, work
sanely.
It remains unclear whether this divergence is a bug or a feature.
Don't statically initialize mDecimalPt, since it is already initialized
when needed, and may need to be reinitialized with locale changes.
Always recognize ',' as a decimal separator.
Remove mFactChar, since it doesn't seem to buy us anything.
Change-Id: I3f7c413d380e009fc562903dc23475a7d7cd6d0a
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 20562484
Inhibit scrolling past the last nonzero digit when we can identify it.
Increase length of immediate result a bit, to make it closer to the
L calculator. On "=", expand less for scrollable results, more for
short non-scrollable results. This allows us to use larger fonts for
short finite results.
Fix up animation logic when displaying result. The old version was
never quite right, and became more visibly wrong with variable
enlargement. This version is simpler and seems to give much better
results.
This still does not add ellipsis at the right end of a result. But
it is now easily possible to tell whether a result is known finite by
attempting to scroll it. That may be good enough.
Remove some obsolete TODO entries.
Change-Id: I25a842a743e1c27191ca18ac69aa9eef0f0ea9b1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 21131556
If we fall behind, initially use blanks as placeholder characters.
Convert these to the right character (currently a correctly sized
space) during translation.
This avoids log spam by the translation code with minimal complication.
It also seems a bit cleaner.
Add some missing private qualifiers in the same vicinity.
Change-Id: I9c53d74ce2a234c888cee55ba72575c884f18cae
|
|\ |
|
| |
| |
| |
| |
| |
| | |
In preparation for further changes.
Change-Id: I6e2fbc1e1701e6832f1ca3a5272f6bb3e84338e6
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Bug: 20764417
Bug: 20838790
Finish the action mode when we do almost anything else.
We should probably be even more aggressive about terminating it,
and we may eventually want to use a different approach.
But this avoids the crashes, and greatly improves the behavior.
Display copy menu only when there is something to copy.
Fix a couple of bugs introduced by recent instant display overhaul
(one line each):
- Instant display disappeared on rotation.
- It was sometimes still possible to scroll the previous result after
CLR.
Change-Id: I1a91d312358898add1e281aaba116d709b4c92a7
|
|/
|
|
|
| |
Bug: 21052927
Change-Id: I4916d159f3b98966cddae0cb27468df6ea2ffd76
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 20826880
This avoids a null pointer exception in reveal().
This avoids a crash produced by e.g.
2/0<rotate screen><keyboard =>
Change-Id: I651398104992e93137d8dd62523c74b0780d3c1e
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 20877857
Bug: 20815563
- Condensed strings to one string.xml with translatable="false".
- Made functions and digits NOT localized.
- Switched to U+2007 character for unknown digits.
Change-Id: I51a108309ccfa9c40edd6f87f9e052ba7ee25e3a
|
|
|
|
|
|
|
|
|
|
| |
Bug: 20503109
- Open source licenses are now displayed as a standalone Licenses
activity.
- Show/hide result options instead of enabling/disabling them.
Change-Id: I7e1e43ac83d2417b2f59f90e6a1fc3e491c6ddc7
|