From: Philippe Lelong Date: Mon, 19 Dec 2016 15:00:20 +0000 (+0100) Subject: various changes in user language settings X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=staging%2FHomeScreen.git;a=commitdiff_plain;h=e64b4751e3a6fc70b7a83c6aae2cd180a4284807 various changes in user language settings Signed-off-by: Philippe Lelong --- diff --git a/HomeScreen/qml/Home.qml b/HomeScreen/qml/Home.qml index d8315cc..7d6fb74 100644 --- a/HomeScreen/qml/Home.qml +++ b/HomeScreen/qml/Home.qml @@ -41,6 +41,16 @@ Item { source: './images/B14-90.png' visible: false } + Image { + id: flagLanguage + scale: 0.7 + anchors.left: parent.left + anchors.leftMargin: 20 + anchors.top: parent.top + anchors.topMargin: 10 + source: './images/us_flag.png' + visible: true + } Image { id: visa width: 200 @@ -68,12 +78,12 @@ Item { anchors.horizontalCenter: parent.horizontalCenter anchors.bottom: parent.bottom anchors.bottomMargin: 40 - visible: false + visible: true Text { id: helloText anchors.centerIn: parent color: "white" - text: "" + text: "No Authenticated User" font.pixelSize: 40 font.family: "Roboto" SequentialAnimation on font.letterSpacing { @@ -81,10 +91,12 @@ Item { loops: 1; NumberAnimation { from: 0; to: 50; easing.type: Easing.InQuad; duration: 3000 } onRunningChanged: { - if(running) + if(running) { hello.visible = true - else - hello.visible = false + } else { + helloText.opacity = 1 + helloText.font.letterSpacing = 0 + } } } @@ -110,6 +122,10 @@ Item { visa.visible = show cardNumber.text = num; } + function changeFlag(flagImage) { + flagLanguage.source = flagImage + } + GridView { anchors.centerIn: parent width: cellHeight * 3 @@ -122,6 +138,7 @@ Item { width: 320 height: 320 Image { + id: appImage anchors.fill: parent source: './images/HMI_AppLauncher_%1_%2-01.png'.arg(model.icon).arg(pressed ? 'Active' : 'Inactive') Label { @@ -135,6 +152,7 @@ Item { text: '%1'.arg(model.name) function myChangeLanguage() { text = '%1'.arg(model.name) + appImage.source = './images/HMI_AppLauncher_%1_%2-01.png'.arg(model.icon).arg(pressed ? 'Active' : 'Inactive') } Component.onCompleted: { root.languageChanged.connect(myChangeLanguage) diff --git a/HomeScreen/qml/ShortcutArea.qml b/HomeScreen/qml/ShortcutArea.qml index 853ca45..4be6d9f 100644 --- a/HomeScreen/qml/ShortcutArea.qml +++ b/HomeScreen/qml/ShortcutArea.qml @@ -50,14 +50,32 @@ Item { function languageChanged(lang) { if(lang === "fr") { applicationModel.setProperty(0, "label", 'ACCEUIL') - applicationModel.setProperty(1, "label", 'MULTIMÉDIA') - applicationModel.setProperty(2, "label", 'CLIMATISATION') - applicationModel.setProperty(3, "label", 'NAVIGATION') + + applicationModel.setProperty(2, "label", 'MULTIMÉDIA') + applicationModel.setProperty(2, "name", 'Multimedia') + applicationModel.setProperty(2, "application", 'mediaplayer@0.1') + + applicationModel.setProperty(3, "label", 'CLIMATISATION') + applicationModel.setProperty(3, "name", 'HVAC') + applicationModel.setProperty(3, "application", 'hvac@0.1') + + applicationModel.setProperty(1, "label", 'NAVIGATION') + applicationModel.setProperty(1, "name", 'Navigation') + applicationModel.setProperty(1, "application", 'navigation@0.1') } else { applicationModel.setProperty(0, "label", 'HOME') + applicationModel.setProperty(1, "label", 'MULTIMEDIA') + applicationModel.setProperty(1, "name", 'Multimedia') + applicationModel.setProperty(1, "application", 'mediaplayer@0.1') + applicationModel.setProperty(2, "label", 'HVAC') + applicationModel.setProperty(2, "name", 'HVAC') + applicationModel.setProperty(2, "application", 'hvac@0.1') + applicationModel.setProperty(3, "label", 'NAVIGATION') + applicationModel.setProperty(3, "name", 'Navigation') + applicationModel.setProperty(3, "application", 'navigation@0.1') } } property int currentIndex: -1 // TODO: to be moved to whereever right diff --git a/HomeScreen/qml/images/Home/french_flag.png b/HomeScreen/qml/images/Home/french_flag.png new file mode 100755 index 0000000..948f828 Binary files /dev/null and b/HomeScreen/qml/images/Home/french_flag.png differ diff --git a/HomeScreen/qml/images/Home/home.qrc b/HomeScreen/qml/images/Home/home.qrc index 14e2828..8bef69d 100644 --- a/HomeScreen/qml/images/Home/home.qrc +++ b/HomeScreen/qml/images/Home/home.qrc @@ -21,5 +21,7 @@ HMI_AppLauncher_Settings_Inactive-01.png B14-90.png visa.png + french_flag.png + us_flag.png diff --git a/HomeScreen/qml/images/Home/us_flag.png b/HomeScreen/qml/images/Home/us_flag.png new file mode 100755 index 0000000..a85592a Binary files /dev/null and b/HomeScreen/qml/images/Home/us_flag.png differ diff --git a/HomeScreen/src2/applicationmodel.cpp b/HomeScreen/src2/applicationmodel.cpp index 136161a..ff7276e 100644 --- a/HomeScreen/src2/applicationmodel.cpp +++ b/HomeScreen/src2/applicationmodel.cpp @@ -25,7 +25,8 @@ class ApplicationModel::Private { public: Private(ApplicationModel *parent); - + QList > orders; + QList originalData; private: ApplicationModel *q; public: @@ -51,29 +52,59 @@ ApplicationModel::Private::Private(ApplicationModel *parent) data.append(AppInfo(QStringLiteral("Settings"), QStringLiteral("SETTINGS"), QStringLiteral("settings@0.1"))); data.append(AppInfo(QStringLiteral("POI"), QStringLiteral("POINT OF\nINTEREST"), QStringLiteral("poi@0.1"))); } + originalData = data; + QList o; + o << 5 << 4 << 3 << 7 << 8 << 0 << 2 << 1 << 6; + orders.append(o); + o.clear(); + o << 0 << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8 ; + orders.append(o); + o.clear(); + o << 3 << 8 << 1 << 0 << 2 << 7 << 5 << 4 << 6; + orders.append(o); + o.clear(); + o << 2 << 7 << 3 << 8 << 4 << 0 << 1 << 5 << 6; + orders.append(o); + o.clear(); + o << 2 << 7 << 3 << 8 << 4 << 0 << 1 << 5 << 6; + orders.append(o); + o.clear(); + o << 6 << 0 << 2 << 1 << 7 << 3 << 5 << 4 << 8; + orders.append(o); } +void ApplicationModel::changeOrder(const int &hash) +{ + int order = qAbs(hash) % 7; + QList o = d->orders.at(order); + QList newData; + for(int i = 0; i < o.size(); ++i) { + newData.append(d->originalData.at(o.at(i))); + } + d->data = newData; +} + void ApplicationModel::changeLanguage(const QString &lang) { //todo: use QT translator instead of hardcoded strings. if(lang == "fr") { - d->data[0].setName("CLIMATISATION"); - d->data[1].setName("NAVIGATION"); - d->data[2].setName("TÉLÉPHONE"); - d->data[3].setName("RADIO"); - d->data[4].setName("MULTIMÉDIA"); - d->data[5].setName("CONNEXIONS"); - d->data[6].setName("TABLEAU DE\nBORD"); - d->data[7].setName("PARAMÈTRES"); - d->data[8].setName("POINT D'INTÉRÊT"); + d->originalData[0].setName("CLIMATISATION"); + d->originalData[1].setName("NAVIGATION"); + d->originalData[2].setName("TÉLÉPHONE"); + d->originalData[3].setName("RADIO"); + d->originalData[4].setName("MULTIMÉDIA"); + d->originalData[5].setName("CONNEXIONS"); + d->originalData[6].setName("TABLEAU DE\nBORD"); + d->originalData[7].setName("PARAMÈTRES"); + d->originalData[8].setName("POINT D'INTÉRÊT"); } else { - d->data[0].setName("HVAC"); - d->data[1].setName("NAVIGATION"); - d->data[2].setName("PHONE"); - d->data[3].setName("RADIO"); - d->data[4].setName("MULTIMEDIA"); - d->data[5].setName("CONNECTIVITY"); - d->data[6].setName("DASHBOARD"); - d->data[7].setName("SETTINGS"); - d->data[8].setName("POINT OF\nINTEREST"); + d->originalData[0].setName("HVAC"); + d->originalData[1].setName("NAVIGATION"); + d->originalData[2].setName("PHONE"); + d->originalData[3].setName("RADIO"); + d->originalData[4].setName("MULTIMEDIA"); + d->originalData[5].setName("CONNECTIVITY"); + d->originalData[6].setName("DASHBOARD"); + d->originalData[7].setName("SETTINGS"); + d->originalData[8].setName("POINT OF\nINTEREST"); } } diff --git a/HomeScreen/src2/applicationmodel.h b/HomeScreen/src2/applicationmodel.h index 40741bd..1dc4d72 100644 --- a/HomeScreen/src2/applicationmodel.h +++ b/HomeScreen/src2/applicationmodel.h @@ -31,6 +31,7 @@ public: QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QHash roleNames() const override; void changeLanguage(const QString &lang); + void changeOrder(const int &hash); private: class Private; Private *d; diff --git a/HomeScreen/src2/usermanagement.cpp b/HomeScreen/src2/usermanagement.cpp index f22ae2f..23550e4 100644 --- a/HomeScreen/src2/usermanagement.cpp +++ b/HomeScreen/src2/usermanagement.cpp @@ -1,5 +1,4 @@ #include "usermanagement.h" -#include #include #include #include @@ -11,6 +10,10 @@ UserManagement::UserManagement(QObject *root) : QObject() statusArea = root->findChild("StatusArea"); this->appModel = home->findChild("ApplicationModel"); sequence = 0; + isRed = false; + connect(&timerRed, SIGNAL(timeout()), this, SLOT(slot_turnOffRed())); + timerRed.setSingleShot(true); + timerRed.setInterval(3000); #ifdef REAL_SERVER connectWebsockets(); #else @@ -23,8 +26,11 @@ UserManagement::UserManagement(QObject *root) : QObject() } void UserManagement::setUser(const User &user) { + int hash = qHash(user.name + user.first_name); + timerRed.stop(); appModel->changeLanguage(user.graphPreferredLanguage); - QMetaObject::invokeMethod(logo, "setImage", Q_ARG(QVariant, "./images/Utility_Logo_Colour-01.png")); + appModel->changeOrder(hash); + slot_turnOffRed(); QMetaObject::invokeMethod(home, "languageChanged"); QMetaObject::invokeMethod(shortcutArea, "languageChanged", Q_ARG(QVariant, user.graphPreferredLanguage)); QMetaObject::invokeMethod(statusArea, "languageChanged", Q_ARG(QVariant, user.graphPreferredLanguage)); @@ -35,7 +41,16 @@ void UserManagement::setUser(const User &user) QMetaObject::invokeMethod(home, "showVisa", Q_ARG(QVariant, true), Q_ARG(QVariant, user.ccNumberMasked)); const QString welcome = QString("%1").arg(user.graphPreferredLanguage == "fr" ? "Bonjour " : "Hello") + " "; QMetaObject::invokeMethod(home, "showHello", Q_ARG(QVariant, welcome + user.first_name)); + QMetaObject::invokeMethod(home, "changeFlag", Q_ARG(QVariant, user.graphPreferredLanguage == "fr" ? "./images/french_flag.png" : "./images/us_flag.png")); +} +void UserManagement::slot_turnOffRed() +{ + if(!isRed) + return; + QMetaObject::invokeMethod(logo, "setImage", Q_ARG(QVariant, "./images/Utility_Logo_Colour-01.png")); + isRed = false; } + void UserManagement::connectWebsockets() { #ifdef REAL_SERVER @@ -82,7 +97,10 @@ void UserManagement::onTextMessageReceived(QString message) } QVariantMap map = list.at(2).toMap(); if(list.first().toInt() == 5) { - QMetaObject::invokeMethod(logo, "setImage", Q_ARG(QVariant, "./images/Utility_Logo_Red-01.png")); + if(!isRed) + QMetaObject::invokeMethod(logo, "setImage", Q_ARG(QVariant, "./images/Utility_Logo_Red-01.png")); + isRed = true; + timerRed.start(); map = map["data"].toMap(); if(map["eventName"].toString() == "login") { //qWarning()<<"login received in client"; diff --git a/HomeScreen/src2/usermanagement.h b/HomeScreen/src2/usermanagement.h index c0bc401..085549d 100644 --- a/HomeScreen/src2/usermanagement.h +++ b/HomeScreen/src2/usermanagement.h @@ -11,12 +11,6 @@ #ifndef REAL_SERVER #include #endif -//{"postal_address":"201 Mission Street","loc":"37.7914374,-122.3950694","country":"USA","mail":"bjensen@example.com", -//"city":"San Francisco","graphEmail":"bjensen@example.com","graphPreferredLanguage":"en","ccNumberMasked":"************1212", -//"ccExpYear":"19","description":"Original description","ccExpMonth":"01","groups":[],"last_name":"Jensen" -//"ccNumber":"123-1111-2222-3333-1212","house_identifier":"ForgeRock","phone":"+1 408 555 1862","name":"bjensen" -//"state":"CA","fax":"+1 408 555 1862","common_name":"Barbara Jensen","postal_code":"94105","first_name":"Barbara","keytoken":"EB:7C:23:C6:21:BF"} -//"graphActions":"Install App,Update Software,Exceed 100 Kph,Open Trunk,View Online" struct User { QString postal_address; QPointF loc; @@ -67,6 +61,7 @@ public slots: void serverSocketDisconnected(); void slot_timerTest(); #endif + void slot_turnOffRed(); private: QObject *home; QObject *shortcutArea; @@ -75,6 +70,8 @@ private: QByteArray data; ApplicationModel *appModel; QWebSocket webSocket; + QTimer timerRed; + bool isRed; int sequence; bool jsonToMap(const QByteArray &buf, QVariantMap *map) const; bool mapToJson(const QVariantMap &map, QByteArray *json) const;