From 0ea5ce1afdcdec413803ff6c2c46784cf0478fb1 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 14:02:22 +0800 Subject: [PATCH 01/15] use checked/unchecked for hightlight drawer style --- frontend/apps/reader/modules/readerhighlight.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/apps/reader/modules/readerhighlight.lua b/frontend/apps/reader/modules/readerhighlight.lua index 6a047730d..9d5c708ee 100644 --- a/frontend/apps/reader/modules/readerhighlight.lua +++ b/frontend/apps/reader/modules/readerhighlight.lua @@ -80,8 +80,8 @@ function ReaderHighlight:genHighlightDrawerMenu() return { { text = _("Lighten"), - enabled_func = function() - return self.view.highlight.saved_drawer ~= "lighten" + checked_func = function() + return self.view.highlight.saved_drawer == "lighten" end, callback = function() self.view.highlight.saved_drawer = "lighten" @@ -89,8 +89,8 @@ function ReaderHighlight:genHighlightDrawerMenu() }, { text = _("Underscore"), - enabled_func = function() - return self.view.highlight.saved_drawer ~= "underscore" + checked_func = function() + return self.view.highlight.saved_drawer == "underscore" end, callback = function() self.view.highlight.saved_drawer = "underscore" @@ -98,8 +98,8 @@ function ReaderHighlight:genHighlightDrawerMenu() }, { text = _("Invert"), - enabled_func = function() - return self.view.highlight.saved_drawer ~= "invert" + checked_func = function() + return self.view.highlight.saved_drawer == "invert" end, callback = function() self.view.highlight.saved_drawer = "invert" From b92860c22afc12aa5644cf748bd3eaccd82cffbc Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 14:06:04 +0800 Subject: [PATCH 02/15] add night mode option that inverts screen color --- frontend/apps/filemanager/filemanagermenu.lua | 9 +++++++++ frontend/apps/reader/modules/readermenu.lua | 9 +++++++++ reader.lua | 8 ++++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 76132943c..5bd0e0c98 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -81,6 +81,15 @@ function FileManagerMenu:setUpdateItemTable() ReaderFrontLight:addToMainMenu(self.tab_item_table) end + table.insert(self.tab_item_table.main, { + text = _("Night mode"), + checked_func = function() return G_reader_settings:readSetting("night_mode") end, + callback = function() + local night_mode = G_reader_settings:readSetting("night_mode") or false + Screen.bb:invert() + G_reader_settings:saveSetting("night_mode", not night_mode) + end + }) table.insert(self.tab_item_table.main, Language:getLangMenuTable()) table.insert(self.tab_item_table.main, { text = _("Version"), diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 474535d36..d8dccbb26 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -71,6 +71,15 @@ function ReaderMenu:setUpdateItemTable() widget:addToMainMenu(self.tab_item_table) end + table.insert(self.tab_item_table.main, { + text = _("Night mode"), + checked_func = function() return G_reader_settings:readSetting("night_mode") end, + callback = function() + local night_mode = G_reader_settings:readSetting("night_mode") or false + Screen.bb:invert() + G_reader_settings:saveSetting("night_mode", not night_mode) + end + }) table.insert(self.tab_item_table.main, Language:getLangMenuTable()) table.insert(self.tab_item_table.main, { text = _("Version"), diff --git a/reader.lua b/reader.lua index 0eb21a491..7b7f3fc96 100755 --- a/reader.lua +++ b/reader.lua @@ -173,10 +173,10 @@ end local last_file = G_reader_settings:readSetting("lastfile") -- load last opened file local open_last = G_reader_settings:readSetting("open_last") - - ---@TODO we can read version here, refer to commit in master tree: (houqp) ---87712cf0e43fed624f8a9f610be42b1fe174b9fe +-- night mode +if G_reader_settings:readSetting("night_mode") then + Screen.bb:invert() +end do local powerd = Device:getPowerDevice() From 1fa1c69de4ebb8ff3954da31784fc1583050a9b4 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 14:07:38 +0800 Subject: [PATCH 03/15] use checked/unchecked for show page overlap option --- frontend/apps/reader/modules/readerpaging.lua | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index 9d65e09c2..ea271ebe8 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -138,11 +138,8 @@ end function ReaderPaging:addToMainMenu(tab_item_table) if self.ui.document.info.has_pages then table.insert(tab_item_table.typeset, { - text_func = function() - return self.show_overlap_enable and - _("Turn off page overlap") or - _("Turn on page overlap") - end, + text = _("Show page overlap"), + checked_func = function() return self.show_overlap_enable end, callback = function() self.show_overlap_enable = not self.show_overlap_enable end From d6bfbb26ac93c42e816de43ab15394c787961e3b Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 14:08:18 +0800 Subject: [PATCH 04/15] decrease toc entry indentation --- frontend/apps/reader/modules/readertoc.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/apps/reader/modules/readertoc.lua b/frontend/apps/reader/modules/readertoc.lua index b35dfed56..fe12c08fe 100644 --- a/frontend/apps/reader/modules/readertoc.lua +++ b/frontend/apps/reader/modules/readertoc.lua @@ -103,7 +103,7 @@ function ReaderToc:onShowToc() -- build menu items if #self.toc > 0 and not self.toc[1].text then for _,v in ipairs(self.toc) do - v.text = (" "):rep(v.depth-1)..self:cleanUpTocTitle(v.title) + v.text = (" "):rep(v.depth-1)..self:cleanUpTocTitle(v.title) v.mandatory = v.page end end From 9119d12e17ad8249d75415684cc76d9796aa8bb3 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 14:08:50 +0800 Subject: [PATCH 05/15] use checked/unchecked for zooming options --- frontend/apps/reader/modules/readerzooming.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/frontend/apps/reader/modules/readerzooming.lua b/frontend/apps/reader/modules/readerzooming.lua index 656e94f23..f86b163bb 100644 --- a/frontend/apps/reader/modules/readerzooming.lua +++ b/frontend/apps/reader/modules/readerzooming.lua @@ -293,26 +293,32 @@ function ReaderZooming:addToMainMenu(tab_item_table) sub_item_table = { { text = _("Zoom to fit content width"), + checked_func = function() return self.zoom_mode == "contentwidth" end, callback = self:genSetZoomModeCallBack("contentwidth") }, { text = _("Zoom to fit content height"), + checked_func = function() return self.zoom_mode == "contentheight" end, callback = self:genSetZoomModeCallBack("contentheight") }, { text = _("Zoom to fit page width"), + checked_func = function() return self.zoom_mode == "pagewidth" end, callback = self:genSetZoomModeCallBack("pagewidth") }, { text = _("Zoom to fit page height"), + checked_func = function() return self.zoom_mode == "pageheight" end, callback = self:genSetZoomModeCallBack("pageheight") }, { text = _("Zoom to fit content"), + checked_func = function() return self.zoom_mode == "content" end, callback = self:genSetZoomModeCallBack("content") }, { text = _("Zoom to fit page"), + checked_func = function() return self.zoom_mode == "page" end, callback = self:genSetZoomModeCallBack("page") }, } From 0f829390d6b5d9e68ab60f1e5637cb2db631c073 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 14:09:31 +0800 Subject: [PATCH 06/15] decrease indentation of touch menu entries --- frontend/ui/widget/touchmenu.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/ui/widget/touchmenu.lua b/frontend/ui/widget/touchmenu.lua index 663bb595e..df684b0e8 100644 --- a/frontend/ui/widget/touchmenu.lua +++ b/frontend/ui/widget/touchmenu.lua @@ -65,7 +65,6 @@ function TouchMenuItem:init() color = 15, HorizontalGroup:new { align = "center", - HorizontalSpan:new{ width = Screen:scaleByDPI(5) }, CenterContainer:new{ dimen = Geom:new{ w = checked_widget:getSize().w }, item_checked and checked_widget or unchecked_widget From 9dce5bad662735b88556b728461f730398fe1fab Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 14:09:59 +0800 Subject: [PATCH 07/15] use checked/unchecked for language option --- frontend/ui/language.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/ui/language.lua b/frontend/ui/language.lua index 31aba68c5..26fbd39de 100644 --- a/frontend/ui/language.lua +++ b/frontend/ui/language.lua @@ -18,6 +18,9 @@ end function Language:genLanguageSubItem(lang, lang_locale) return { text = lang, + checked_func = function() + return G_reader_settings:readSetting("language") == lang_locale + end, callback = function() self:changeLanguage(lang_locale) end From bf5400fe5415c75da321dcaa0b1dfeeb5ff678a3 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 14:11:23 +0800 Subject: [PATCH 08/15] update pot file --- l10n/templates/koreader.pot | 55 +++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/l10n/templates/koreader.pot b/l10n/templates/koreader.pot index 238c6513d..5a1161563 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-06-05 11:16+0000\n" +"POT-Creation-Date: 2014-06-08 06:10+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" @@ -137,7 +137,7 @@ msgid "" "Document Language" msgstr "" -#: frontend/apps/reader/modules/readermenu.lua:118 +#: frontend/apps/reader/modules/readermenu.lua:127 msgid "" "Document menu" msgstr "" @@ -196,7 +196,7 @@ msgid "" "File does not exist" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:125 +#: frontend/apps/filemanager/filemanagermenu.lua:134 msgid "" "File manager menu" msgstr "" @@ -251,8 +251,8 @@ msgid "" "Go to Page or Location" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:94 -#: frontend/apps/reader/modules/readermenu.lua:84 +#: frontend/apps/filemanager/filemanagermenu.lua:103 +#: frontend/apps/reader/modules/readermenu.lua:93 msgid "" "Help" msgstr "" @@ -303,7 +303,7 @@ msgid "" "LTR" msgstr "" -#: frontend/ui/language.lua:31 +#: frontend/ui/language.lua:34 msgid "" "Language" msgstr "" @@ -354,6 +354,12 @@ msgid "" "More" msgstr "" +#: frontend/apps/filemanager/filemanagermenu.lua:85 +#: frontend/apps/reader/modules/readermenu.lua:75 +msgid "" +"Night mode" +msgstr "" + #: reader.lua:84 msgid "" "No reader engine for this file" @@ -380,7 +386,7 @@ msgid "" "Page" msgstr "" -#: frontend/ui/widget/touchmenu.lua:382 +#: frontend/ui/widget/touchmenu.lua:402 msgid "" "Page " msgstr "" @@ -400,8 +406,8 @@ msgid "" "Paste" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:97 -#: frontend/apps/reader/modules/readermenu.lua:87 +#: frontend/apps/filemanager/filemanagermenu.lua:106 +#: frontend/apps/reader/modules/readermenu.lua:96 msgid "" "Please report bugs to \n" "https://github.com/koreader/koreader/issues" @@ -477,7 +483,12 @@ msgid "" "Show hidden files" msgstr "" -#: frontend/ui/uimanager.lua:298 +#: frontend/apps/reader/modules/readerpaging.lua:141 +msgid "" +"Show page overlap" +msgstr "" + +#: frontend/ui/uimanager.lua:299 msgid "" "Standby" msgstr "" @@ -537,23 +548,13 @@ msgid "" "Translate" msgstr "" -#: frontend/apps/reader/modules/readerpaging.lua:143 -msgid "" -"Turn off page overlap" -msgstr "" - -#: frontend/apps/reader/modules/readerpaging.lua:144 -msgid "" -"Turn on page overlap" -msgstr "" - #: frontend/apps/reader/modules/readerhighlight.lua:91 msgid "" "Underscore" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:86 -#: frontend/apps/reader/modules/readermenu.lua:76 +#: frontend/apps/filemanager/filemanagermenu.lua:95 +#: frontend/apps/reader/modules/readermenu.lua:85 msgid "" "Version" msgstr "" @@ -589,12 +590,12 @@ msgid "" "Yinxiang" msgstr "" -#: frontend/apps/reader/modules/readerzooming.lua:311 +#: frontend/apps/reader/modules/readerzooming.lua:315 msgid "" "Zoom to fit content" msgstr "" -#: frontend/apps/reader/modules/readerzooming.lua:299 +#: frontend/apps/reader/modules/readerzooming.lua:300 msgid "" "Zoom to fit content height" msgstr "" @@ -604,17 +605,17 @@ msgid "" "Zoom to fit content width" msgstr "" -#: frontend/apps/reader/modules/readerzooming.lua:315 +#: frontend/apps/reader/modules/readerzooming.lua:320 msgid "" "Zoom to fit page" msgstr "" -#: frontend/apps/reader/modules/readerzooming.lua:307 +#: frontend/apps/reader/modules/readerzooming.lua:310 msgid "" "Zoom to fit page height" msgstr "" -#: frontend/apps/reader/modules/readerzooming.lua:303 +#: frontend/apps/reader/modules/readerzooming.lua:305 msgid "" "Zoom to fit page width" msgstr "" From 3b5fa25c25a9ae15bd376c80d5c2f1f2ea9b9410 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 17:52:45 +0800 Subject: [PATCH 09/15] respond Menu key to show reader menu --- frontend/apps/reader/modules/readermenu.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index d8dccbb26..5e78a975d 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -45,7 +45,7 @@ function ReaderMenu:init() if Device:hasKeyboard() then self.key_events = { - ShowMenu = { { "Menu" }, doc = "show menu" }, + ShowReaderMenu = { { "Menu" }, doc = "show menu" }, } end end From 15baeb786711027d669d77f7ded5918dede1d6b5 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 17:56:52 +0800 Subject: [PATCH 10/15] save doc settings when receiving IntoSS or Suspend or SaveState events --- frontend/apps/reader/readerui.lua | 5 +++ frontend/ui/input.lua | 66 ++++++++++++++++++++++++++++--- frontend/ui/uimanager.lua | 4 ++ koreader-base | 2 +- 4 files changed, 71 insertions(+), 6 deletions(-) diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index 8e17838b1..c8c460975 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -293,6 +293,11 @@ function ReaderUI:saveSettings() self.doc_settings:flush() end +function ReaderUI:onFlushSettings() + self:saveSettings() + return true +end + function ReaderUI:onClose() DEBUG("closing reader") self:saveSettings() diff --git a/frontend/ui/input.lua b/frontend/ui/input.lua index c638db82c..8e3e763b7 100644 --- a/frontend/ui/input.lua +++ b/frontend/ui/input.lua @@ -6,12 +6,14 @@ local Screen = require("ui/screen") local Math = require("optmath") local DEBUG = require("dbg") local _ = require("gettext") +local ffi = require("ffi") local util = require("ffi/util") -- constants from local EV_SYN = 0 local EV_KEY = 1 local EV_ABS = 3 +local EV_MSC = 4 -- key press event values (KEY.value) local EVENT_VALUE_KEY_PRESS = 1 @@ -211,6 +213,39 @@ function Input:initKeyMap() [117] = "RPgFwd", -- normal PageDown [119] = "Del", -- Delete } + self.sdl2_event_map = { + [ 4] = "A", [ 5] = "B", [ 6] = "C", [ 7] = "D", [ 8] = "E", [ 9] = "F", + [10] = "G", [11] = "H", [12] = "I", [13] = "J", [14] = "K", [15] = "L", + [16] = "M", [17] = "N", [18] = "O", [19] = "P", [20] = "Q", [21] = "R", + [22] = "S", [23] = "T", [24] = "U", [25] = "V", [26] = "W", [27] = "X", + [28] = "Y", [29] = "Z", [30] = "1", [31] = "2", [32] = "3", [33] = "4", + [34] = "5", [35] = "6", [36] = "7", [37] = "8", [38] = "9", [39] = "0", + + [42] = "Back", -- Backspace + [40] = "Enter", -- Enter + [225] = "Shift", -- left shift + [55] = ".", + [56] = "/", + [229] = "Sym", -- right shift key + [226] = "Alt", -- left alt + [44] = " ", -- Spacebar + [58] = "Menu", -- F[1] + [63] = "LPgBack", -- F[6] + [64] = "LPgFwd", -- F[7] + [68] = "VPlus", -- F[11] + [69] = "VMinus", -- F[12] + [230] = "AA", -- right alt key + [74] = "Home", -- Home + [82] = "Up", -- arrow up + [75] = "RPgBack", -- normal PageUp + [80] = "Left", -- arrow left + [79] = "Right", -- arrow right + [77] = "Press", -- End (above arrows) + [81] = "Down", -- arrow down + [78] = "RPgFwd", -- normal PageDown + [76] = "Del", -- Delete + } + self.modifiers = { Alt = false, Shift = false @@ -261,9 +296,7 @@ function Input:initTouchState() end function Input:init() - if Device:hasKeyboard() then - self:initKeyMap() - end + self:initKeyMap() if Device:isTouchDevice() then self:initTouchState() end @@ -274,12 +307,16 @@ function Input:init() self.event_map[10021] = "NotCharging" if util.isEmulated() then - self:initKeyMap() os.remove("/tmp/emu_event") os.execute("mkfifo /tmp/emu_event") input.open("/tmp/emu_event") -- SDL key codes - self.event_map = self.sdl_event_map + if not util.haveSDL2() then + self.event_map = self.sdl_event_map + else + self.event_map = self.sdl2_event_map + end + else local dev_mod = Device:getModel() if not Device:isKobo() then @@ -389,6 +426,10 @@ function Input:init() input.open("/dev/input/event1") elseif util.isAndroid() then DEBUG("Auto-detected Android") + self:adjustAndroidEventMap() + function Input:handleMiscEv(ev) + return Input:handleAndroidMiscEvent(ev) + end else DEBUG("Not supported device model!") end @@ -425,6 +466,9 @@ function Input:adjustKoboEventMap() self.event_map[116] = "Power" end +function Input:adjustAndroidEventMap() +end + function Input:setTimeout(cb, tv_out) local item = { callback = cb, @@ -486,6 +530,15 @@ function Input:handleKeyBoardEv(ev) end end +function Input:handleMiscEv(ev) +end + +function Input:handleAndroidMiscEvent(ev) + if ev.code == ffi.C.APP_CMD_SAVE_STATE then + return "SaveState" + end +end + function Input:setMtSlot(slot, key, val) if not self.ev_slots[slot] then self.ev_slots[slot] = { @@ -717,9 +770,12 @@ function Input:waitEvent(timeout_us, timeout_s) end ev = self:eventAdjustHook(ev) if ev.type == EV_KEY then + DEBUG("key ev", ev) return self:handleKeyBoardEv(ev) elseif ev.type == EV_ABS or ev.type == EV_SYN then return self:handleTouchEv(ev) + elseif ev.type == EV_MSC then + return self:handleMiscEv(ev) else -- some other kind of event that we do not know yet return Event:new("GenericInput", ev) diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index 931b54bdc..bce17d82e 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -282,6 +282,7 @@ function UIManager:run() if input_event then --DEBUG("in ui.lua:", input_event) if input_event == "IntoSS" then + self:sendEvent(Event:new("FlushSettings")) Device:intoScreenSaver() elseif input_event == "OutOfSS" then Device:outofScreenSaver() @@ -299,12 +300,15 @@ function UIManager:run() text = _("Standby"), timeout = 1, }) + self:sendEvent(Event:new("FlushSettings")) Device:prepareSuspend() self:scheduleIn(0.5, function() Device:Suspend() end) elseif (input_event == "Power" and Device.screen_saver_mode) or input_event == "Resume" then Device:Resume() self:sendEvent(Event:new("Resume")) + elseif input_event == "SaveState" then + self:sendEvent(Event:new("FlushSettings")) else self:sendEvent(input_event) end diff --git a/koreader-base b/koreader-base index 2b38b16d2..9dc2c6b2a 160000 --- a/koreader-base +++ b/koreader-base @@ -1 +1 @@ -Subproject commit 2b38b16d2795a228b1a541fbc2e09bd093119aad +Subproject commit 9dc2c6b2a2e15d47a17cb811182684a4ed272013 From 1fd45c39030a84847acd86ff85aa9cc982d4b71f Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 19:07:14 +0800 Subject: [PATCH 11/15] add tap zone configuration for the minibar --- defaults.lua | 1 + frontend/apps/reader/modules/readerfooter.lua | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/defaults.lua b/defaults.lua index 1ed04ad2f..f4563b987 100644 --- a/defaults.lua +++ b/defaults.lua @@ -63,6 +63,7 @@ DOVERLAPPIXELS = 30 -- h: height of tap zone in proportion of screen height DTAP_ZONE_MENU = {x = 1/8, y = 0, w = 3/4, h = 1/4} DTAP_ZONE_CONFIG = {x = 0, y = 0, w = 0, h = 0} +DTAP_ZONE_MINIBAR = {x = 0, y = 15/16, w = 1, h = 1/16} DTAP_ZONE_FORWARD = {x = 1/4, y = 0, w = 3/4, h = 1} DTAP_ZONE_BACKWARD = {x = 0, y = 0, w = 1/4, h = 1} DTAP_ZONE_BOOKMARK = {x = 7/8, y = 0, w = 1/8, h = 1/8} diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index 9701071e4..a32214fcd 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -67,18 +67,24 @@ function ReaderFooter:init() self.pageno = self.view.state.page self.pages = self.view.document.info.number_of_pages self:updateFooterPage() + local range = Geom:new{ + x = Screen:getWidth()*DTAP_ZONE_MINIBAR.x, + y = Screen:getHeight()*DTAP_ZONE_MINIBAR.y, + w = Screen:getWidth()*DTAP_ZONE_MINIBAR.w, + h = Screen:getHeight()*DTAP_ZONE_MINIBAR.h + } if Device:isTouchDevice() then self.ges_events = { TapFooter = { GestureRange:new{ ges = "tap", - range = self[1]:contentRange(), + range = range, }, }, HoldFooter = { GestureRange:new{ ges = "hold", - range = self[1]:contentRange(), + range = range, }, }, } From c0bb3ab3f704261c63bf3fff6046d1f046e60dab Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 19:56:42 +0800 Subject: [PATCH 12/15] fix typo --- frontend/ui/timeval.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/ui/timeval.lua b/frontend/ui/timeval.lua index 28f934839..424442dae 100644 --- a/frontend/ui/timeval.lua +++ b/frontend/ui/timeval.lua @@ -13,7 +13,7 @@ function TimeVal:new(o) if o.usec == nil then o.usec = 0 elseif o.usec > 1000000 then - o.sec = o.sec + maht.floor(o.usec/1000000) + o.sec = o.sec + math.floor(o.usec/1000000) o.usec = o.usec % 1000000 end setmetatable(o, self) From 940beff044feb3e4c04abe325d3315a1b3c0526a Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 19:57:31 +0800 Subject: [PATCH 13/15] fix insensitive rotate gesture detection This should fix #546. --- .../apps/reader/modules/readerrotation.lua | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/frontend/apps/reader/modules/readerrotation.lua b/frontend/apps/reader/modules/readerrotation.lua index b3f0c7a54..356141b6b 100644 --- a/frontend/apps/reader/modules/readerrotation.lua +++ b/frontend/apps/reader/modules/readerrotation.lua @@ -34,19 +34,10 @@ function ReaderRotation:init() x = 0, y = 0, w = Screen:getWidth(), h = Screen:getHeight(), - } + }, + rate = 0.3 } }, - TwoFingerPanRelease = { - GestureRange:new{ - ges = "two_finger_pan_release", - range = Geom:new{ - x = 0, y = 0, - w = Screen:getWidth(), - h = Screen:getHeight(), - } - } - } } end end @@ -60,19 +51,14 @@ function ReaderRotation:onRotate(rotate_by) end function ReaderRotation:onRotateGes(arg, ges) - self.rotate_angle = ges.angle - return true -end - -function ReaderRotation:onTwoFingerPanRelease(arg, ges) - if self.rotate_angle and self.rotate_angle > self.ROTATE_ANGLE_THRESHOLD then + if ges.angle and ges.angle > self.ROTATE_ANGLE_THRESHOLD then if Screen:getScreenMode() == "portrait" then self.ui:handleEvent(Event:new("SetScreenMode", "landscape")) else self.ui:handleEvent(Event:new("SetScreenMode", "portrait")) end - self.rotate_angle = nil end + return true end return ReaderRotation From 88061b323e756cb2a3d49ab300dc802a82ec1f2e Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 20:48:33 +0800 Subject: [PATCH 14/15] strip encoding suffix in locale name like zh_CN.utf8 So that we can automatically change to language defined in the LANGUAGE or LANG env variable. --- frontend/gettext.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/gettext.lua b/frontend/gettext.lua index 895f8d56c..f098c83e8 100644 --- a/frontend/gettext.lua +++ b/frontend/gettext.lua @@ -39,7 +39,10 @@ function GetText_mt.__index.changeLang(new_lang) GetText.current_lang = "C" -- the "C" locale disables localization alltogether - if new_lang == "C" then return end + if new_lang == "C" or new_lang == nil then return end + + -- strip encoding suffix in locale like "zh_CN.utf8" + new_lang = new_lang:sub(1, new_lang:find(".%.")) local file = GetText.dirname .. "/" .. new_lang .. "/" .. GetText.textdomain .. ".po" local po = io.open(file, "r") From 20bd14d5882eea6bda27df40aaa83cbfbaefe41d Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 8 Jun 2014 21:32:45 +0800 Subject: [PATCH 15/15] automatically set language on Android --- android/luajit-launcher | 2 +- frontend/gettext.lua | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/android/luajit-launcher b/android/luajit-launcher index 5bd850e1e..9c3178079 160000 --- a/android/luajit-launcher +++ b/android/luajit-launcher @@ -1 +1 @@ -Subproject commit 5bd850e1e57d4ceb1b867f3bc38a31a8795a9fe9 +Subproject commit 9c3178079c8c46226c74717bfc16903535b4ee14 diff --git a/frontend/gettext.lua b/frontend/gettext.lua index f098c83e8..a68e1c374 100644 --- a/frontend/gettext.lua +++ b/frontend/gettext.lua @@ -1,3 +1,4 @@ +local isAndroid, android = pcall(require, "android") local DEBUG = require("dbg") local GetText = { @@ -96,4 +97,16 @@ elseif os.getenv("LANG") then GetText.changeLang(os.getenv("LANG")) end +if isAndroid then + local ffi = require("ffi") + local buf = ffi.new("char[?]", 16) + ffi.C.AConfiguration_getLanguage(android.app.config, buf) + local lang = ffi.string(buf) + ffi.C.AConfiguration_getCountry(android.app.config, buf) + local country = ffi.string(buf) + if lang and country then + GetText.changeLang(lang.."_"..country) + end +end + return GetText