void CoreConnection::solidNetworkStatusChanged(Solid::Networking::Status status) { CoreConnectionSettings s; if (s.networkDetectionMode() != CoreConnectionSettings::UseSolid) return; switch (status) { case Solid::Networking::Unknown: case Solid::Networking::Connected: //qDebug() << "Solid: Network status changed to connected or unknown"; if (state() == Disconnected) { if (_wantReconnect && s.autoReconnect()) { reconnectToCore(); } } break; case Solid::Networking::Disconnecting: case Solid::Networking::Unconnected: if (state() != Disconnected && !isLocalConnection()) disconnectFromCore(tr("Network is down"), true); break; default: break; } }
void CoreConnection::reconnectTimeout() { if (!_peer) { CoreConnectionSettings s; if (_wantReconnect && s.autoReconnect()) { // If using QNetworkConfigurationManager, we don't want to reconnect if we're offline if (s.networkDetectionMode() == CoreConnectionSettings::UseQNetworkConfigurationManager) { if (!_qNetworkConfigurationManager->isOnline()) { return; } } reconnectToCore(); } } }
void CoreConnection::reconnectTimeout() { if (!_peer) { CoreConnectionSettings s; if (_wantReconnect && s.autoReconnect()) { #ifdef HAVE_KDE // If using Solid, we don't want to reconnect if we're offline if (s.networkDetectionMode() == CoreConnectionSettings::UseSolid) { if (Solid::Networking::status() != Solid::Networking::Connected && Solid::Networking::status() != Solid::Networking::Unknown) { return; } } #endif /* HAVE_KDE */ reconnectToCore(); } } }
void CoreConnection::onlineStateChanged(bool isOnline) { CoreConnectionSettings s; if (s.networkDetectionMode() != CoreConnectionSettings::UseQNetworkConfigurationManager) return; if(isOnline) { // qDebug() << "QNetworkConfigurationManager reports Online"; if (state() == Disconnected) { if (_wantReconnect && s.autoReconnect()) { reconnectToCore(); } } } else { // qDebug() << "QNetworkConfigurationManager reports Offline"; if (state() != Disconnected && !isLocalConnection()) disconnectFromCore(tr("Network is down"), true); } }
void CoreConnection::resetConnection(bool wantReconnect) { if (_resetting) return; _resetting = true; _wantReconnect = wantReconnect; if (_authHandler) { disconnect(_authHandler, 0, this, 0); _authHandler->close(); _authHandler->deleteLater(); _authHandler = 0; } if (_peer) { disconnect(_peer, 0, this, 0); // peer belongs to the sigproxy and thus gets deleted by it _peer->close(); _peer = 0; } _netsToSync.clear(); _numNetsToSync = 0; setProgressMaximum(-1); // disable setState(Disconnected); emit lagUpdated(-1); emit connectionMsg(tr("Disconnected from core.")); emit encrypted(false); setState(Disconnected); // initiate if a reconnect if appropriate CoreConnectionSettings s; if (wantReconnect && s.autoReconnect()) { _reconnectTimer.start(); } _resetting = false; }