-
I gave it a spin! A video of me navigating the watch with presses of the physical buton, then using Quick launch, and doing some other stuff, is attached.
It's a bit inconsistent with it sometimes displaying 'load' message, sometimes 'fastload' message and sometimes no message box. The most consistently inconsistent (😛) thing with regard to this is when I go back and forth between clock and launcher using the Quick launch app for swipes.
I also noticed that if I had 'Widget editor' installed the widgets would not be rendered graphically, but could be pressed (e.g. back button).
Used both fastload helper and widgetupdate.
Every widget that changes it's width during draw needs to schedule a redraw. This seems somewhat wasteful since at least with simple timeouts all calls will eventually be executed. The update methods can all be called without needing to schedule additional draws. Drawing in that case only needs to be done if an app actually calls
drawWidgets
.The current state of affairs is at https://github.com/halemmerich/BangleApps/tree/experimental/widgetUpdate and my apploader at https://halemmerich.github.io/BangleApps/
There are now two apps that should work indepent from each other: fastload and widgetupdate
fastload mostly wraps
load
to automatically decide between reboot and fast loading. That keeps the apps a tiny bit simpler. The rest just basically wraps methods to be able to show a different loading screen and add handlingremove
-methods in theE.show*
methods. This will probably stay an app on my apploader for the foreseeable future and I suspect to have missed a lot of edgecases.widgetupdate is a bit more interesting as it handles the hiding of widgets (including wrapping touch,drag and swipe handlers) as well as setting a correct appRect and detection of an app loading widgets or not. That should work for all apps without changes in the app. This also does essentially the same thing for the drawing as the newest
widget_utils
module does but at widget loading time. Newly available methods areBangle.updateWidgets()
andBangle.hideWidgets()
.There also is a small modification in bootloader which adds
Bangle.showClock
. That is used inwidclose
andlaunch
to get the clock loaded while beeing able to be modified byfastload
if installed. Essentially this prevents using eval there, which can not be overriden to modify its behaviour. It always calls load, which is then optionally overriden byfastload
with the eval approach depending on the existence ofBangle.uiRemove
.Maybe some of the widget handling could be integrated into the firmware to fix the current bad behaviour with regard to Bangle.CLOCK changes.
Alternatively the fast loading using
eval
from clock to launcher could be reverted to get the widgets working like they were before and then optionally reinstated by installingfastload
and/orwidgetupdate
. That would however mean implementing remove handlers in watchfaces/apps and update methods in widgets that are not used if those two apps are not installed.TL;DR: To try it out install bleeding edge firmware, install fastload and widgetupdate ,update everything my apploader has newer versions of and probably expect bugs (especially messages is currently practically not tested at all) :)