1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-17 20:08:12 +00:00
trezor-firmware/core/src/trezor/pin.py

49 lines
1.3 KiB
Python
Raw Normal View History

2019-12-09 16:01:04 +00:00
from trezor import ui, utils
if False:
from typing import Any, Optional
def pin_to_int(pin: str) -> int:
2018-07-03 14:20:58 +00:00
return int("1" + pin)
2017-12-15 20:11:46 +00:00
_previous_progress = None # type: Optional[int]
_previous_seconds = None # type: Optional[int]
keepalive_callback = None # type: Any
2019-04-11 10:32:37 +00:00
def show_pin_timeout(seconds: int, progress: int, message: str) -> bool:
2019-04-11 10:32:37 +00:00
global _previous_progress
global _previous_seconds
2019-04-11 10:32:37 +00:00
if callable(keepalive_callback):
keepalive_callback()
2018-02-24 20:02:14 +00:00
if progress == 0:
2019-04-11 10:32:37 +00:00
if progress != _previous_progress:
# avoid overdraw in case of repeated progress calls
ui.display.clear()
_previous_seconds = None
ui.display.text_center(ui.WIDTH // 2, 37, message, ui.BOLD, ui.FG, ui.BG)
2019-12-09 16:01:04 +00:00
if not utils.DISABLE_ANIMATION:
ui.display.loader(progress, False, 0, ui.FG, ui.BG)
if seconds != _previous_seconds:
if seconds == 0:
remaining = "Done"
elif seconds == 1:
remaining = "1 second left"
else:
remaining = "%d seconds left" % seconds
ui.display.bar(0, ui.HEIGHT - 42, ui.WIDTH, 25, ui.BG)
2018-07-03 14:20:58 +00:00
ui.display.text_center(
ui.WIDTH // 2, ui.HEIGHT - 22, remaining, ui.BOLD, ui.FG, ui.BG
2018-07-03 14:20:58 +00:00
)
_previous_seconds = seconds
2019-04-11 10:32:37 +00:00
2019-12-09 16:01:04 +00:00
ui.refresh()
2019-04-11 10:32:37 +00:00
_previous_progress = progress
return False