Browse Source

kivy: add expiration button to receive screen

master
ThomasV 6 years ago
parent
commit
336cf81a6d
  1. 2
      electrum/gui/kivy/main.kv
  2. 25
      electrum/gui/kivy/uix/screens.py
  3. 6
      electrum/gui/kivy/uix/ui_screens/receive.kv

2
electrum/gui/kivy/main.kv

@ -389,7 +389,7 @@
slide: 0 slide: 0
CleanHeader: CleanHeader:
id: history_tab id: history_tab
text: _('Balance') text: _('History')
slide: 1 slide: 1
CleanHeader: CleanHeader:
id: receive_tab id: receive_tab

25
electrum/gui/kivy/uix/screens.py

@ -315,6 +315,7 @@ class SendScreen(CScreen):
return return
if success: if success:
self.app.show_info(_('Payment was sent')) self.app.show_info(_('Payment was sent'))
self.app._trigger_update_history()
else: else:
self.app.show_error(_('Payment failed')) self.app.show_error(_('Payment failed'))
@ -408,6 +409,7 @@ class ReceiveScreen(CScreen):
def __init__(self, **kwargs): def __init__(self, **kwargs):
super(ReceiveScreen, self).__init__(**kwargs) super(ReceiveScreen, self).__init__(**kwargs)
self.menu_actions = [(_('Show'), self.do_show), (_('Delete'), self.do_delete)] self.menu_actions = [(_('Show'), self.do_show), (_('Delete'), self.do_delete)]
self.expiration = self.app.electrum_config.get('request_expiration', 3600) # 1 hour
def clear(self): def clear(self):
self.screen.address = '' self.screen.address = ''
@ -450,7 +452,7 @@ class ReceiveScreen(CScreen):
amount = self.screen.amount amount = self.screen.amount
amount = self.app.get_amount(amount) if amount else 0 amount = self.app.get_amount(amount) if amount else 0
message = self.screen.message message = self.screen.message
expiration = 3600 # 1 hour expiration = self.expiration
if lightning: if lightning:
payment_hash = self.app.wallet.lnworker.add_invoice(amount, message) payment_hash = self.app.wallet.lnworker.add_invoice(amount, message)
request, direction, is_paid = self.app.wallet.lnworker.invoices.get(payment_hash.hex()) request, direction, is_paid = self.app.wallet.lnworker.invoices.get(payment_hash.hex())
@ -497,17 +499,34 @@ class ReceiveScreen(CScreen):
def update(self): def update(self):
_list = self.app.wallet.get_sorted_requests(self.app.electrum_config) _list = self.app.wallet.get_sorted_requests(self.app.electrum_config)
requests_container = self.screen.ids.requests_container requests_container = self.screen.ids.requests_container
requests_container.data = [self.get_card(item) for item in _list] requests_container.data = [self.get_card(item) for item in _list if item.get('status') != PR_PAID]
def do_show(self, obj): def do_show(self, obj):
self.hide_menu() self.hide_menu()
self.app.show_request(obj.is_lightning, obj.key) self.app.show_request(obj.is_lightning, obj.key)
def expiration_dialog(self, obj):
from .dialogs.choice_dialog import ChoiceDialog
choices = {
10*60: _('10 minutes'),
60*60: _('1 hour'),
24*60*60: _('1 day'),
7*24*60*60: _('1 week')
}
def callback(c):
self.expiration = c
self.app.electrum_config.set_key('request_expiration', c)
d = ChoiceDialog(_('Expiration date'), choices, self.expiration, callback)
d.open()
def do_delete(self, req): def do_delete(self, req):
from .dialogs.question import Question from .dialogs.question import Question
def cb(result): def cb(result):
if result: if result:
self.app.wallet.remove_payment_request(req.address, self.app.electrum_config) if req.is_lightning:
self.app.wallet.lnworker.delete_invoice(req.key)
else:
self.app.wallet.remove_payment_request(req.key, self.app.electrum_config)
self.hide_menu() self.hide_menu()
self.update() self.update()
d = Question(_('Delete request'), cb) d = Question(_('Delete request'), cb)

6
electrum/gui/kivy/uix/ui_screens/receive.kv

@ -145,9 +145,11 @@ ReceiveScreen:
size_hint: 0.5, None size_hint: 0.5, None
height: '48dp' height: '48dp'
on_release: root.show_list = not root.show_list on_release: root.show_list = not root.show_list
#Clock.schedule_once(lambda dt: app.requests_dialog(s)) IconButton:
Widget: icon: 'atlas://electrum/gui/kivy/theming/light/clock1'
size_hint: 0.5, None size_hint: 0.5, None
height: '48dp'
on_release: Clock.schedule_once(lambda dt: s.expiration_dialog(s))
Button: Button:
text: _('Clear') text: _('Clear')
size_hint: 1, None size_hint: 1, None

Loading…
Cancel
Save