diff --git a/client/electrum4a.py b/client/electrum4a.py
index 3e8d82443..614adb817 100755
--- a/client/electrum4a.py
+++ b/client/electrum4a.py
@@ -34,51 +34,8 @@ wallet.set_path("/sdcard/electrum.dat")
wallet.read()
-def get_history_layout(n):
- rows = ""
- for line in wallet.get_tx_history()[-n:]:
- v = line['value']
- try:
- dt = datetime.datetime.fromtimestamp( line['timestamp'] )
- if dt.date() == dt.today().date():
- time_str = str( dt.time() )
- else:
- time_str = str( dt.date() )
- except:
- print line['timestamp']
- time_str = 'pending'
- label = line.get('label')
- #if not label: label = line['tx_hash']
- is_default_label = (label == '') or (label is None)
- if is_default_label: label = line['default_label']
- rows += """
-
-
-
-
- """%(time_str, ' '+ label[0:10]+ '... ', format_satoshis(v))
-
-
- output = """
-
- %s
-
-"""% rows
- return output
@@ -98,46 +55,71 @@ def show_addresses():
print response
+title = """
+
+
+"""
def main_layout():
return """
+ android:background="#ff000022">
-
+ android:gravity="left"
+ android:textColor="0xffffffff"
+ android:padding="10"
+ android:textSize="18" >
- %s
-
+ android:gravity="center_vertical|center_horizontal|center">
-
-
-
-
-
+ %s
+
+
+
+
+
+
+
-"""%get_history_layout(10)
+"""%(title, get_history_layout(15))
payto_layout="""
@@ -146,13 +128,9 @@ payto_layout="""
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#ff000000">
+ android:background="#ff000022">
-
+ %s
android:layout_height="wrap_content" android:text="Contacts">
-
-
-
android:layout_height="wrap_content" android:text="Cancel">
-"""
+"""%title
settings_layout = """
@@ -229,6 +204,8 @@ settings_layout = """
android:layout_height="match_parent"
android:background="#ff000000">
+ %s
+
-"""
+"""%title
+def get_history_values(n):
+ values = []
+ h = wallet.get_tx_history()
+ for i in range(n):
+ line = h[-i-1]
+ v = line['value']
+ try:
+ dt = datetime.datetime.fromtimestamp( line['timestamp'] )
+ if dt.date() == dt.today().date():
+ time_str = str( dt.time() )
+ else:
+ time_str = str( dt.date() )
+ conf = 'v'
+
+ except:
+ print line['timestamp']
+ time_str = 'pending'
+ conf = 'o'
+
+ label = line.get('label')
+ #if not label: label = line['tx_hash']
+ is_default_label = (label == '') or (label is None)
+ if is_default_label: label = line['default_label']
+ values.append((conf, ' ' + time_str, ' ' + format_satoshis(v,True), ' ' + label ))
+
+ return values
+
+
+def get_history_layout(n):
+ rows = ""
+ i = 0
+ values = get_history_values(n)
+ for v in values:
+ a,b,c,d = v
+ color = "0xff00ff00" if a == 'v' else "0xffff0000"
+ rows += """
+
+
+
+
+
+ """%(i,a,color,i,b,i,c,i,d)
+ i += 1
+
+ output = """
+
+ %s
+"""% rows
+ return output
+
+def set_history_layout(n):
+ values = get_history_values(n)
+ i = 0
+ for v in values:
+ a,b,c,d = v
+ droid.fullSetProperty("hl_%d_col1"%i,"text", a)
+
+ if a == 'v':
+ droid.fullSetProperty("hl_%d_col1"%i, "textColor","0xff00ff00")
+ else:
+ droid.fullSetProperty("hl_%d_col1"%i, "textColor","0xffff0000")
+
+ 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
+
+
+def update_layout():
+
+ if not wallet.interface.is_connected:
+ text = "Not connected..."
+ elif wallet.blocks == 0:
+ text = "Server not ready"
+ elif not wallet.up_to_date:
+ text = "Synchronizing..."
+ else:
+ c, u = wallet.get_balance()
+ text = "Balance:"+format_satoshis(c)
+ if u : text += '['+ format_satoshis(u,True)+']'
+
+ droid.fullSetProperty("balanceTextView", "text", text)
+
+ if wallet.was_updated and wallet.up_to_date:
+ wallet.was_updated = False
+ set_history_layout(15)
+ droid.vibrate()
-def show_balance():
- c, u = wallet.get_balance()
- droid.fullSetProperty("balanceTextView","text","Balance:"+format_satoshis(c))
def recipient_dialog():
@@ -334,7 +416,7 @@ if not wallet.file_exists:
wallet.seed = str(seed)
wallet.init_mpk( wallet.seed )
- droid.dialogCreateSpinnerProgress("Electrum", "recovering keys")
+ droid.dialogCreateSpinnerProgress("Electrum", "recovering wallet...")
droid.dialogShow()
WalletSynchronizer(wallet,True).start()
wallet.update()
@@ -355,13 +437,7 @@ if not wallet.file_exists:
exit(1)
else:
- droid.dialogCreateSpinnerProgress("Electrum", "synchronizing")
- droid.dialogShow()
WalletSynchronizer(wallet,True).start()
- wallet.update()
- wallet.save()
- droid.dialogDismiss()
- droid.vibrate()
def add_menu():
@@ -373,30 +449,33 @@ add_menu()
def main_loop():
droid.fullShow(main_layout())
- show_balance()
+ update_layout()
out = None
while out is None:
- event = droid.eventWait().result
+ event = droid.eventWait(1000).result # wait for 1 second
+ if not event:
+ update_layout()
+ continue
+
print "got event in main loop", event
if event["name"]=="click":
id=event["data"]["id"]
- if id=="buttonQuit":
- out = 'exit'
- elif id=="buttonSend":
+ if id=="buttonSend":
out = 'payto'
elif id=="buttonReceive":
show_addresses()
- elif id=="buttonQuit":
- out = 'quit'
-
elif event["name"]=="settings":
out = 'settings'
+ elif event["name"]=="key":
+ if event["data"]["key"] == '4':
+ out = 'quit'
+
elif event["name"]=="quit":
out = 'quit'
@@ -456,6 +535,10 @@ def payto_loop():
elif event["name"]=="quit":
out = 'quit'
+ elif event["name"]=="key":
+ if event["data"]["key"] == '4':
+ out = 'main'
+
#elif event["name"]=="screen":
# if event["data"]=="destroy":
# out = 'main'
@@ -464,7 +547,7 @@ def payto_loop():
def history_loop():
- layout = get_history_layout()
+ layout = get_history_layout(15)
droid.fullShow(layout)
out = None
while out is None:
@@ -475,8 +558,7 @@ def history_loop():
if event["data"]["text"] == "OK":
out = 'main'
- elif event["name"] == "key":
- print repr(event["data"]["key"])
+ elif event["name"]=="key":
if event["data"]["key"] == '4':
out = 'main'
@@ -547,7 +629,6 @@ def settings_loop():
out = 'main'
elif event["name"] == "key":
- print repr(event["data"]["key"])
if event["data"]["key"] == '4':
out = 'main'