diff options
Diffstat (limited to 'docs/list_widget.md')
-rw-r--r-- | docs/list_widget.md | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/docs/list_widget.md b/docs/list_widget.md new file mode 100644 index 0000000..b213b17 --- /dev/null +++ b/docs/list_widget.md @@ -0,0 +1,29 @@ +ℹ This widget does not yet exist. This is just a to-do list on how I'd like to implement the widget. + +It hasn't been implemented as it is impossible to place text at arbitrary coordinates with `ss_oled`. See *App API* in todo.md. + +API List widget +==== + +Widget headers along with their source file will be stored in /hal/ui/widget. So `ListWidget` will be under `/hal/ui/widget/list.hpp` and `/hal/ui/widget/list.cpp`. + +There will also be a `ListWidgetElement` class for each list element. + +See the QT list widget class for ideas: https://doc.qt.io/qt-5/qlistwidget.html + +- The list widget will be a class +- The constructor will take a pointer to `app_api`, the widget's top-left x, y coordinates and width, height. +- Styling will be done by the implementation. The only exposed option would be to possibly invert the whole widget colour. +- To add elements to list (methods): + - All return `ListWidgetElement*` + - `element_append(ListWidgetElement*)` + - `element_insert() // insert at specific pos` + - `element_append_list() // add a whole array of elements (struct) to the widget` +- To scroll the widget (methods): + - `scroll() // num of elements to scroll down by (can be negative)` + - `scroll_to(ListWidgetElement* element) // scroll to a specific element` +- To change geometry (methods): + - `geometry(x, y, width, height)` +- To draw (methods): + - `paint()` +- ... |