kivy: disable amount and description buttons if payment request is signed
This commit is contained in:
parent
e297bf81a2
commit
fd0e5739e2
|
@ -179,9 +179,9 @@
|
||||||
<SendReceiveBlueBottom@GridLayout>
|
<SendReceiveBlueBottom@GridLayout>
|
||||||
canvas.before:
|
canvas.before:
|
||||||
Color:
|
Color:
|
||||||
rgba: .238, .585, .878, 1
|
#rgba: .238, .585, .878, 1
|
||||||
|
rgba: 0.192, .498, 0.745, 1
|
||||||
BorderImage:
|
BorderImage:
|
||||||
#border: 9, 9, 9, 9
|
|
||||||
source: 'atlas://gui/kivy/theming/light/card_bottom'
|
source: 'atlas://gui/kivy/theming/light/card_bottom'
|
||||||
size: self.size
|
size: self.size
|
||||||
pos: self.pos
|
pos: self.pos
|
||||||
|
@ -221,7 +221,7 @@
|
||||||
pos: self.pos
|
pos: self.pos
|
||||||
|
|
||||||
<BlueButton@Button>:
|
<BlueButton@Button>:
|
||||||
background_color: .238, .585, .878, 0
|
background_color: 1, .585, .878, 0
|
||||||
halign: 'left'
|
halign: 'left'
|
||||||
text_size: (self.width-10, None)
|
text_size: (self.width-10, None)
|
||||||
size_hint: 0.5, None
|
size_hint: 0.5, None
|
||||||
|
@ -230,7 +230,8 @@
|
||||||
padding: '5dp', '5db'
|
padding: '5dp', '5db'
|
||||||
height: '40dp'
|
height: '40dp'
|
||||||
text_color: self.foreground_color
|
text_color: self.foreground_color
|
||||||
foreground_color: 1, 0, 0, 1
|
disabled_color: 1, 1, 1, 1
|
||||||
|
foreground_color: 1, 1, 1, 1
|
||||||
canvas.before:
|
canvas.before:
|
||||||
Color:
|
Color:
|
||||||
rgba: (0.9, .498, 0.745, 1) if self.state == 'down' else self.background_color
|
rgba: (0.9, .498, 0.745, 1) if self.state == 'down' else self.background_color
|
||||||
|
|
|
@ -216,9 +216,6 @@ class ElectrumWindow(App):
|
||||||
self._trigger_notify_transactions = \
|
self._trigger_notify_transactions = \
|
||||||
Clock.create_trigger(self.notify_transactions, 5)
|
Clock.create_trigger(self.notify_transactions, 5)
|
||||||
|
|
||||||
def do_pay(self, obj):
|
|
||||||
pr = self.invoices.get(obj.key)
|
|
||||||
self.on_pr(pr)
|
|
||||||
|
|
||||||
def on_pr(self, pr):
|
def on_pr(self, pr):
|
||||||
if pr.verify(self.contacts):
|
if pr.verify(self.contacts):
|
||||||
|
|
|
@ -204,13 +204,16 @@ class SendScreen(CScreen):
|
||||||
self.screen.message = ''
|
self.screen.message = ''
|
||||||
self.screen.address = ''
|
self.screen.address = ''
|
||||||
self.payment_request = None
|
self.payment_request = None
|
||||||
|
self.screen.is_pr = False
|
||||||
|
|
||||||
def set_request(self, pr):
|
def set_request(self, pr):
|
||||||
self.payment_request = pr
|
|
||||||
self.screen.address = pr.get_requestor()
|
self.screen.address = pr.get_requestor()
|
||||||
amount = pr.get_amount()
|
amount = pr.get_amount()
|
||||||
self.screen.amount = self.app.format_amount_and_units(amount) if amount else ''
|
self.screen.amount = self.app.format_amount_and_units(amount) if amount else ''
|
||||||
self.screen.message = pr.get_memo()
|
self.screen.message = pr.get_memo()
|
||||||
|
if pr.is_pr():
|
||||||
|
self.screen.is_pr = True
|
||||||
|
self.payment_request = pr
|
||||||
|
|
||||||
def do_save(self):
|
def do_save(self):
|
||||||
if not self.screen.address:
|
if not self.screen.address:
|
||||||
|
@ -439,13 +442,13 @@ class InvoicesScreen(CScreen):
|
||||||
msg = _('This screen shows the list of payment requests that have been sent to you. You may also use it to store contact addresses.')
|
msg = _('This screen shows the list of payment requests that have been sent to you. You may also use it to store contact addresses.')
|
||||||
invoices_list.add_widget(EmptyLabel(text=msg))
|
invoices_list.add_widget(EmptyLabel(text=msg))
|
||||||
|
|
||||||
|
|
||||||
def do_pay(self, obj):
|
def do_pay(self, obj):
|
||||||
self.app.do_pay(obj)
|
pr = self.app.invoices.get(obj.key)
|
||||||
|
self.app.on_pr(pr)
|
||||||
|
|
||||||
def do_view(self, obj):
|
def do_view(self, obj):
|
||||||
pr = self.app.invoices.get(obj.key)
|
pr = self.app.invoices.get(obj.key)
|
||||||
pr.verify({})
|
pr.verify(self.app.contacts)
|
||||||
self.app.show_pr_details(pr.get_dict(), obj.status, True)
|
self.app.show_pr_details(pr.get_dict(), obj.status, True)
|
||||||
|
|
||||||
def do_delete(self, obj):
|
def do_delete(self, obj):
|
||||||
|
|
|
@ -11,6 +11,7 @@ SendScreen:
|
||||||
address: ''
|
address: ''
|
||||||
amount: ''
|
amount: ''
|
||||||
message: ''
|
message: ''
|
||||||
|
is_pr: False
|
||||||
BoxLayout
|
BoxLayout
|
||||||
padding: '12dp', '12dp', '12dp', '12dp'
|
padding: '12dp', '12dp', '12dp', '12dp'
|
||||||
spacing: '12dp'
|
spacing: '12dp'
|
||||||
|
@ -31,7 +32,7 @@ SendScreen:
|
||||||
BlueButton:
|
BlueButton:
|
||||||
id: payto_e
|
id: payto_e
|
||||||
text: s.address if s.address else _('Recipient')
|
text: s.address if s.address else _('Recipient')
|
||||||
on_release: app.address_dialog(s)
|
disabled: True
|
||||||
shorten: True
|
shorten: True
|
||||||
CardSeparator:
|
CardSeparator:
|
||||||
opacity: message_selection.opacity
|
opacity: message_selection.opacity
|
||||||
|
@ -49,6 +50,7 @@ SendScreen:
|
||||||
id: amount_e
|
id: amount_e
|
||||||
default_text: _('Amount')
|
default_text: _('Amount')
|
||||||
text: s.amount if s.amount else _('Amount')
|
text: s.amount if s.amount else _('Amount')
|
||||||
|
disabled: root.is_pr
|
||||||
on_release: Clock.schedule_once(lambda dt: app.amount_dialog(s, True))
|
on_release: Clock.schedule_once(lambda dt: app.amount_dialog(s, True))
|
||||||
CardSeparator:
|
CardSeparator:
|
||||||
opacity: message_selection.opacity
|
opacity: message_selection.opacity
|
||||||
|
@ -66,6 +68,7 @@ SendScreen:
|
||||||
BlueButton:
|
BlueButton:
|
||||||
id: description
|
id: description
|
||||||
text: s.message if s.message else _('Description')
|
text: s.message if s.message else _('Description')
|
||||||
|
disabled: root.is_pr
|
||||||
on_release: Clock.schedule_once(lambda dt: app.description_dialog(s))
|
on_release: Clock.schedule_once(lambda dt: app.description_dialog(s))
|
||||||
BoxLayout:
|
BoxLayout:
|
||||||
size_hint: 1, None
|
size_hint: 1, None
|
||||||
|
|
|
@ -101,6 +101,9 @@ class PaymentRequest:
|
||||||
self.memo = self.details.memo
|
self.memo = self.details.memo
|
||||||
self.payment_url = self.details.payment_url
|
self.payment_url = self.details.payment_url
|
||||||
|
|
||||||
|
def is_pr(self):
|
||||||
|
return self.get_outputs() != [(TYPE_ADDRESS, self.get_requestor(), self.get_amount())]
|
||||||
|
|
||||||
def verify(self, contacts):
|
def verify(self, contacts):
|
||||||
if not self.raw:
|
if not self.raw:
|
||||||
self.error = "Empty request"
|
self.error = "Empty request"
|
||||||
|
@ -455,9 +458,6 @@ class InvoiceStore(object):
|
||||||
|
|
||||||
def add(self, pr):
|
def add(self, pr):
|
||||||
key = pr.get_id()
|
key = pr.get_id()
|
||||||
if key in self.invoices:
|
|
||||||
print_error('invoice already in list')
|
|
||||||
return key
|
|
||||||
self.invoices[key] = pr
|
self.invoices[key] = pr
|
||||||
self.save()
|
self.save()
|
||||||
return key
|
return key
|
||||||
|
|
Loading…
Reference in New Issue