aboutsummaryrefslogtreecommitdiffstats
path: root/docs/list_widget.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/list_widget.md')
-rw-r--r--docs/list_widget.md29
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()`
+- ...