From c34ee98731b25e1f60b999a7a1369b483a6a564b Mon Sep 17 00:00:00 2001 From: Peter Jensen Date: Mon, 12 Feb 2018 16:42:03 +0100 Subject: [PATCH] src/apps/wallet/get_address: update receive dialog --- src/apps/wallet/get_address.py | 32 +++++++++++++++++++++++++------- src/trezor/ui/confirm.py | 8 ++++---- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/apps/wallet/get_address.py b/src/apps/wallet/get_address.py index f95a6607a..eb6f6e04e 100644 --- a/src/apps/wallet/get_address.py +++ b/src/apps/wallet/get_address.py @@ -1,3 +1,4 @@ +from micropython import const from trezor import wire, ui @@ -16,11 +17,14 @@ async def layout_get_address(ctx, msg): coin = coins.by_name(coin_name) node = await seed.derive_node(ctx, address_n) - address = addresses.get_address(msg.script_type, coin, node) if msg.show_display: - await _show_address(ctx, address) + while True: + if await _show_address(ctx, address): + break + if await _show_qr(ctx, address): + break return Address(address=address) @@ -28,15 +32,29 @@ async def layout_get_address(ctx, msg): async def _show_address(ctx, address): from trezor.messages.ButtonRequestType import Address from trezor.ui.text import Text - from trezor.ui.qr import Qr from trezor.ui.container import Container - from ..common.confirm import require_confirm + from ..common.confirm import confirm lines = _split_address(address) + content = Container(Text('Confirm address', ui.ICON_RESET, ui.MONO, *lines)) + return await confirm(ctx, content, code=Address, cancel='QR', cancel_style=ui.BTN_KEY) + + +async def _show_qr(ctx, address): + from trezor.messages.ButtonRequestType import Address + from trezor.ui.text import Text + from trezor.ui.qr import Qr + from trezor.ui.container import Container + from ..common.confirm import confirm + + qr_x = const(120) + qr_y = const(115) + qr_coef = const(4) + content = Container( - Qr(address, (120, 135), 3), - Text('Confirm address', ui.ICON_RESET, ui.MONO, *lines)) - await require_confirm(ctx, content, code=Address) + Qr(address, (qr_x, qr_y), qr_coef), + Text('Confirm address', ui.ICON_RESET, ui.MONO)) + return await confirm(ctx, content, code=Address, cancel='Address', cancel_style=ui.BTN_KEY) def _split_address(address): diff --git a/src/trezor/ui/confirm.py b/src/trezor/ui/confirm.py index 5d768274d..7f9e038ec 100644 --- a/src/trezor/ui/confirm.py +++ b/src/trezor/ui/confirm.py @@ -12,16 +12,16 @@ DEFAULT_CANCEL = res.load(ui.ICON_CLEAR) class ConfirmDialog(Widget): - def __init__(self, content, confirm=DEFAULT_CONFIRM, cancel=DEFAULT_CANCEL): + def __init__(self, content, confirm=DEFAULT_CONFIRM, cancel=DEFAULT_CANCEL, confirm_style=ui.BTN_CONFIRM, cancel_style=ui.BTN_CANCEL): self.content = content if cancel is not None: self.confirm = Button( - ui.grid(9, n_x=2), confirm, style=ui.BTN_CONFIRM) + ui.grid(9, n_x=2), confirm, style=confirm_style) self.cancel = Button( - ui.grid(8, n_x=2), cancel, style=ui.BTN_CANCEL) + ui.grid(8, n_x=2), cancel, style=cancel_style) else: self.confirm = Button( - ui.grid(4, n_x=1), confirm, style=ui.BTN_CONFIRM) + ui.grid(4, n_x=1), confirm, style=confirm_style) self.cancel = None def render(self):