Fix config persa al riavvio: file di configurazione fisso condiviso tra nemo e defaultuser (/home/nemo/.config/harbour/calibreweb.conf) + migrazione automatica dei valori gia' salvati (server, credenziali, margini, segnalibri)

This commit is contained in:
2026-08-19 15:38:24 +02:00
parent a2a3608db5
commit 2212538fe8
4 changed files with 69 additions and 2 deletions
+53 -1
View File
@@ -4,17 +4,69 @@
#include <QDir>
#include <QStandardPaths>
QString Settings::configPath()
{
const QString dir = QStringLiteral("/home/nemo/.config/harbour");
QDir().mkpath(dir);
return dir + QStringLiteral("/calibreweb.conf");
}
Settings::Settings(QObject *parent)
: QObject(parent)
, m_settings(QStringLiteral("harbour"), QStringLiteral("calibreweb"))
, m_settings(configPath(), QSettings::IniFormat)
{
migrateIfNeeded();
// 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 (permessi?)";
qDebug() << "Settings read: serverUrl=[" << serverUrl() << "] user=[" << username()
<< "] ssl=" << ignoreSslErrors() << "margin=" << readerMargin()
<< "marginV=" << readerMarginV();
}
void Settings::migrateIfNeeded()
{
if (!serverUrl().isEmpty())
return; // il file condiviso ha gia' una configurazione
// Sorgenti candidate: config per-utente corrente + i path noti degli altri
// utenti (launcher=nemo, debug SSH=defaultuser). La prima con valori vince.
const QStringList candidates = QStringList()
<< QSettings(QStringLiteral("harbour"), QStringLiteral("calibreweb")).fileName()
<< QStringLiteral("/home/nemo/.config/harbour/calibreweb.conf")
<< QStringLiteral("/home/defaultuser/.config/harbour/calibreweb.conf");
for (const QString &cand : candidates) {
QSettings src(cand, QSettings::IniFormat);
const QString url = src.value(QStringLiteral("serverUrl")).toString();
if (url.isEmpty())
continue;
m_settings.setValue(QStringLiteral("serverUrl"), url);
m_settings.setValue(QStringLiteral("username"), src.value(QStringLiteral("username")));
m_settings.setValue(QStringLiteral("password"), src.value(QStringLiteral("password")));
m_settings.setValue(QStringLiteral("ignoreSslErrors"),
src.value(QStringLiteral("ignoreSslErrors")));
m_settings.setValue(QStringLiteral("readerMargin"),
src.value(QStringLiteral("readerMargin"), 24));
m_settings.setValue(QStringLiteral("readerMarginV"),
src.value(QStringLiteral("readerMarginV"), 0));
// segnalibri di lettura per libro+formato
src.beginGroup(QStringLiteral("bookmarks"));
const QStringList groups = src.childGroups();
for (const QString &g : groups) {
src.beginGroup(g);
const QStringList keys = src.childKeys();
for (const QString &k : keys)
m_settings.setValue(QStringLiteral("bookmarks/%1/%2").arg(g).arg(k),
src.value(k));
src.endGroup();
}
src.endGroup();
m_settings.sync();
qDebug() << "Settings: importati i valori da" << cand;
return;
}
}
QString Settings::serverUrl() const
{
return m_settings.value(QStringLiteral("serverUrl")).toString();