- UI for EmojiKeyboardView is now loaded async upon creating the
FlorisBoard UI, so it is ready when the user switches to the media
context.
- Other small fixes.
Additional changes:
- Move keyPressSound() and keyPressVibrate() methods from KeyView class
to FlorisBoard for reuse.
- Add shape_rect.xml for a simple rect which can be color tinted.
This step vastly optimizes the layout rendering while switching. It
still jumps around, but the effect has been reduced. Also it has a nice
fade when switching between two same sized Views.
- Source is the official Unicode® Emoji List (emoji-test.txt)
- List is parsed in runtime and UI is built
- Some emojis do not render (bc the device does not support them)
- As of now, emojis can't be inputted
- Support of different skin tones for emojis (the data is successfully
parsed and built, but not ready on UI-side)
- MediaInputManager has also been better organized
- TextInputManager now syncs with the editor and sets the composing
region accordingly to the data in the editor
- The composing feature acts as a foundation for dictionary based
suggestions and spell checking (planned feature)
- Support of CAPS flags, cursor evaluates automatically (except when in
capsLock mode), if it should enable caps or not
- Rewrite the sendKeyPress logic, which is now better organized
- Add updateCursorAnchorInfo and updateSelection methods to
FlorisBoard.EventListener
- Document TextInputManager
Some fixes to SmartbarManager:
- Candidate text is now regular and respects upper/lower case.
- Shows candidates only if isComposingEnabled in TextInputManager is
set, else a number row
- Clicking on a candidate view commits this candidate to the editor
- If a user types fast (s)he will inevitable press two keys at once.
Without multi touch one of the keys will be ignored. With multi
touch all pressed keys will be written. The active key view is always
the view which got the newest pointer.
- KeyboardViewRow and KeyboardView now also do not depend on any styles
defined in styles.xml, only on attributes in themes.xml.
- Add documentation to KeyboardView and KeyboardRowView.
KeyView is now extending the View class instead of AppCompatButton.
This change enables us to do some cool stuff:
- Buttons don't allow an elevation, a simple View does. Keys now have a
shadow around them. (Planned: shadow can be toggled in preferences.)
- Buttons may have some code to help when clicking, but this is not
helpful and actually decreases performance.
- Both the label and the drawable are now drawn manually and thus allow
for more variety. (Planned: indicator if key has some keys hidden in
extended popup.)
- The stupid setCompoundDrawable function of Button has been eliminated:
To get a padding around a drawable set with this function, a helper
drawable, which already includes this padding, had to be used. Now
the drawable is not restricted to this and can be sized and positioned
as wished, which means these helper drawables (key_ic_...xml) can be
deleted.
- In general performance has been improved, the layout now does not
flash for a short period of time when initially switching to a
keyboard layout not yet rendered.
Each KeyView method now has a kdoc comment to help understand what the
code does and what the intentions behind some functions are.
This change is necessary to make room for the implementation of emojis,
gif picker, etc.
This keyboard is now divided into the following parts:
'text' with 'TextInputManager' as controller
'media' with 'MediaInputManager' as controller
Dividing the keyboard into these two parts helps with keeping the
relative simple stuff like entering text from the more complicated
inputting media into application editors. The smartbar will also be a
'text'-only bar, as it serves no purpose for doing anything helpful
while browsing emojis. At its place in the UI will be a search bar to
search for gifs, emojis (by name), etc.
Note, that the manager classes and the 'media' package are not yet
implemented, but in final planning phase.
- Helps with accessing the special character needed (@ for email, / for url, popular TLDs in URLs, ...)
- Prevent candidate suggestions from showing while inputting a password
- Add KeyVariation enum class and JSON adapter
- Add JSON attribute "variation" to declare key variation (optional; default is ALL)
- Key variation within a key:
- ALL = show always, regardless of current global variation setting
- else: only shows when specific global variation is set, see .ime.key.KeyVariation for more details
- Add number row in smartbar, which shows when typing a password
- Add KeyCode URI_COMPONENT_TLD (-255)
- Rename one_handed_button_bg to a more generic name because it is also used outside the one-handed scope
ELI5: When you press on a key and the while holding down move you couldn't escape that key press. Now, if you move to far, it cancels the initial key press and triggers a new one at the location your pointer is currently on. Also works for extended popups.
- The width and height are now both set as a measured dimension rather than in the layoutParams. This reduces unnecessary measurement cycles and vastly improves performance
- The first layout switch (from characters to symbols etc.) is now smooth and does not glitch around
- The special keys in the modifier layout (ENTER, DELETE, VIEW_* (except NUMERIC) and SHIFT are now fixed in width (1.5 * the desired key width)
- Settings proxy for launcher is now an activity-alias and not an Activity
- Settings will be split into Fragments (coming later) insteadof separate Activities
- Add preference for hiding/showing app icon