From 545ca0d74a1c38ada1c7c16be4d91425a5e78709 Mon Sep 17 00:00:00 2001 From: Carlo Baratto Date: Fri, 21 Aug 2026 12:52:29 +0200 Subject: [PATCH] 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). --- qml/pages/ReaderPage.qml | 6 ++++-- rpm/harbour-calibreweb.spec | 8 +++++++- src/main.cpp | 4 ++-- src/settings.cpp | 15 +++++++++++++++ src/settings.h | 7 +++++++ 5 files changed, 35 insertions(+), 5 deletions(-) diff --git a/qml/pages/ReaderPage.qml b/qml/pages/ReaderPage.qml index c3f3e5d..fbaed0e 100644 --- a/qml/pages/ReaderPage.qml +++ b/qml/pages/ReaderPage.qml @@ -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) diff --git a/rpm/harbour-calibreweb.spec b/rpm/harbour-calibreweb.spec index 3db571c..b0c93fe 100644 --- a/rpm/harbour-calibreweb.spec +++ b/rpm/harbour-calibreweb.spec @@ -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 - 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 - 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 diff --git a/src/main.cpp b/src/main.cpp index c936e4a..03e2755 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -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("harbour.calibreweb", 1, 0, "EpubBook"); diff --git a/src/settings.cpp b/src/settings.cpp index 5685e79..4bd0a67 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -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(); diff --git a/src/settings.h b/src/settings.h index 777ca72..d923110 100644 --- a/src/settings.h +++ b/src/settings.h @@ -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();