1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-22 06:18:07 +00:00

refactor(core/ui): DebugLink swipe for rust layouts

[no changelog]
This commit is contained in:
Martin Milata 2022-05-25 22:31:21 +02:00
parent c9ca7cd544
commit ccf364f1da
4 changed files with 53 additions and 19 deletions

View File

@ -71,18 +71,17 @@ if __debug__:
async def dispatch_debuglink_decision(msg: DebugLinkDecision) -> None: async def dispatch_debuglink_decision(msg: DebugLinkDecision) -> None:
from trezor.enums import DebugButton, DebugSwipeDirection from trezor.enums import DebugButton, DebugSwipeDirection
from trezor.ui import Result from trezor.ui import Result
from trezor.ui.components.common import (
SWIPE_UP,
SWIPE_DOWN,
SWIPE_LEFT,
SWIPE_RIGHT,
)
if UI2: if UI2:
confirm = trezorui2 confirm = trezorui2
class swipe:
SWIPE_UP = 0x01
SWIPE_DOWN = 0x02
SWIPE_LEFT = 0x04
SWIPE_RIGHT = 0x08
else: else:
from trezor.ui.components.tt import confirm, swipe from trezor.ui.components.tt import confirm
if msg.button is not None: if msg.button is not None:
if msg.button == DebugButton.NO: if msg.button == DebugButton.NO:
@ -93,13 +92,13 @@ if __debug__:
await confirm_chan.put(Result(confirm.INFO)) await confirm_chan.put(Result(confirm.INFO))
if msg.swipe is not None: if msg.swipe is not None:
if msg.swipe == DebugSwipeDirection.UP: if msg.swipe == DebugSwipeDirection.UP:
await swipe_chan.put(swipe.SWIPE_UP) await swipe_chan.put(SWIPE_UP)
elif msg.swipe == DebugSwipeDirection.DOWN: elif msg.swipe == DebugSwipeDirection.DOWN:
await swipe_chan.put(swipe.SWIPE_DOWN) await swipe_chan.put(SWIPE_DOWN)
elif msg.swipe == DebugSwipeDirection.LEFT: elif msg.swipe == DebugSwipeDirection.LEFT:
await swipe_chan.put(swipe.SWIPE_LEFT) await swipe_chan.put(SWIPE_LEFT)
elif msg.swipe == DebugSwipeDirection.RIGHT: elif msg.swipe == DebugSwipeDirection.RIGHT:
await swipe_chan.put(swipe.SWIPE_RIGHT) await swipe_chan.put(SWIPE_RIGHT)
if msg.input is not None: if msg.input is not None:
await input_chan.put(Result(msg.input)) await input_chan.put(Result(msg.input))

View File

@ -2,6 +2,12 @@
The components/common module contains code that is used by both components/tt The components/common module contains code that is used by both components/tt
and components/t1. and components/t1.
""" """
from micropython import const
SWIPE_UP = const(0x01)
SWIPE_DOWN = const(0x02)
SWIPE_LEFT = const(0x04)
SWIPE_RIGHT = const(0x08)
def break_path_to_lines(path_str: str, per_line: int) -> list[str]: def break_path_to_lines(path_str: str, per_line: int) -> list[str]:

View File

@ -2,14 +2,11 @@ from micropython import const
from typing import Generator from typing import Generator
from trezor import io, loop, ui from trezor import io, loop, ui
from trezor.ui.components.common import SWIPE_DOWN, SWIPE_LEFT, SWIPE_RIGHT, SWIPE_UP
SWIPE_UP = const(0x01) SWIPE_VERTICAL = SWIPE_UP | SWIPE_DOWN
SWIPE_DOWN = const(0x02) SWIPE_HORIZONTAL = SWIPE_LEFT | SWIPE_RIGHT
SWIPE_LEFT = const(0x04) SWIPE_ALL = SWIPE_VERTICAL | SWIPE_HORIZONTAL
SWIPE_RIGHT = const(0x08)
SWIPE_VERTICAL = const(SWIPE_UP | SWIPE_DOWN)
SWIPE_HORIZONTAL = const(SWIPE_LEFT | SWIPE_RIGHT)
SWIPE_ALL = const(SWIPE_VERTICAL | SWIPE_HORIZONTAL)
_SWIPE_DISTANCE = const(120) _SWIPE_DISTANCE = const(120)
_SWIPE_TRESHOLD = const(30) _SWIPE_TRESHOLD = const(30)

View File

@ -33,6 +33,7 @@ class _RustLayout(ui.Layout):
return ( return (
self.handle_timers(), self.handle_timers(),
self.handle_input_and_rendering(), self.handle_input_and_rendering(),
self.handle_swipe(),
confirm_signal(), confirm_signal(),
input_signal(), input_signal(),
) )
@ -48,6 +49,37 @@ class _RustLayout(ui.Layout):
result = " ".join(result).split("\n") result = " ".join(result).split("\n")
return result return result
async def handle_swipe(self):
from apps.debug import notify_layout_change, swipe_signal
from trezor.ui.components.common import (
SWIPE_UP,
SWIPE_DOWN,
SWIPE_LEFT,
SWIPE_RIGHT,
)
while True:
direction = await swipe_signal()
orig_x = orig_y = 120
off_x, off_y = {
SWIPE_UP: (0, -30),
SWIPE_DOWN: (0, 30),
SWIPE_LEFT: (-30, 0),
SWIPE_RIGHT: (30, 0),
}[direction]
for event, x, y in (
(io.TOUCH_START, orig_x, orig_y),
(io.TOUCH_MOVE, orig_x + 1 * off_x, orig_y + 1 * off_y),
(io.TOUCH_END, orig_x + 2 * off_x, orig_y + 2 * off_y),
):
msg = self.layout.touch_event(event, x, y)
self.layout.paint()
if msg is not None:
raise ui.Result(msg)
notify_layout_change(self)
else: else:
def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: