fix(settings): le impostazioni ora persistono davvero dal launcher (v0.5.3)
Causa (il "solito" problema dei progetti Sailfish): QSettings di default scrive in ~/.config/harbour/hermes.conf, FUORI dalla directory che la sandbox SailJail rende persistente (~/.config/harbour/hermes/). Dal launcher le modifiche finivano in una vista effimera e sparivano a ogni riavvio; da terminale invece restavano (da qui l'effetto "a volte si' a volte no"). Stesso problema gia' risolto in harbour-calibreweb e harbour-quill con il percorso esplicito. - Settings: QSettings(configPath(), IniFormat) con configPath() = AppConfigLocation + "/hermes.conf" (mkpath della directory) - store(): ogni setter fa setValue + sync immediato (nessuna modifica persa se il sistema termina l'app) - migrateIfNeeded(): al primo avvio importa i valori rimasti nel vecchio percorso di default (~/.config/harbour/hermes.conf, piu' i path legacy nemo/defaultuser) - diagnostica: log del file impostazioni e dei valori letti all'avvio - core-test: test di persistenza (scrittura con una istanza, rilettura con una SECONDA istanza: prova che passa dal file su disco)
This commit is contained in:
@@ -124,6 +124,28 @@ static void testMarkdown()
|
||||
"speech: righe vuote compattate");
|
||||
}
|
||||
|
||||
static void testSettingsPersistence()
|
||||
{
|
||||
qDebug() << "== unit: persistenza impostazioni ==";
|
||||
const QString cfg = Settings::configPath();
|
||||
qDebug() << "file di test:" << cfg;
|
||||
QFile::remove(cfg); // stato pulito: nessun valore precedente
|
||||
{
|
||||
Settings s1;
|
||||
s1.setBaseUrl(QStringLiteral("https://esempio.test"));
|
||||
s1.setTtsVoice(QStringLiteral("it-IT-ElsaNeural"));
|
||||
}
|
||||
{
|
||||
// Una SECONDA istanza rilegge dallo stesso file: prova che i valori
|
||||
// sono finiti su disco (non solo in memoria) -> persistenza vera.
|
||||
Settings s2;
|
||||
CHECK(s2.baseUrl() == QLatin1String("https://esempio.test"),
|
||||
"baseUrl riletto da una nuova istanza (passa dal file)");
|
||||
CHECK(s2.ttsVoice() == QLatin1String("it-IT-ElsaNeural"),
|
||||
"voce riletta da una nuova istanza (passa dal file)");
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
QCoreApplication app(argc, argv);
|
||||
@@ -132,6 +154,7 @@ int main(int argc, char **argv)
|
||||
|
||||
testParser();
|
||||
testMarkdown();
|
||||
testSettingsPersistence();
|
||||
|
||||
if (!app.arguments().contains(QStringLiteral("--live"))) {
|
||||
qDebug() << (failures == 0 ? "UNIT: tutti i test passati" : "UNIT: FALLIMENTI");
|
||||
|
||||
Reference in New Issue
Block a user