mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-23 07:58:09 +00:00
src/apps/homescreen: rework backlight animations
This commit is contained in:
parent
b659f1b29c
commit
0592cfe356
@ -9,15 +9,7 @@ async def swipe_to_rotate():
|
|||||||
ui.display.orientation(degrees(swipe))
|
ui.display.orientation(degrees(swipe))
|
||||||
|
|
||||||
|
|
||||||
async def dim_screen():
|
def display_homescreen():
|
||||||
await loop.sleep(5 * 1000000)
|
|
||||||
await ui.backlight_slide(ui.BACKLIGHT_DIM)
|
|
||||||
while True:
|
|
||||||
await loop.sleep(10000000)
|
|
||||||
|
|
||||||
|
|
||||||
@ui.layout
|
|
||||||
async def display_homescreen():
|
|
||||||
from apps.common import storage
|
from apps.common import storage
|
||||||
|
|
||||||
if not storage.is_initialized():
|
if not storage.is_initialized():
|
||||||
@ -34,10 +26,11 @@ async def display_homescreen():
|
|||||||
ui.display.avatar((ui.SCREEN - 144) // 2, (ui.SCREEN - 144) // 2 - 10, image, ui.WHITE, ui.BLACK)
|
ui.display.avatar((ui.SCREEN - 144) // 2, (ui.SCREEN - 144) // 2 - 10, image, ui.WHITE, ui.BLACK)
|
||||||
ui.display.text_center(ui.SCREEN // 2, ui.SCREEN - 20, label, ui.BOLD, ui.FG, ui.BG)
|
ui.display.text_center(ui.SCREEN // 2, ui.SCREEN - 20, label, ui.BOLD, ui.FG, ui.BG)
|
||||||
|
|
||||||
await dim_screen()
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
@unimport
|
||||||
async def layout_homescreen():
|
async def layout_homescreen():
|
||||||
while True:
|
while True:
|
||||||
await loop.wait(swipe_to_rotate(), display_homescreen())
|
await ui.backlight_slide(ui.BACKLIGHT_DIM)
|
||||||
|
display_homescreen()
|
||||||
|
await ui.backlight_slide(ui.BACKLIGHT_NORMAL)
|
||||||
|
await swipe_to_rotate()
|
||||||
|
@ -9,6 +9,7 @@ from trezorui import Display
|
|||||||
from trezor import io
|
from trezor import io
|
||||||
from trezor import loop
|
from trezor import loop
|
||||||
from trezor import res
|
from trezor import res
|
||||||
|
from trezor import workflow
|
||||||
|
|
||||||
display = Display()
|
display = Display()
|
||||||
|
|
||||||
@ -95,7 +96,7 @@ async def click() -> tuple:
|
|||||||
return pos
|
return pos
|
||||||
|
|
||||||
|
|
||||||
async def backlight_slide(val: int, delay: int=20000, step: int=1):
|
async def backlight_slide(val: int, delay: int=35000, step: int=20):
|
||||||
sleep = loop.sleep(delay)
|
sleep = loop.sleep(delay)
|
||||||
current = display.backlight()
|
current = display.backlight()
|
||||||
for i in range(current, val, -step if current > val else step):
|
for i in range(current, val, -step if current > val else step):
|
||||||
@ -104,17 +105,17 @@ async def backlight_slide(val: int, delay: int=20000, step: int=1):
|
|||||||
|
|
||||||
|
|
||||||
def layout(f):
|
def layout(f):
|
||||||
delay = const(35000) # 35ms
|
|
||||||
step = const(20)
|
|
||||||
|
|
||||||
async def inner(*args, **kwargs):
|
async def inner(*args, **kwargs):
|
||||||
await backlight_slide(BACKLIGHT_DIM, delay, step)
|
await backlight_slide(BACKLIGHT_DIM)
|
||||||
slide = backlight_slide(BACKLIGHT_NORMAL, delay, step)
|
slide = backlight_slide(BACKLIGHT_NORMAL)
|
||||||
try:
|
try:
|
||||||
|
layout = f(*args, **kwargs)
|
||||||
|
workflow.onlayoutstart(layout)
|
||||||
loop.schedule(slide)
|
loop.schedule(slide)
|
||||||
return await f(*args, **kwargs)
|
return await layout
|
||||||
finally:
|
finally:
|
||||||
loop.close(slide)
|
loop.close(slide)
|
||||||
|
workflow.onlayoutclose(layout)
|
||||||
|
|
||||||
return inner
|
return inner
|
||||||
|
|
||||||
|
@ -5,20 +5,16 @@ from trezor import ui
|
|||||||
started = []
|
started = []
|
||||||
default = None
|
default = None
|
||||||
default_handler = None
|
default_handler = None
|
||||||
|
layouts = []
|
||||||
|
|
||||||
|
|
||||||
def onstart(w):
|
def onstart(w):
|
||||||
closedefault()
|
|
||||||
started.append(w)
|
started.append(w)
|
||||||
ui.display.backlight(ui.BACKLIGHT_NORMAL)
|
|
||||||
log.debug(__name__, 'onstart: %s', w)
|
|
||||||
|
|
||||||
|
|
||||||
def onclose(w):
|
def onclose(w):
|
||||||
started.remove(w)
|
started.remove(w)
|
||||||
log.debug(__name__, 'onclose: %s', w)
|
if not started and not layouts and default_handler:
|
||||||
|
|
||||||
if not started and default_handler:
|
|
||||||
startdefault(default_handler)
|
startdefault(default_handler)
|
||||||
|
|
||||||
|
|
||||||
@ -28,7 +24,6 @@ def closedefault():
|
|||||||
if default:
|
if default:
|
||||||
loop.close(default)
|
loop.close(default)
|
||||||
default = None
|
default = None
|
||||||
log.debug(__name__, 'closedefault')
|
|
||||||
|
|
||||||
|
|
||||||
def startdefault(handler):
|
def startdefault(handler):
|
||||||
@ -39,5 +34,12 @@ def startdefault(handler):
|
|||||||
default_handler = handler
|
default_handler = handler
|
||||||
default = handler()
|
default = handler()
|
||||||
loop.schedule(default)
|
loop.schedule(default)
|
||||||
ui.display.backlight(ui.BACKLIGHT_NORMAL)
|
|
||||||
log.debug(__name__, 'startdefault')
|
|
||||||
|
def onlayoutstart(l):
|
||||||
|
closedefault()
|
||||||
|
layouts.append(l)
|
||||||
|
|
||||||
|
|
||||||
|
def onlayoutclose(l):
|
||||||
|
layouts.remove(l)
|
||||||
|
Loading…
Reference in New Issue
Block a user