URI: 
       tkivy: add status icons, improve requests layout - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 9caf174d7f1b3e3c1bcc0fcacc2b00b8fbbe21d8
   DIR parent b1704ce9113880216467832341be9ea961549890
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Sun, 13 Dec 2015 10:42:48 +0100
       
       kivy: add status icons, improve requests layout
       
       Diffstat:
         M gui/kivy/uix/context_menu.py        |       8 ++++----
         M gui/kivy/uix/screens.py             |      34 ++++++++++++++++++++++---------
         M gui/kivy/uix/ui_screens/history.kv  |      44 ++++++++-----------------------
         M gui/kivy/uix/ui_screens/invoices.kv |      33 +++++++++++++++++++++++++------
         M gui/kivy/uix/ui_screens/requests.kv |      36 +++++++++++++++++++++++--------
       
       5 files changed, 93 insertions(+), 62 deletions(-)
       ---
   DIR diff --git a/gui/kivy/uix/context_menu.py b/gui/kivy/uix/context_menu.py
       t@@ -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
        ''')
   DIR diff --git a/gui/kivy/uix/screens.py b/gui/kivy/uix/screens.py
       t@@ -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):
        
       t@@ -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)
        
        
        
       t@@ -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
       t@@ -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
       t@@ -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
   DIR diff --git a/gui/kivy/uix/ui_screens/history.kv b/gui/kivy/uix/ui_screens/history.kv
       t@@ -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
       t@@ -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: '.'
       t@@ -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)
   DIR diff --git a/gui/kivy/uix/ui_screens/invoices.kv b/gui/kivy/uix/ui_screens/invoices.kv
       t@@ -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: ''
       t@@ -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:
   DIR diff --git a/gui/kivy/uix/ui_screens/requests.kv b/gui/kivy/uix/ui_screens/requests.kv
       t@@ -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: ''
       t@@ -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: