Config auto-adattiva: home grafica Jolla Phone 2026 = /home/rootitanium (nemo non esiste su Sailfish 5.1). Candidate rootitanium->nemo->utente corrente, file esistente prima, permessi aperti sulla home scelta
This commit is contained in:
@@ -40,6 +40,10 @@ in locale.
|
||||
(/home/nemo/.config/harbour/calibreweb.conf) indipendente dall'utente
|
||||
che avvia l'app (launcher nemo / debug SSH defaultuser), con migrazione
|
||||
automatica dei valori gia' salvati
|
||||
- Config auto-adattiva: la home grafica su Jolla Phone 2026 (Sailfish 5.1)
|
||||
e' /home/rootitanium (non nemo): candidate rootitanium -> nemo -> home
|
||||
dell'utente corrente, file esistente prima, poi prima home scrivibile;
|
||||
permessi aperti sulla home scelta a ogni scrittura
|
||||
- Lettore EPUB nativo (WebView): capitoli, reflow A-/A+, margini
|
||||
configurabili, posizione salvata in locale (QSettings) e ripristinata
|
||||
all'apertura
|
||||
|
||||
+34
-14
@@ -8,9 +8,27 @@
|
||||
|
||||
QString Settings::configPath()
|
||||
{
|
||||
const QString dir = QStringLiteral("/home/nemo/.config/harbour");
|
||||
QDir().mkpath(dir);
|
||||
return dir + QStringLiteral("/calibreweb.conf");
|
||||
// Home candidate dell'utente grafico: Jolla Phone 2026 / Sailfish 5.1 usa
|
||||
// /home/rootitanium, il Sailfish classico /home/nemo. La config DEVE essere
|
||||
// unica (launcher = utente grafico, debug SSH = defaultuser): si usa il
|
||||
// file gia' esistente o la prima home in cui riusciamo a creare la dir.
|
||||
const QString local = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)
|
||||
+ QStringLiteral("/harbour/calibreweb.conf");
|
||||
const QStringList homes = QStringList()
|
||||
<< QStringLiteral("/home/rootitanium") // Jolla Phone 2026 (Sailfish 5.1)
|
||||
<< QStringLiteral("/home/nemo"); // Sailfish classico
|
||||
for (const QString &h : homes) {
|
||||
if (QFile::exists(h + QStringLiteral("/.config/harbour/calibreweb.conf")))
|
||||
return h + QStringLiteral("/.config/harbour/calibreweb.conf");
|
||||
}
|
||||
if (QFile::exists(local))
|
||||
return local;
|
||||
for (const QString &h : homes) {
|
||||
if (QDir().mkpath(h + QStringLiteral("/.config/harbour")))
|
||||
return h + QStringLiteral("/.config/harbour/calibreweb.conf");
|
||||
}
|
||||
QDir().mkpath(QFileInfo(local).absolutePath());
|
||||
return local;
|
||||
}
|
||||
|
||||
Settings::Settings(QObject *parent)
|
||||
@@ -36,6 +54,7 @@ void Settings::migrateIfNeeded()
|
||||
// utenti (launcher=nemo, debug SSH=defaultuser). La prima con valori vince.
|
||||
const QStringList candidates = QStringList()
|
||||
<< QSettings(QStringLiteral("harbour"), QStringLiteral("calibreweb")).fileName()
|
||||
<< QStringLiteral("/home/rootitanium/.config/harbour/calibreweb.conf")
|
||||
<< QStringLiteral("/home/nemo/.config/harbour/calibreweb.conf")
|
||||
<< QStringLiteral("/home/defaultuser/.config/harbour/calibreweb.conf");
|
||||
for (const QString &cand : candidates) {
|
||||
@@ -73,26 +92,27 @@ void Settings::migrateIfNeeded()
|
||||
|
||||
void Settings::openPermissions()
|
||||
{
|
||||
// Apre la catena di directory e il file di configurazione: la home di
|
||||
// nemo e' 700 di default e defaultuser (debug SSH) non puo' entrarci.
|
||||
// Al primo avvio dal launcher (nemo) questi permessi restano aperti, e
|
||||
// da quel momento entrambi gli utenti condividono lo stesso file.
|
||||
QDir home(QStringLiteral("/home/nemo"));
|
||||
QFile::setPermissions(home.absolutePath(),
|
||||
// Apre la catena di directory e il file di configurazione della home scelta
|
||||
// (utente grafico, home spesso 700): il debug SSH (defaultuser) deve poter
|
||||
// leggere/scrivere lo stesso file. Funziona quando l'app gira come owner
|
||||
// della home (dal launcher); da SSH i permessi restano quelli gia' aperti.
|
||||
const QString file = m_settings.fileName(); // .../calibreweb.conf
|
||||
const QString dir = QFileInfo(file).absolutePath(); // .../.config/harbour
|
||||
const QString configDir = QFileInfo(dir).absolutePath(); // .../.config
|
||||
const QString home = QFileInfo(configDir).absolutePath(); // /home/<utente>
|
||||
QFile::setPermissions(home,
|
||||
QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner
|
||||
| QFile::ReadGroup | QFile::ExeGroup
|
||||
| QFile::ReadOther | QFile::ExeOther);
|
||||
QDir config(QStringLiteral("/home/nemo/.config"));
|
||||
QFile::setPermissions(config.absolutePath(),
|
||||
QFile::setPermissions(configDir,
|
||||
QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner
|
||||
| QFile::ReadGroup | QFile::ExeGroup
|
||||
| QFile::ReadOther | QFile::ExeOther);
|
||||
QDir dir(QFileInfo(m_settings.fileName()).absolutePath());
|
||||
QFile::setPermissions(dir.absolutePath(),
|
||||
QFile::setPermissions(dir,
|
||||
QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner
|
||||
| QFile::ReadGroup | QFile::WriteGroup | QFile::ExeGroup
|
||||
| QFile::ReadOther | QFile::WriteOther | QFile::ExeOther);
|
||||
QFile::setPermissions(m_settings.fileName(),
|
||||
QFile::setPermissions(file,
|
||||
QFile::ReadOwner | QFile::WriteOwner
|
||||
| QFile::ReadGroup | QFile::WriteGroup
|
||||
| QFile::ReadOther | QFile::WriteOther);
|
||||
|
||||
Reference in New Issue
Block a user