Lettore 0.4.9: margini verticali su ogni schermata — fasce opache fisse sopra/sotto la viewport (colore di sfondo per tema) + padding deficit dell'ultima pagina (max-scroll multiplo esatto del passo: ultima pagina allineata, niente righe ripetute)
This commit is contained in:
@@ -153,10 +153,11 @@ Page {
|
|||||||
Item {
|
Item {
|
||||||
id: readerContent
|
id: readerContent
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
// Il contenitore ha il padding verticale (margine) + il "deficit"
|
||||||
|
// dell'ultima pagina: cosi' max-scroll = k*step e l'ultima pagina
|
||||||
|
// e' allineata (niente testo ripetuto tra penultima e ultima).
|
||||||
height: Math.max(parent.height,
|
height: Math.max(parent.height,
|
||||||
textItem.height + 2 * (page.previewMarginT >= 0
|
textItem.height + 2 * page.marginV() + page.lastPagePad())
|
||||||
? page.previewMarginT
|
|
||||||
: appSettings.readerMarginV))
|
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
id: textItem
|
id: textItem
|
||||||
@@ -175,6 +176,31 @@ Page {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Margini verticali VISTI su ogni schermata: due fasce opache (colore di
|
||||||
|
// sfondo) coprono il testo a cavallo dei bordi della viewport. Il testo
|
||||||
|
// scorre tra le fasce con passo = viewport - 2*margine: ogni pagina
|
||||||
|
// mostra esattamente un blocco di testo con margine sopra e sotto.
|
||||||
|
Rectangle {
|
||||||
|
id: topBand
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.top: parent.top
|
||||||
|
height: page.marginV()
|
||||||
|
visible: height > 0
|
||||||
|
z: 5
|
||||||
|
color: Theme.colorScheme === Theme.LightOnDark ? "#FF000000" : "#FFFFFFFF"
|
||||||
|
}
|
||||||
|
Rectangle {
|
||||||
|
id: bottomBand
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
height: page.marginV()
|
||||||
|
visible: height > 0
|
||||||
|
z: 5
|
||||||
|
color: Theme.colorScheme === Theme.LightOnDark ? "#FF000000" : "#FFFFFFFF"
|
||||||
|
}
|
||||||
|
|
||||||
// Paginazione a tap: la meta' destra va avanti di una pagina, la
|
// Paginazione a tap: la meta' destra va avanti di una pagina, la
|
||||||
// sinistra indietro. Le fasce superiore e inferiore sono lasciate ai
|
// sinistra indietro. Le fasce superiore e inferiore sono lasciate ai
|
||||||
// menu (PullDown in alto, PushUp in basso). NIENTE preventStealing:
|
// menu (PullDown in alto, PushUp in basso). NIENTE preventStealing:
|
||||||
@@ -288,6 +314,18 @@ Page {
|
|||||||
return page.previewMarginT >= 0 ? page.previewMarginT : appSettings.readerMarginV
|
return page.previewMarginT >= 0 ? page.previewMarginT : appSettings.readerMarginV
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// deficit dell'ultima pagina: porta max-scroll a un multiplo esatto del
|
||||||
|
// passo, cosi' l'ultima pagina mostra il testo residuo SENZA sovrapporsi
|
||||||
|
// alla penultima (niente righe ripetute) e con il margine sotto
|
||||||
|
function lastPagePad() {
|
||||||
|
var step = Math.max(1, innerFlick.height - 2 * page.marginV())
|
||||||
|
var t = textItem.height
|
||||||
|
if (t <= 0)
|
||||||
|
return 0
|
||||||
|
var r = t % step
|
||||||
|
return r === 0 ? 0 : step - r
|
||||||
|
}
|
||||||
|
|
||||||
function maybeSave(force) {
|
function maybeSave(force) {
|
||||||
if (bookId <= 0)
|
if (bookId <= 0)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
Name: harbour-calibreweb
|
Name: harbour-calibreweb
|
||||||
Summary: Client OPDS per Calibre Web
|
Summary: Client OPDS per Calibre Web
|
||||||
Version: 0.4.8
|
Version: 0.4.9
|
||||||
Release: 1
|
Release: 1
|
||||||
Group: Qt/Qt
|
Group: Qt/Qt
|
||||||
License: MIT
|
License: MIT
|
||||||
@@ -24,6 +24,14 @@ reflow del testo, margini configurabili e posizione salvata
|
|||||||
in locale.
|
in locale.
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Aug 21 2026 Carlo Baratto <carlo@carlobaratto.it> - 0.4.9-1
|
||||||
|
- Margini verticali su OGNI schermata del lettore (non solo a inizio capitolo):
|
||||||
|
due fasce opache (colore di sfondo) sopra e sotto la viewport coprono il testo
|
||||||
|
a cavallo dei bordi; il padding inferiore del contenitore include il deficit
|
||||||
|
dell'ultima pagina, cosi' max-scroll e' un multiplo esatto del passo e
|
||||||
|
l'ultima pagina non ripete righe della penultima. Anteprima live dal dialog
|
||||||
|
margini inclusa
|
||||||
|
|
||||||
* Fri Aug 21 2026 Carlo Baratto <carlo@carlobaratto.it> - 0.4.8-1
|
* Fri Aug 21 2026 Carlo Baratto <carlo@carlobaratto.it> - 0.4.8-1
|
||||||
- Best practice audit: orientazioni per pagina (finestra senza vincoli, il
|
- Best practice audit: orientazioni per pagina (finestra senza vincoli, il
|
||||||
lettore ora ruota davvero in landscape; pagine di lista in portrait;
|
lettore ora ruota davvero in landscape; pagine di lista in portrait;
|
||||||
|
|||||||
+2
-2
@@ -23,7 +23,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
|
|||||||
app->setOrganizationName(QStringLiteral("harbour"));
|
app->setOrganizationName(QStringLiteral("harbour"));
|
||||||
app->setApplicationName(QStringLiteral("calibreweb"));
|
app->setApplicationName(QStringLiteral("calibreweb"));
|
||||||
// versione mostrata nelle impostazioni (tenere allineata allo spec)
|
// versione mostrata nelle impostazioni (tenere allineata allo spec)
|
||||||
app->setApplicationVersion(QStringLiteral("0.4.8"));
|
app->setApplicationVersion(QStringLiteral("0.4.9"));
|
||||||
|
|
||||||
Settings settings;
|
Settings settings;
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
|
|||||||
|
|
||||||
QQuickView *view = SailfishApp::createView();
|
QQuickView *view = SailfishApp::createView();
|
||||||
|
|
||||||
qDebug() << "harbour-calibreweb v0.4.8 build" << __DATE__ << __TIME__;
|
qDebug() << "harbour-calibreweb v0.4.9 build" << __DATE__ << __TIME__;
|
||||||
|
|
||||||
qmlRegisterType<EpubBook>("harbour.calibreweb", 1, 0, "EpubBook");
|
qmlRegisterType<EpubBook>("harbour.calibreweb", 1, 0, "EpubBook");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user