mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Merge pull request #766 from chrox/master
add OTA settings for server mirrors and channels
This commit is contained in:
@@ -72,7 +72,6 @@ function FileManagerMenu:setUpdateItemTable()
|
||||
self.ui:toggleHiddenFiles()
|
||||
end
|
||||
})
|
||||
|
||||
table.insert(self.tab_item_table.setting, {
|
||||
text = _("Start with last opened file"),
|
||||
checked_func = function() return G_reader_settings:readSetting("open_last") end,
|
||||
@@ -82,12 +81,16 @@ function FileManagerMenu:setUpdateItemTable()
|
||||
G_reader_settings:saveSetting("open_last", not open_last)
|
||||
end
|
||||
})
|
||||
|
||||
if Device:hasFrontlight() then
|
||||
ReaderFrontLight:addToMainMenu(self.tab_item_table)
|
||||
end
|
||||
|
||||
table.insert(self.tab_item_table.setting, UIManager:getRefreshMenuTable())
|
||||
table.insert(self.tab_item_table.setting, {
|
||||
text = _("Screen settings"),
|
||||
sub_item_table = {
|
||||
Screen:getDPIMenuTable(),
|
||||
UIManager:getRefreshMenuTable(),
|
||||
},
|
||||
})
|
||||
table.insert(self.tab_item_table.setting, {
|
||||
text = _("Night mode"),
|
||||
checked_func = function() return G_reader_settings:readSetting("night_mode") end,
|
||||
@@ -97,12 +100,12 @@ function FileManagerMenu:setUpdateItemTable()
|
||||
G_reader_settings:saveSetting("night_mode", not night_mode)
|
||||
end
|
||||
})
|
||||
|
||||
table.insert(self.tab_item_table.setting, Screen:getDPIMenuTable())
|
||||
table.insert(self.tab_item_table.setting, Language:getLangMenuTable())
|
||||
|
||||
-- info tab
|
||||
table.insert(self.tab_item_table.info, OTAManager:getOTAMenuTable())
|
||||
if Device:isKindle() or Device:isKobo() then
|
||||
table.insert(self.tab_item_table.info, OTAManager:getOTAMenuTable())
|
||||
end
|
||||
table.insert(self.tab_item_table.info, {
|
||||
text = _("Version"),
|
||||
callback = function()
|
||||
|
||||
@@ -80,15 +80,15 @@ function ReaderMenu:setUpdateItemTable()
|
||||
end
|
||||
|
||||
-- setting tab
|
||||
-- FIXME: it's curious that if this 'Screen' menu is placed after the Language
|
||||
-- menu submenu in 'Screen' won't be shown. Probably a bug in the touchmenu module.
|
||||
table.insert(self.tab_item_table.setting, {
|
||||
text = _("Show advanced options"),
|
||||
checked_func = function() return G_reader_settings:readSetting("show_advanced") end,
|
||||
callback = function()
|
||||
local show_advanced = G_reader_settings:readSetting("show_advanced") or false
|
||||
G_reader_settings:saveSetting("show_advanced", not show_advanced)
|
||||
end
|
||||
text = _("Screen settings"),
|
||||
sub_item_table = {
|
||||
Screen:getDPIMenuTable(),
|
||||
UIManager:getRefreshMenuTable(),
|
||||
},
|
||||
})
|
||||
table.insert(self.tab_item_table.setting, UIManager:getRefreshMenuTable())
|
||||
table.insert(self.tab_item_table.setting, {
|
||||
text = _("Night mode"),
|
||||
checked_func = function() return G_reader_settings:readSetting("night_mode") end,
|
||||
@@ -98,11 +98,20 @@ function ReaderMenu:setUpdateItemTable()
|
||||
G_reader_settings:saveSetting("night_mode", not night_mode)
|
||||
end
|
||||
})
|
||||
table.insert(self.tab_item_table.setting, Screen:getDPIMenuTable())
|
||||
table.insert(self.tab_item_table.setting, Language:getLangMenuTable())
|
||||
table.insert(self.tab_item_table.setting, {
|
||||
text = _("Show advanced options"),
|
||||
checked_func = function() return G_reader_settings:readSetting("show_advanced") end,
|
||||
callback = function()
|
||||
local show_advanced = G_reader_settings:readSetting("show_advanced") or false
|
||||
G_reader_settings:saveSetting("show_advanced", not show_advanced)
|
||||
end
|
||||
})
|
||||
|
||||
-- info tab
|
||||
table.insert(self.tab_item_table.info, OTAManager:getOTAMenuTable())
|
||||
if Device:isKindle() or Device:isKobo() then
|
||||
table.insert(self.tab_item_table.info, OTAManager:getOTAMenuTable())
|
||||
end
|
||||
table.insert(self.tab_item_table.info, {
|
||||
text = _("Version"),
|
||||
callback = function()
|
||||
|
||||
@@ -644,7 +644,9 @@ function ReaderPaging:onGotoPageRel(diff)
|
||||
elseif self.zoom_mode:find("width") then
|
||||
y_pan_off = self.visible_area.h * diff
|
||||
elseif self.zoom_mode:find("height") then
|
||||
x_pan_off = self.visible_area.w * diff
|
||||
-- negative x panning if writing direction is right to left
|
||||
local direction = self.ui.document.configurable.writing_direction
|
||||
x_pan_off = self.visible_area.w * diff * (direction == 1 and -1 or 1)
|
||||
else
|
||||
-- must be fit content or page zoom mode
|
||||
if self.visible_area.w == self.page_area.w then
|
||||
|
||||
@@ -459,11 +459,17 @@ function ReaderView:recalculate()
|
||||
self.state.page,
|
||||
self.state.zoom,
|
||||
self.state.rotation)
|
||||
-- starts from left top of page_area
|
||||
self.visible_area.x = self.page_area.x
|
||||
self.visible_area.y = self.page_area.y
|
||||
-- reset our size
|
||||
self.visible_area:setSizeTo(self.dimen)
|
||||
if self.ui.document.configurable.writing_direction == 0 then
|
||||
-- starts from left top of page_area
|
||||
self.visible_area.x = self.page_area.x
|
||||
self.visible_area.y = self.page_area.y
|
||||
else
|
||||
-- start from right top of page_area
|
||||
self.visible_area.x = self.page_area.x + self.page_area.w - self.visible_area.w
|
||||
self.visible_area.y = self.page_area.y
|
||||
end
|
||||
-- and recalculate it according to page size
|
||||
self.visible_area:offsetWithin(self.page_area, 0, 0)
|
||||
-- clear dim area
|
||||
|
||||
@@ -195,7 +195,6 @@ local KoptOptions = {
|
||||
toggle = {S.LTR, S.RTL, S.TBRTL},
|
||||
values = {0, 1, 2},
|
||||
default_value = 0,
|
||||
advanced = true,
|
||||
},
|
||||
{
|
||||
name = "quality",
|
||||
|
||||
@@ -284,7 +284,7 @@ function Screen:getDPIMenuTable()
|
||||
callback = function() setDPI(240) end
|
||||
},
|
||||
{
|
||||
text = _("Custom DPI") .. ": " .. custom() or 160,
|
||||
text = _("Custom DPI") .. ": " .. (custom() or 160),
|
||||
checked_func = function()
|
||||
local dpi, custom = dpi(), custom()
|
||||
return custom and dpi == custom
|
||||
|
||||
@@ -6,8 +6,14 @@ local DEBUG = require("dbg")
|
||||
local _ = require("gettext")
|
||||
|
||||
local OTAManager = {
|
||||
ota_server = "http://vislab.bjmu.edu.cn/apps/koreader/ota/",
|
||||
ota_channel = "nightly", -- or "stable"
|
||||
ota_servers = {
|
||||
"http://vislab.bjmu.edu.cn/apps/koreader/ota/",
|
||||
"http://koreader.ak-team.com/",
|
||||
"http://hal9k.ifsc.usp.br/koreader/",
|
||||
},
|
||||
ota_channels = {
|
||||
"nightly",
|
||||
},
|
||||
zsync_template = "koreader-%s-latest-%s.zsync",
|
||||
installed_package = "ota/koreader.installed.tar",
|
||||
package_indexfile = "ota/package.index",
|
||||
@@ -24,13 +30,22 @@ function OTAManager:getOTAModel()
|
||||
end
|
||||
end
|
||||
|
||||
function OTAManager:getOTAServer()
|
||||
return G_reader_settings:readSetting("ota_server") or self.ota_servers[1]
|
||||
end
|
||||
|
||||
function OTAManager:setOTAServer(server)
|
||||
DEBUG("Set OTA server:", server)
|
||||
G_reader_settings:saveSetting("ota_server", server)
|
||||
end
|
||||
|
||||
function OTAManager:getOTAChannel()
|
||||
return self.ota_channel
|
||||
return G_reader_settings:readSetting("ota_channel") or self.ota_channels[1]
|
||||
end
|
||||
|
||||
function OTAManager:setOTAChannel(channel)
|
||||
-- channel should be "nightly" or "stable"
|
||||
self.ota_channel = channel
|
||||
DEBUG("Set OTA channel:", channel)
|
||||
G_reader_settings:saveSetting("ota_channel", channel)
|
||||
end
|
||||
|
||||
function OTAManager:getZsyncFilename()
|
||||
@@ -42,7 +57,7 @@ function OTAManager:checkUpdate()
|
||||
local ltn12 = require("ltn12")
|
||||
|
||||
local zsync_file = self:getZsyncFilename()
|
||||
local ota_zsync_file = self.ota_server .. zsync_file
|
||||
local ota_zsync_file = self:getOTAServer() .. zsync_file
|
||||
local local_zsync_file = "ota/" .. zsync_file
|
||||
-- download zsync file from OTA server
|
||||
local r, c, h = http.request{
|
||||
@@ -84,43 +99,87 @@ function OTAManager:zsync()
|
||||
return os.execute(string.format(
|
||||
"./zsync -i %s -o %s -u %s %s",
|
||||
self.installed_package, self.updated_package,
|
||||
self.ota_server, "ota/" .. self:getZsyncFilename()
|
||||
self:getOTAServer(), "ota/" .. self:getZsyncFilename()
|
||||
))
|
||||
end
|
||||
end
|
||||
|
||||
function OTAManager:genServerList()
|
||||
local servers = {}
|
||||
for _, server in ipairs(self.ota_servers) do
|
||||
local server_item = {
|
||||
text = server,
|
||||
checked_func = function() return self:getOTAServer() == server end,
|
||||
callback = function() self:setOTAServer(server) end
|
||||
}
|
||||
table.insert(servers, server_item)
|
||||
end
|
||||
return servers
|
||||
end
|
||||
|
||||
function OTAManager:genChannelList()
|
||||
local channels = {}
|
||||
for _, channel in ipairs(self.ota_channels) do
|
||||
local channel_item = {
|
||||
text = channel,
|
||||
checked_func = function() return self:getOTAChannel() == channel end,
|
||||
callback = function() self:setOTAChannel(channel) end
|
||||
}
|
||||
table.insert(channels, channel_item)
|
||||
end
|
||||
return channels
|
||||
end
|
||||
|
||||
function OTAManager:getOTAMenuTable()
|
||||
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()
|
||||
text = _("OTA update"),
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("Check update"),
|
||||
callback = function()
|
||||
local ota_version = OTAManager:checkUpdate()
|
||||
if ota_version == 0 then
|
||||
UIManager:show(InfoMessage:new{
|
||||
text = _("Downloading may take several minutes..."),
|
||||
timeout = 3,
|
||||
text = _("Your koreader is updated."),
|
||||
})
|
||||
UIManager:scheduleIn(1, function()
|
||||
if OTAManager:zsync() == 0 then
|
||||
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 = _("Koreader will be updated on next restart."),
|
||||
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
|
||||
end
|
||||
end
|
||||
},
|
||||
{
|
||||
text = _("Settings"),
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("OTA server"),
|
||||
sub_item_table = self:genServerList()
|
||||
},
|
||||
{
|
||||
text = _("OTA channel"),
|
||||
sub_item_table = self:genChannelList()
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/koreader/koreader-base/issues\n"
|
||||
"POT-Creation-Date: 2014-08-05 04:19+0000\n"
|
||||
"POT-Creation-Date: 2014-08-06 12:31+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -100,7 +100,7 @@ msgid ""
|
||||
"Change font"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/otamanager.lua:94
|
||||
#: frontend/ui/otamanager.lua:138
|
||||
msgid ""
|
||||
"Check update"
|
||||
msgstr ""
|
||||
@@ -185,7 +185,7 @@ msgid ""
|
||||
"Do you want to Turn on Wifi?"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/otamanager.lua:107
|
||||
#: frontend/ui/otamanager.lua:151
|
||||
msgid ""
|
||||
"Do you want to update to version "
|
||||
msgstr ""
|
||||
@@ -195,12 +195,12 @@ msgid ""
|
||||
"Document Language"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/reader/modules/readermenu.lua:150
|
||||
#: frontend/apps/reader/modules/readermenu.lua:159
|
||||
msgid ""
|
||||
"Document menu"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/otamanager.lua:110
|
||||
#: frontend/ui/otamanager.lua:154
|
||||
msgid ""
|
||||
"Downloading may take several minutes..."
|
||||
msgstr ""
|
||||
@@ -283,7 +283,7 @@ msgid ""
|
||||
"File does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:147
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:150
|
||||
msgid ""
|
||||
"File manager menu"
|
||||
msgstr ""
|
||||
@@ -348,8 +348,8 @@ msgid ""
|
||||
"Go to Page or Location"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:115
|
||||
#: frontend/apps/reader/modules/readermenu.lua:115
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:118
|
||||
#: frontend/apps/reader/modules/readermenu.lua:124
|
||||
msgid ""
|
||||
"Help"
|
||||
msgstr ""
|
||||
@@ -405,7 +405,7 @@ msgid ""
|
||||
"Koreader Notes"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/otamanager.lua:116
|
||||
#: frontend/ui/otamanager.lua:160
|
||||
msgid ""
|
||||
"Koreader will be updated on next restart."
|
||||
msgstr ""
|
||||
@@ -476,7 +476,7 @@ msgid ""
|
||||
"More"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:92
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:95
|
||||
#: frontend/apps/reader/modules/readermenu.lua:93
|
||||
msgid ""
|
||||
"Night mode"
|
||||
@@ -504,11 +504,26 @@ msgid ""
|
||||
"OK"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/otamanager.lua:103
|
||||
#: frontend/ui/otamanager.lua:177
|
||||
msgid ""
|
||||
"OTA channel"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/otamanager.lua:173
|
||||
msgid ""
|
||||
"OTA server"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/otamanager.lua:147
|
||||
msgid ""
|
||||
"OTA server is not available."
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/otamanager.lua:135
|
||||
msgid ""
|
||||
"OTA update"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/reader/modules/readertypeset.lua:150
|
||||
msgid ""
|
||||
"Off"
|
||||
@@ -549,8 +564,8 @@ msgid ""
|
||||
"Paste"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:118
|
||||
#: frontend/apps/reader/modules/readermenu.lua:118
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:121
|
||||
#: frontend/apps/reader/modules/readermenu.lua:127
|
||||
msgid ""
|
||||
"Please report bugs to \n"
|
||||
"https://github.com/koreader/koreader/issues"
|
||||
@@ -611,6 +626,12 @@ msgid ""
|
||||
"Screen Mode"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:88
|
||||
#: frontend/apps/reader/modules/readermenu.lua:86
|
||||
msgid ""
|
||||
"Screen settings"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/data/strings.lua:8
|
||||
msgid ""
|
||||
"Scroll Mode"
|
||||
@@ -651,12 +672,17 @@ msgid ""
|
||||
"Set render style"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/otamanager.lua:170
|
||||
msgid ""
|
||||
"Settings"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/reader/modules/readerhighlight.lua:322
|
||||
msgid ""
|
||||
"Share"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/reader/modules/readermenu.lua:84
|
||||
#: frontend/apps/reader/modules/readermenu.lua:103
|
||||
msgid ""
|
||||
"Show advanced options"
|
||||
msgstr ""
|
||||
@@ -676,7 +702,7 @@ msgid ""
|
||||
"Small"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:77
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:76
|
||||
msgid ""
|
||||
"Start with last opened file"
|
||||
msgstr ""
|
||||
@@ -751,8 +777,8 @@ msgid ""
|
||||
"Underscore"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:107
|
||||
#: frontend/apps/reader/modules/readermenu.lua:107
|
||||
#: frontend/apps/filemanager/filemanagermenu.lua:110
|
||||
#: frontend/apps/reader/modules/readermenu.lua:116
|
||||
msgid ""
|
||||
"Version"
|
||||
msgstr ""
|
||||
@@ -787,7 +813,7 @@ msgid ""
|
||||
"Yinxiang"
|
||||
msgstr ""
|
||||
|
||||
#: frontend/ui/otamanager.lua:99
|
||||
#: frontend/ui/otamanager.lua:143
|
||||
msgid ""
|
||||
"Your koreader is updated."
|
||||
msgstr ""
|
||||
|
||||
Reference in New Issue
Block a user