Fix of the issue that underline appeared under
hours value when setting alarm time with knob
down (alarm disabled) after previous
confirmation of the alarm time.
Fix of the issue that clicking right arrow
in search field caused the focus to be moved
to image on the right, what made inputting
text impossible.
Additionally minor code cleanup.
1. Implement partial refresh.
2. Implement refresh canceling mechanism.
3. Refactor some parts of the gui and display code.
ad 1.
- Detect parts of the screen changed since last update and merge them
into bigger regions. These regions defines parts of the context sent
to the display.
- Refresh the region covering all of the parts since this is the most
time consuming part and the size of the refreshed region doesn't
change the time much.
- Refresh the whole screen if deep refresh is requested and previously
fast refresh was used. This is needed to prevent unwanted artifacts
in some cases.
ad 2.
- Separate display update and refresh logic.
- Divide image display message handling into two handlers, one updating
and other one refreshing the screen.
- Add cancel refresh message and use it to cancel refresh during update.
- Store sum of refresh regions gathered during updates to refresh them
all at once at the end.
- Forward arguments
- Remove unused code
- Remove auto return type when it's not needed
- Add const to member functions
- Use startsWith and endsWith from utils
- Allow instantiation of operators only for specific types
- Caluclate key mask in compile time
Refactored Time widget colon handling to be mapped with used
font. Added contentChange flag and handling to BoxLayout
for dynamic recalculation of child elements.
Each tile in Menu that uses notification dot
is be refreshed. It also solves missing dot
issue of EGD-4129 and lack of sound notification
on incoming text message.
* Timers now are Application thread safe
* Timers now have consistent API independend of Application (no more c style timers)
* Timers can have either: callback or override onTimer() method - this
way we can create more complicated timers or just use existing ones
* gui::Timer added via adapter class GuiTimer to decouple sys::Timer
with gui::Timer
* Fixed race in wrapper
* Updated docs
* fixed using std and cpp_freertos and DataReceivedHandler hidden in Application.hpp
* EGD-3229 [FIX] UTF8 fixed uint32_t range error
* EGD-3229 [util] gui::Item Navigation switch case moved to function
Needed to not copy senslessly NavigationDirection enum switch case
* gui::Item Navigation switch case moved to function
* added NavigationDirection::None enum value
* cleaned up Navigation.hpp/cpp
* EGD-3229 [util] gui: InputEvent - str() for logging added & is...() check methods
* EGD-3229 [util] removed notorious log on unknown glyph
* EGD-3229 [util] InputMode - added is(Mode) method, input Profile added default definition
* is() method addded to check instead of `==` comparison
* added default to Profile instead of `== 0` use
* [FIX] ARM GCC 10.1.0 - build fixed
fixed include in wrong place
* PR style fix
* Review applied
* [EGD-3263] recursive Item::getFocusItem
* [EGD-3263] Bottomr bar store and restore
* [EGD-3263] simplfied display of text input mode
* [EGD-3263] renamed CB names
* [EGD-3263] fixes in store/restore of bottombar
* [EGD-3263] Text::onInput fixes
* [EGD-3236] ranemed store to chache
* [EGD-3263] minor clean up