kivy: add status icons, improve requests layout

This commit is contained in:
ThomasV 2015-12-13 10:42:48 +01:00
parent b1704ce911
commit 9caf174d7f
5 changed files with 94 additions and 63 deletions

View File

@ -10,20 +10,20 @@ from kivy.factory import Factory
Builder.load_string('''
<MenuItem@Button>
background_color: .2, .9, 1, 1
height: '40dp'
height: '48dp'
size_hint: 1, None
<ContextMenu>
size_hint: 1, None
height: '32dp'
#size: 120, 250
height: '48dp'
pos: (0, 0)
show_arrow: False
arrow_pos: 'top_mid'
padding: 0
orientation: 'horizontal'
BoxLayout:
size_hint: 1, 1
height: '40dp'
height: '48dp'
orientation: 'horizontal'
id: buttons
''')

View File

@ -24,6 +24,8 @@ from electrum.plugins import run_hook
from context_menu import ContextMenu
from electrum.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
class CScreen(Factory.Screen):
@ -74,14 +76,14 @@ class CScreen(Factory.Screen):
def hide_menu(self):
if self.context_menu:
self.screen.remove_widget(self.context_menu)
self.remove_widget(self.context_menu)
self.context_menu = None
def show_menu(self, obj):
if self.context_menu is None:
self.context_menu = ContextMenu(obj, self.menu_actions)
self.screen.remove_widget(self.context_menu)
self.screen.add_widget(self.context_menu)
self.remove_widget(self.context_menu)
self.add_widget(self.context_menu)
@ -143,15 +145,14 @@ class HistoryScreen(CScreen):
# repopulate History Card
history_card.clear_widgets()
history_add = history_card.add_widget
RecentActivityItem = Factory.RecentActivityItem
count = 0
for item in history:
count += 1
conf, icon, date_time, address, value, tx, quote_text = item
ri = RecentActivityItem()
conf, icon, date_time, message, value, tx, quote_text = item
ri = Factory.HistoryItem()
ri.icon = icon
ri.date = date_time
ri.address = address
ri.message = message
ri.value = value
ri.quote_text = quote_text
ri.confirmations = conf
@ -377,7 +378,14 @@ class InvoicesScreen(CScreen):
ci.requestor = pr.get_requestor()
ci.memo = pr.memo
ci.amount = self.app.format_amount_and_units(pr.get_amount())
#ci.status = self.invoices.get_status(key)
status = self.app.invoices.get_status(ci.key)
if status == PR_PAID:
icon = "atlas://gui/kivy/theming/light/confirmed"
elif status == PR_EXPIRED:
icon = "atlas://gui/kivy/theming/light/important"
else:
icon = "atlas://gui/kivy/theming/light/important"
exp = pr.get_expiration_date()
ci.date = format_time(exp) if exp else _('Never')
ci.screen = self
@ -406,11 +414,17 @@ class RequestsScreen(CScreen):
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')
status = req.get('status')
if status == PR_PAID:
icon = "atlas://gui/kivy/theming/light/confirmed"
elif status == PR_EXPIRED:
icon = "atlas://gui/kivy/theming/light/important"
else:
icon = "atlas://gui/kivy/theming/light/important"
ci.amount = self.app.format_amount_and_units(amount) if amount else ''
ci.date = format_time(timestamp)
ci.screen = self

View File

@ -5,23 +5,9 @@
#:set mbtc_symbol unichr(187)
<Card@GridLayout>
cols: 1
padding: '12dp' , '22dp', '12dp' , '12dp'
spacing: '12dp'
size_hint: 1, None
height: max(100, self.minimum_height)
canvas.before:
Color:
rgba: 1, 1, 1, 1
BorderImage:
border: 18, 18, 18, 18
source: 'atlas://gui/kivy/theming/light/card'
size: self.size
pos: self.pos
<CardLabel@Label>
color: 0.45, 0.45, 0.45, 1
color: 0.95, 0.95, 0.95, 1
size_hint: 1, None
text: ''
text_size: self.width, None
@ -29,21 +15,13 @@
halign: 'left'
valign: 'top'
<CardButton@Button>
background_normal: 'atlas://gui/kivy/theming/light/card_btn'
bold: True
font_size: '10sp'
color: 0.699, 0.699, 0.699, 1
size_hint: None, None
size: self.texture_size[0] + dp(32), self.texture_size[1] + dp(7)
<RecentActivityItem@CardItem>
<HistoryItem@CardItem>
icon: 'atlas://gui/kivy/theming/light/important'
address: 'no address set'
message: ''
value: 0
amount: app.format_amount(self.value, True) if self.value is not None else '--'
amount_color: '#DB3627' if self.value < 0 else '#2EA442'
amount_color: '#FF6657' if self.value < 0 else '#2EA442'
confirmations: 0
date: '0/0/0'
quote_text: '.'
@ -62,26 +40,26 @@
BoxLayout:
orientation: 'vertical'
Widget
CardLabel:
shorten: True
text: root.address
markup: False
text_size: self.size
CardLabel:
color: .699, .699, .699, 1
text: root.date
font_size: '12sp'
font_size: '14sp'
CardLabel:
shorten: True
text: root.message
markup: False
text_size: self.size
Widget
CardLabel:
halign: 'right'
font_size: '13sp'
font_size: '15sp'
size_hint: None, 1
width: '110sp'
markup: True
font_name: font_light
text:
u'[color={amount_color}]{sign}{amount} {unit}[/color]\n'\
u'[color=#B2B3B3][size=12sp]{qt}[/size]'\
u'[color=#B2B3B3][size=13sp]{qt}[/size]'\
u'[/color]'.format(amount_color=root.amount_color,\
amount=root.amount[1:], qt=root.quote_text, sign=root.amount[0],\
unit=app.base_unit)

View File

@ -1,8 +1,8 @@
<InvoicesLabel@Label>
#color: .305, .309, .309, 1
text_size: self.size
text_size: self.width, None
halign: 'left'
valign: 'middle'
valign: 'top'
<InvoiceItem@CardItem>
requestor: ''
@ -10,11 +10,32 @@
amount: ''
status: ''
date: ''
icon: 'atlas://gui/kivy/theming/light/important'
Image:
id: icon
source: root.icon
size_hint: None, 1
width: self.height *.54
mipmap: True
BoxLayout:
spacing: '8dp'
height: '32dp'
orientation: 'vertical'
Widget
InvoicesLabel:
text: root.requestor
shorten: True
InvoicesLabel:
text: root.memo
color: .699, .699, .699, 1
font_size: '13sp'
shorten: True
Widget
InvoicesLabel:
text: root.requestor
InvoicesLabel:
text: root.memo
InvoicesLabel:
halign: 'right'
font_size: '15sp'
size_hint: None, 1
width: '80sp'
text: root.amount
InvoicesScreen:

View File

@ -1,8 +1,8 @@
<RequestLabel@Label>
#color: .305, .309, .309, 1
text_size: self.size
text_size: self.width, None
halign: 'left'
valign: 'middle'
valign: 'top'
<RequestItem@CardItem>
address: ''
@ -10,15 +10,33 @@
amount: ''
status: ''
date: ''
icon: 'atlas://gui/kivy/theming/light/important'
Image:
id: icon
source: root.icon
size_hint: None, 1
width: self.height *.54
mipmap: True
BoxLayout:
spacing: '8dp'
height: '32dp'
orientation: 'vertical'
Widget
RequestLabel:
text: root.address
shorten: True
RequestLabel:
text: root.memo
color: .699, .699, .699, 1
font_size: '13sp'
shorten: True
Widget
RequestLabel:
text: root.address
font_size: '13dp'
RequestLabel:
text: root.memo
RequestLabel:
halign: 'right'
font_size: '15sp'
size_hint: None, 1
width: '80sp'
text: root.amount
#InvoicesLabel:
# text: root.status
RequestsScreen: