qml: swap: like on desktop, use pkh of nostr pubkey as color
This commit is contained in:
@@ -87,10 +87,13 @@ ElDialog {
|
|||||||
Layout.preferredHeight: constants.paddingLarge
|
Layout.preferredHeight: constants.paddingLarge
|
||||||
Layout.preferredWidth: 1
|
Layout.preferredWidth: 1
|
||||||
}
|
}
|
||||||
Image {
|
Rectangle {
|
||||||
Layout.rowSpan: 5
|
Layout.rowSpan: 5
|
||||||
Layout.alignment: Qt.AlignTop
|
Layout.alignment: Qt.AlignVCenter
|
||||||
source: Qt.resolvedUrl('../../icons/network.png')
|
Layout.fillHeight: true
|
||||||
|
Layout.preferredWidth: 10
|
||||||
|
color: model.color
|
||||||
|
|
||||||
}
|
}
|
||||||
Label {
|
Label {
|
||||||
text: qsTr('Pubkey')
|
text: qsTr('Pubkey')
|
||||||
@@ -118,6 +121,7 @@ ElDialog {
|
|||||||
Label {
|
Label {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: model.timestamp
|
text: model.timestamp
|
||||||
|
wrapMode: Text.Wrap
|
||||||
}
|
}
|
||||||
Label {
|
Label {
|
||||||
text: qsTr('Max Forward')
|
text: qsTr('Max Forward')
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from typing import Union, Optional, TYPE_CHECKING, Sequence
|
|||||||
|
|
||||||
from PyQt6.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, QObject, QTimer, pyqtEnum, QAbstractListModel, Qt,
|
from PyQt6.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, QObject, QTimer, pyqtEnum, QAbstractListModel, Qt,
|
||||||
QModelIndex)
|
QModelIndex)
|
||||||
|
from PyQt6.QtGui import QColor
|
||||||
|
|
||||||
from electrum.i18n import _
|
from electrum.i18n import _
|
||||||
from electrum.bitcoin import DummyAddress
|
from electrum.bitcoin import DummyAddress
|
||||||
@@ -14,6 +15,7 @@ from electrum.util import (NotEnoughFunds, NoDynamicFeeEstimates, profiler, get_
|
|||||||
wait_for2)
|
wait_for2)
|
||||||
from electrum.submarine_swaps import NostrTransport, SwapServerTransport
|
from electrum.submarine_swaps import NostrTransport, SwapServerTransport
|
||||||
from electrum.fee_policy import FeePolicy
|
from electrum.fee_policy import FeePolicy
|
||||||
|
from electrum.crypto import sha256
|
||||||
|
|
||||||
from electrum.gui import messages
|
from electrum.gui import messages
|
||||||
|
|
||||||
@@ -34,7 +36,7 @@ class QESwapServerNPubListModel(QAbstractListModel):
|
|||||||
|
|
||||||
# define listmodel rolemap
|
# define listmodel rolemap
|
||||||
_ROLE_NAMES= ('npub', 'server_pubkey', 'timestamp', 'percentage_fee', 'mining_fee',
|
_ROLE_NAMES= ('npub', 'server_pubkey', 'timestamp', 'percentage_fee', 'mining_fee',
|
||||||
'min_amount', 'max_forward_amount', 'max_reverse_amount', 'pow_bits')
|
'min_amount', 'max_forward_amount', 'max_reverse_amount', 'pow_bits', 'color')
|
||||||
_ROLE_KEYS = range(Qt.ItemDataRole.UserRole, Qt.ItemDataRole.UserRole + len(_ROLE_NAMES))
|
_ROLE_KEYS = range(Qt.ItemDataRole.UserRole, Qt.ItemDataRole.UserRole + len(_ROLE_NAMES))
|
||||||
_ROLE_MAP = dict(zip(_ROLE_KEYS, [bytearray(x.encode()) for x in _ROLE_NAMES]))
|
_ROLE_MAP = dict(zip(_ROLE_KEYS, [bytearray(x.encode()) for x in _ROLE_NAMES]))
|
||||||
|
|
||||||
@@ -59,7 +61,7 @@ class QESwapServerNPubListModel(QAbstractListModel):
|
|||||||
service = self._services[index.row()]
|
service = self._services[index.row()]
|
||||||
role_index = role - Qt.ItemDataRole.UserRole
|
role_index = role - Qt.ItemDataRole.UserRole
|
||||||
value = service[self._ROLE_NAMES[role_index]]
|
value = service[self._ROLE_NAMES[role_index]]
|
||||||
if isinstance(value, (bool, list, int, str)) or value is None:
|
if isinstance(value, (bool, list, int, str, QColor)) or value is None:
|
||||||
return value
|
return value
|
||||||
return str(value)
|
return str(value)
|
||||||
|
|
||||||
@@ -68,6 +70,14 @@ class QESwapServerNPubListModel(QAbstractListModel):
|
|||||||
self._services = []
|
self._services = []
|
||||||
self.endResetModel()
|
self.endResetModel()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def str_to_color(color_input: str) -> QColor:
|
||||||
|
input_hash = int.from_bytes(sha256(color_input), byteorder="big")
|
||||||
|
r = (input_hash & 0xFF0000) >> 16
|
||||||
|
g = (input_hash & 0x00FF00) >> 8
|
||||||
|
b = input_hash & 0x0000FF
|
||||||
|
return QColor(r, g, b)
|
||||||
|
|
||||||
def offer_to_model(self, x: 'SwapOffer'):
|
def offer_to_model(self, x: 'SwapOffer'):
|
||||||
return {
|
return {
|
||||||
'npub': x.server_npub,
|
'npub': x.server_npub,
|
||||||
@@ -79,6 +89,7 @@ class QESwapServerNPubListModel(QAbstractListModel):
|
|||||||
'max_reverse_amount': x.pairs.max_reverse,
|
'max_reverse_amount': x.pairs.max_reverse,
|
||||||
'timestamp': age(x.timestamp),
|
'timestamp': age(x.timestamp),
|
||||||
'pow_bits': x.pow_bits,
|
'pow_bits': x.pow_bits,
|
||||||
|
'color': self.str_to_color(x.server_pubkey),
|
||||||
}
|
}
|
||||||
|
|
||||||
def updateModel(self, items: Sequence['SwapOffer']):
|
def updateModel(self, items: Sequence['SwapOffer']):
|
||||||
|
|||||||
Reference in New Issue
Block a user