From 87e667748a5e2ada0858a41450e62928fb45a5c7 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 27 Jul 2014 21:41:38 +0800 Subject: [PATCH] add font size menu entry It changes screen DPI and may needs to reboot the reader to take effect. This should fix #746. --- .../apps/filemanager/filemanagerhistory.lua | 4 +- frontend/apps/filemanager/filemanagermenu.lua | 64 ++++++++++++-- .../apps/reader/modules/readerfrontlight.lua | 4 +- frontend/apps/reader/modules/readermenu.lua | 64 +++++++++++--- frontend/ui/device/screen.lua | 8 +- frontend/ui/widget/touchmenu.lua | 2 +- l10n/templates/koreader.pot | 78 ++++++++++++------ resources/icons/appbar.settings.png | Bin 0 -> 1385 bytes resources/icons/src/appbar.settings.svg | 5 ++ 9 files changed, 178 insertions(+), 51 deletions(-) create mode 100644 resources/icons/appbar.settings.png create mode 100644 resources/icons/src/appbar.settings.svg diff --git a/frontend/apps/filemanager/filemanagerhistory.lua b/frontend/apps/filemanager/filemanagerhistory.lua index ef8ae144e..a9dae76e8 100644 --- a/frontend/apps/filemanager/filemanagerhistory.lua +++ b/frontend/apps/filemanager/filemanagerhistory.lua @@ -67,8 +67,8 @@ function FileManagerHistory:onShowHist() end function FileManagerHistory:addToMainMenu(tab_item_table) - -- insert table to main reader menu - table.insert(tab_item_table.main, { + -- insert table to info tab of filemanager menu + table.insert(tab_item_table.info, { text = self.hist_menu_title, callback = function() self:onShowHist() diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index b412efa4f..aab575645 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -18,7 +18,10 @@ local FileManagerMenu = InputContainer:extend{ function FileManagerMenu:init() self.tab_item_table = { - main = { + setting = { + icon = "resources/icons/appbar.settings.png", + }, + info = { icon = "resources/icons/appbar.pokeball.png", }, home = { @@ -59,7 +62,8 @@ function FileManagerMenu:setUpdateItemTable() widget:addToMainMenu(self.tab_item_table) end - table.insert(self.tab_item_table.main, { + -- setting tab + table.insert(self.tab_item_table.setting, { text = _("Show hidden files"), checked_func = function() return self.ui.file_chooser.show_hidden end, callback = function() @@ -67,7 +71,7 @@ function FileManagerMenu:setUpdateItemTable() end }) - table.insert(self.tab_item_table.main, { + table.insert(self.tab_item_table.setting, { text = _("Start with last opened file"), checked_func = function() return G_reader_settings:readSetting("open_last") end, enabled_func = function() return G_reader_settings:readSetting("lastfile") ~= nil end, @@ -81,7 +85,7 @@ function FileManagerMenu:setUpdateItemTable() ReaderFrontLight:addToMainMenu(self.tab_item_table) end - table.insert(self.tab_item_table.main, { + table.insert(self.tab_item_table.setting, { text = _("Night mode"), checked_func = function() return G_reader_settings:readSetting("night_mode") end, callback = function() @@ -90,8 +94,49 @@ function FileManagerMenu:setUpdateItemTable() 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, { + + -- TODO: refactor out redundant code between reader menu and filemanager menu + table.insert(self.tab_item_table.setting, { + text = _("Font size"), + sub_item_table = { + { + text = _("Auto"), + checked_func = function() + local dpi = G_reader_settings:readSetting("screen_dpi") + return dpi == nil + end, + callback = function() Screen:setDPI() end + }, + { + text = _("Small"), + checked_func = function() + local dpi = G_reader_settings:readSetting("screen_dpi") + return dpi and dpi <= 140 + end, + callback = function() Screen:setDPI(120) end + }, + { + text = _("Medium"), + checked_func = function() + local dpi = G_reader_settings:readSetting("screen_dpi") + return dpi and dpi > 140 and dpi <= 200 + end, + callback = function() Screen:setDPI(160) end + }, + { + text = _("Large"), + checked_func = function() + local dpi = G_reader_settings:readSetting("screen_dpi") + return dpi and dpi > 200 + end, + callback = function() Screen:setDPI(240) end + }, + } + }) + table.insert(self.tab_item_table.setting, Language:getLangMenuTable()) + + -- info tab + table.insert(self.tab_item_table.info, { text = _("Version"), callback = function() UIManager:show(InfoMessage:new{ @@ -99,7 +144,7 @@ function FileManagerMenu:setUpdateItemTable() }) end }) - table.insert(self.tab_item_table.main, { + table.insert(self.tab_item_table.info, { text = _("Help"), callback = function() UIManager:show(InfoMessage:new{ @@ -110,7 +155,7 @@ function FileManagerMenu:setUpdateItemTable() end function FileManagerMenu:onShowMenu() - if #self.tab_item_table.main == 0 then + if #self.tab_item_table.setting == 0 then self:setUpdateItemTable() end @@ -124,7 +169,8 @@ function FileManagerMenu:onShowMenu() main_menu = TouchMenu:new{ width = Screen:getWidth(), tab_item_table = { - self.tab_item_table.main, + self.tab_item_table.setting, + self.tab_item_table.info, self.tab_item_table.home, }, show_parent = menu_container, diff --git a/frontend/apps/reader/modules/readerfrontlight.lua b/frontend/apps/reader/modules/readerfrontlight.lua index 675838967..0ac5fc6e2 100644 --- a/frontend/apps/reader/modules/readerfrontlight.lua +++ b/frontend/apps/reader/modules/readerfrontlight.lua @@ -80,8 +80,8 @@ function ReaderFrontLight:onPanRelease(arg, ges) end function ReaderFrontLight:addToMainMenu(tab_item_table) - -- insert fldial command to main reader menu - table.insert(tab_item_table.main, { + -- insert fldial command to setting tab of reader menu + table.insert(tab_item_table.setting, { text = _("Frontlight settings"), callback = function() self:onShowFlDialog() diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 8dd3d4f7b..ef4233b66 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -21,12 +21,15 @@ local ReaderMenu = InputContainer:new{ function ReaderMenu:init() self.tab_item_table = { - main = { - icon = "resources/icons/appbar.pokeball.png", + setting = { + icon = "resources/icons/appbar.settings.png", }, navi = { icon = "resources/icons/appbar.page.corner.bookmark.png", }, + info = { + icon = "resources/icons/appbar.pokeball.png", + }, typeset = { icon = "resources/icons/appbar.page.text.png", }, @@ -74,7 +77,8 @@ function ReaderMenu:setUpdateItemTable() widget:addToMainMenu(self.tab_item_table) end - table.insert(self.tab_item_table.main, { + -- setting tab + table.insert(self.tab_item_table.setting, { text = _("Night mode"), checked_func = function() return G_reader_settings:readSetting("night_mode") end, callback = function() @@ -83,8 +87,45 @@ function ReaderMenu:setUpdateItemTable() G_reader_settings:saveSetting("night_mode", not night_mode) end }) - table.insert(self.tab_item_table.main, self:genRefreshRateMenu()) - table.insert(self.tab_item_table.main, { + table.insert(self.tab_item_table.setting, { + text = _("Font size"), + sub_item_table = { + { + text = _("Auto"), + checked_func = function() + local dpi = G_reader_settings:readSetting("screen_dpi") + return dpi == nil + end, + callback = function() Screen:setDPI() end + }, + { + text = _("Small"), + checked_func = function() + local dpi = G_reader_settings:readSetting("screen_dpi") + return dpi and dpi <= 140 + end, + callback = function() Screen:setDPI(120) end + }, + { + text = _("Medium"), + checked_func = function() + local dpi = G_reader_settings:readSetting("screen_dpi") + return dpi and dpi > 140 and dpi <= 200 + end, + callback = function() Screen:setDPI(160) end + }, + { + text = _("Large"), + checked_func = function() + local dpi = G_reader_settings:readSetting("screen_dpi") + return dpi and dpi > 200 + end, + callback = function() Screen:setDPI(240) end + }, + } + }) + table.insert(self.tab_item_table.setting, self:genRefreshRateMenu()) + table.insert(self.tab_item_table.setting, { text = _("Show advanced options"), checked_func = function() return G_reader_settings:readSetting("show_advanced") end, callback = function() @@ -92,8 +133,10 @@ function ReaderMenu:setUpdateItemTable() G_reader_settings:saveSetting("show_advanced", not show_advanced) end }) - table.insert(self.tab_item_table.main, Language:getLangMenuTable()) - table.insert(self.tab_item_table.main, { + table.insert(self.tab_item_table.setting, Language:getLangMenuTable()) + + -- info tab + table.insert(self.tab_item_table.info, { text = _("Version"), callback = function() UIManager:show(InfoMessage:new{ @@ -101,7 +144,7 @@ function ReaderMenu:setUpdateItemTable() }) end }) - table.insert(self.tab_item_table.main, { + table.insert(self.tab_item_table.info, { text = _("Help"), callback = function() UIManager:show(InfoMessage:new{ @@ -194,7 +237,7 @@ function ReaderMenu:closeMakeCustomDialog() end function ReaderMenu:onShowReaderMenu() - if #self.tab_item_table.main == 0 then + if #self.tab_item_table.setting == 0 then self:setUpdateItemTable() end @@ -210,7 +253,8 @@ function ReaderMenu:onShowReaderMenu() tab_item_table = { self.tab_item_table.navi, self.tab_item_table.typeset, - self.tab_item_table.main, + self.tab_item_table.setting, + self.tab_item_table.info, self.tab_item_table.plugins, self.tab_item_table.home, }, diff --git a/frontend/ui/device/screen.lua b/frontend/ui/device/screen.lua index 00c43b096..b3f3ae4c2 100644 --- a/frontend/ui/device/screen.lua +++ b/frontend/ui/device/screen.lua @@ -137,6 +137,7 @@ function Screen:getHeightPhoenix() end function Screen:getDPI() + self.dpi = G_reader_settings:readSetting("screen_dpi") if self.dpi ~= nil then return self.dpi end local model = self.device:getModel() if model == "KindlePaperWhite" or model == "KindlePaperWhite2" @@ -153,11 +154,16 @@ function Screen:getDPI() local ffi = require("ffi") self.dpi = ffi.C.AConfiguration_getDensity(android.app.config) else - self.dpi = 167 + self.dpi = 160 end return self.dpi end +function Screen:setDPI(dpi) + G_reader_settings:saveSetting("screen_dpi", dpi) + self.dpi = dpi +end + function Screen:scaleByDPI(px) return math.floor(px * self:getDPI()/167) end diff --git a/frontend/ui/widget/touchmenu.lua b/frontend/ui/widget/touchmenu.lua index bd6a52ce2..2a563bba5 100644 --- a/frontend/ui/widget/touchmenu.lua +++ b/frontend/ui/widget/touchmenu.lua @@ -237,7 +237,7 @@ local TouchMenu = InputContainer:new{ item_height = Screen:scaleByDPI(50), bordersize = Screen:scaleByDPI(2), padding = Screen:scaleByDPI(5), - footer_height = Screen:scaleByDPI(50), + footer_height = 48 + Screen:scaleByDPI(5), fface = Font:getFace("ffont", 20), width = nil, height = nil, diff --git a/l10n/templates/koreader.pot b/l10n/templates/koreader.pot index 067f0398b..ee89c9fb6 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-07-26 14:24+0000\n" +"POT-Creation-Date: 2014-07-27 13:41+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" @@ -17,9 +17,9 @@ msgid "" " others." msgstr "" -#: frontend/apps/reader/modules/readermenu.lua:132 -#: frontend/apps/reader/modules/readermenu.lua:138 -#: frontend/apps/reader/modules/readermenu.lua:144 +#: frontend/apps/reader/modules/readermenu.lua:175 +#: frontend/apps/reader/modules/readermenu.lua:181 +#: frontend/apps/reader/modules/readermenu.lua:187 msgid "" " pages" msgstr "" @@ -65,6 +65,8 @@ msgid "" "Apply" msgstr "" +#: frontend/apps/filemanager/filemanagermenu.lua:103 +#: frontend/apps/reader/modules/readermenu.lua:94 #: frontend/apps/reader/modules/readertypeset.lua:66 msgid "" "Auto" @@ -81,7 +83,7 @@ msgid "" msgstr "" #: frontend/apps/reader/modules/readergoto.lua:36 -#: frontend/apps/reader/modules/readermenu.lua:165 +#: frontend/apps/reader/modules/readermenu.lua:208 #: frontend/ui/widget/confirmbox.lua:29 #: plugins/evernote.koplugin/main.lua:124 #: plugins/zsync.koplugin/main.lua:279 @@ -125,9 +127,9 @@ msgid "" "Copy" msgstr "" -#: frontend/apps/reader/modules/readermenu.lua:132 -#: frontend/apps/reader/modules/readermenu.lua:138 -#: frontend/apps/reader/modules/readermenu.lua:144 +#: frontend/apps/reader/modules/readermenu.lua:175 +#: frontend/apps/reader/modules/readermenu.lua:181 +#: frontend/apps/reader/modules/readermenu.lua:187 msgid "" "Custom " msgstr "" @@ -179,12 +181,12 @@ msgid "" "Document Language" msgstr "" -#: frontend/apps/reader/modules/readermenu.lua:221 +#: frontend/apps/reader/modules/readermenu.lua:265 msgid "" "Document menu" msgstr "" -#: frontend/apps/reader/modules/readermenu.lua:119 +#: frontend/apps/reader/modules/readermenu.lua:162 msgid "" "E-ink full refresh rate" msgstr "" @@ -221,12 +223,12 @@ msgid "" "Evernote" msgstr "" -#: frontend/apps/reader/modules/readermenu.lua:127 +#: frontend/apps/reader/modules/readermenu.lua:170 msgid "" "Every 6 pages" msgstr "" -#: frontend/apps/reader/modules/readermenu.lua:122 +#: frontend/apps/reader/modules/readermenu.lua:165 msgid "" "Every page" msgstr "" @@ -252,7 +254,7 @@ msgid "" "File does not exist" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:134 +#: frontend/apps/filemanager/filemanagermenu.lua:180 msgid "" "File manager menu" msgstr "" @@ -277,6 +279,12 @@ msgid "" "Font Weight" msgstr "" +#: frontend/apps/filemanager/filemanagermenu.lua:100 +#: frontend/apps/reader/modules/readermenu.lua:91 +msgid "" +"Font size" +msgstr "" + #: frontend/ui/data/strings.lua:30 msgid "" "Forced OCR" @@ -317,8 +325,8 @@ msgid "" "Go to Page or Location" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:103 -#: frontend/apps/reader/modules/readermenu.lua:105 +#: frontend/apps/filemanager/filemanagermenu.lua:148 +#: frontend/apps/reader/modules/readermenu.lua:148 msgid "" "Help" msgstr "" @@ -354,7 +362,7 @@ msgid "" "Indentation" msgstr "" -#: frontend/apps/reader/modules/readermenu.lua:160 +#: frontend/apps/reader/modules/readermenu.lua:203 msgid "" "Input page number for a full refresh" msgstr "" @@ -379,6 +387,12 @@ msgid "" "Language" msgstr "" +#: frontend/apps/filemanager/filemanagermenu.lua:127 +#: frontend/apps/reader/modules/readermenu.lua:118 +msgid "" +"Large" +msgstr "" + #: frontend/apps/reader/modules/readerhighlight.lua:75 msgid "" "Lighten" @@ -420,13 +434,19 @@ msgid "" "Logout" msgstr "" +#: frontend/apps/filemanager/filemanagermenu.lua:119 +#: frontend/apps/reader/modules/readermenu.lua:110 +msgid "" +"Medium" +msgstr "" + #: frontend/apps/reader/modules/readerhighlight.lua:333 msgid "" "More" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:85 -#: frontend/apps/reader/modules/readermenu.lua:78 +#: frontend/apps/filemanager/filemanagermenu.lua:89 +#: frontend/apps/reader/modules/readermenu.lua:82 msgid "" "Night mode" msgstr "" @@ -447,7 +467,7 @@ msgid "" msgstr "" #: frontend/apps/reader/modules/readerfrontlight.lua:115 -#: frontend/apps/reader/modules/readermenu.lua:171 +#: frontend/apps/reader/modules/readermenu.lua:214 #: frontend/ui/widget/confirmbox.lua:28 msgid "" "OK" @@ -493,8 +513,8 @@ msgid "" "Paste" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:106 -#: frontend/apps/reader/modules/readermenu.lua:108 +#: frontend/apps/filemanager/filemanagermenu.lua:151 +#: frontend/apps/reader/modules/readermenu.lua:151 msgid "" "Please report bugs to \n" "https://github.com/koreader/koreader/issues" @@ -595,12 +615,12 @@ msgid "" "Share" msgstr "" -#: frontend/apps/reader/modules/readermenu.lua:88 +#: frontend/apps/reader/modules/readermenu.lua:129 msgid "" "Show advanced options" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:63 +#: frontend/apps/filemanager/filemanagermenu.lua:67 msgid "" "Show hidden files" msgstr "" @@ -610,7 +630,13 @@ msgid "" "Show page overlap" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:71 +#: frontend/apps/filemanager/filemanagermenu.lua:111 +#: frontend/apps/reader/modules/readermenu.lua:102 +msgid "" +"Small" +msgstr "" + +#: frontend/apps/filemanager/filemanagermenu.lua:75 msgid "" "Start with last opened file" msgstr "" @@ -690,8 +716,8 @@ msgid "" "Underscore" msgstr "" -#: frontend/apps/filemanager/filemanagermenu.lua:95 -#: frontend/apps/reader/modules/readermenu.lua:97 +#: frontend/apps/filemanager/filemanagermenu.lua:140 +#: frontend/apps/reader/modules/readermenu.lua:140 msgid "" "Version" msgstr "" diff --git a/resources/icons/appbar.settings.png b/resources/icons/appbar.settings.png new file mode 100644 index 0000000000000000000000000000000000000000..5f75791dfef4bf704143d2855178e0245d791662 GIT binary patch literal 1385 zcmV-v1(y1WP)00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru-Uk~D3^u#X_<#Ta1olZp zK~!ko?OHKt`dkn@>OGOt4qoU|&6FcM^3L++X#+U|d|2Mwm-o0Pmy}RFC9>g$=VwL4T z#fr;60KWjh*VotW?QK4v7x@0!+1c^&ak*TU1_85#3MLwUOtBB+H%ojuuBpQuYt5ul*yuZI6 z9v(sv#NJG&(>Yh&=kxLTLMD@u1Hjwc8^9rp#UenrR;vMYYqgq8E_85kz_*BCFbGgg zBocgzKA%s%Gw}5E#J3Izg6j1;rxry~I-QPBkst_h03Z=mf?=5L?d^|`56-87Kwxig zk0eQwBwMW(!!Smp(P%VM6m@rZ$Ejj47+S5CQmK?Lj9y(`Ntle1$)wz2bTk@G!ugT{ zK~SU75Dh?NCPok>9*;``V0U-dZnw)#B|bkt!SPhMyuQAkoScluWBI5=zu$Me-O_S0 zuh-k_^&~q3nM{T+t&k)+cgG}s2-NrD?@ArfEVcHx`(*!|G*as(H;s6kh zMrVR_GMW4i6f=*e#qD-iDitA{Ua3?79vF+o7=~#y8p&kRU@%NSibkXJ0St#j1VK2x z!s&E!nuK9Eo6RojyV-0OhGEVLolYmGzaa?1=H9aaa=F|>hfk~3777J%A-qs1Xtmmf z%;j>qIRG3Ehw$lO7#6+y2?oA>;1q|$0Rm7el@|IQB0PuFmliTwDwTKvL?RL46S>`P zMj}}#t3)CZUMhj2sBngJad9D4785>|Uav<{6qJc+n#OS)Q20&aJtL`r^TT&i!f~A4 zH&6h|zeFOzSAt*|CM^IA!#EA;bh<<$0jM_Ta3PAK!r?GGCvfK4Wu)D1vtxfa9HuC0 zDLSoEsnlxq%%Ih3HJMD(k~x#fWVKpn2Gwe{N~KzsPItRqwy~dR60)adoBopkR=&Aw zG#Y0{I-Sl>EQLKS+w|W9K+`luQ8Razuold9OY|ac)6h+gt$eMUn6WMB0iBu{j zoXiOInhN6Du+bZD3RxB3#>BiP~_ey+Y3*1_yY1-@c z{#4?RJtRC1~!>m0qt0-UkulcDwuizI?x!XqpC` zhehS+=x8(=$@+^)sZ`$F-0;PvMP+Aahcop3>}8KeqcPX51&U6mlY0jg3dQyHwN%&D z27`g{+d8uWL);?9G%7bPs8D`TCMJOyWMUVf*^~GgVn_x`>cK4!ByolXx1gJsqLNfOJ; + + + +