Fix client 'settings_toggle' offset computation
This commit is contained in:
@@ -25,32 +25,35 @@ def get_device_settings(firmware: Firmware) -> list[SettingID]:
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def get_setting_per_page(firmware: Firmware) -> int:
|
def get_setting_position(firmware: Firmware, setting_idx: int, per_page: int) -> tuple[int, int]:
|
||||||
if firmware == Firmware.STAX:
|
|
||||||
return 3
|
|
||||||
return 2
|
|
||||||
|
|
||||||
|
|
||||||
def get_setting_position(firmware: Firmware, setting: Union[NavInsID, SettingID]) -> tuple[int, int]:
|
|
||||||
settings_per_page = get_setting_per_page(firmware)
|
|
||||||
if firmware == Firmware.STAX:
|
if firmware == Firmware.STAX:
|
||||||
screen_height = 672 # px
|
screen_height = 672 # px
|
||||||
header_height = 88 # px
|
header_height = 88 # px
|
||||||
footer_height = 92 # px
|
footer_height = 92 # px
|
||||||
option_offset = 350 # px
|
x_offset = 350 # px
|
||||||
else:
|
else:
|
||||||
screen_height = 600 # px
|
screen_height = 600 # px
|
||||||
header_height = 92 # px
|
header_height = 92 # px
|
||||||
footer_height = 97 # px
|
footer_height = 97 # px
|
||||||
option_offset = 420 # px
|
x_offset = 420 # px
|
||||||
usable_height = screen_height - (header_height + footer_height)
|
index_in_page = setting_idx % per_page
|
||||||
setting_height = usable_height // settings_per_page
|
if index_in_page == 0:
|
||||||
index_in_page = get_device_settings(firmware).index(SettingID(setting)) % settings_per_page
|
y_offset = header_height + 10
|
||||||
return option_offset, header_height + (setting_height * index_in_page) + (setting_height // 2)
|
elif per_page == 3:
|
||||||
|
if setting_idx == 1:
|
||||||
|
# 2nd setting over 3: middle of the screen
|
||||||
|
y_offset = screen_height // 2
|
||||||
|
else:
|
||||||
|
# Last setting
|
||||||
|
y_offset = screen_height - footer_height - 10
|
||||||
|
else:
|
||||||
|
# 2 per page, requesting the 2nd one; middle of screen is ok
|
||||||
|
y_offset = screen_height // 2
|
||||||
|
return x_offset, y_offset
|
||||||
|
|
||||||
|
|
||||||
def settings_toggle(firmware: Firmware, nav: Navigator, to_toggle: list[SettingID]):
|
def settings_toggle(firmware: Firmware, nav: Navigator, to_toggle: list[SettingID]):
|
||||||
moves: list[Union[NavIns, NavInsID]] = list()
|
moves: list[Union[NavIns, NavInsID]] = []
|
||||||
settings = get_device_settings(firmware)
|
settings = get_device_settings(firmware)
|
||||||
# Assume the app is on the home page
|
# Assume the app is on the home page
|
||||||
if firmware.is_nano:
|
if firmware.is_nano:
|
||||||
@@ -63,12 +66,12 @@ def settings_toggle(firmware: Firmware, nav: Navigator, to_toggle: list[SettingI
|
|||||||
moves += [NavInsID.BOTH_CLICK] # Back
|
moves += [NavInsID.BOTH_CLICK] # Back
|
||||||
else:
|
else:
|
||||||
moves += [NavInsID.USE_CASE_HOME_SETTINGS]
|
moves += [NavInsID.USE_CASE_HOME_SETTINGS]
|
||||||
settings_per_page = get_setting_per_page(firmware)
|
settings_per_page = 3 if firmware == Firmware.STAX else 2
|
||||||
for setting in settings:
|
for setting in settings:
|
||||||
setting_idx = settings.index(setting)
|
setting_idx = settings.index(setting)
|
||||||
if (setting_idx > 0) and (setting_idx % settings_per_page) == 0:
|
if (setting_idx > 0) and (setting_idx % settings_per_page) == 0:
|
||||||
moves += [NavInsID.USE_CASE_SETTINGS_NEXT]
|
moves += [NavInsID.USE_CASE_SETTINGS_NEXT]
|
||||||
if setting in to_toggle:
|
if setting in to_toggle:
|
||||||
moves += [NavIns(NavInsID.TOUCH, get_setting_position(firmware, setting))]
|
moves += [NavIns(NavInsID.TOUCH, get_setting_position(firmware, setting_idx, settings_per_page))]
|
||||||
moves += [NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT]
|
moves += [NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT]
|
||||||
nav.navigate(moves, screen_change_before_first_instruction=False)
|
nav.navigate(moves, screen_change_before_first_instruction=False)
|
||||||
|
|||||||
Reference in New Issue
Block a user