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:
+53
-1
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user