Commit graph

137 commits

Author SHA1 Message Date
MatthewColvin
af7abe115f adds some code to ensure onShow and onHide are called properly. 2023-10-10 13:36:32 -05:00
MatthewColvin
68695b4665 add label widget and text styling
setter and getter

Generally working on getting the Display Settings page and pop up screen working well
2023-10-09 21:22:33 -05:00
MatthewColvin
dface01a40 Add Slider Class
Add brightness slider to the display settings class.
2023-10-08 20:23:01 -05:00
MatthewColvin
615bcd1fde Make sure screen manager and other screens are properly calling onShow and onHide. 2023-10-08 19:36:20 -05:00
MatthewColvin
a8c14d2b6f convert tab view to use onEvent to handle events instead of the manual registration.
remove padding from base page.
2023-10-08 17:20:51 -05:00
MatthewColvin
dc5ad76994 Add helper class that make set/get borders padding and Outline
Add Colors Header to have a place to access colors for consistency

use some of this new functionality in pages and screens.
2023-10-08 16:48:03 -05:00
MatthewColvin
7b7045f62b convert Screen manager to use vector to allow popper of screen to use the Page.
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
2023-10-08 12:32:59 -05:00
MatthewColvin
f9dd87fbe7 push Display settings page on a tem button press 2023-10-07 19:54:05 -05:00
MatthewColvin
235d8e043f Convert Lvgl resource manager to recursive mutex to allow re locking in thread.
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.
2023-10-06 22:11:15 -05:00
MatthewColvin
a11b78c540 boiler plate code for Pop up Screen to UI to allow for quick way to launch pages.
This will be huge for RAM saving as the page will de alloc when closed.
2023-10-06 14:25:05 -05:00
MatthewColvin
6343a48be1 Add align to api to UIElement
fix settings page bug where silder were not getting correct Y value set
2023-10-06 13:19:11 -05:00
MatthewColvin
4a5c83c8b9 fully implement Key press handeling in HAL for esp32 hardware and switch hardware to use the refactored UI
make UI add widgets on button presses as a demo
2023-10-05 09:53:07 -05:00
MatthewColvin
7434f0b4da add initial Key press implementation for hardware next is to actually spin up something to queue and handle key events 2023-10-04 11:42:45 -05:00
MatthewColvin
a19e84ee80 convert single LvglMutex into a Lvgl resource manager that will allow for easy multi threaded use of Lvgl through program. 2023-10-03 20:40:17 -05:00
MatthewColvin
94d75fa4d5 Make Key press sim use SDL event watcher for key event grabbing.
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.
2023-10-02 20:41:42 -05:00
MatthewColvin
3bd2b1a98a propigate key events around UI
use key events to add and remove sliders from settings as example
2023-10-01 18:53:25 -05:00
MatthewColvin
a44e92ea5d Add boiler plate Key Handling Into the UI code for UI elements 2023-09-29 16:03:51 -05:00
MatthewColvin
160114f54c move from constructing keypress abstract with handler into setting the handler so that it can be set by the UI. 2023-09-29 15:27:54 -05:00
MatthewColvin
5ed9fcc3d0 remove dead HardwareInterface file likely from a bad merge. 2023-09-29 11:53:27 -05:00
MatthewColvin
414f711373 Add KeyPress Abstract and a KeyPress Simulator
as beginning stages for forwarding key events to the UI.
2023-09-29 11:52:48 -05:00
Matthew Colvin
0796176a0e Add Getters and setters for X and Y values
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.
2023-09-23 01:06:06 -05:00
Matthew Colvin
7c089e395a Add an Helper in UIElement that converts lvgl object into UIElements or children via a static cast.
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.
2023-09-22 23:36:25 -05:00
Matthew Colvin
1cc65594a9 Added concept of Background Screen that allows for construction of pages before knowing the final parent.
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
2023-09-22 19:59:24 -05:00
MatthewColvin
7fd53ef2f8 switching computers so just commiting 2023-09-21 19:31:51 -05:00
MatthewColvin
f5b7b7bc5f Merge remote-tracking branch 'upstream/abstraction' into UIRefactor 2023-09-17 19:45:03 -05:00
Paul Hortiatis
59897369ec
Fixing settings in the abstraction branch (#39)
* Fixing settings

* updating the simulator
2023-09-17 12:14:39 +02:00
MatthewColvin
dfbfd7a6a8 Add visiblity API for UIElements
Add ability for Screen Manager to display screens
and retain others underneath in a stack fasion.
2023-09-16 21:43:07 -05:00
MatthewColvin
52cb2e7ce2 Add background color setter in UIElement
Use main to spawn refacoredBasic UI
Start using new screen manager and
screen concepts
2023-09-16 16:44:15 -05:00
MatthewColvin
6a4aa9a35c Add an elements IDs class to allow for a way to determine what an object is. 2023-09-16 16:14:24 -05:00
MatthewColvin
1458aa7992 clang format code 2023-09-16 15:34:16 -05:00
MatthewColvin
91d7c9fffc put old UI in UI::Basic namespace 2023-09-16 15:24:48 -05:00
MatthewColvin
f5ba2e9b84 Add base UIElement class and extend widget and screen 2023-09-16 15:13:23 -05:00
MatthewColvin
5cb4c1408d flushed out the Base screen and widget classes a bit more 2023-09-16 14:46:59 -05:00
MatthewColvin
64a868a907 rename UIAbstract to UIBase and extend basic UI from it 2023-09-16 14:19:12 -05:00
MatthewColvin
40052d31b7 add base classes for screens and widgets
along with screen manager to allow place to manage multiple screens
2023-09-16 13:07:14 -05:00
MatthewColvin
5c6008c491 Add UI abstract and move some files into a basic folder 2023-09-16 12:45:12 -05:00
MatthewColvin
d37a587c5c move task handler to UI class out of main 2023-09-16 12:36:33 -05:00
MatthewColvin
32c4230071 add poller to core folder 2023-09-16 12:31:18 -05:00
Matthew Colvin
6a78c4cfa1
Refine and implement hardware interface (#37) 2023-09-14 06:34:04 +02:00
Matthew Colvin
04936d1245
Merge pull request #3 from obi11235/backlight_fix
Back light fix
2023-09-12 13:09:54 -05:00
Paul Hortiatis
8f84423f7e
Remove dead code 2023-09-12 12:02:53 -04:00
Matthew Colvin
9fb98ee531
Merge pull request #2 from obi11235/wifi_fix
fixing issue when wifi connects but no connection was requested
2023-09-12 10:11:15 -05:00
Paul Hortiatis
f8ed2efacb
Cleanup 2023-09-12 10:10:21 -04:00
paul
6467c70f56 Merge branch 'wifi_fix' into backlight_fix 2023-09-12 00:04:19 -04:00
paul
94de4d165e enabling connecting to wifi 2023-09-12 00:03:52 -04:00
paul
2adff0f1af fix backlight 2023-09-11 23:56:33 -04:00
paul
db75db33d8 fixing issue when wifi connects but no connection was requested 2023-09-11 21:27:23 -04:00
MatthewColvin
11d4e8d7e5 Merge remote-tracking branch 'upstream/abstraction' into RefineAndImplementHardwareInterface 2023-09-09 22:38:48 -04:00
MatthewColvin
b03bfc3d03 Merge remote-tracking branch 'upstream/main' into RefineAndImplementHardwareInterface 2023-09-09 21:56:42 -04:00
MatthewColvin
6747c40df3 Fix bug in Display fade code with mutexes 2023-09-09 21:47:36 -04:00