From 32ffacdf772a3f3a3a747dc7f11d9b33716985e5 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 16 Oct 2013 17:06:28 +0800 Subject: [PATCH 1/5] adjust font sizes in credocument according to screen dpi and font sizes list is moved to defaults.lua --- defaults.lua | 4 ++++ frontend/document/credocument.lua | 4 ++++ frontend/ui/data/creoptions.lua | 19 +++++++++++++++---- frontend/ui/reader/readerfont.lua | 4 ++-- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/defaults.lua b/defaults.lua index 1893c6876..ddb4a1c67 100644 --- a/defaults.lua +++ b/defaults.lua @@ -60,6 +60,10 @@ DKOPTREADER_CONFIG_DOC_LANGS_TEXT = {"English", "Chinese"} DKOPTREADER_CONFIG_DOC_LANGS_CODE = {"eng", "chi_sim"} -- language code, make sure you have corresponding training data DKOPTREADER_CONFIG_DOC_DEFAULT_LANG_CODE = "eng" -- that have filenames starting with the language codes +-- crereader font sizes +-- feel free to add more entries in this list +DCREREADER_CONFIG_FONT_SIZES = {16, 20, 22, 24, 28, 32, 38, 44} -- range from 16 to 44 + -- gesture detector defaults DGESDETECT_DISABLE_DOUBLE_TAP = true diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index c83e38634..034360c23 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -89,6 +89,10 @@ function CreDocument:init() ok, self._document = pcall(cre.newDocView, Screen:getWidth(), Screen:getHeight(), self.PAGE_VIEW_MODE ) + + -- adjust font sizes according to screen dpi + self._document:adjustFontSizes(Screen:getDPI()) + if not ok then self.error_message = self.doc -- will contain error message return diff --git a/frontend/ui/data/creoptions.lua b/frontend/ui/data/creoptions.lua index 47839f974..a0faefe1b 100644 --- a/frontend/ui/data/creoptions.lua +++ b/frontend/ui/data/creoptions.lua @@ -1,6 +1,17 @@ require "ui/screen" require "ui/data/strings" +-- add multiply operator to Aa dict +local Aa = setmetatable({"Aa"}, { + __mul = function(t, mul) + local new = {} + for i = 1, mul do + for _, v in ipairs(t) do table.insert(new, v) end + end + return new + end +}) + CreOptions = { prefix = 'copt', { @@ -52,13 +63,13 @@ CreOptions = { options = { { name = "font_size", - item_text = {"Aa", "Aa", "Aa", "Aa", "Aa", "Aa", "Aa", "Aa"}, + item_text = Aa * #DCREREADER_CONFIG_FONT_SIZES, item_align_center = 1.0, spacing = 15, - item_font_size = {18, 20, 22, 24, 29, 33, 39, 44}, - values = {18, 20, 22, 24, 29, 33, 39, 44}, + item_font_size = DCREREADER_CONFIG_FONT_SIZES, + values = DCREREADER_CONFIG_FONT_SIZES, default_value = 22, - args = {18, 20, 22, 24, 29, 33, 39, 44}, + args = DCREREADER_CONFIG_FONT_SIZES, event = "SetFontSize", }, } diff --git a/frontend/ui/reader/readerfont.lua b/frontend/ui/reader/readerfont.lua index 4f5bd9712..49ddc5f9d 100644 --- a/frontend/ui/reader/readerfont.lua +++ b/frontend/ui/reader/readerfont.lua @@ -141,14 +141,14 @@ end function ReaderFont:onSetFontSize(new_size) if new_size > 44 then new_size = 44 end - if new_size < 18 then new_size = 18 end + if new_size < 16 then new_size = 16 end self.font_size = new_size UIManager:show(Notification:new{ text = _("Set font size to ")..self.font_size, timeout = 1, }) - self.ui.document:setFontSize(new_size) + self.ui.document:setFontSize(scaleByDPI(new_size)) self.ui:handleEvent(Event:new("UpdatePos")) return true From 9cec8a035a90027832fad4563397071901f103d6 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 16 Oct 2013 17:08:04 +0800 Subject: [PATCH 2/5] update koreader-base --- koreader-base | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/koreader-base b/koreader-base index f406cec21..94f2d03d5 160000 --- a/koreader-base +++ b/koreader-base @@ -1 +1 @@ -Subproject commit f406cec21ed62bd715853ed526658ae8ecbf6ae4 +Subproject commit 94f2d03d555e17d68c3d65615ac83cb71099973d From aac1509c218f6ea7fec7e442c8457f7e47f2fd90 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 16 Oct 2013 20:52:32 +0800 Subject: [PATCH 3/5] check dimension restraint on regional refresh request --- frontend/ui/screen.lua | 4 ++-- frontend/ui/uimanager.lua | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/frontend/ui/screen.lua b/frontend/ui/screen.lua index b6ef58033..d0e867b9d 100644 --- a/frontend/ui/screen.lua +++ b/frontend/ui/screen.lua @@ -75,8 +75,8 @@ end function Screen:refresh(refesh_type, waveform_mode, x, y, w, h) if x then x = x < 0 and 0 or math.floor(x) end if y then y = y < 0 and 0 or math.floor(y) end - if w then w = w > self.width and self.width or math.ceil(w) end - if h then h = h > self.height and self.height or math.ceil(h) end + if w then w = w + x > self.width and self.width - x or math.ceil(w) end + if h then h = h + y > self.height and self.height - y or math.ceil(h) end if self.native_rotation_mode == self.cur_rotation_mode then self.fb.bb:blitFrom(self.bb, 0, 0, 0, 0, self.width, self.height) elseif self.native_rotation_mode == 0 and self.cur_rotation_mode == 1 then diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index 2f5a037ea..ad5298037 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -247,9 +247,10 @@ function UIManager:run() end if self.update_region_func then local update_region = self.update_region_func() + -- in some rare cases update region has 1 pixel offset Screen:refresh(refresh_type, waveform_mode, - update_region.x, update_region.y, - update_region.w, update_region.h) + update_region.x-1, update_region.y-1, + update_region.w+2, update_region.h+2) else Screen:refresh(refresh_type, waveform_mode) end From c829b01d67531816b401ebe81cb29001536470e6 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 16 Oct 2013 20:54:53 +0800 Subject: [PATCH 4/5] fix onSelect revert on config and menu --- frontend/ui/widget/config.lua | 6 ++++-- frontend/ui/widget/menu.lua | 29 +++++++++++++++-------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/frontend/ui/widget/config.lua b/frontend/ui/widget/config.lua index 001439a7e..c1c543201 100644 --- a/frontend/ui/widget/config.lua +++ b/frontend/ui/widget/config.lua @@ -23,8 +23,10 @@ function MenuBarItem:init() end function MenuBarItem:onTapSelect() - self[1].invert = true - self.config:onShowConfigPanel(self.index) + UIManager:scheduleIn(0.0, function() self:invert(true) end) + UIManager:scheduleIn(0.1, function() + UIManager:sendEvent(Event:new("ShowConfigPanel", self.index)) + end) UIManager:scheduleIn(0.5, function() self:invert(false) end) return true end diff --git a/frontend/ui/widget/menu.lua b/frontend/ui/widget/menu.lua index dcc200fb6..fd713cf10 100644 --- a/frontend/ui/widget/menu.lua +++ b/frontend/ui/widget/menu.lua @@ -160,16 +160,20 @@ function MenuItem:init() }, } - self[1] = HorizontalGroup:new{ - HorizontalSpan:new{ width = 5 }, - ItemShortCutIcon:new{ - dimen = shortcut_icon_dimen, - key = self.shortcut, - radius = shortcut_icon_r, - style = self.shortcut_style, - }, - HorizontalSpan:new{ width = 10 }, - self._underline_container + self[1] = FrameContainer:new{ + bordersize = 0, + padding = 0, + HorizontalGroup:new{ + HorizontalSpan:new{ width = 5 }, + ItemShortCutIcon:new{ + dimen = shortcut_icon_dimen, + key = self.shortcut, + radius = shortcut_icon_r, + style = self.shortcut_style, + }, + HorizontalSpan:new{ width = 10 }, + self._underline_container + } } end @@ -264,10 +268,6 @@ function Menu:_recalculateDimen() } self.perpage = math.floor((self.dimen.h - self.dimen.x) / self.item_dimen.h) - 2 self.page_num = math.ceil(#self.item_table / self.perpage) - -- update page info layout, fixed #281 - if self.page_info then - self.page_info:resetLayout() - end end function Menu:init() @@ -414,6 +414,7 @@ function Menu:updateItems(select_number) -- self.layout must be updated for focusmanager self.layout = {} self.item_group:clear() + self.page_info:resetLayout() self:_recalculateDimen() -- default to select the first item From cd2ee14b9148c5d6b121538346ff3af795782144 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 16 Oct 2013 20:56:18 +0800 Subject: [PATCH 5/5] various fixes on Device:hasKeyboard check --- frontend/ui/reader/readerbookmark.lua | 3 ++- frontend/ui/reader/readerfont.lua | 2 +- frontend/ui/reader/readertoc.lua | 2 +- frontend/ui/widget/infomessage.lua | 5 +++-- frontend/ui/widget/notification.lua | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/frontend/ui/reader/readerbookmark.lua b/frontend/ui/reader/readerbookmark.lua index 4eb43ede2..af6d4753b 100644 --- a/frontend/ui/reader/readerbookmark.lua +++ b/frontend/ui/reader/readerbookmark.lua @@ -94,13 +94,14 @@ function ReaderBookmark:onShowBookmark() } -- buid up menu widget method as closure local doc = self.ui.document + local view = self.view local sendEv = function(ev) self.ui:handleEvent(ev) end function bm_menu:onMenuChoice(item) if doc.info.has_pages then sendEv(Event:new("PageUpdate", item.page)) - elseif self.view.view_mode == "page" then + elseif view.view_mode == "page" then sendEv(Event:new("PageUpdate", doc:getPageFromXPointer(item.page))) else sendEv(Event:new("PosUpdate", doc:getPosFromXPointer(item.page))) diff --git a/frontend/ui/reader/readerfont.lua b/frontend/ui/reader/readerfont.lua index 49ddc5f9d..a61aa4ce4 100644 --- a/frontend/ui/reader/readerfont.lua +++ b/frontend/ui/reader/readerfont.lua @@ -9,7 +9,7 @@ ReaderFont = InputContainer:new{ } function ReaderFont:init() - if not Device:hasNoKeyboard() then + if Device:hasKeyboard() then -- add shortcut for keyboard self.key_events = { ShowFontMenu = { {"F"}, doc = _("show font menu") }, diff --git a/frontend/ui/reader/readertoc.lua b/frontend/ui/reader/readertoc.lua index 6a227919e..b1be85dbf 100644 --- a/frontend/ui/reader/readertoc.lua +++ b/frontend/ui/reader/readertoc.lua @@ -4,7 +4,7 @@ ReaderToc = InputContainer:new{ } function ReaderToc:init() - if not Device:hasNoKeyboard() then + if Device:hasKeyboard() then self.key_events = { ShowToc = { { "T" }, diff --git a/frontend/ui/widget/infomessage.lua b/frontend/ui/widget/infomessage.lua index 464004985..157301421 100644 --- a/frontend/ui/widget/infomessage.lua +++ b/frontend/ui/widget/infomessage.lua @@ -13,11 +13,12 @@ InfoMessage = InputContainer:new{ function InfoMessage:init() if Device:hasKeyboard() then - key_events = { + self.key_events = { AnyKeyPressed = { { Input.group.Any }, seqtext = "any key", doc = _("close dialog") } } - else + end + if Device:isTouchDevice() then self.ges_events.TapClose = { GestureRange:new{ ges = "tap", diff --git a/frontend/ui/widget/notification.lua b/frontend/ui/widget/notification.lua index 2930fe304..43a76bff6 100644 --- a/frontend/ui/widget/notification.lua +++ b/frontend/ui/widget/notification.lua @@ -11,7 +11,7 @@ Notification = InputContainer:new{ function Notification:init() if Device:hasKeyboard() then - key_events = { + self.key_events = { AnyKeyPressed = { { Input.group.Any }, seqtext = "any key", doc = "close dialog" } } end