/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
_progressMinimum(0),
_progressMaximum(-1),
_progressValue(-1),
- _resetting(false)
+ _resetting(false),
+ _qNetworkConfigurationManager(0)
{
qRegisterMetaType<ConnectionState>("CoreConnection::ConnectionState");
}
_reconnectTimer.setSingleShot(true);
connect(&_reconnectTimer, SIGNAL(timeout()), SLOT(reconnectTimeout()));
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
connect(Solid::Networking::notifier(), SIGNAL(statusChanged(Solid::Networking::Status)),
SLOT(solidNetworkStatusChanged(Solid::Networking::Status)));
#endif
+ _qNetworkConfigurationManager = new QNetworkConfigurationManager(this);
+ connect(_qNetworkConfigurationManager, SIGNAL(onlineStateChanged(bool)), SLOT(onlineStateChanged(bool)));
CoreConnectionSettings s;
s.initAndNotify("PingTimeoutInterval", this, SLOT(pingTimeoutIntervalChanged(QVariant)), 60);
if (!_peer) {
CoreConnectionSettings s;
if (_wantReconnect && s.autoReconnect()) {
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
// 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
return;
}
}
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
+ // If using QNetworkConfigurationManager, ditto
+ if (s.networkDetectionMode() == CoreConnectionSettings::UseQNetworkConfigurationManager) {
+ if (!_qNetworkConfigurationManager->isOnline()) {
+ return;
+ }
+ }
reconnectToCore();
}
}
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
void CoreConnection::solidNetworkStatusChanged(Solid::Networking::Status status)
{
#endif
+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);
+ }
+}
+
bool CoreConnection::isEncrypted() const
{
return _peer && _peer->isSecure();
return false;
if (currentAccount().isInternal())
return true;
- if (_peer->isLocal())
- return true;
+ if (_authHandler)
+ return _authHandler->isLocal();
+ if (_peer)
+ return _peer->isLocal();
return false;
}