mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-23 17:47:31 +00:00
kivy: add screens for invoices and requests, disable contacts
This commit is contained in:
parent
8e7c5a180f
commit
1b0e29d385
5 changed files with 165 additions and 6 deletions
|
@ -292,9 +292,15 @@
|
|||
ReceiveScreen:
|
||||
id: receive_screen
|
||||
tab: receive_tab
|
||||
ContactsScreen:
|
||||
id: contacts_screen
|
||||
tab: contacts_tab
|
||||
InvoicesScreen:
|
||||
id: invoices_screen
|
||||
tab: invoices_tab
|
||||
RequestsScreen:
|
||||
id: requests_screen
|
||||
tab: requests_tab
|
||||
#ContactsScreen:
|
||||
# id: contacts_screen
|
||||
# tab: contacts_tab
|
||||
CleanHeader:
|
||||
id: history_tab
|
||||
text: _('History')
|
||||
|
@ -308,9 +314,17 @@
|
|||
text: _('Receive')
|
||||
slide: 2
|
||||
CleanHeader:
|
||||
id: contacts_tab
|
||||
text: _('Contacts')
|
||||
id: invoices_tab
|
||||
text: _('Invoices')
|
||||
slide: 3
|
||||
CleanHeader:
|
||||
id: requests_tab
|
||||
text: _('Requests')
|
||||
slide: 4
|
||||
#CleanHeader:
|
||||
# id: contacts_tab
|
||||
# text: _('Contacts')
|
||||
# slide: 4
|
||||
|
||||
<ActionOvrButton@ActionButton>
|
||||
on_release:
|
||||
|
|
|
@ -9,6 +9,7 @@ import electrum
|
|||
from electrum import WalletStorage, Wallet
|
||||
from electrum.i18n import _, set_language
|
||||
from electrum.contacts import Contacts
|
||||
from electrum.paymentrequest import InvoiceStore
|
||||
from electrum.util import profiler, InvalidPassword
|
||||
from electrum.plugins import run_hook
|
||||
from electrum.util import format_satoshis, format_satoshis_plain
|
||||
|
@ -176,6 +177,7 @@ class ElectrumWindow(App):
|
|||
|
||||
#self.config = self.gui_object.config
|
||||
self.contacts = Contacts(self.electrum_config)
|
||||
self.invoices = InvoiceStore(self.electrum_config)
|
||||
|
||||
self.bind(url=self.set_URI)
|
||||
# were we sent a url?
|
||||
|
|
|
@ -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
|
||||
|
|
50
gui/kivy/uix/ui_screens/invoices.kv
Normal file
50
gui/kivy/uix/ui_screens/invoices.kv
Normal 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'
|
53
gui/kivy/uix/ui_screens/requests.kv
Normal file
53
gui/kivy/uix/ui_screens/requests.kv
Normal 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'
|
Loading…
Add table
Reference in a new issue