1
0

kivy: add screens for invoices and requests, disable contacts

This commit is contained in:
ThomasV
2015-12-10 11:33:58 +01:00
parent 8e7c5a180f
commit 1b0e29d385
5 changed files with 165 additions and 6 deletions

View File

@@ -17,7 +17,7 @@ from kivy.lang import Builder
from kivy.factory import Factory
from electrum.i18n import _
from electrum.util import profiler, parse_URI
from electrum.util import profiler, parse_URI, format_time
from electrum import bitcoin
from electrum.util import timestamp_to_datetime
from electrum.plugins import run_hook
@@ -311,6 +311,46 @@ class ContactsScreen(CScreen):
contact_list.add_widget(ci)
class InvoicesScreen(CScreen):
kvname = 'invoices'
def update(self):
invoices_list = self.screen.ids.invoices_container
invoices_list.clear_widgets()
for pr in self.app.invoices.sorted_list():
ci = Factory.InvoiceItem()
ci.key = pr.get_id()
ci.requestor = pr.get_requestor()
ci.memo = pr.memo
ci.amount = self.app.format_amount(pr.get_amount())
#ci.status = self.invoices.get_status(key)
exp = pr.get_expiration_date()
ci.date = format_time(exp) if exp else _('Never')
invoices_list.add_widget(ci)
class RequestsScreen(CScreen):
kvname = 'requests'
def update(self):
requests_list = self.screen.ids.requests_container
requests_list.clear_widgets()
for req in self.app.wallet.get_sorted_requests(self.app.electrum_config):
address = req['address']
timestamp = req.get('time', 0)
amount = req.get('amount')
expiration = req.get('exp', None)
status = req.get('status')
signature = req.get('sig')
ci = Factory.RequestItem()
ci.address = req['address']
ci.memo = req.get('memo', '')
#ci.status = req.get('status')
ci.amount = self.app.format_amount(amount) if amount else ''
ci.date = format_time(timestamp)
requests_list.add_widget(ci)
class CSpinner(Factory.Spinner):
'''CustomDropDown that allows fading out the dropdown

View File

@@ -0,0 +1,50 @@
<InvoicesLabel@Label>
#color: .305, .309, .309, 1
text_size: self.size
halign: 'left'
valign: 'middle'
<InvoiceItem@BoxLayout>
requestor: ''
memo: ''
amount: ''
status: ''
date: ''
size_hint_y: None
height: '65dp'
padding: dp(12)
spacing: dp(5)
canvas.before:
Color:
rgba: 0.3, 0.3, 0.3, 1
Rectangle:
size: self.size
pos: self.pos
InvoicesLabel:
text: root.requestor
InvoicesLabel:
text: root.memo
InvoicesLabel:
text: root.amount
InvoicesScreen:
name: 'invoices'
on_activate:
if not self.action_view:\
self.action_view = app.root.main_screen.ids.tabs.ids.screen_dashboard.action_view
BoxLayout:
orientation: 'vertical'
spacing: '1dp'
ScrollView:
canvas.before:
Color:
rgba: .8901, .8901, .8901, 0
Rectangle:
size: self.size
pos: self.pos
GridLayout:
cols: 1
id: invoices_container
size_hint_y: None
height: self.minimum_height
spacing: '1dp'

View File

@@ -0,0 +1,53 @@
<InvoicesLabel@Label>
#color: .305, .309, .309, 1
text_size: self.size
halign: 'left'
valign: 'middle'
<RequestItem@BoxLayout>
address: ''
memo: ''
amount: ''
status: ''
date: ''
size_hint_y: None
height: '65dp'
padding: dp(12)
spacing: dp(5)
canvas.before:
Color:
rgba: 0.3, 0.3, 0.3, 1
Rectangle:
size: self.size
pos: self.pos
InvoicesLabel:
text: root.address
font_size: '13dp'
InvoicesLabel:
text: root.memo
InvoicesLabel:
text: root.amount
#InvoicesLabel:
# text: root.status
RequestsScreen:
name: 'requests'
on_activate:
if not self.action_view:\
self.action_view = app.root.main_screen.ids.tabs.ids.screen_dashboard.action_view
BoxLayout:
orientation: 'vertical'
spacing: '1dp'
ScrollView:
canvas.before:
Color:
rgba: .8901, .8901, .8901, 0
Rectangle:
size: self.size
pos: self.pos
GridLayout:
cols: 1
id: requests_container
size_hint_y: None
height: self.minimum_height
spacing: '1dp'