diff --git a/electrum/gui/qml/components/NetworkOverview.qml b/electrum/gui/qml/components/NetworkOverview.qml index 30327c5e7..f58978d59 100644 --- a/electrum/gui/qml/components/NetworkOverview.qml +++ b/electrum/gui/qml/components/NetworkOverview.qml @@ -55,7 +55,7 @@ Pane { color: Material.accentColor } Label { - text: Network.server + text: Network.serverWithStatus wrapMode: Text.WrapAnywhere Layout.fillWidth: true } diff --git a/electrum/gui/qml/qenetwork.py b/electrum/gui/qml/qenetwork.py index 33ed405bb..59d327c8b 100644 --- a/electrum/gui/qml/qenetwork.py +++ b/electrum/gui/qml/qenetwork.py @@ -21,7 +21,6 @@ class QENetwork(QObject, QtEventListener): networkUpdated = pyqtSignal() blockchainUpdated = pyqtSignal() heightChanged = pyqtSignal([int], arguments=['height']) - defaultServerChanged = pyqtSignal() proxySet = pyqtSignal() proxyChanged = pyqtSignal() statusChanged = pyqtSignal() @@ -34,6 +33,7 @@ class QENetwork(QObject, QtEventListener): dataChanged = pyqtSignal() _height = 0 + _server = "" _server_status = "" _network_status = "" _chaintips = 1 @@ -59,7 +59,7 @@ class QENetwork(QObject, QtEventListener): @event_listener def on_event_network_updated(self, *args): self.networkUpdated.emit() - self._update_network_status() + self._update_status() @event_listener def on_event_blockchain_updated(self): @@ -71,7 +71,7 @@ class QENetwork(QObject, QtEventListener): @event_listener def on_event_default_server_changed(self, *args): - self.defaultServerChanged.emit() + self._update_status() @event_listener def on_event_proxy_set(self, *args): @@ -79,15 +79,15 @@ class QENetwork(QObject, QtEventListener): self.proxySet.emit() self.proxyTorChanged.emit() - def _update_network_status(self): + def _update_status(self): + server = str(self.network.get_parameters().server) + if self._server != server: + self._server = server + self.statusChanged.emit() network_status = self.network.get_status() if self._network_status != network_status: self._network_status = network_status self.statusChanged.emit() - - @event_listener - def on_event_status(self, *args): - self._update_network_status() server_status = self.network.connection_status self._logger.debug('server_status updated: %s' % server_status) if self._server_status != server_status: @@ -104,6 +104,10 @@ class QENetwork(QObject, QtEventListener): self._islagging = server_lag > 1 self.isLaggingChanged.emit() + @event_listener + def on_event_status(self, *args): + self._update_status() + @event_listener def on_event_fee_histogram(self, histogram): self._logger.debug(f'fee histogram updated: {repr(histogram)}') @@ -167,12 +171,12 @@ class QENetwork(QObject, QtEventListener): def height(self): return self._height - @pyqtProperty(str, notify=defaultServerChanged) + @pyqtProperty(str, notify=statusChanged) def server(self): - return str(self.network.get_parameters().server) + return self._server @server.setter - def server(self, server): + def server(self, server: str): net_params = self.network.get_parameters() try: server = ServerAddr.from_str_with_inference(server) @@ -182,6 +186,13 @@ class QENetwork(QObject, QtEventListener): net_params = net_params._replace(server=server, auto_connect=self._qeconfig.autoConnect) self.network.run_from_another_thread(self.network.set_parameters(net_params)) + @pyqtProperty(str, notify=statusChanged) + def serverWithStatus(self): + server = self._server + if self._server_status != "connected": # connecting or disconnected + return f"{server} (connecting...)" + return server + @pyqtProperty(str, notify=statusChanged) def status(self): return self._network_status