X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=homescreen%2Fsrc%2Fstatusbarmodel.cpp;h=c093ceb6ca2d90de47f059be4b5f030c119bcf69;hb=9e12877a80b90a1921a8e8714c0c5464779a6ba6;hp=5438e898ff0ba280912a333eee024267914c1fd3;hpb=0592a405aa68f3baf6773795efa5522e4ee16779;p=apps%2Fhomescreen.git diff --git a/homescreen/src/statusbarmodel.cpp b/homescreen/src/statusbarmodel.cpp index 5438e89..c093ceb 100644 --- a/homescreen/src/statusbarmodel.cpp +++ b/homescreen/src/statusbarmodel.cpp @@ -16,9 +16,14 @@ #include "statusbarmodel.h" #include "statusbarserver.h" +#include +#include "hmi-debug.h" #include +#include "network.h" + + class StatusBarModel::Private { public: @@ -29,6 +34,7 @@ private: public: StatusBarServer server; QString iconList[StatusBarServer::SupportedCount]; + Network *network; }; StatusBarModel::Private::Private(StatusBarModel *parent) @@ -59,12 +65,57 @@ StatusBarModel::~StatusBarModel() delete d; } +void StatusBarModel::init(QUrl &url, QQmlContext *context) +{ + HMI_DEBUG("HomeScreen", "StatusBarModel::init"); + 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) +{ + HMI_DEBUG("HomeScreen", "StatusBarModel::setWifiStatus"); + 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()) return 0; - return StatusBarServer::SupportedCount; + return StatusBarServer::SupportedCount - 1; } QVariant StatusBarModel::data(const QModelIndex &index, int role) const @@ -75,7 +126,11 @@ QVariant StatusBarModel::data(const QModelIndex &index, int role) const switch (role) { case Qt::DisplayRole: - ret = d->iconList[index.row()]; + if (index.row() == 0) { + ret = d->iconList[StatusBarServer::StatusWifi]; + } else if (index.row() == 1) { + ret = d->iconList[StatusBarServer::StatusCellular]; + } break; default: break;