Files
harbour-aira/src/settings.cpp
T
Carlo fddd21e16a 0.4.0: interfaccia in italiano e inglese, scelta nelle impostazioni
L'inglese è la lingua sorgente delle stringhe; l'italiano sta nel catalogo
translations/harbour-aira-it.ts (99 stringhe), che lupdate aggiorna e lrelease
compila in build. Di serie la lingua del sistema, con ripiego sull'inglese.

- nuova classe Translator: risolve la lingua prima di createView e allinea
  QLocale::setDefault, così anche i numeri seguono la lingua (23,0 °C in
  italiano, 23.0 °C in inglese) — le temperature passano da formatValue, non
  più dal toFixed() di JavaScript che metteva sempre il punto
- Qt 5.6 non ha QQmlEngine::retranslate(): al cambio di lingua la radice QML
  viene ricaricata (setSource ricrea il componente anche a url invariata)
- le etichette di stato in airajson.cpp usano QCoreApplication::translate per
  esteso: lupdate non riconosce una funzione wrapper e le avrebbe perse
- selettore della lingua in Impostazioni (Sistema / English / Italiano)
- test: 41/41, carica il .qm vero come fa main.cpp e verifica entrambe le
  lingue, il ripiego e i formati numerici
- anteprime bilingui (docs/anteprima/ inglese, it/ italiano), README e PIANO
  aggiornati, spec RPM con i cataloghi in %files
2026-10-10 08:19:20 +02:00

70 lines
2.0 KiB
C++

#include "settings.h"
#include <QDebug>
#include <QDir>
#include <QStandardPaths>
QString Settings::configPath()
{
// Path canonico per la sandbox SailJail: con org/app impostati in main.cpp
// (harbour/aira) AppConfigLocation = ~/.config/harbour/aira, l'unica zona
// config persistente tra gli avvii.
const QString dir = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
QDir().mkpath(dir);
return dir + QStringLiteral("/aira.conf");
}
Settings::Settings(QObject *parent)
: QObject(parent)
, m_settings(configPath(), QSettings::IniFormat)
{
// Diagnostica: senza questa riga un problema di persistenza resta invisibile.
qDebug() << "Settings file:" << m_settings.fileName();
if (m_settings.status() != QSettings::NoError)
qDebug() << "Settings WARNING: file di configurazione non accessibile";
qDebug() << "Settings read: baseUrl=[" << baseUrl() << "] token impostato:" << !token().isEmpty();
}
QString Settings::baseUrl() const
{
return m_settings.value(QStringLiteral("baseUrl"), QString()).toString();
}
void Settings::setBaseUrl(const QString &value)
{
if (value == baseUrl())
return;
m_settings.setValue(QStringLiteral("baseUrl"), value);
m_settings.sync(); // le chiusure brusche perdono il flush del distruttore
emit baseUrlChanged();
}
QString Settings::token() const
{
return m_settings.value(QStringLiteral("token"), QString()).toString();
}
void Settings::setToken(const QString &value)
{
if (value == token())
return;
m_settings.setValue(QStringLiteral("token"), value);
m_settings.sync();
emit tokenChanged();
}
QString Settings::language() const
{
// Vuoto = non deciso dall'utente: si usa la lingua del sistema.
return m_settings.value(QStringLiteral("language"), QString()).toString();
}
void Settings::setLanguage(const QString &value)
{
if (value == language())
return;
m_settings.setValue(QStringLiteral("language"), value);
m_settings.sync();
emit languageChanged();
}