commit 9caf174d7f1b3e3c1bcc0fcacc2b00b8fbbe21d8
parent b1704ce9113880216467832341be9ea961549890
Author: ThomasV <thomasv@electrum.org>
Date: Sun, 13 Dec 2015 10:42:48 +0100
kivy: add status icons, improve requests layout
Diffstat:
5 files changed, 93 insertions(+), 62 deletions(-)
diff --git a/gui/kivy/uix/context_menu.py b/gui/kivy/uix/context_menu.py
@@ -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
''')
diff --git a/gui/kivy/uix/screens.py b/gui/kivy/uix/screens.py
@@ -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
diff --git a/gui/kivy/uix/ui_screens/history.kv b/gui/kivy/uix/ui_screens/history.kv
@@ -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: '.'
@@ -63,25 +41,25 @@
orientation: 'vertical'
Widget
CardLabel:
+ color: .699, .699, .699, 1
+ text: root.date
+ font_size: '14sp'
+ CardLabel:
shorten: True
- text: root.address
+ text: root.message
markup: False
text_size: self.size
- CardLabel:
- color: .699, .699, .699, 1
- text: root.date
- font_size: '12sp'
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)
diff --git a/gui/kivy/uix/ui_screens/invoices.kv b/gui/kivy/uix/ui_screens/invoices.kv
@@ -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:
diff --git a/gui/kivy/uix/ui_screens/requests.kv b/gui/kivy/uix/ui_screens/requests.kv
@@ -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: