diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index f6e881541..b2c5adc17 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -138,26 +138,7 @@ function FileManagerMenu:setUpdateItemTable() table.insert(self.tab_item_table.setting, Language:getLangMenuTable()) -- info tab - table.insert(self.tab_item_table.info, { - text = _("Check update"), - callback = function() - local ota_version = OTAManager:checkUpdate() - if ota_version == 0 then - UIManager:show(InfoMessage:new{ - text = _("Your koreader is updated."), - }) - elseif ota_version == nil then - UIManager:show(InfoMessage:new{ - text = _("OTA server is not available."), - }) - elseif ota_version then - UIManager:show(ConfirmBox:new{ - text = _("Do you want to update to version ")..ota_version.."?", - ok_callback = function() OTAManager:zsync() end - }) - end - end - }) + table.insert(self.tab_item_table.info, OTAManager:genMenuEntry()) table.insert(self.tab_item_table.info, { text = _("Version"), callback = function() diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index f0e3a1dcd..c5e571808 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -138,26 +138,7 @@ function ReaderMenu:setUpdateItemTable() table.insert(self.tab_item_table.setting, Language:getLangMenuTable()) -- info tab - table.insert(self.tab_item_table.info, { - text = _("Check update"), - callback = function() - local ota_version = OTAManager:checkUpdate() - if ota_version == 0 then - UIManager:show(InfoMessage:new{ - text = _("Your koreader is updated."), - }) - elseif ota_version == nil then - UIManager:show(InfoMessage:new{ - text = _("OTA server is not available."), - }) - elseif ota_version then - UIManager:show(ConfirmBox:new{ - text = _("Do you want to update to version ")..ota_version.."?", - ok_callback = function() OTAManager:zsync() end - }) - end - end - }) + table.insert(self.tab_item_table.info, OTAManager:genMenuEntry()) table.insert(self.tab_item_table.info, { text = _("Version"), callback = function() diff --git a/frontend/ui/otamanager.lua b/frontend/ui/otamanager.lua index c49edce50..10a48769e 100644 --- a/frontend/ui/otamanager.lua +++ b/frontend/ui/otamanager.lua @@ -1,5 +1,9 @@ +local InfoMessage = require("ui/widget/infomessage") +local ConfirmBox = require("ui/widget/confirmbox") +local UIManager = require("ui/uimanager") local Device = require("ui/device") local DEBUG = require("dbg") +local _ = require("gettext") local OTAManager = { ota_server = "http://vislab.bjmu.edu.cn/apps/koreader/ota/", @@ -78,11 +82,46 @@ end function OTAManager:zsync() if self:_buildLocalPackage() == 0 then return os.execute(string.format( - "./zsync -i %s -o %s -u %s %s &", + "./zsync -i %s -o %s -u %s %s", self.installed_package, self.updated_package, self.ota_server, "ota/" .. self:getZsyncFilename() )) end end +function OTAManager:genMenuEntry() + return { + text = _("Check update"), + callback = function() + local ota_version = OTAManager:checkUpdate() + if ota_version == 0 then + UIManager:show(InfoMessage:new{ + text = _("Your koreader is updated."), + }) + elseif ota_version == nil then + UIManager:show(InfoMessage:new{ + text = _("OTA server is not available."), + }) + elseif ota_version then + UIManager:show(ConfirmBox:new{ + text = _("Do you want to update to version ")..ota_version.."?", + ok_callback = function() + UIManager:show(InfoMessage:new{ + text = _("Downloading may take several minutes..."), + timeout = 3, + }) + UIManager:scheduleIn(1, function() + if OTAManager:zsync() == 0 then + UIManager:show(InfoMessage:new{ + text = _("Koreader will be updated on next restart."), + }) + end + end) + end + }) + end + end + } +end + return OTAManager diff --git a/koreader-base b/koreader-base index 9d54e91f8..7bd19dfee 160000 --- a/koreader-base +++ b/koreader-base @@ -1 +1 @@ -Subproject commit 9d54e91f82090ad8d2a5f00f9db94b38c0afa4b7 +Subproject commit 7bd19dfee79f608911224c8195a08fb33c594d54