Add a loading spinner while loading zigbee networks

pull/774/head
Michael Zanetti 2022-02-20 23:35:07 +01:00
parent 3882f367ff
commit 8ebeff8a94
3 changed files with 26 additions and 2 deletions

View File

@ -78,6 +78,11 @@ Engine *ZigbeeManager::engine() const
return m_engine;
}
bool ZigbeeManager::fetchingData() const
{
return m_fetchingData;
}
QStringList ZigbeeManager::availableBackends() const
{
return m_availableBackends;
@ -99,7 +104,6 @@ int ZigbeeManager::addNetwork(const QString &serialPort, uint baudRate, const QS
params.insert("serialPort", serialPort);
params.insert("baudRate", baudRate);
params.insert("backend", backend);
qWarning() << "************ channel mask!" << channels;
if (m_engine->jsonRpcClient()->ensureServerVersion("5.8")) {
params.insert("channelMask", static_cast<uint>(channels));
}
@ -148,6 +152,9 @@ int ZigbeeManager::removeNode(const QUuid &networkUuid, const QString &ieeeAddre
void ZigbeeManager::init()
{
m_fetchingData = true;
emit fetchingDataChanged();
m_adapters->clear();
m_networks->clear();
m_availableBackends.clear();
@ -193,6 +200,10 @@ void ZigbeeManager::getNetworksResponse(int commandId, const QVariantMap &params
// Get nodes from this network
getNodes(network->networkUuid());
// In theory this should only change after nodes have been fetched... but this will do for now...
m_fetchingData = false;
emit fetchingDataChanged();
}
}

View File

@ -46,6 +46,7 @@ class ZigbeeManager : public QObject
{
Q_OBJECT
Q_PROPERTY(Engine* engine READ engine WRITE setEngine NOTIFY engineChanged)
Q_PROPERTY(bool fetchingData READ fetchingData NOTIFY fetchingDataChanged)
Q_PROPERTY(QStringList availableBackends READ availableBackends NOTIFY availableBackendsChanged)
Q_PROPERTY(ZigbeeAdapters *adapters READ adapters CONSTANT)
@ -81,6 +82,8 @@ public:
void setEngine(Engine *engine);
Engine *engine() const;
bool fetchingData() const;
QStringList availableBackends() const;
ZigbeeAdapters *adapters() const;
ZigbeeNetworks *networks() const;
@ -95,6 +98,7 @@ public:
signals:
void engineChanged();
void fetchingDataChanged();
void availableBackendsChanged();
void addNetworkReply(int commandId, const QString &error, const QUuid &networkUuid);
void removeNodeReply(int commandId, const QString &error);
@ -118,6 +122,7 @@ private:
private:
Engine* m_engine = nullptr;
bool m_fetchingData = false;
QStringList m_availableBackends;
ZigbeeAdapters *m_adapters = nullptr;
ZigbeeNetworks *m_networks = nullptr;

View File

@ -61,12 +61,20 @@ SettingsPageBase {
engine: _engine
}
Item {
Layout.fillWidth: true
Layout.preferredHeight: root.height
visible: zigbeeManager.networks.count == 0
visible: zigbeeManager.fetchingData || zigbeeManager.networks.count == 0
BusyIndicator {
anchors.centerIn: parent
visible: zigbeeManager.fetchingData
running: visible
}
EmptyViewPlaceholder {
visible: !zigbeeManager.fetchingData && zigbeeManager.networks.count == 0
width: parent.width - app.margins * 2
anchors.centerIn: parent
title: qsTr("ZigBee")