diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index b7d5f2cfc..c0044892e 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -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() diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 0e5481ae1..439f8effa 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -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() diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index 291c25028..7a77a7a8d 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -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 diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index d0dff2ac7..37ce322d4 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -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 diff --git a/frontend/ui/data/koptoptions.lua b/frontend/ui/data/koptoptions.lua index a1324615d..8c1b36306 100644 --- a/frontend/ui/data/koptoptions.lua +++ b/frontend/ui/data/koptoptions.lua @@ -195,7 +195,6 @@ local KoptOptions = { toggle = {S.LTR, S.RTL, S.TBRTL}, values = {0, 1, 2}, default_value = 0, - advanced = true, }, { name = "quality", diff --git a/frontend/ui/device/screen.lua b/frontend/ui/device/screen.lua index 2e9d4036c..4fa11d37e 100644 --- a/frontend/ui/device/screen.lua +++ b/frontend/ui/device/screen.lua @@ -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 diff --git a/frontend/ui/otamanager.lua b/frontend/ui/otamanager.lua index 4949affd5..663b1130b 100644 --- a/frontend/ui/otamanager.lua +++ b/frontend/ui/otamanager.lua @@ -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 diff --git a/l10n/templates/koreader.pot b/l10n/templates/koreader.pot index ccefb888b..c1ed04c5a 100644 --- a/l10n/templates/koreader.pot +++ b/l10n/templates/koreader.pot @@ -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 ""