ReaderPage: watchdog 15s (niente spinner infinito) + apertura ritardata per evitare race WebView
This commit is contained in:
@@ -36,6 +36,7 @@ Page {
|
||||
onLoadedChanged: {
|
||||
if (!loaded)
|
||||
return
|
||||
loadWatchdog.stop()
|
||||
if (page.restoring)
|
||||
page.restoring = false
|
||||
else
|
||||
@@ -51,6 +52,25 @@ Page {
|
||||
size: BusyIndicatorSize.Large
|
||||
}
|
||||
|
||||
// watchdog: se il capitolo non si carica, niente spinner infinito
|
||||
Timer {
|
||||
id: loadWatchdog
|
||||
interval: 15000
|
||||
onTriggered: {
|
||||
if (!web.loaded && !page.ready) {
|
||||
page.errorMessage = "Il lettore non risponde (WebView). Il file EPUB potrebbe essere danneggiato."
|
||||
page.ready = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ritardo di apertura: evita la race tra onCompleted e l'init del WebView
|
||||
Timer {
|
||||
id: openTimer
|
||||
interval: 100
|
||||
onTriggered: openChapter()
|
||||
}
|
||||
|
||||
Label {
|
||||
anchors.centerIn: parent
|
||||
text: page.errorMessage
|
||||
@@ -209,6 +229,10 @@ Page {
|
||||
page.ready = true
|
||||
return
|
||||
}
|
||||
openTimer.start()
|
||||
}
|
||||
|
||||
function openChapter() {
|
||||
// ripristina il segno locale
|
||||
var key = appSettings.bookmarkKey(page.bookId, page.bookFormat)
|
||||
var ch = 0
|
||||
@@ -217,6 +241,8 @@ Page {
|
||||
page.currentChapter = Math.max(0, Math.min(ch, book.chapterCount - 1))
|
||||
page.chapterFraction = fr
|
||||
}
|
||||
page.ready = false
|
||||
loadWatchdog.restart()
|
||||
web.url = "file://" + book.chapterFilePath(page.currentChapter)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user