aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilippe Lelong <lelong.ph@meltemus.com>2016-12-19 16:00:20 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2016-12-20 13:28:35 +0100
commit4c0c9989d249ef1af027f7fda85a4f2922635044 (patch)
treeabc733fd9d1ad94fe55ba48cd04f38f6e3e40ba9
parenta16675fa38c93a2fedbcaabffc2b069200172283 (diff)
various changes in user language settings
Signed-off-by: Philippe Lelong <lelong.ph@meltemus.com>
-rw-r--r--HomeScreen/qml/Home.qml28
-rw-r--r--HomeScreen/qml/ShortcutArea.qml24
-rwxr-xr-xHomeScreen/qml/images/Home/french_flag.pngbin0 -> 791 bytes
-rw-r--r--HomeScreen/qml/images/Home/home.qrc2
-rwxr-xr-xHomeScreen/qml/images/Home/us_flag.pngbin0 -> 4042 bytes
-rw-r--r--HomeScreen/src2/applicationmodel.cpp69
-rw-r--r--HomeScreen/src2/applicationmodel.h1
-rw-r--r--HomeScreen/src2/usermanagement.cpp24
-rw-r--r--HomeScreen/src2/usermanagement.h9
9 files changed, 121 insertions, 36 deletions
diff --git a/HomeScreen/qml/Home.qml b/HomeScreen/qml/Home.qml
index 63bb385..756efb9 100644
--- a/HomeScreen/qml/Home.qml
+++ b/HomeScreen/qml/Home.qml
@@ -42,6 +42,16 @@ Item {
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
height: 124
@@ -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
@@ -123,6 +139,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 {
@@ -136,6 +153,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 2590747..33ec539 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')
}
}
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
--- /dev/null
+++ b/HomeScreen/qml/images/Home/french_flag.png
Binary files 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 @@
<file>HMI_AppLauncher_Settings_Inactive-01.png</file>
<file>B14-90.png</file>
<file>visa.png</file>
+ <file>french_flag.png</file>
+ <file>us_flag.png</file>
</qresource>
</RCC>
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
--- /dev/null
+++ b/HomeScreen/qml/images/Home/us_flag.png
Binary files 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<QList<int> > orders;
+ QList<AppInfo> 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<int> 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<int> o = d->orders.at(order);
+ QList<AppInfo> 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<int, QByteArray> 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 <QApplication>
#include <QDebug>
#include <QtCore/QJsonDocument>
#include <QByteArray>
@@ -11,6 +10,10 @@ UserManagement::UserManagement(QObject *root) : QObject()
statusArea = root->findChild<QObject *>("StatusArea");
this->appModel = home->findChild<ApplicationModel *>("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 <QtWebSockets/QWebSocketServer>
#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;