qml: network status improvements
create NetworkStatusIndicator component add forks/chaintips and lagging property to qenetwork add synchronizing and synchronizing progress properties to qewallet Note: new wallet synchronizing is not picked up in UI yet, missing an is_up_to_date event at the start still..
This commit is contained in:
@@ -10,6 +10,7 @@ class QENetwork(QObject, QtEventListener):
|
||||
def __init__(self, network, parent=None):
|
||||
super().__init__(parent)
|
||||
self.network = network
|
||||
self._height = network.get_local_height() # init here, update event can take a while
|
||||
self.register_callbacks()
|
||||
|
||||
_logger = get_logger(__name__)
|
||||
@@ -22,12 +23,16 @@ class QENetwork(QObject, QtEventListener):
|
||||
proxyChanged = pyqtSignal()
|
||||
statusChanged = pyqtSignal()
|
||||
feeHistogramUpdated = pyqtSignal()
|
||||
chaintipsChanged = pyqtSignal()
|
||||
isLaggingChanged = pyqtSignal()
|
||||
|
||||
# shared signal for static properties
|
||||
dataChanged = pyqtSignal()
|
||||
|
||||
_height = 0
|
||||
_status = ""
|
||||
_chaintips = 1
|
||||
_islagging = False
|
||||
_fee_histogram = []
|
||||
|
||||
@event_listener
|
||||
@@ -35,7 +40,7 @@ class QENetwork(QObject, QtEventListener):
|
||||
self.networkUpdated.emit()
|
||||
|
||||
@event_listener
|
||||
def on_event_blockchain_updated(self, *args):
|
||||
def on_event_blockchain_updated(self):
|
||||
if self._height != self.network.get_local_height():
|
||||
self._height = self.network.get_local_height()
|
||||
self._logger.debug('new height: %d' % self._height)
|
||||
@@ -57,6 +62,16 @@ class QENetwork(QObject, QtEventListener):
|
||||
if self._status != self.network.connection_status:
|
||||
self._status = self.network.connection_status
|
||||
self.statusChanged.emit()
|
||||
chains = len(self.network.get_blockchains())
|
||||
if chains != self._chaintips:
|
||||
self._logger.debug('chain tips # changed: ' + chains)
|
||||
self._chaintips = chains
|
||||
self.chaintipsChanged.emit()
|
||||
server_lag = self.network.get_local_height() - self.network.get_server_height()
|
||||
if self._islagging ^ (server_lag > 1):
|
||||
self._logger.debug('lagging changed: ' + (server_lag > 1))
|
||||
self._islagging = server_lag > 1
|
||||
self.isLaggingChanged.emit()
|
||||
|
||||
@event_listener
|
||||
def on_event_fee_histogram(self, histogram):
|
||||
@@ -68,7 +83,7 @@ class QENetwork(QObject, QtEventListener):
|
||||
def height(self):
|
||||
return self._height
|
||||
|
||||
@pyqtProperty('QString', notify=defaultServerChanged)
|
||||
@pyqtProperty(str, notify=defaultServerChanged)
|
||||
def server(self):
|
||||
return str(self.network.get_parameters().server)
|
||||
|
||||
@@ -83,15 +98,23 @@ class QENetwork(QObject, QtEventListener):
|
||||
net_params = net_params._replace(server=server)
|
||||
self.network.run_from_another_thread(self.network.set_parameters(net_params))
|
||||
|
||||
@pyqtProperty('QString', notify=statusChanged)
|
||||
@pyqtProperty(str, notify=statusChanged)
|
||||
def status(self):
|
||||
return self._status
|
||||
|
||||
@pyqtProperty(int, notify=chaintipsChanged)
|
||||
def chaintips(self):
|
||||
return self._chaintips
|
||||
|
||||
@pyqtProperty(bool, notify=isLaggingChanged)
|
||||
def isLagging(self):
|
||||
return self._islagging
|
||||
|
||||
@pyqtProperty(bool, notify=dataChanged)
|
||||
def isTestNet(self):
|
||||
return constants.net.TESTNET
|
||||
|
||||
@pyqtProperty('QString', notify=dataChanged)
|
||||
@pyqtProperty(str, notify=dataChanged)
|
||||
def networkName(self):
|
||||
return constants.net.__name__.replace('Bitcoin','')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user