ReaderPage: watchdog 15s (niente spinner infinito) + apertura ritardata per evitare race WebView
This commit is contained in:
@@ -36,6 +36,7 @@ Page {
|
|||||||
onLoadedChanged: {
|
onLoadedChanged: {
|
||||||
if (!loaded)
|
if (!loaded)
|
||||||
return
|
return
|
||||||
|
loadWatchdog.stop()
|
||||||
if (page.restoring)
|
if (page.restoring)
|
||||||
page.restoring = false
|
page.restoring = false
|
||||||
else
|
else
|
||||||
@@ -51,6 +52,25 @@ Page {
|
|||||||
size: BusyIndicatorSize.Large
|
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 {
|
Label {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: page.errorMessage
|
text: page.errorMessage
|
||||||
@@ -209,6 +229,10 @@ Page {
|
|||||||
page.ready = true
|
page.ready = true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
openTimer.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
function openChapter() {
|
||||||
// ripristina il segno locale
|
// ripristina il segno locale
|
||||||
var key = appSettings.bookmarkKey(page.bookId, page.bookFormat)
|
var key = appSettings.bookmarkKey(page.bookId, page.bookFormat)
|
||||||
var ch = 0
|
var ch = 0
|
||||||
@@ -217,6 +241,8 @@ Page {
|
|||||||
page.currentChapter = Math.max(0, Math.min(ch, book.chapterCount - 1))
|
page.currentChapter = Math.max(0, Math.min(ch, book.chapterCount - 1))
|
||||||
page.chapterFraction = fr
|
page.chapterFraction = fr
|
||||||
}
|
}
|
||||||
|
page.ready = false
|
||||||
|
loadWatchdog.restart()
|
||||||
web.url = "file://" + book.chapterFilePath(page.currentChapter)
|
web.url = "file://" + book.chapterFilePath(page.currentChapter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user