diff --git a/errands/widgets/base/base_page.py b/errands/widgets/base/base_page.py index 6ecc0635..921590ac 100644 --- a/errands/widgets/base/base_page.py +++ b/errands/widgets/base/base_page.py @@ -22,6 +22,7 @@ def __init__(self): Log.debug(f"{self.title} Page: Load") setattr(State, f"{self.page_name}_page", self) self.__build_ui() + self.max_tasks = 50 self.update_ui() # ------ PRIVATE METHODS ------ # @@ -45,6 +46,10 @@ def __build_ui(self): maximum_size=1000, tightening_threshold=300, child=self.task_list ), ) + content.get_vadjustment().connect( + "value-changed", self.on_vadjustment_value_changed + ) + self.status_page.bind_property( "visible", content, @@ -64,6 +69,16 @@ def __build_ui(self): ) ) + def on_vadjustment_value_changed(self, adjustment): + if ( + # Check if the scroll is at the bottom + adjustment.get_value() + adjustment.get_page_size() + >= adjustment.get_upper() + and self.max_tasks < len(self.tasks_data) + ): + self.max_tasks += 10 + self.update_ui() + # ------ PROPERTIES ------ # @property @@ -95,7 +110,7 @@ def update_status(self): def update_ui(self): Log.debug(f"{self.title} Page: Update UI") - tasks = self.tasks_data + tasks = self.tasks_data[: self.max_tasks] tasks_uids: list[str] = [t.uid for t in tasks] widgets_uids: list[str] = [t.uid for t in self.tasks]