diff --git a/libnymea-app/connection/nymeaconnection.cpp b/libnymea-app/connection/nymeaconnection.cpp index 7316dde5..8a8484be 100644 --- a/libnymea-app/connection/nymeaconnection.cpp +++ b/libnymea-app/connection/nymeaconnection.cpp @@ -271,6 +271,7 @@ void NymeaConnection::onError(QAbstractSocket::SocketError error) if (!m_currentTransport) { // We're trying to connect and one of the transports failed... if (m_transportCandidates.contains(transport)) { + m_transportCandidates.value(transport)->decreasePriority(); m_transportCandidates.remove(transport); transport->deleteLater(); } diff --git a/libnymea-app/connection/nymeahost.cpp b/libnymea-app/connection/nymeahost.cpp index d80eb89a..6e3d3a64 100644 --- a/libnymea-app/connection/nymeahost.cpp +++ b/libnymea-app/connection/nymeahost.cpp @@ -326,7 +326,7 @@ void Connection::setManual(bool manual) int Connection::priority() const { - int prio = 0; + int prio = m_manualPriorityAdjust; if (m_online) { prio += 1000; prio -= qMin(500, (int)m_lastSeen.secsTo(QDateTime::currentDateTime())); @@ -359,3 +359,13 @@ int Connection::priority() const } return prio; } + +void Connection::increasePriority() +{ + m_manualPriorityAdjust++; +} + +void Connection::decreasePriority() +{ + m_manualPriorityAdjust--; +} diff --git a/libnymea-app/connection/nymeahost.h b/libnymea-app/connection/nymeahost.h index bbeb83f5..e2e6a640 100644 --- a/libnymea-app/connection/nymeahost.h +++ b/libnymea-app/connection/nymeahost.h @@ -78,6 +78,8 @@ public: bool manual() const; void setManual(bool manual); int priority() const; + void increasePriority(); + void decreasePriority(); signals: void onlineChanged(); @@ -91,6 +93,7 @@ private: bool m_online = false; bool m_manual = false; QDateTime m_lastSeen; + int m_manualPriorityAdjust = 0; }; class Connections: public QAbstractListModel