Add ability to delay destruction of an object in LVGL after the core object has been destructed. This was added for animations to work .
make pop up Screen to allow for easy pushing of pages by wrapping it in a screen.
Use this all in the settings page to launch a fake display settings
This helps with creation and getting values and should be safe since it still keeps lvgl on one thread at a time.
Add OnLvglEvent to UIElement that allows foreasy place for UI Elements to respond to LVGL events .
Add button class that can react to being presssed via a callback function.
Add GetBottom() api to allow easy grabbing of bottom Y coordinate.
use some new stuff in the settings page to sort test it all out.
Create a mutex for UI that will help make it possible to run handlers that update UI elements on seprate threads.
its far from perfect but should hold up for now.
had to make sure the getters properly calculated layout before retrieving values.
Add a Tab class to allow for better control of adding content into the tabs and managing the contents once its in there.
Use setting class to do a quick demo of the OnShow code abilities. This could be useful for things like settings pages that need to load up HW resources when they are shown but then can power them down when they are hidden.
Make Tabview a friend of Base Page to allow it to notify pages that they are hidden or showing.
Implement the notification in Tabview to allow pages to know they are showing.
This will allow for easy creation of "pages" that can be layed out internally and passed to different screens and cleaned up when screens are cleaned up by the screen manager
add set width and height to base elements that allow for easy resizing
Create a settings page and make it red.
Test adding 2 tabs with the Page
this currently does not do anything fantastic on simulator but it sets a strong foundation for managing multiple pages
using new poller class to simplify the battery interface and
downstream usages of battery.
tweaked poller destructor and remove the default constructor
in preference of using a unique pointer
convert simulator to use a std::thread for lvgl Tick api because
the SDL thread sleep was not true to time. (and is simplified the code...)