the change to logging to remove any private dependencies and use
broadcast intents to VoiceSearch instead.
I have audited this code and it appears good to go for open-source,
but would appreciate a second pair of eyes.
Still to do after submitting this CL:
* Reintroduce Amith's memory leak fix (37557) which was the only CL
added to LatinIME since the last merge over to the private copy.
* Make some changes to allow LatinIME to work without voice search
installed. Currently I believe it will show the mic but fail if
you press it. We need to base the visibility on the mic on the
availability of the service.
* Fix this code to use the new Gservices framework, it's still trying
to use the old one.
New feature to enable fast switching between input languages for
multilingual users. Keyboard settings lets you select a bunch of
languages to switch between from the Latin IME.
Use the Globe icon to toggle between languages.
Needs more work and some layout changes in specialized keyboards.
Also added a Russian keyboard (needs some pixel TLC at the right edge).
Merge commit '5b63c38d1fc9e42348a8a90edf8dce6103f72864' into eclair-mr2
* commit '5b63c38d1fc9e42348a8a90edf8dce6103f72864':
Fix 2306814: Too aggressive suggesting names from my contacts list.
When there is more than one instance of a name in the Contacts, it
gets a very high weightage and can override corrections for very
high frequency words such as "the".
This fix prevents multiple occurences from increasing the frequency
of a contact and also from bumping it above 255, which is the frequency
of "the", "is", etc.
There was a delayed changing of keyboard to lowercase after typing
a shifted letter that was triggering after the user pressed shift
again. Removed the delayed message when user hits shift.
Comparisons were always happening with lowercase version of the typed
word, which wouldn't match the uppercase word in the dictionary, so it
became an unrecognized word when typed in full. Highlight was then going
to the next word in the list.
Fix compares the lowercase and uppercase versions of the word for
validity.
Merge from eclair-mr2
Comparisons were always happening with lowercase version of the typed
word, which wouldn't match the uppercase word in the dictionary, so it
became an unrecognized word when typed in full. Highlight was then going
to the next word in the list.
Fix compares the lowercase and uppercase versions of the word for
validity.
I think the cause for this is the Contacts database being updated. This
causes the keyboard to reload the contacts once every 30 minutes. Since it
loads it synchronously, it affects people with several thousand contacts.
Although in my tests, with 3000 contacts, the delay was only 600ms, I've
had several reports from long-time googlers about this problem, so I'm
switching to loading the contacts asynchronously in a background thread.
Also fix a potential problem with capitalizing "i" if a contact has "i" as
one of the names.
This is caused by a delay in changing the shift state for performance reasons.
The delay was too long, causing multiple characters to be in shifted state when
typing fast (300ms interval).
Fix removes the optimization for the forward typing case. Doesn't affect the
backspace long-press optimization.
Triage: Hiroshi
Dr. No: mcleron
Contacts dictionary code was being triggered too frequently during sync and
during presence updates and this seems expensive for accounts with a lot of
contacts.
Throttling the contacts read to every 30 minutes.
Sometimes the keyboard is getting confused about it's width when switching
between hard keyboard open and close state and portrait-forced home. Force
creation of keyboard layouts after a configuration change to fix the
inconsistent state.
Don't force create when just switching between input fields, too expensive.
Also fixes the problem of keyboard not changing layout after a locale change,
unless there's an orientation change.
The KeyboardSwitcher was remembering state from a previous edittext
where the user was in symbols mode and applying the switch code
when user hits space in the new edittext for the first time.
Make sure to reset the state when a new keyboard mode is requested.
Also make sure that we don't switch from symbols to alphabet keyboard
when editing in a number/datetime field and hitting space.
Increase key height in portrait.
Increase spacebar width and reduce punctuation width.
Increase vertical target area for spacebar to avoid accidentally
hitting "V" and "B".
Increase height of candidate strip.
Makes the user/contacts dictionary lookup faster. This is necessary because
there's more in these dictionaries now and it's written in Java.
Fix an auto-caps issue when moving the cursor. And do it a little lazily.
Fixed a bug that was causing user dictionary words to get a much
higher weightage than the main dictionary.
Don't auto-correct if the typed word has more than one uppercase letter.
Also, delay applying shift state to the keyboard so that fast backspaces are not interrupted by the
time taken to render the shifted/unshifted keyboard.
Show ellipsis on the ?123 key
First pass at automatically adding new words that the user types and deliberately
accepts.
After typing the word 4 times, the word gets promoted to being valid.
After typing the word 7 times, the word gets added into the UserDictionary and can
be removed from the UserDictionary Settings UI.
Also add a second row of symbols to the period popup.
If the number of keys picked from proximity is too large, prune out
the subtree. Otherwise you get vastly unrelated suggestions.
Fix a bug introduced with the missing_chars checkin.