diff options
author | zheng_wenlong <wenlong_zheng@nexty-ele.com> | 2018-08-08 14:38:03 +0900 |
---|---|---|
committer | zheng_wenlong <wenlong_zheng@nexty-ele.com> | 2018-08-08 14:41:13 +0900 |
commit | 58ecf2c3229ab677ca39095b52ab88b1a41861bd (patch) | |
tree | dd9ec6ec0bb49826746d942ee59322262e54c835 | |
parent | 4d66f9362b74500b1ceb1850c156cd7aeaf60fc6 (diff) |
Merge lastest commit from homescreen-2017
Merge two lastest commit from homescreen-2017.
1) StatusBarModel: fix QQmlContext reference
Fix missing include
Bug-AGL: SPEC-1628
2) Improve output of multiple screen resolution
To improve output on various monitor with various resolution,
use scale_factor from WM to fit various screen resolution.
Bug-AGL: SPEC-1568, SPEC-1569, SPEC-1611
Change-Id: I71a6c87187c2b0b81bb0ed10cc8779032aa19300
Signed-off-by: Matt Porter <mporter@konsulko.com>Y
Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
-rw-r--r-- | homescreen/qml/StatusArea.qml | 2 | ||||
-rw-r--r-- | homescreen/qml/main.qml | 2 | ||||
-rw-r--r-- | homescreen/src/main.cpp | 9 | ||||
-rw-r--r-- | homescreen/src/statusbarmodel.cpp | 46 | ||||
-rw-r--r-- | homescreen/src/statusbarmodel.h | 8 | ||||
-rw-r--r-- | package/config.xml | 1 |
6 files changed, 65 insertions, 3 deletions
diff --git a/homescreen/qml/StatusArea.qml b/homescreen/qml/StatusArea.qml index 24d2b18..3f2b280 100644 --- a/homescreen/qml/StatusArea.qml +++ b/homescreen/qml/StatusArea.qml @@ -157,7 +157,7 @@ Item { } } Repeater { - model: StatusBarModel {} + model: StatusBarModel { objectName: "statusBar" } delegate: Image { Layout.preferredWidth: 77 Layout.preferredHeight: 73 diff --git a/homescreen/qml/main.qml b/homescreen/qml/main.qml index 1312e87..96a1950 100644 --- a/homescreen/qml/main.qml +++ b/homescreen/qml/main.qml @@ -32,7 +32,7 @@ Window { anchors.centerIn: parent width: 1080 height: 1920 - scale: 1.0 + scale: screenInfo.scale_factor() source: './images/AGL_HMI_Blue_Background_NoCar-01.png' ColumnLayout { diff --git a/homescreen/src/main.cpp b/homescreen/src/main.cpp index 704bb9a..620c869 100644 --- a/homescreen/src/main.cpp +++ b/homescreen/src/main.cpp @@ -75,7 +75,7 @@ int main(int argc, char *argv[]) parser.addVersionOption(); parser.process(a); QStringList positionalArguments = parser.positionalArguments(); - + int port = 1700; QString token = "wm"; @@ -97,6 +97,8 @@ int main(int argc, char *argv[]) exit(EXIT_FAILURE); } + AGLScreenInfo screenInfo(layoutHandler->get_scale_factor()); + if (layoutHandler->requestSurface(QString("HomeScreen")) != 0) { exit(EXIT_FAILURE); } @@ -136,11 +138,16 @@ int main(int argc, char *argv[]) engine.rootContext()->setContextProperty("launcher", launcher); engine.rootContext()->setContextProperty("weather", new Weather(bindingAddress)); engine.rootContext()->setContextProperty("bluetooth", new Bluetooth(bindingAddress)); + engine.rootContext()->setContextProperty("screenInfo", &screenInfo); engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); QObject *root = engine.rootObjects().first(); 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 bb44171..5e63b7d 100644 --- a/homescreen/src/statusbarmodel.cpp +++ b/homescreen/src/statusbarmodel.cpp @@ -20,6 +20,8 @@ #include <QtDBus/QDBusConnection> +#include "network.h" + class StatusBarModel::Private { public: @@ -30,6 +32,7 @@ private: public: StatusBarServer server; QString iconList[StatusBarServer::SupportedCount]; + Network *network; }; StatusBarModel::Private::Private(StatusBarModel *parent) @@ -60,6 +63,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..4e31f19 100644 --- a/homescreen/src/statusbarmodel.h +++ b/homescreen/src/statusbarmodel.h @@ -18,6 +18,7 @@ #define STATUSBARMODEL_H #include <QtCore/QAbstractListModel> +#include <QtQml/QQmlContext> class StatusBarModel : public QAbstractListModel { @@ -26,14 +27,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 diff --git a/package/config.xml b/package/config.xml index 4b2a218..32d19fd 100644 --- a/package/config.xml +++ b/package/config.xml @@ -8,6 +8,7 @@ <license>APL 2.0</license> <feature name="urn:AGL:widget:required-api"> <param name="homescreen" value="ws" /> + <param name="network-manager" value="ws" /> <param name="weather" value="ws" /> <param name="Bluetooth-Manager" value="ws" /> <param name="windowmanager" value="ws" /> |