mirror of https://github.com/nymea/nymea.git
Merge PR #630: Add location setting
commit
2cd6db2b8f
|
|
@ -108,6 +108,11 @@ ConfigurationHandler::ConfigurationHandler(QObject *parent):
|
|||
basicConfiguration.insert("d:serverTime", enumValueName(Uint));
|
||||
basicConfiguration.insert("d:timeZone", enumValueName(String));
|
||||
basicConfiguration.insert("d:language", enumValueName(String));
|
||||
QVariantMap location;
|
||||
location.insert("latitude", enumValueName(Double));
|
||||
location.insert("longitude", enumValueName(Double));
|
||||
location.insert("name", enumValueName(String));
|
||||
basicConfiguration.insert("d:location", location);
|
||||
basicConfiguration.insert("debugServerEnabled", enumValueName(Bool));
|
||||
returns.insert("basicConfiguration", basicConfiguration);
|
||||
QVariantList tcpServerConfigurations;
|
||||
|
|
@ -144,6 +149,12 @@ ConfigurationHandler::ConfigurationHandler(QObject *parent):
|
|||
returns.insert("configurationError", enumRef<NymeaConfiguration::ConfigurationError>());
|
||||
registerMethod("SetLanguage", description, params, returns, Types::PermissionScopeAdmin, "Use the locale property in the Handshake message instead.");
|
||||
|
||||
params.clear(); returns.clear();
|
||||
description = "Sets the server location.";
|
||||
params.insert("location", location);
|
||||
returns.insert("configurationError", enumRef<NymeaConfiguration::ConfigurationError>());
|
||||
registerMethod("SetLocation", description, params, returns, Types::PermissionScopeAdmin);
|
||||
|
||||
params.clear(); returns.clear();
|
||||
description = "Enable or disable the debug server.";
|
||||
params.insert("enabled", enumValueName(String));
|
||||
|
|
@ -306,6 +317,7 @@ ConfigurationHandler::ConfigurationHandler(QObject *parent):
|
|||
|
||||
connect(NymeaCore::instance()->configuration(), &NymeaConfiguration::serverNameChanged, this, &ConfigurationHandler::onBasicConfigurationChanged);
|
||||
connect(NymeaCore::instance()->configuration(), &NymeaConfiguration::timeZoneChanged, this, &ConfigurationHandler::onBasicConfigurationChanged);
|
||||
connect(NymeaCore::instance()->configuration(), &NymeaConfiguration::locationChanged, this, &ConfigurationHandler::onBasicConfigurationChanged);
|
||||
connect(NymeaCore::instance()->configuration(), &NymeaConfiguration::localeChanged, this, &ConfigurationHandler::onBasicConfigurationChanged);
|
||||
connect(NymeaCore::instance()->configuration(), &NymeaConfiguration::debugServerEnabledChanged, this, &ConfigurationHandler::onBasicConfigurationChanged);
|
||||
connect(NymeaCore::instance()->configuration(), &NymeaConfiguration::localeChanged, this, &ConfigurationHandler::onLanguageChanged);
|
||||
|
|
@ -423,6 +435,16 @@ JsonReply *ConfigurationHandler::SetLanguage(const QVariantMap ¶ms) const
|
|||
return createReply(statusToReply(NymeaConfiguration::ConfigurationErrorNoError));
|
||||
}
|
||||
|
||||
JsonReply *ConfigurationHandler::SetLocation(const QVariantMap ¶ms) const
|
||||
{
|
||||
QVariantMap locationMap = params.value("location").toMap();
|
||||
double latitude = locationMap.value("latitude").toDouble();
|
||||
double longitude = locationMap.value("longitude").toDouble();
|
||||
QString name = locationMap.value("name").toString();
|
||||
NymeaCore::instance()->configuration()->setLocation(latitude, longitude, name);
|
||||
return createReply(statusToReply(NymeaConfiguration::ConfigurationErrorNoError));
|
||||
}
|
||||
|
||||
JsonReply *ConfigurationHandler::SetTcpServerConfiguration(const QVariantMap ¶ms) const
|
||||
{
|
||||
ServerConfiguration config = unpack<ServerConfiguration>(params.value("configuration").toMap());
|
||||
|
|
@ -734,6 +756,11 @@ QVariantMap ConfigurationHandler::packBasicConfiguration()
|
|||
basicConfiguration.insert("serverTime", NymeaCore::instance()->timeManager()->currentDateTime().toTime_t());
|
||||
basicConfiguration.insert("timeZone", QTimeZone::systemTimeZoneId());
|
||||
basicConfiguration.insert("language", NymeaCore::instance()->configuration()->locale().name());
|
||||
basicConfiguration.insert("location", QVariantMap{
|
||||
{"latitude", NymeaCore::instance()->configuration()->locationLatitude()},
|
||||
{"longitude", NymeaCore::instance()->configuration()->locationLongitude()},
|
||||
{"name", NymeaCore::instance()->configuration()->locationName()}
|
||||
});
|
||||
basicConfiguration.insert("debugServerEnabled", NymeaCore::instance()->configuration()->debugServerEnabled());
|
||||
return basicConfiguration;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ public:
|
|||
Q_INVOKABLE JsonReply *SetServerName(const QVariantMap ¶ms) const;
|
||||
Q_INVOKABLE JsonReply *SetTimeZone(const QVariantMap ¶ms) const;
|
||||
Q_INVOKABLE JsonReply *SetLanguage(const QVariantMap ¶ms) const;
|
||||
Q_INVOKABLE JsonReply *SetLocation(const QVariantMap ¶ms) const;
|
||||
Q_INVOKABLE JsonReply *SetDebugServerEnabled(const QVariantMap ¶ms) const;
|
||||
Q_INVOKABLE JsonReply *SetTcpServerConfiguration(const QVariantMap ¶ms) const;
|
||||
Q_INVOKABLE JsonReply *DeleteTcpServerConfiguration(const QVariantMap ¶ms) const;
|
||||
|
|
|
|||
|
|
@ -285,6 +285,39 @@ void NymeaConfiguration::setTimeZone(const QByteArray &timeZone)
|
|||
}
|
||||
}
|
||||
|
||||
double NymeaConfiguration::locationLatitude() const
|
||||
{
|
||||
NymeaSettings settings(NymeaSettings::SettingsRoleGlobal);
|
||||
settings.beginGroup("nymead");
|
||||
return settings.value("locationLatitude").toDouble();
|
||||
}
|
||||
|
||||
double NymeaConfiguration::locationLongitude() const
|
||||
{
|
||||
NymeaSettings settings(NymeaSettings::SettingsRoleGlobal);
|
||||
settings.beginGroup("nymead");
|
||||
return settings.value("locationLongitude").toDouble();
|
||||
}
|
||||
|
||||
QString NymeaConfiguration::locationName() const
|
||||
{
|
||||
NymeaSettings settings(NymeaSettings::SettingsRoleGlobal);
|
||||
settings.beginGroup("nymead");
|
||||
return settings.value("locationName").toString();
|
||||
}
|
||||
|
||||
void NymeaConfiguration::setLocation(double latitude, double longitude, const QString &name)
|
||||
{
|
||||
NymeaSettings settings(NymeaSettings::SettingsRoleGlobal);
|
||||
settings.beginGroup("nymead");
|
||||
if (settings.value("locationLatitude").toDouble() != latitude || settings.value("locationLongitude").toDouble() != longitude || settings.value("locationName").toString() != name) {
|
||||
settings.setValue("locationLatitude", latitude);
|
||||
settings.setValue("locationLongitude", longitude);
|
||||
settings.setValue("locationName", name);
|
||||
emit locationChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QLocale NymeaConfiguration::locale() const
|
||||
{
|
||||
NymeaSettings settings(NymeaSettings::SettingsRoleGlobal);
|
||||
|
|
|
|||
|
|
@ -144,6 +144,11 @@ public:
|
|||
QByteArray timeZone() const;
|
||||
void setTimeZone(const QByteArray &timeZone);
|
||||
|
||||
double locationLatitude() const;
|
||||
double locationLongitude() const;
|
||||
QString locationName() const;
|
||||
void setLocation(double latitude, double longitude, const QString &name);
|
||||
|
||||
QLocale locale() const;
|
||||
void setLocale(const QLocale &locale);
|
||||
|
||||
|
|
@ -225,6 +230,7 @@ signals:
|
|||
void serverNameChanged(const QString &serverName);
|
||||
void timeZoneChanged();
|
||||
void localeChanged();
|
||||
void locationChanged();
|
||||
|
||||
void tcpServerConfigurationChanged(const QString &configId);
|
||||
void tcpServerConfigurationRemoved(const QString &configId);
|
||||
|
|
|
|||
|
|
@ -653,6 +653,11 @@
|
|||
"returns": {
|
||||
"basicConfiguration": {
|
||||
"d:language": "String",
|
||||
"d:location": {
|
||||
"latitude": "Double",
|
||||
"longitude": "Double",
|
||||
"name": "String"
|
||||
},
|
||||
"d:serverTime": "Uint",
|
||||
"d:timeZone": "String",
|
||||
"debugServerEnabled": "Bool",
|
||||
|
|
@ -728,6 +733,20 @@
|
|||
"configurationError": "$ref:ConfigurationError"
|
||||
}
|
||||
},
|
||||
"Configuration.SetLocation": {
|
||||
"description": "Sets the server location.",
|
||||
"params": {
|
||||
"location": {
|
||||
"latitude": "Double",
|
||||
"longitude": "Double",
|
||||
"name": "String"
|
||||
}
|
||||
},
|
||||
"permissionScope": "PermissionScopeAdmin",
|
||||
"returns": {
|
||||
"configurationError": "$ref:ConfigurationError"
|
||||
}
|
||||
},
|
||||
"Configuration.SetMqttPolicy": {
|
||||
"description": "Configure a MQTT broker policy. If the ID is an existing one, the existing policy will be modified, otherwise a new one will be added.",
|
||||
"params": {
|
||||
|
|
@ -2276,6 +2295,11 @@
|
|||
"params": {
|
||||
"basicConfiguration": {
|
||||
"d:language": "String",
|
||||
"d:location": {
|
||||
"latitude": "Double",
|
||||
"longitude": "Double",
|
||||
"name": "String"
|
||||
},
|
||||
"d:serverTime": "Uint",
|
||||
"d:timeZone": "String",
|
||||
"debugServerEnabled": "Bool",
|
||||
|
|
|
|||
Loading…
Reference in New Issue