aboutsummaryrefslogtreecommitdiffstats
path: root/homescreen/src
diff options
context:
space:
mode:
authorMatt Porter <mporter@konsulko.com>2018-07-27 13:07:56 -0400
committerMatt Porter <mporter@konsulko.com>2018-07-27 13:07:56 -0400
commitdb717523a6f9797312c94e756bac1b7b542e40ed (patch)
tree494726760bdf61f31b767216e5338bfbb06f5869 /homescreen/src
parenta8b94699ae7ec155729fcccda2be4f22328ca790 (diff)
Convert StatusBarModel to get WiFi status info from network binding
The StatusBarModel updates icons using an exposed DBus API that avoids the appfw. The new networking binding does not support the out of band StatusBar DBus API. Use events from the network binding (exposed as Qt properties) to update the WiFi status indicator. Bug-AGL: SPEC-1628 Change-Id: Ie91f69c1d5d54d4fb225e4e99a1d5a94a0dc83e7 Signed-off-by: Matt Porter <mporter@konsulko.com>
Diffstat (limited to 'homescreen/src')
-rw-r--r--homescreen/src/main.cpp4
-rw-r--r--homescreen/src/statusbarmodel.cpp46
-rw-r--r--homescreen/src/statusbarmodel.h7
3 files changed, 57 insertions, 0 deletions
diff --git a/homescreen/src/main.cpp b/homescreen/src/main.cpp
index 19bb0d3..71dc782 100644
--- a/homescreen/src/main.cpp
+++ b/homescreen/src/main.cpp
@@ -140,5 +140,9 @@ int main(int argc, char *argv[])
QQuickWindow *window = qobject_cast<QQuickWindow *>(root);
QObject::connect(window, SIGNAL(frameSwapped()), layoutHandler, SLOT(slotActivateSurface()));
+ QList<QObject *> sobjs = engine.rootObjects();
+ StatusBarModel *statusBar = sobjs.first()->findChild<StatusBarModel *>("statusBar");
+ statusBar->init(bindingAddress, engine.rootContext());
+
return a.exec();
}
diff --git a/homescreen/src/statusbarmodel.cpp b/homescreen/src/statusbarmodel.cpp
index 5438e89..19767a9 100644
--- a/homescreen/src/statusbarmodel.cpp
+++ b/homescreen/src/statusbarmodel.cpp
@@ -19,6 +19,8 @@
#include <QtDBus/QDBusConnection>
+#include "network.h"
+
class StatusBarModel::Private
{
public:
@@ -29,6 +31,7 @@ private:
public:
StatusBarServer server;
QString iconList[StatusBarServer::SupportedCount];
+ Network *network;
};
StatusBarModel::Private::Private(StatusBarModel *parent)
@@ -59,6 +62,49 @@ StatusBarModel::~StatusBarModel()
delete d;
}
+void StatusBarModel::init(QUrl &url, QQmlContext *context)
+{
+ d->network = new Network(url, context);
+ context->setContextProperty("network", d->network);
+
+ QObject::connect(d->network, &Network::wifiConnectedChanged, this, &StatusBarModel::onWifiConnectedChanged);
+ QObject::connect(d->network, &Network::wifiEnabledChanged, this, &StatusBarModel::onWifiEnabledChanged);
+ QObject::connect(d->network, &Network::wifiStrengthChanged, this, &StatusBarModel::onWifiStrengthChanged);
+
+ setWifiStatus(d->network->wifiConnected(), d->network->wifiEnabled(), d->network->wifiStrength());
+}
+
+void StatusBarModel::setWifiStatus(bool connected, bool enabled, int strength)
+{
+ if (enabled && connected)
+ if (strength < 30)
+ d->server.setStatusIcon(0, QStringLiteral("qrc:/images/Status/HMI_Status_Wifi_1Bar-01.png"));
+ else if (strength < 50)
+ d->server.setStatusIcon(0, QStringLiteral("qrc:/images/Status/HMI_Status_Wifi_2Bars-01.png"));
+ else if (strength < 70)
+ d->server.setStatusIcon(0, QStringLiteral("qrc:/images/Status/HMI_Status_Wifi_3Bars-01.png"));
+ else
+ d->server.setStatusIcon(0, QStringLiteral("qrc:/images/Status/HMI_Status_Wifi_Full-01.png"));
+ else
+ d->server.setStatusIcon(0, QStringLiteral("qrc:/images/Status/HMI_Status_Wifi_NoBars-01.png"));
+}
+
+void StatusBarModel::onWifiConnectedChanged(bool connected)
+{
+ setWifiStatus(connected, d->network->wifiEnabled(), d->network->wifiStrength());
+}
+
+void StatusBarModel::onWifiEnabledChanged(bool enabled)
+{
+ setWifiStatus(d->network->wifiConnected(), enabled, d->network->wifiStrength());
+}
+
+void StatusBarModel::onWifiStrengthChanged(int strength)
+{
+ qInfo() << "Strength changed: " << strength;
+ setWifiStatus(d->network->wifiConnected(), d->network->wifiEnabled(), strength);
+}
+
int StatusBarModel::rowCount(const QModelIndex &parent) const
{
if (parent.isValid())
diff --git a/homescreen/src/statusbarmodel.h b/homescreen/src/statusbarmodel.h
index 8d6a70b..39fe148 100644
--- a/homescreen/src/statusbarmodel.h
+++ b/homescreen/src/statusbarmodel.h
@@ -26,14 +26,21 @@ public:
explicit StatusBarModel(QObject *parent = NULL);
~StatusBarModel();
+ void init(QUrl &url, QQmlContext *context);
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
QHash<int, QByteArray> roleNames() const override;
+ // slots
+ void onWifiConnectedChanged(bool connected);
+ void onWifiEnabledChanged(bool enabled);
+ void onWifiStrengthChanged(int strength);
+
private:
class Private;
Private *d;
+ void setWifiStatus(bool connected, bool enabled, int strength);
};
#endif // STATUSBARMODEL_H