- The subtype management is done only internally because the default
Android subtypes don't really allow for dynamically added Subtypes.
Additionally the official Android docs recommend against using the
default Subtypes when providing a way to customize the locale/layout
association.
- Subtypes are always a triple: id/locale/layout, where the user can
configure both the locale and the layout in the Settings.
- Fallback subtype if none is specified is English/QWERTY.
- Language switch now shows accordingly to the number of subtypes defined.
- Current language name is shown on SpaceBar.
- PrefHelper.Keyboard now provides methods to easily manipulate the
subtype list and to get the current active subtype.
- Other fixes in KeyView and Looknfeel which get fixed with this commit:
- Key preview may flicker if the pointer is between the screen edge and
the first KeyView of the row, due to a indefinite circle between loose
in interest and giving the interest to the view.
- Cleanup in LooknfeelFragment.kt
- In dark theme, the tab ripple color and scrollbar color where in the
light variant, which made the barely visible on the dark background
- The ABC and DEL key in media context now follows the key press sound
/ vibration setting
- On small screens icons in the tab layout were cut off left and right,
this was happening due to padding issues
- Add kdoc comments to MediaInputManager.kt
- Similar implementation to Android's LatinIME keyboard
- Change inputView property from lateinit var to nullable because it may
happen that a function wants to check the inputView reference before it
is initialized
- Also solves the problem that key popups are clipped on Android Pie (9)
because the IME window now spans across the whole screen and therefore
the clipping won't happen
- 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.