From c9e2be5b4e0ea914cc7f81290538a1cd0aa33231 Mon Sep 17 00:00:00 2001 From: Carlo Baratto Date: Wed, 2 Sep 2026 18:43:16 +0200 Subject: [PATCH] fix preferenze non persistenti (pattern calibreweb): QSettings su AppConfigLocation esplicito + diagnostica avvio; org/app solo nel main --- rpm/harbour-tide.desktop | 12 +++++------- src/settings.cpp | 22 +++++++++++++++++++++- src/settings.h | 4 ++++ 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/rpm/harbour-tide.desktop b/rpm/harbour-tide.desktop index 717d1c5..5db717d 100644 --- a/rpm/harbour-tide.desktop +++ b/rpm/harbour-tide.desktop @@ -9,12 +9,10 @@ Type=Application X-Nemo-Application-Type=silica-qt5 Categories=Utility; -# Profilo SailJail esplicito: senza X-Sailjail la sandbox di Sailfish 5.1 usa -# il profilo default, che nasconde ~/.config/harbour (config non persistente). -# Con OrganizationName/ApplicationName la sandbox rende persistente -# ~/.config/harbour/tide/ (AppConfigLocation). Internet = geocoding -# OpenStreetMap per la ricerca libera delle città. +# Profilo SailJail esplicito: senza X-Sailjail la sandbox di Sailfish 5.1 usa il +# profilo default, che nasconde ~/.config/harbour (config non persistente). +# Org/App sono impostati a runtime dal main.cpp (setOrganizationName/ +# setApplicationName): AppConfigLocation = ~/.config/harbour/tide (persistente). +# Internet = geocoding OpenStreetMap/Photon e stato del mare Open-Meteo. [X-Sailjail] Permissions=Internet -OrganizationName=harbour -ApplicationName=tide diff --git a/src/settings.cpp b/src/settings.cpp index 49435a5..ff61f59 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1,9 +1,29 @@ #include "settings.h" +#include +#include + +QString Settings::configPath() +{ + // Path canonico per la sandbox SailJail (Sailfish 5.x): con org/app + // impostati (harbour/tide, vedi main.cpp) AppConfigLocation = + // ~/.config/harbour/tide, l'unica zona config che la sandbox rende + // PERSISTENTE tra gli avvii. Senza path esplicito QSettings scrive in + // una zona nascosta e le preferenze vanno perse. + const QString dir = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation); + QDir().mkpath(dir); + return dir + QStringLiteral("/tide.conf"); +} Settings::Settings(QObject *parent) : QObject(parent) - , m_settings(QStringLiteral("harbour"), QStringLiteral("tide")) + , m_settings(configPath(), QSettings::IniFormat) { + // diagnostica: path reale del file di configurazione e valori letti all'avvio + qDebug() << "Settings file:" << m_settings.fileName(); + if (m_settings.status() != QSettings::NoError) + qDebug() << "Settings WARNING: file di configurazione non accessibile"; + qDebug() << "Settings read: language=[" << language() << "] preferredPort=[" + << preferredPort() << "] unit=[" << unit() << "] days=" << days(); } QString Settings::language() const diff --git a/src/settings.h b/src/settings.h index 349f2ea..8f51a48 100644 --- a/src/settings.h +++ b/src/settings.h @@ -51,6 +51,10 @@ signals: void daysChanged(); private: + // Path canonico (pattern calibreweb): senza path esplicito la sandbox + // SailJail non rende persistente la config (QSettings org/app scrive in + // una zona nascosta/effimera). AppConfigLocation = ~/.config/harbour/tide + static QString configPath(); QSettings m_settings; };