+
+void CoreConnection::updateProgress(int value, int max)
+{
+ if (max != _progressMaximum) {
+ _progressMaximum = max;
+ emit progressRangeChanged(_progressMinimum, _progressMaximum);
+ }
+ setProgressValue(value);
+}
+
+
+void CoreConnection::reconnectTimeout()
+{
+ if (!_socket) {
+ 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::networkDetectionModeChanged(const QVariant &vmode)
+{
+ CoreConnectionSettings s;
+ CoreConnectionSettings::NetworkDetectionMode mode = (CoreConnectionSettings::NetworkDetectionMode)vmode.toInt();
+ if (mode == CoreConnectionSettings::UsePingTimeout)
+ Client::signalProxy()->setMaxHeartBeatCount(s.pingTimeoutInterval() / 30);
+ else {
+ Client::signalProxy()->setMaxHeartBeatCount(-1);
+ }
+}
+
+
+void CoreConnection::pingTimeoutIntervalChanged(const QVariant &interval)
+{
+ CoreConnectionSettings s;
+ if (s.networkDetectionMode() == CoreConnectionSettings::UsePingTimeout)
+ Client::signalProxy()->setMaxHeartBeatCount(interval.toInt() / 30); // interval is 30 seconds
+}
+
+
+void CoreConnection::reconnectIntervalChanged(const QVariant &interval)
+{
+ _reconnectTimer.setInterval(interval.toInt() * 1000);
+}
+
+
+#ifdef HAVE_KDE
+
+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;
+ }