X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=homescreen%2Fsrc%2Fstatusbarmodel.cpp;h=447466d2673f723f39e9b1cc7cb1eb10b20a975d;hb=b2c08ec4a30e5acf3cb1851f71bda88bc542f7d1;hp=bb4417141901b49258cf8e611c25aae6137b198c;hpb=4d66f9362b74500b1ceb1850c156cd7aeaf60fc6;p=apps%2Fhomescreen.git diff --git a/homescreen/src/statusbarmodel.cpp b/homescreen/src/statusbarmodel.cpp index bb44171..447466d 100644 --- a/homescreen/src/statusbarmodel.cpp +++ b/homescreen/src/statusbarmodel.cpp @@ -17,8 +17,8 @@ #include "statusbarmodel.h" #include "statusbarserver.h" - -#include +#include +#include class StatusBarModel::Private { @@ -30,14 +30,13 @@ private: public: StatusBarServer server; QString iconList[StatusBarServer::SupportedCount]; + Network *network; + WifiAdapter *wifi_a; }; StatusBarModel::Private::Private(StatusBarModel *parent) : q(parent) { - QDBusConnection dbus = QDBusConnection::sessionBus(); - dbus.registerObject("/StatusBar", &server); - dbus.registerService("org.agl.homescreen"); connect(&server, &StatusBarServer::statusIconChanged, [&](int placeholderIndex, const QString &icon) { if (placeholderIndex < 0 || StatusBarServer::SupportedCount <= placeholderIndex) return; if (iconList[placeholderIndex] == icon) return; @@ -60,6 +59,54 @@ StatusBarModel::~StatusBarModel() delete d; } +void StatusBarModel::init(QQmlContext *context) +{ + d->network = new Network(false, context); + context->setContextProperty("network", d->network); + d->wifi_a = static_cast(d->network->findAdapter("wifi")); + Q_CHECK_PTR(d->wifi_a); + + QObject::connect(d->wifi_a, &WifiAdapter::wifiConnectedChanged, + this, &StatusBarModel::onWifiConnectedChanged); + QObject::connect(d->wifi_a, &WifiAdapter::wifiEnabledChanged, + this, &StatusBarModel::onWifiEnabledChanged); + QObject::connect(d->wifi_a, &WifiAdapter::wifiStrengthChanged, + this, &StatusBarModel::onWifiStrengthChanged); + + setWifiStatus(d->wifi_a->wifiConnected(), d->wifi_a->wifiEnabled(), d->wifi_a->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->wifi_a->wifiEnabled(), d->wifi_a->wifiStrength()); +} + +void StatusBarModel::onWifiEnabledChanged(bool enabled) +{ + setWifiStatus(d->wifi_a->wifiConnected(), enabled, d->wifi_a->wifiStrength()); +} + +void StatusBarModel::onWifiStrengthChanged(int strength) +{ + qInfo() << "Strength changed: " << strength; + setWifiStatus(d->wifi_a->wifiConnected(), d->wifi_a->wifiEnabled(), strength); +} + int StatusBarModel::rowCount(const QModelIndex &parent) const { if (parent.isValid())