X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=homescreen%2Fsrc%2Fstatusbarmodel.cpp;h=f54a5f4e4b4fd777658c750f71b4649c2fe7d2ac;hb=refs%2Ftags%2Fhalibut_7.99.1;hp=5438e898ff0ba280912a333eee024267914c1fd3;hpb=0592a405aa68f3baf6773795efa5522e4ee16779;p=apps%2Fhomescreen.git diff --git a/homescreen/src/statusbarmodel.cpp b/homescreen/src/statusbarmodel.cpp index 5438e89..f54a5f4 100644 --- a/homescreen/src/statusbarmodel.cpp +++ b/homescreen/src/statusbarmodel.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2016 The Qt Company Ltd. + * Copyright (C) 2017, 2018 TOYOTA MOTOR CORPORATION * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +20,8 @@ #include +#include "network.h" + class StatusBarModel::Private { public: @@ -29,6 +32,8 @@ private: public: StatusBarServer server; QString iconList[StatusBarServer::SupportedCount]; + Network *network; + WifiAdapter *wifi_a; }; StatusBarModel::Private::Private(StatusBarModel *parent) @@ -59,12 +64,61 @@ StatusBarModel::~StatusBarModel() delete d; } +void StatusBarModel::init(QUrl &url, QQmlContext *context) +{ + d->network = new Network(url, 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()) return 0; - return StatusBarServer::SupportedCount; + // Delete bluetooth because use agl-service-bluetooth. + return StatusBarServer::SupportedCount - 1; } QVariant StatusBarModel::data(const QModelIndex &index, int role) const @@ -75,7 +129,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;