URI: 
       tsimplify android receive - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 6693a70c72dc90ef3610b1826f22159de3aa9b21
   DIR parent f6280c4e239558493562f63dd458a48f07e77f62
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Wed, 25 Feb 2015 15:41:27 +0100
       
       simplify android receive
       
       Diffstat:
         M gui/android.py                      |     147 ++++++++++++++++---------------
       
       1 file changed, 78 insertions(+), 69 deletions(-)
       ---
   DIR diff --git a/gui/android.py b/gui/android.py
       t@@ -69,15 +69,9 @@ def modal_question(q, msg, pos_text = 'OK', neg_text = 'Cancel'):
            return result.get('which') == 'positive'
        
        def edit_label(addr):
       -    v = modal_input('Edit label',None,wallet.labels.get(addr))
       +    v = modal_input('Edit label', None, wallet.labels.get(addr))
            if v is not None:
       -        if v:
       -            wallet.labels[addr] = v
       -        else:
       -            if addr in wallet.labels.keys():
       -                wallet.labels.pop(addr)
       -        wallet.update_tx_history()
       -        wallet.save()
       +        wallet.set_label(addr, v)
                droid.fullSetProperty("labelTextView", "text", v)
        
        def select_from_contacts():
       t@@ -103,23 +97,6 @@ def select_from_contacts():
                return addr
        
        
       -def select_from_addresses():
       -    droid.dialogCreateAlert("Addresses:")
       -    l = []
       -    addresses = wallet.addresses()
       -    for i in range(len(addresses)):
       -        addr = addresses[i]
       -        label = wallet.labels.get(addr,addr)
       -        l.append( label )
       -    droid.dialogSetItems(l)
       -    droid.dialogShow()
       -    response = droid.dialogGetResponse()
       -    result = response.result.get('item')
       -    droid.dialogDismiss()
       -    if result is not None:
       -        addr = addresses[result]
       -        return addr
       -
        
        def protocol_name(p):
            if p == 't': return 'TCP'
       t@@ -234,34 +211,50 @@ def main_layout():
        
        
        
       -def qr_layout(addr):
       -    return make_layout("""
       -
       -     <TextView android:id="@+id/addrTextView" 
       -                android:layout_width="match_parent"
       -                android:layout_height="50" 
       -                android:text="%s"
       -                android:textAppearance="?android:attr/textAppearanceLarge" 
       -                android:gravity="center_vertical|center_horizontal|center">
       -     </TextView>
       -
       -     <ImageView
       -        android:id="@+id/qrView"
       -        android:gravity="center"
       +def qr_layout(addr, amount, message):
       +    addr_view= """
       +     <TextView android:id="@+id/addrTextView"
       +    android:layout_width="match_parent"
       +    android:layout_height="50"
       +    android:text="%s"
       +    android:textAppearance="?android:attr/textAppearanceLarge"
       +    android:gravity="center_vertical|center_horizontal|center">
       +    </TextView>"""%addr
       +    if amount:
       +        amount_view = """
       +        <TextView android:id="@+id/amountTextView"
                android:layout_width="match_parent"
       -        android:layout_height="350"
       -        android:antialias="false"
       -        android:src="file:///sdcard/sl4a/qrcode.bmp" /> 
       -
       -     <TextView android:id="@+id/labelTextView" 
       -                android:layout_width="match_parent"
       -                android:layout_height="50" 
       -                android:text="%s"
       -                android:textAppearance="?android:attr/textAppearanceLarge" 
       -                android:gravity="center_vertical|center_horizontal|center">
       -     </TextView>
       +        android:layout_height="50"
       +        android:text="Amount: %s"
       +        android:textAppearance="?android:attr/textAppearanceLarge"
       +        android:gravity="center_vertical|center_horizontal|center">
       +        </TextView>"""%format_satoshis(amount)
       +    else:
       +        amount_view = ""
       +    if message:
       +        message_view = """
       +        <TextView android:id="@+id/messageTextView"
       +        android:layout_width="match_parent"
       +        android:layout_height="50"
       +        android:text="Message: %s"
       +        android:textAppearance="?android:attr/textAppearanceLarge"
       +        android:gravity="center_vertical|center_horizontal|center">
       +        </TextView>"""%message
       +    else:
       +        message_view = ""
        
       -     """%(addr,wallet.labels.get(addr,'')), True)
       +    return make_layout("""
       +    %s
       +    %s
       +    %s
       +    <ImageView
       +    android:id="@+id/qrView"
       +    android:gravity="center"
       +    android:layout_width="match_parent"
       +    android:layout_height="350"
       +    android:antialias="false"
       +    android:src="file:///sdcard/sl4a/qrcode.bmp" />
       +    """%(addr_view, amount_view, message_view), True)
        
        payto_layout = make_layout("""
        
       t@@ -557,16 +550,14 @@ def main_loop():
        
                    elif out == "receive":
                        global receive_addr
       -                receive_addr = select_from_addresses()
       -                if receive_addr:
       -                    amount = modal_input('Amount', 'Amount you want receive. ', '', "numberDecimal")
       -                    if amount:
       -                        receive_addr = 'bitcoin:%s?amount=%s'%(receive_addr, amount)
       -
       -                if not receive_addr:
       +                domain = wallet.addresses(include_change = False)
       +                for addr in domain:
       +                    if not wallet.history.get(addr):
       +                        receive_addr = addr
       +                        break
       +                else:
                            out = None
        
       -
            return out
                            
        
       t@@ -645,24 +636,43 @@ def payto_loop():
        
        
        receive_addr = ''
       +receive_amount = None
       +receive_message = None
       +
        contact_addr = ''
        recipient = ''
        
        def receive_loop():
       +    global receive_addr, receive_amount, receive_message
       +    print "receive loop"
       +    receive_URI = util.create_URI(receive_addr, receive_amount, receive_message)
       +    make_bitmap(receive_URI)
       +    droid.fullShow(qr_layout(receive_addr, receive_amount, receive_message))
            out = None
            while out is None:
                event = droid.eventWait().result
       -        print "got event", event
       -        if event["name"]=="key":
       +        if not event:
       +            continue
       +
       +        elif event["name"]=="key":
                    if event["data"]["key"] == '4':
                        out = 'main'
        
                elif event["name"]=="clipboard":
       -            droid.setClipboard(receive_addr)
       -            modal_dialog('Address copied to clipboard',receive_addr)
       +            droid.setClipboard(receive_URI)
       +            modal_dialog('URI copied to clipboard', receive_URI)
        
       -        elif event["name"]=="edit":
       -            edit_label(receive_addr)
       +        elif event["name"]=="amount":
       +            amount = modal_input('Amount', 'Amount you want receive (in BTC). ', format_satoshis(receive_amount) if receive_amount else None, "numberDecimal")
       +            if amount is not None:
       +                receive_amount = 100000000 * Decimal(amount) if amount else None
       +                out = 'receive'
       +
       +        elif event["name"]=="message":
       +            message = modal_input('Message', 'Message in your request', receive_message)
       +            if message is not None:
       +                receive_message = str(message)
       +                out = 'receive'
        
            return out
        
       t@@ -857,7 +867,8 @@ def add_menu(s):
                droid.addOptionsMenuItem("Settings","settings",None,"")
            elif s == 'receive':
                droid.addOptionsMenuItem("Copy","clipboard",None,"")
       -        droid.addOptionsMenuItem("Label","edit",None,"")
       +        droid.addOptionsMenuItem("Amount","amount",None,"")
       +        droid.addOptionsMenuItem("Message","message",None,"")
            elif s == 'contacts':
                droid.addOptionsMenuItem("Copy","clipboard",None,"")
                droid.addOptionsMenuItem("Label","edit",None,"")
       t@@ -943,13 +954,11 @@ class ElectrumGui:
                        s = payto_loop()
        
                    elif s == 'receive':
       -                make_bitmap(receive_addr)
       -                droid.fullShow(qr_layout(receive_addr))
                        s = receive_loop()
        
                    elif s == 'contacts':
                        make_bitmap(contact_addr)
       -                droid.fullShow(qr_layout(contact_addr))
       +                droid.fullShow(qr_layout(contact_addr, None, None))
                        s = contacts_loop()
        
                    elif s == 'settings':