#include "settings.h" #include #include #include 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(); }