Exemple #1
0
 def update(self):
     # not calling maybe_defer_update() as it interferes with conditional-visibility
     self.parent.update_receive_address_styling()
     self.proxy.setDynamicSortFilter(
         False)  # temp. disable re-sorting after every change
     self.std_model.clear()
     self.update_headers(self.__class__.headers)
     for req in self.wallet.get_sorted_requests():
         assert isinstance(req, OnchainInvoice)
         key = req.id
         status = self.parent.wallet.get_request_status(key)
         status_str = req.get_status_str(status)
         request_type = req.type
         timestamp = req.time
         amount = req.get_amount_sat()
         message = req.message
         date = format_time(timestamp)
         amount_str = self.parent.format_amount(amount) if amount else ""
         labels = [date, message, amount_str, status_str]
         assert isinstance(req, OnchainInvoice)
         key = req.get_address()
         icon = read_QIcon("dashcoin.png")
         tooltip = 'onchain request'
         items = [QStandardItem(e) for e in labels]
         self.set_editability(items)
         items[self.Columns.DATE].setData(request_type, ROLE_REQUEST_TYPE)
         items[self.Columns.DATE].setData(key, ROLE_KEY)
         items[self.Columns.DATE].setData(timestamp, ROLE_SORT_ORDER)
         items[self.Columns.DATE].setIcon(icon)
         items[self.Columns.STATUS].setIcon(read_QIcon(
             pr_icons.get(status)))
         items[self.Columns.DATE].setToolTip(tooltip)
         self.std_model.insertRow(self.std_model.rowCount(), items)
     self.filter()
     self.proxy.setDynamicSortFilter(True)
     # sort requests by date
     self.sortByColumn(self.Columns.DATE, Qt.DescendingOrder)
     # hide list if empty
     if self.parent.isVisible():
         b = self.std_model.rowCount() > 0
         self.setVisible(b)
         self.parent.receive_requests_label.setVisible(b)
         if not b:
             # list got hidden, so selected item should also be cleared:
             self.item_changed(None)
 def update(self):
     # not calling maybe_defer_update() as it interferes with conditional-visibility
     self.proxy.setDynamicSortFilter(
         False)  # temp. disable re-sorting after every change
     self.std_model.clear()
     self.update_headers(self.__class__.headers)
     for idx, item in enumerate(self.parent.wallet.get_unpaid_invoices()):
         key = self.parent.wallet.get_key_for_outgoing_invoice(item)
         invoice_ext = self.parent.wallet.get_invoice_ext(key)
         icon_name = 'firocoin.png'
         if item.bip70:
             icon_name = 'seal.png'
         status = self.parent.wallet.get_invoice_status(item)
         status_str = item.get_status_str(status)
         message = item.message
         amount = item.get_amount_sat()
         timestamp = item.time or 0
         ps_str = _('PrivateSend') if invoice_ext.is_ps else _('Regular')
         tx_type = invoice_ext.tx_type
         type_str = SPEC_TX_NAMES[tx_type]
         date_str = format_time(timestamp) if timestamp else _('Unknown')
         amount_str = self.parent.format_amount(amount, whitespaces=True)
         labels = [
             date_str, type_str, message, amount_str, ps_str, status_str
         ]
         items = [QStandardItem(e) for e in labels]
         self.set_editability(items)
         items[self.Columns.DATE].setIcon(read_QIcon(icon_name))
         items[self.Columns.STATUS].setIcon(read_QIcon(
             pr_icons.get(status)))
         items[self.Columns.DATE].setData(key, role=ROLE_REQUEST_ID)
         items[self.Columns.DATE].setData(item.type, role=ROLE_REQUEST_TYPE)
         items[self.Columns.DATE].setData(timestamp, role=ROLE_SORT_ORDER)
         items[self.Columns.TX_TYPE].setData(type_str, role=ROLE_SORT_ORDER)
         items[self.Columns.IS_PS].setData(ps_str, role=ROLE_SORT_ORDER)
         self.std_model.insertRow(idx, items)
     self.filter()
     self.proxy.setDynamicSortFilter(True)
     # sort requests by date
     self.sortByColumn(self.Columns.DATE, Qt.DescendingOrder)
     # hide list if empty
     if self.parent.isVisible():
         b = self.std_model.rowCount() > 0
         self.setVisible(b)
         self.parent.invoices_label.setVisible(b)
Exemple #3
0
 def data(self, index: QModelIndex, role: Qt.ItemDataRole) -> QVariant:
     assert index.isValid()
     col = index.column()
     coin_item = index.internalPointer()
     address = coin_item['address']
     is_frozen_addr = coin_item['is_frozen_addr']
     is_frozen_coin = coin_item['is_frozen_coin']
     height = coin_item['height']
     time_str = ''
     if self.view.config.get('show_utxo_time', False):
         prevout_timestamp = coin_item['prevout_timestamp']
         time_str = (format_time(prevout_timestamp)
                     if prevout_timestamp < math.inf else _('unknown'))
     outpoint = coin_item['outpoint']
     out_short = coin_item['out_short']
     label = coin_item['label']
     balance = coin_item['balance']
     # ps_rounds = coin_item['ps_rounds']
     # is_ps_ks = coin_item['is_ps_ks']
     # if ps_rounds is None:
     #     ps_rounds = 'N/A'
     # elif ps_rounds == PSCoinRounds.COLLATERAL:
     #     ps_rounds = 'Collateral'
     # elif ps_rounds == PSCoinRounds.OTHER:
     #     ps_rounds = 'Other'
     # else:
     #     ps_rounds = str(ps_rounds)
     if (role == self.view.ROLE_CLIPBOARD_DATA
             and col == UTXOColumns.OUTPOINT):
         return QVariant(outpoint)
     elif role == Qt.ToolTipRole:
         if col == UTXOColumns.ADDRESS and is_frozen_addr:
             return QVariant(_('Address is frozen'))
         elif col == UTXOColumns.OUTPOINT and is_frozen_coin:
             return QVariant(f'{outpoint}\n{_("Coin is frozen")}')
         elif outpoint in (self.view._spend_set or set()):
             if col == UTXOColumns.OUTPOINT:
                 return QVariant(f'{outpoint}\n{SELECTED_TO_SPEND_TOOLTIP}')
             else:
                 return QVariant(SELECTED_TO_SPEND_TOOLTIP)
         elif col == UTXOColumns.OUTPOINT:
             return QVariant(outpoint)
     elif role not in (Qt.DisplayRole, Qt.EditRole):
         if role == Qt.TextAlignmentRole:
             if col in [UTXOColumns.AMOUNT, UTXOColumns.HEIGHT]:
                 return QVariant(Qt.AlignRight | Qt.AlignVCenter)
             else:
                 return QVariant(Qt.AlignVCenter)
         elif role == Qt.FontRole:
             return QVariant(QFont(MONOSPACE_FONT))
         elif role == Qt.BackgroundRole:
             if col == UTXOColumns.ADDRESS and is_frozen_addr:
                 return QVariant(ColorScheme.BLUE.as_color(True))
             elif col == UTXOColumns.OUTPOINT and is_frozen_coin:
                 return QVariant(ColorScheme.BLUE.as_color(True))
             elif outpoint in (self.view._spend_set or set()):
                 return QVariant(ColorScheme.GREEN.as_color(True))
     elif col == UTXOColumns.DATE:
         return QVariant(time_str)
     elif col == UTXOColumns.OUTPOINT:
         return QVariant(out_short)
     elif col == UTXOColumns.ADDRESS:
         return QVariant(address)
     elif col == UTXOColumns.LABEL:
         return QVariant(label)
     elif col == UTXOColumns.AMOUNT:
         return QVariant(balance)
     elif col == UTXOColumns.HEIGHT:
         return QVariant(height)
     # elif col == UTXOColumns.PS_ROUNDS:
     #     return QVariant(ps_rounds)
     # elif col == UTXOColumns.KEYSTORE_TYPE:
     #     return QVariant(_('PS Keystore') if is_ps_ks else _('Main'))
     else:
         return QVariant()