+
import android
from interface import WalletSynchronizer
from wallet import Wallet
return host + ':' + port + ':' + p
-def qr_code_layout(addr):
- return """<html>
- <head>
- <title>QR code</title>
- <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
- <script type="text/javascript" src="http://ecdsa.org/jquery.qrcode.min.js"></script>
- <script>
- var address = '%s';
- var droid = new Android();
- var cb = function() {
- droid.eventPost("main", "");
- }
- </script>
- </head>
-
- <body>
- <div id="qrcode"></div>
- <div id="address"></div>
- <script>
- jQuery('#address').html("bitcoin:"+address);
- jQuery('#qrcode').qrcode("bitcoin:"+address);
- </script>
-
- <form onsubmit="cb(); return false;">
- <input type="submit" value="Back" />
- </form>
- </body>
-</html>"""%addr
-
-
-title = """
-"""
-
-def make_layout(s, scrollable):
+
+def make_layout(s, scrollable = False):
content = """
- <TextView android:id="@+id/titleTextView"
- android:layout_width="match_parent"
- android:layout_height="100"
- android:text="Electrum"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:gravity="center"
- android:textColor="0xff0055ff"
- android:textSize="30" >
- </TextView>
+ <ImageView
+ android:id="@+id/imageView1"
+ android:layout_width="match_parent"
+ android:gravity="center"
+ android:layout_height="wrap_content"
+ android:src="file:///sdcard/sl4a/electrum_text_320.png" />
%s """%s
+def qr_layout(addr):
+ return make_layout("""
+ <ImageView
+ android:id="@+id/imageView1"
+ android:gravity="center"
+ android:layout_width="350"
+ android:layout_height="350"
+ android:antialias="false"
+ android:src="file:///sdcard/sl4a/qrcode.bmp" />
+
+ <TextView android:id="@+id/addrTextView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="%s"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ android:gravity="left">
+ </TextView>
+ """%addr)
+
payto_layout = make_layout("""
<TextView android:id="@+id/recipientTextView"
</TableLayout>"""% rows
return output
+
def set_history_layout(n):
values = get_history_values(n)
i = 0
droid.fullSetProperty("hl_%d_col2"%i,"text", b)
droid.fullSetProperty("hl_%d_col3"%i,"text", c)
droid.fullSetProperty("hl_%d_col4"%i,"text", d)
-
i += 1
while out is None:
event = droid.eventWait().result
print "got event", event
- out = 'main'
+ if event["name"]=="key":
+ if event["data"]["key"] == '4':
+ out = 'main'
+
return out
def contacts_loop():
while out is None:
event = droid.eventWait().result
print "got event", event
- out = 'main'
+ if event["name"]=="key":
+ if event["data"]["key"] == '4':
+ out = 'main'
+
return out
droid.addOptionsMenuItem("Password","password",None,"")
droid.addOptionsMenuItem("Seed","seed",None,"")
-
-
+def make_bitmap(addr):
+ # fixme: this is highly innefficient
+ droid.dialogCreateSpinnerProgress("please wait")
+ droid.dialogShow()
+ import pyqrnative, bmp
+ qr = pyqrnative.QRCode(4, pyqrnative.QRErrorCorrectLevel.H)
+ qr.addData(addr)
+ qr.make()
+ k = qr.getModuleCount()
+ bitmap = bmp.BitMap( 350, 350 )
+ print len(bitmap.bitarray)
+ bitmap.bitarray = []
+ assert k == 33
+
+ for r in range(35):
+ tmparray = [ 0 ] * 350
+
+ if 0 < r < 34:
+ for c in range(k):
+ if qr.isDark(r-1, c):
+ tmparray[ (1+c)*10:(1+c)*10 + 10] = [1]*10
+
+ for i in range(10):
+ bitmap.bitarray.append( tmparray[:] )
+
+ bitmap.saveFile( "/sdcard/sl4a/qrcode.bmp" )
+ droid.dialogDismiss()
+
while True:
add_menu(s)
if s == 'main':
droid.fullShow(main_layout())
s = main_loop()
- droid.fullDismiss()
+ #droid.fullDismiss()
elif s == 'send':
droid.fullShow(payto_layout)
s = payto_loop()
- droid.fullDismiss()
+ #droid.fullDismiss()
elif s == 'receive':
- f = open('/sdcard/sl4a/scripts/recv.html',"w")
- f.write(qr_code_layout(receive_addr))
- f.close()
- wvs = droid.webViewShow("file:///sdcard/sl4a/scripts/recv.html")
+ make_bitmap(receive_addr)
+ droid.fullShow(qr_layout(receive_addr))
s = receive_loop()
elif s == 'contacts':
- f = open('/sdcard/sl4a/scripts/recv.html',"w")
- f.write(qr_code_layout(contact_addr))
- f.close()
- droid.webViewShow("file:///sdcard/sl4a/scripts/recv.html")
+ make_bitmap(contact_addr)
+ droid.fullShow(qr_layout(contact_addr))
s = contacts_loop()
elif s == 'settings':
droid.fullShow(settings_layout)
s = settings_loop()
- droid.fullDismiss()
+ #droid.fullDismiss()
else:
break