Commit Graph
70 Commits
Author SHA1 Message Date
kaneda e0347c8051 0.5.0: nuovo motore di lettura PagedTextItem (QQuickPaintedItem + QTextDocument, pattern harbour-books): pagine misurate dal layout, margini e notch su ogni pagina, posizione per carattere stabile a reflow/rotazione 2026-10-05 12:47:15 +02:00
kaneda b5687146f0 0.4.13: il testo del lettore non finisce piu' sotto il notch (portrait): finestra di lettura con inset Theme.statusBarHeight in cima 2026-09-08 15:10:54 +02:00
kaneda 31a0f61fa3 0.4.12: default margine verticale 24 (era 0: testo a filo dei bordi); migrazione senza chiavi margine spurie a 0; MarginDialog parte da 24 2026-09-07 21:25:02 +02:00
kaneda 6fcf05a289 0.4.11: slider margini rimossi dalle Impostazioni (resta il dialog nel lettore); margini alto/basso strutturali — finestra di lettura dentro i margini, identici su ogni pagina 2026-09-07 17:47:57 +02:00
kaneda 9500c353a3 Lettore 0.4.10: sfondo di lettura uniforme (colore pieno per tema) — le fasce margini usano lo stesso colore: margine su ogni pagina senza bande ne' testo coperto percepibile 2026-09-07 17:39:28 +02:00
kaneda aef3cc3409 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) 2026-09-07 17:31:07 +02:00
kaneda 041b9b9567 Audit best practice 0.4.8: orientazioni per pagina (reader in landscape), licenza nel pacchetto, EPUB lazy lengths, cover dinamica (ReaderState), flush config senza sync per tasto, pulizia chapterFraction/commenti 2026-09-03 14:16:18 +02:00
kaneda 7fca7fbfcd Lettore 0.4.7: margini rispettati su ogni pagina
Il passo di pagina era la viewport intera: il testo scorreva a filo dei
bordi e i margini verticali si vedevano solo all'inizio del capitolo. Ora
il passo e' viewport - 2*margine verticale: ogni pagina (e l'ultima) ha il
testo dentro i margini. Simulazione geometrica verificata (9 test).
2026-08-21 13:04:04 +02:00
kaneda 545ca0d74a 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).
2026-08-21 12:52:29 +02:00
kaneda 30b8e1ebaa Lettore 0.4.5: fix ingrandimento testo (restore per caratteri, reflow atteso)
Il restore dopo il cambio font usava la frazione di scroll (instabile col
reflow) e il timer 80ms scattava prima del ricalcolo rich text: posizione
persa, ingrandimenti che sembravano bloccarsi. Ora: restore per offset in
CARATTERI, applicazione via onContentHeightChanged, timer sicurezza 500ms,
limite font 3.5x con passo 0.1.
2026-08-21 12:37:25 +02:00
kaneda 50af721323 Lettore 0.4.4: pagine rigide, scroll libero eliminato alla radice
SilicaFlickable esterno non scrollabile (contentHeight=height) solo per i
pulley menu + Flickable interno interactive:false: il dito non muove mai il
testo, contentY cambia solo col tap. Rimossi snap/preventStealing/onClosed/
active: niente piu' compromessi scroll<->menu, i pulley funzionano sempre.
2026-08-21 12:27:04 +02:00
kaneda f5f7ce63f3 Lettore 0.4.3: fix 'Impossibile caricare la pagina'
onClosed sui pulley menu e menu.active non esistono su questa versione di
Silica: errore di compilazione QML -> ReaderPage non caricata. Lo snap ora
usa solo API standard: readerFlick.dragging + menu.open; il timer si
riavvia durante le animazioni dei menu, lo snap scatta solo a tutto fermo.
2026-08-21 12:09:18 +02:00
kaneda 6a840bc551 Lettore 0.4.2: il PushUpMenu resta aperto (snap con guardia menu.active)
Lo snap usava menu.open (vero solo a menu aperto): durante l'apertura il
pulley sposta il contenuto, lo snap scattava nel mezzo e il menu si
annullava. Ora guardia su menu.active (vero anche durante il drag) e
onClosed: snapTimer.restart() per riallineare il contenuto dopo la chiusura.
2026-08-21 11:55:20 +02:00
kaneda 47f949c3fb Lettore 0.4.1: snap alle pagine, niente preventStealing (menu pulley ok)
preventStealing sulla MouseArea rubava il drag al PushUpMenu (il gesto si
bloccava appena il dito entrava nella zona centrale) e senza di esso il
contenuto scrollava libero. Ora: il drag e' permesso ma lo snap (250ms dopo
l'ultimo movimento) riallinea contentY alla pagina piu' vicina (soglia 70%,
zona finale parziale -> fondo). I pulley menu funzionano normalmente.
2026-08-21 11:46:50 +02:00
kaneda 60f53ab4e4 Lettore 0.4.0: rifatto senza WebView (Text rich text QML)
Il WebView di Sailfish non supporta lo scroll programmatico affidabile
(window.scrollY stale, contentHeight/scrollPosition non scrivibili): 0.3.x
non ha mai cambiato capitolo in modo affidabile. Ora i capitoli sono rich
text Qt in un Text QML dentro un SilicaFlickable: contentY/contentHeight
nativi, paginazione a tap deterministico, fine capitolo esatta. HTML->rich
text in C++ (tag base, entità, fallback). Bookmark v2 invariato (offset
caratteri stimato da frazione). Niente immagini inline (limite rich text).
2026-08-21 11:32:43 +02:00
kaneda a5088c3986 Lettore 0.3.4: tap avanti con scrollBy relativo (no window.scrollY)
scrollToCharJs calcolava scrollTo(0, rect.top+scrollY-8) e window.scrollY e'
stale sul WebView Sailfish: il tap avanti oscillava di pochi pixel. Ora
window.scrollBy(0, rect.top-8): nessuna lettura di scrollY, il carattere
target finisce esattamente in cima alla viewport.
2026-08-21 11:03:07 +02:00
kaneda 00877a0223 Lettore 0.3.3: paginazione per contenuto + versione nelle impostazioni
- Tap avanti/indietro per PAGINA DI TESTO (offset in caratteri dai text node):
  positionJs (sopra) + charsInViewportJs (nella viewport) + scrollToCharJs;
  fine capitolo = offset >= chapterTextLength (C++), mai dallo scroll del
  WebView. window.scrollY non riflette lo scroll reale e contentHeight/
  scrollPosition nativi non sono scrivibili su Qt 5.6 (0.3.1 e 0.3.2 falliti)
- SettingsPage: label 'Version' in fondo (appVersion da setApplicationVersion)
- Traduzione IT aggiunta; log build aggiornato
2026-08-21 10:47:40 +02:00
kaneda fc2d4d9d3d Lettore 0.3.2: navigazione con proprietà native del WebView
window.scrollY/scrollBy via runJavaScript non riflette lo scroll reale del
WebView Sailfish (la posizione non arrivava mai a fine documento) -> il cambio
capitolo non scattava. Ora contentHeight/scrollPosition (proprietà native):
nextPage/prevPage = aritmetica QML pura, cambio capitolo deterministico.
2026-08-21 08:53:38 +02:00
kaneda 7bb4aa845a Lettore 0.3.1: cambio capitolo affidabile con scrollBy
Il confronto con max calcolato (scrollHeight-innerHeight) falliva sul WebView
di Sailfish quando max è sovrastimato: scrollY non lo raggiungeva mai, ok
restava true e atEnd veniva ignorato -> si restava dentro il capitolo.
Ora: scrollBy(0,vh) + verifica 'lo scroll si è mosso'; se bloccato, unlock
CSS e riprova; se ancora fermo -> capitolo successivo (o precedente).
2026-08-21 08:16:25 +02:00
kaneda fa3f19df75 Rimuovi harbour-calibreweb.yaml: spec a mano + yaml = prompt 'not generated by spectacle' e build non interattiva fallisce (pattern quill: solo spec) 2026-08-21 08:06:25 +02:00
kaneda d418660a2c Lettore 0.3.0: bookmark per posizione (carattere) e paginazione corretta
- Bookmark cw:v2:<offset assoluto caratteri> invece di capitolo+frazione;
  migrazione automatica delle chiavi v1 (parseBookmarkKey)
- Lunghezze testo per capitolo in C++ (text node del DOM, entità decodificate,
  body-only) per mappare offset assoluto -> capitolo
- Paginazione: stile iniettato height:auto/overflow:visible + unlock JS dei
  contenitori hidden — il CSS di molti EPUB bloccava lo scroll e ogni tap
  saltava al capitolo successivo
- prevPage dall'inizio capitolo -> ultima pagina del capitolo precedente
- Cambio font mantiene la posizione (restore per carattere)
- Label menu: pagina corrente/totale del capitolo; max su documentElement+body
- Test: harness C++ (Qt) e test JS con DOM mock
2026-08-21 07:57:57 +02:00
kaneda 1589762aac Add English README and LICENSE 2026-08-20 22:10:44 +02:00
kaneda d2892003d3 Sandbox SailJail: profilo X-Sailjail nel desktop file (Internet;Downloads, org harbour/app calibreweb) + config in AppConfigLocation (~/.config/harbour/calibreweb/, zona persistente della sandbox) + migrazione dal vecchio file. Senza profilo la sandbox nascondeva ~/.config/harbour e le impostazioni dal launcher sparivano 2026-08-19 17:31:36 +02:00
kaneda 4e533ecfc9 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 2026-08-19 16:46:41 +02:00
kaneda c5822778bd Icona in stile Sailfish OS: gradiente azzurro-blu con angoli arrotondati, libro aperto bianco con ombra e righe di testo tenui; dimensioni 86/108/128/172 installate 2026-08-19 16:41:54 +02:00
kaneda 91c42a1d43 Fix crash Close book (pop(null) differito con Timer); config condivisa nemo/defaultuser con permessi aperti a ogni scrittura 2026-08-19 16:35:55 +02:00
kaneda 8b7af5c5e0 Catalogo .qm nel data dir dell'app (/usr/share/harbour-calibreweb/translations) e caricamento esplicito in main.cpp con risoluzione lingua system via QLocale — il validatore RPM rifiuta /usr/share/translations 2026-08-19 16:30:53 +02:00
kaneda d8584f2de4 Selettore lingua (System/EN/IT) nelle impostazioni con QTranslator in main.cpp (pattern quill); fix 'Close book' con pop fino alla prima pagina 2026-08-19 16:27:36 +02:00
kaneda e3ba9b5e87 Localizzazione EN di default: qsTr() su tutte le stringhe QML, catalogo italiano translations/harbour-calibreweb_it.ts, lrelease+install .qm nello spec (pattern quill), .pro aggiornato 2026-08-19 16:17:30 +02:00
kaneda 9758f2b528 ReaderPage: voce 'Chiudi libro' nel PullDownMenu (salva il segno e torna alla pagina principale) 2026-08-19 16:10:50 +02:00
kaneda d7b522f483 Lettore a pagine: niente scroll libero, tap a destra = pagina dopo, tap a sinistra = pagina prima (fasce superiore/inferiore ai menu PullDown/PushUp). Alla fine/inizio capitolo il tap passa al capitolo successivo/precedente 2026-08-19 16:02:54 +02:00
kaneda 585b8ba104 Desktop file: X-Nemo-Application-Type=silica-qt5 (fix validazione RPM Harbour) 2026-08-19 15:56:20 +02:00
kaneda 2212538fe8 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) 2026-08-19 15:38:24 +02:00
kaneda a2a3608db5 Bump a 0.2.0: spec con changelog del lettore EPUB (reflow, margini, segno locale), description aggiornata 2026-08-19 15:26:55 +02:00
kaneda c216b20abb Rimossa la sync server dell'avanzamento di lettura (login di sessione, postBookmark, fetchBookmark): resta solo il salvataggio locale della posizione (QSettings) con ripristino locale all'apertura. ApiClient riportato a feed OPDS + copertine 2026-08-13 09:34:39 +02:00
kaneda 9bdec3eb2d Sync avanzamento server completa: login di sessione calibre-web (form + csrf_token + cookie) per le route web, fetchBookmark (GET /read/<id>/<format> con estrazione bookmark: "chiave"), ripristino all'apertura del libro con posizione server dominante, POST a ogni pagina girata già attivo; fallimento login gestito con cooldown 60s e fallback locale 2026-08-13 09:28:34 +02:00
kaneda 2652f413a5 Margini alto/basso (Settings.readerMarginV) + applicazione a caldo senza reload: i margini si sovrascrivono via runJavaScript (setProperty !important) sul documento aperto, anteprima live nel dialogo e al ritorno dalle impostazioni 2026-08-13 09:11:38 +02:00
kaneda fad647cf9e Margini raggiungibili dal lettore: voce 'Margini del testo' (dialogo Slider) e 'Impostazioni' nel PullDownMenu del ReaderPage; Slider della SettingsPage a larghezza piena 2026-08-13 08:52:55 +02:00
kaneda da4cffc761 settings.cpp: #include <QDebug> mancante (fix compilazione) 2026-08-12 20:31:05 +02:00
kaneda 55a94ea4ca Settings: log diagnostico all'avvio (path file config + valori letti) 2026-08-12 20:30:47 +02:00
kaneda d230d543dd parseBookmarkKey restituisce QVariantMap (i puntatori int* non sono marshallabili da QML — il segno non si ripristinava mai) 2026-08-12 17:26:15 +02:00
kaneda cbe4153881 ReaderPage: ricarica il capitolo al ritorno sulla pagina (Active) — margini e font cambiati nelle impostazioni si applicano subito 2026-08-12 17:15:46 +02:00
kaneda ca8d634dab settings.h: dichiarato il segnale readerMarginChanged mancante (fix build) 2026-08-12 17:04:11 +02:00
kaneda 8eb4244eee Lettore: margini configurabili (Settings.readerMargin + Slider nelle impostazioni, iniettati nello stile del capitolo) + controlli in PushUpMenu (un solo trascinamento in alto) 2026-08-12 17:00:27 +02:00
kaneda 4fbc6185a7 Reflow deterministico: stile iniettato nell'HTML del capitolo (chapterHtml+loadHtml), niente JS post-load; runJavaScript solo per lo scroll 2026-08-12 16:16:21 +02:00
kaneda 52d09911f2 Persistenza: sync() esplicito dopo ogni scrittura QSettings (fix config cancellata al crash di chiusura) + reflow robusto con stile !important su html/body e contenitori 2026-08-12 16:04:41 +02:00
kaneda 35be6f14be ReaderPage: Button non ha font in Silica (rimosso font.pixelSize da A-/A+) 2026-08-12 15:59:03 +02:00
kaneda 4930f76e03 ReaderPage: reflow con A-/A+ (font-size via JS con !important, posizione conservata in frazione) 2026-08-12 15:49:19 +02:00
kaneda a5f469a73f ReaderPage: dichiarata property ready (era usata ma mai dichiarata = spinner infinito) + PullDownMenu dentro la vista Silica (fix segfault) 2026-08-12 15:36:29 +02:00
kaneda a159e6b252 ReaderPage: watchdog 15s (niente spinner infinito) + apertura ritardata per evitare race WebView 2026-08-12 15:33:01 +02:00
kaneda 129ff44b06 epub.cpp: rimossa readTextFile inutilizzata (warning -Wall) 2026-08-12 15:23:14 +02:00
kaneda 325d7be34f Icone in struttura standard Sailfish (icons/86x86 e icons/108x108 con nome esatto) + yaml ripristinato in rpm/ 2026-08-12 14:54:44 +02:00
kaneda a81702932f Rimosso harbour-calibreweb.yaml: lo spec scritto a mano è la fonte unica (la generazione spectacle produceva %files incompleto) 2026-08-12 14:47:43 +02:00
kaneda 6f0ca6ed07 Lettore EPUB nativo: ReaderPage (WebView+capitoli+progresso), segno locale in QSettings, sync POST /ajax/bookmark con fallback CSRF, pulsante Leggi nel dettaglio 2026-08-12 14:21:45 +02:00
kaneda ae15c39421 Parser EPUB in C++: ZIP minimale (STORE/DEFLATE via zlib), container/OPF/spine, TOC EPUB2+3, chiavi segno — testato su EPUB di esempio 2026-08-12 14:18:40 +02:00
kaneda 9d8bd03990 Copertine: validazione contenuto prima del caching (niente più HTML in cache), id fisso per il dettaglio, handler con sintassi moderna 2026-08-12 13:42:44 +02:00
kaneda f43521cc67 BookDetailPage: Notices non istanziabile in questa Silica, sostituito con banner Label+Timer 2026-08-12 12:24:24 +02:00
kaneda ca19efd82a BookDetailPage: riscritte resolveUrl e sanitizeFileName senza regex (backslash doppi rompevano il caricamento pagina) 2026-08-12 12:20:01 +02:00
kaneda 62452b470e Risoluzione URL RFC 3986: fix sottopath raddoppiato (/calibre/calibre) + messaggio chiaro per risposte HTML 2026-08-12 12:13:56 +02:00
kaneda dea79aff49 getFeed risolve gli URL relativi (fix 'Protocol "" is unknown' sui link di categoria) 2026-08-12 12:05:03 +02:00
kaneda dd5d35c439 baseUrl come Q_PROPERTY (accesso proprietà, niente Q_INVOKABLE) + log data di build in avvio 2026-08-12 11:19:20 +02:00
kaneda 4afede7b92 SettingsPage: TextField con anchor invece di width binding (elimina il binding loop Silica) 2026-08-12 11:08:25 +02:00
kaneda 0c6c28aa4e baseUrl esposto a QML come Q_INVOKABLE: fix TypeError su MainPage/SearchPage/BookDetailPage 2026-08-12 11:05:06 +02:00
kaneda 5f97cb45bf Prova connessione: timeout 30s, busy indicator, normalizzazione https://, log qDebug per debug su device 2026-08-12 10:58:34 +02:00
kaneda 40fa34a0d2 Fix API Silica: TextSwitch al posto di Switch (label), Notices al posto di Toast (non esiste in Silica). Tutti i componenti verificati contro la doc ufficiale 2026-08-12 10:53:06 +02:00
kaneda 711e70734d SettingsPage: Switch non ha description in Silica (era la causa di 'Impossibile caricare la pagina'); hint spostato in Label 2026-08-12 10:47:40 +02:00
kaneda 0598fd4409 CoverPage: path icona corretto (hicolor, non /usr/share/harbour-calibreweb/icons) 2026-08-12 10:24:12 +02:00
kaneda a80f903c20 Icone installate via qmake INSTALLS: fix build RPM quando il tar sorgente non include icons/ 2026-08-12 08:27:31 +02:00
kaneda 67787ff975 README: target aarch64 per Jolla Phone 2026 2026-08-12 03:04:07 +02:00
kaneda 85b4f8e9b9 Client OPDS per Calibre Web (Sailfish OS): core C++ testato, UI Silica, packaging RPM 2026-08-12 01:45:31 +02:00