- Introduced a new InputView, which notifies the core FlorisBoard when it
has been attached to a window
- Add debug-only logs to some functions to better understand the calling order
of the methods
- MediaInputManager is now a Singleton class too
- TextInputManager now utilises both onCreate() and onCreateInputView()
- Other small fixes in documentation strings
- SmartbarManager is now a Singleton class to avoid multiple instances
- SmartbarView is now separated from SmartbarManager and tells SmartbarManager
that it is the new active SmartbarView (preparation step for dynamic theme
applying)
- SmartbarView now inflates together with the main florisboard layout rather
than being created later on
- QuickActionButtons are now responsive to the SmartbarView height
- Other bug fixes
- Currently only 2 themes are supported light and dark theme
- Ca be selected and previewed in settings
- Improve and extend PrefHelper functionality
- Fix bugs where currentInputConnection may be null but had
not been null-checked before using it
- Improve PrefHelper to be better organized
- Fix crashes that occur when changing orientation
- Fix bug that recyclerView steals focus and tries to
create its own scrollbar
- Settings screen now has a BottomNavigationView as
main navigation
- Home: Place where the user is welcomed and
other stuff like that
- Keyboard: Everything language, layout or text
correction related stuff
- Look & feel: Everything related to key press
sounds and the theme of the keyboard
- Gestures: All gesture (and glide typing)prefs
- Advanced: All other things which have no real
category
- Extended popup now centers if possible
- If there is not enough space available, it will still try to
shift as much characters as possible to achieve a semi-centered
position.
The problem is not the pixel density, but the screen size/screen height
not taken into account by the Android system when converting dp to px.
One idea would be to experiment with the -swXXXdp value folders.
- 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.