Skip to content

Commit a2f3621

Browse files
committed
Enable flashing of vendor_boot partition
1 parent dda3aed commit a2f3621

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

openandroidinstaller/app_state.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def __init__(
5252
self.dtbo_path = None
5353
self.vbmeta_path = None
5454
self.super_empty_path = None
55+
self.vendor_boot_path = None
5556

5657
# store views
5758
self.default_views: List = []

openandroidinstaller/views/select_view.py

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ def init_visuals(
106106
self.pick_super_empty_dialog = FilePicker(
107107
on_result=self.pick_super_empty_result
108108
)
109+
self.pick_vendor_boot_dialog = FilePicker(
110+
on_result=self.pick_vendor_boot_result
111+
)
109112

110113
self.selected_image = Text("Selected image: ")
111114
self.selected_recovery = Text("Selected recovery: ")
@@ -118,6 +121,9 @@ def init_visuals(
118121
self.selected_super_empty = Checkbox(
119122
fill_color=colors.RED, value=None, disabled=True, tristate=True
120123
)
124+
self.selected_vendor_boot = Checkbox(
125+
fill_color=colors.RED, value=None, disabled=True, tristate=True
126+
)
121127

122128
# initialize and manage button state.
123129
self.confirm_button = confirm_button(self.on_confirm)
@@ -131,6 +137,7 @@ def init_visuals(
131137
self.pick_dtbo_dialog.on_result = self.enable_button_if_ready
132138
self.pick_vbmeta_dialog.on_result = self.enable_button_if_ready
133139
self.pick_super_empty_dialog.on_result = self.enable_button_if_ready
140+
self.pick_vendor_boot_dialog.on_result = self.enable_button_if_ready
134141
# back button
135142
self.back_button = ElevatedButton(
136143
"Back",
@@ -155,6 +162,7 @@ def build(self):
155162
self.pick_dtbo_dialog,
156163
self.pick_vbmeta_dialog,
157164
self.pick_super_empty_dialog,
165+
self.pick_vendor_boot_dialog,
158166
]
159167
)
160168

@@ -462,6 +470,27 @@ def toggle_additional_image_selection(self):
462470
self.selected_super_empty,
463471
]
464472
),
473+
]
474+
)
475+
if "vendor_boot" in self.state.config.additional_steps:
476+
self.selected_vendor_boot.value = False
477+
additional_image_selection.extend(
478+
[
479+
Row(
480+
[
481+
FilledButton(
482+
"Pick `vendor_boot.img` image",
483+
icon=icons.UPLOAD_FILE,
484+
on_click=lambda _: self.pick_vendor_boot_dialog.pick_files(
485+
allow_multiple=False,
486+
file_type="custom",
487+
allowed_extensions=["img"],
488+
),
489+
expand=True,
490+
),
491+
self.selected_vendor_boot,
492+
]
493+
),
465494
Divider(),
466495
]
467496
)
@@ -600,6 +629,26 @@ def pick_super_empty_result(self, e: FilePickerResultEvent):
600629
# update
601630
self.selected_super_empty.update()
602631

632+
def pick_vendor_boot_result(self, e: FilePickerResultEvent):
633+
path = ", ".join(map(lambda f: f.name, e.files)) if e.files else "Cancelled!"
634+
# update the textfield with the name of the file
635+
if e.files:
636+
# check if the super_empty works with the device and show the filename in different colors accordingly
637+
if path == "vendor_boot.img":
638+
self.selected_vendor_boot.fill_color = colors.GREEN
639+
self.selected_vendor_boot.value = True
640+
self.state.vendor_boot_path = e.files[0].path
641+
logger.info(
642+
f"Selected vendor_boot.img from {self.state.vendor_boot_path}"
643+
)
644+
else:
645+
self.selected_vendor_boot.fill_color = colors.RED
646+
self.selected_vendor_boot.value = False
647+
else:
648+
logger.info("No image selected.")
649+
# update
650+
self.selected_vendor_boot.update()
651+
603652
def enable_button_if_ready(self, e):
604653
"""Enable the confirm button if both files have been selected."""
605654
if (".zip" in self.selected_image.value) and (
@@ -642,6 +691,8 @@ def enable_button_if_ready(self, e):
642691
or "vbmeta" not in self.state.config.additional_steps,
643692
self.selected_super_empty.value
644693
or "super_empty" not in self.state.config.additional_steps,
694+
self.selected_vendor_boot.value
695+
or "vendor_boot" not in self.state.config.additional_steps,
645696
]
646697
):
647698
logger.error(
@@ -693,4 +744,3 @@ def enable_button_if_ready(self, e):
693744
self.right_view.update()
694745
else:
695746
self.confirm_button.disabled = True
696-
# self.continue_eitherway_button.disabled = True

0 commit comments

Comments
 (0)