aboutsummaryrefslogtreecommitdiffstats
path: root/HomeScreen/src2
diff options
context:
space:
mode:
authorPhilippe Lelong <lelong.ph@meltemus.com>2016-12-19 16:00:20 +0100
committerPhilippe Lelong <lelong.ph@meltemus.com>2016-12-19 16:00:20 +0100
commite64b4751e3a6fc70b7a83c6aae2cd180a4284807 (patch)
treeff7cebc988102c9a95479cbe612ea9830f1b35a1 /HomeScreen/src2
parenta523ed5e0691c548af8f787dc37f04be0db52d84 (diff)
various changes in user language settings
Signed-off-by: Philippe Lelong <lelong.ph@meltemus.com>
Diffstat (limited to 'HomeScreen/src2')
-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
4 files changed, 75 insertions, 28 deletions
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;