Lettore 0.4.6: font persistito nelle impostazioni

fontScale era una property QML di pagina, mai salvata: l'ingrandimento
spariva alla chiusura del libro. Nuova readerFontScale in QSettings
(default 1.0): il lettore parte dalla scala salvata e la persiste a ogni
cambio. Test: persistenza su disco verificata (font + margini).
This commit is contained in:
2026-08-21 12:52:29 +02:00
parent 30b8e1ebaa
commit 545ca0d74a
5 changed files with 35 additions and 5 deletions
+4 -2
View File
@@ -31,8 +31,8 @@ Page {
property int pageCount: 1
property bool ready: false
property string errorMessage: ""
// reflow: scala il font (il testo si ri-avvolge), non lo zoom grafico
property double fontScale: 1.0
// reflow: scala il font (il testo si ri-avvolge), persistita in appSettings
property double fontScale: appSettings.readerFontScale
// restore in sospeso: frazione da applicare quando il testo si ri-impagina
property bool pendingRestore: false
property double restoreFrac: 0.0
@@ -318,6 +318,8 @@ Page {
function changeFontScale(delta) {
// limite ampio e passo 0.1: tanti ingrandimenti prima del limite
page.fontScale = Math.max(0.7, Math.min(3.5, page.fontScale + delta))
// persisti la scala: riparte da qui alla prossima apertura
appSettings.readerFontScale = page.fontScale
// il binding aggiorna il font; ripristina la posizione per CARATTERI
// (stabile col reflow, a differenza della frazione di scroll: con il
// testo più alto la stessa frazione mostrerebbe un punto diverso)
+7 -1
View File
@@ -1,6 +1,6 @@
Name: harbour-calibreweb
Summary: Client OPDS per Calibre Web
Version: 0.4.5
Version: 0.4.6
Release: 1
Group: Qt/Qt
License: MIT
@@ -24,6 +24,12 @@ reflow del testo, margini configurabili e posizione salvata
in locale.
%changelog
* Fri Aug 21 2026 Carlo Baratto <carlo@carlobaratto.it> - 0.4.6-1
- Fix impostazioni lettore non salvate: la scala del font era una proprieta'
QML di pagina (mai persistita) -> l'ingrandimento spariva alla chiusura del
libro. Aggiunta readerFontScale in QSettings (default 1.0): il lettore
parte dalla scala salvata e la persiste a ogni cambio A-/A+. Margini gia'
persistiti (verificati con test su disco)
* Fri Aug 21 2026 Carlo Baratto <carlo@carlobaratto.it> - 0.4.5-1
- Fix ingrandimento testo: il restore dopo il reflow usava la frazione di
scroll (instabile col cambio font) e il timer di 80ms poteva scattare prima
+2 -2
View File
@@ -22,7 +22,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
app->setOrganizationName(QStringLiteral("harbour"));
app->setApplicationName(QStringLiteral("calibreweb"));
// versione mostrata nelle impostazioni (tenere allineata allo spec)
app->setApplicationVersion(QStringLiteral("0.4.5"));
app->setApplicationVersion(QStringLiteral("0.4.6"));
Settings settings;
@@ -56,7 +56,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
QQuickView *view = SailfishApp::createView();
qDebug() << "harbour-calibreweb v0.4.5 build" << __DATE__ << __TIME__;
qDebug() << "harbour-calibreweb v0.4.6 build" << __DATE__ << __TIME__;
qmlRegisterType<EpubBook>("harbour.calibreweb", 1, 0, "EpubBook");
+15
View File
@@ -197,6 +197,21 @@ void Settings::setReaderMarginV(int value)
emit readerMarginVChanged();
}
double Settings::readerFontScale() const
{
return m_settings.value(QStringLiteral("readerFontScale"), 1.0).toDouble();
}
void Settings::setReaderFontScale(double value)
{
if (qFuzzyCompare(value, readerFontScale()))
return;
m_settings.setValue(QStringLiteral("readerFontScale"), value);
m_settings.sync();
openPermissions();
emit readerFontScaleChanged();
}
QString Settings::language() const
{
return m_settings.value(QStringLiteral("language"), QStringLiteral("system")).toString();
+7
View File
@@ -14,6 +14,8 @@ class Settings : public QObject
Q_PROPERTY(bool ignoreSslErrors READ ignoreSslErrors WRITE setIgnoreSslErrors NOTIFY ignoreSslErrorsChanged)
Q_PROPERTY(int readerMargin READ readerMargin WRITE setReaderMargin NOTIFY readerMarginChanged)
Q_PROPERTY(int readerMarginV READ readerMarginV WRITE setReaderMarginV NOTIFY readerMarginVChanged)
// scala del font del lettore (1.0 = dimensione base), persistita
Q_PROPERTY(double readerFontScale READ readerFontScale WRITE setReaderFontScale NOTIFY readerFontScaleChanged)
// lingua scelta dall'utente: "system" (predefinita, lingua UI Sailfish), "en", "it"
Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged)
Q_PROPERTY(QString downloadDir READ downloadDir CONSTANT)
@@ -43,6 +45,10 @@ public:
int readerMarginV() const;
void setReaderMarginV(int value);
// scala del font del lettore (1.0 = base), persistita tra le sessioni
double readerFontScale() const;
void setReaderFontScale(double value);
// lingua dell'interfaccia: "system" (default) | "en" | "it"
QString language() const;
void setLanguage(const QString &value);
@@ -69,6 +75,7 @@ signals:
void ignoreSslErrorsChanged();
void readerMarginChanged();
void readerMarginVChanged();
void readerFontScaleChanged();
void languageChanged();
void baseUrlChanged();