Skip to content

Commit

Permalink
Improve views handling
Browse files Browse the repository at this point in the history
  • Loading branch information
tsterbak committed Feb 13, 2023
1 parent bcd3f52 commit 2798e47
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 23 deletions.
43 changes: 22 additions & 21 deletions openandroidinstaller/openandroidinstaller.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,26 +95,13 @@ def __init__(self, state: AppState):
on_back=self.to_previous_view,
state=self.state,
)
# ordered to allow for pop
self.default_views = [
select_files_view,
requirements_view,
start_view,
welcome_view,
]

# create the install view
self.install_view = InstallView(on_confirm=self.to_next_view, state=self.state)

# create the final success view
self.final_view = SuccessView(state=self.state)

# final default views, ordered to allow to pop
self.final_default_views = [
self.final_view,
self.install_view,
]

# initialize the addon view
self.select_addon_view = AddonsView(
on_confirm=self.to_next_view, state=self.state
Expand All @@ -124,26 +111,40 @@ def __init__(self, state: AppState):
)

# attach some views to the state to modify and reuse later
self.state.add_default_views(views=self.default_views)
# ordered to allow for pop
self.state.add_default_views(
views=[
select_files_view,
requirements_view,
start_view,
welcome_view,
]
)
self.state.add_addon_views(
views=[
self.install_addons_view,
self.select_addon_view,
]
)
self.state.add_final_default_views(views=self.final_default_views)
# final default views, ordered to allow to pop
self.state.add_final_default_views(
views=[
self.final_view,
self.install_view,
]
)

# stack of previous default views for the back-button
self.previous_views: List = []

def build(self):
self.view.controls.append(self.default_views.pop())
self.view.controls.append(self.state.default_views.pop())
return self.view

def to_previous_view(self, e):
"""Method to display the previous view."""
# store the current view
self.default_views.append(self.view.controls[-1])
self.state.default_views.append(self.view.controls[-1])
# clear the current view
self.view.controls = []
# retrieve the new view and update
Expand All @@ -158,8 +159,8 @@ def to_next_view(self, e):
# remove all elements from column view
self.view.controls = []
# if there are default views left, display them first
if self.default_views:
self.view.controls.append(self.default_views.pop())
if self.state.default_views:
self.view.controls.append(self.state.default_views.pop())
elif self.state.steps:
self.view.controls.append(
StepView(
Expand All @@ -168,9 +169,9 @@ def to_next_view(self, e):
on_confirm=self.to_next_view,
)
)
elif self.final_default_views:
elif self.state.final_default_views:
# here we expect the install view to populate the step views again if necessary
self.view.controls.append(self.final_default_views.pop())
self.view.controls.append(self.state.final_default_views.pop())

# else:
# # display the final view
Expand Down
2 changes: 1 addition & 1 deletion openandroidinstaller/views/install_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def check_addons_switch(e):
if self.install_addons_switch.value:
logger.info("Enable flashing addons.")
# add the addons step here.
self.state.default_views.extend(self.state.addon_views)
self.state.add_default_views(self.state.addon_views)
self.state.install_addons = True
else:
logger.info("Disable flashing addons.")
Expand Down
2 changes: 1 addition & 1 deletion tests/test_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def test_app():
state = page.controls[0].state
state.load_config(device_code="sargo")
state.default_views.extend(state.addon_views)
number_of_steps = 12
number_of_steps = 14
for _ in range(number_of_steps):
page.controls[0].to_next_view(None)
assert "SuccessView" in str(page.controls[0].view.controls[0])

0 comments on commit 2798e47

Please sign in to comment.