diff --git a/libnymea-app-core/connection/nymeahosts.cpp b/libnymea-app-core/connection/nymeahosts.cpp index aae35377..f90c338e 100644 --- a/libnymea-app-core/connection/nymeahosts.cpp +++ b/libnymea-app-core/connection/nymeahosts.cpp @@ -210,6 +210,21 @@ void NymeaHostsFilterModel::setShowUnreachableBearers(bool showUnreachableBearer } } +bool NymeaHostsFilterModel::showUnreachableHosts() const +{ + return m_showUneachableHosts; +} + +void NymeaHostsFilterModel::setShowUnreachableHosts(bool showUnreachableHosts) +{ + if (m_showUneachableHosts != showUnreachableHosts) { + m_showUneachableHosts = showUnreachableHosts; + emit showUnreachableHostsChanged(); + invalidateFilter(); + emit countChanged(); + } +} + NymeaHost *NymeaHostsFilterModel::get(int index) const { return m_nymeaDiscovery->nymeaHosts()->get(mapToSource(this->index(index, 0)).row()); @@ -249,5 +264,17 @@ bool NymeaHostsFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &s return false; } } + if (!m_showUneachableHosts) { + bool isOnline = false; + for (int i = 0; i < host->connections()->rowCount(); i++) { + if (host->connections()->get(i)->online()) { + isOnline = true; + break; + } + } + if (!isOnline) { + return false; + } + } return true; } diff --git a/libnymea-app-core/connection/nymeahosts.h b/libnymea-app-core/connection/nymeahosts.h index 01578d86..3f89683c 100644 --- a/libnymea-app-core/connection/nymeahosts.h +++ b/libnymea-app-core/connection/nymeahosts.h @@ -79,6 +79,7 @@ class NymeaHostsFilterModel: public QSortFilterProxyModel Q_PROPERTY(NymeaDiscovery* discovery READ discovery WRITE setDiscovery NOTIFY discoveryChanged) Q_PROPERTY(NymeaConnection* nymeaConnection READ nymeaConnection WRITE setNymeaConnection NOTIFY nymeaConnectionChanged) Q_PROPERTY(bool showUnreachableBearers READ showUnreachableBearers WRITE setShowUnreachableBearers NOTIFY showUnreachableBearersChanged) + Q_PROPERTY(bool showUnreachableHosts READ showUnreachableHosts WRITE setShowUnreachableHosts NOTIFY showUnreachableHostsChanged) public: NymeaHostsFilterModel(QObject *parent = nullptr); @@ -92,6 +93,9 @@ public: bool showUnreachableBearers() const; void setShowUnreachableBearers(bool showUnreachableBearers); + bool showUnreachableHosts() const; + void setShowUnreachableHosts(bool showUnreachableHosts); + Q_INVOKABLE NymeaHost* get(int index) const; signals: @@ -99,6 +103,7 @@ signals: void discoveryChanged(); void nymeaConnectionChanged(); void showUnreachableBearersChanged(); + void showUnreachableHostsChanged(); protected: bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; @@ -108,6 +113,7 @@ private: NymeaConnection *m_nymeaConnection = nullptr; bool m_showUneachableBearers = false; + bool m_showUneachableHosts = false; }; diff --git a/nymea-app/ui/connection/ConnectPage.qml b/nymea-app/ui/connection/ConnectPage.qml index 38772482..a6c08298 100644 --- a/nymea-app/ui/connection/ConnectPage.qml +++ b/nymea-app/ui/connection/ConnectPage.qml @@ -43,6 +43,7 @@ Page { discovery: _discovery showUnreachableBearers: false nymeaConnection: engine.connection + showUnreachableHosts: false } Component {