From b0738960dfbc975fd0a8c8f90c6470bf150cfa22 Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 27 Nov 2019 23:59:08 +0100 Subject: [PATCH] Dictionary: add menu item to set font size (#5647) --- .luacheckrc | 1 - defaults.lua | 3 +- .../apps/reader/modules/readerdictionary.lua | 24 +++++++++++++++ frontend/ui/widget/dictquicklookup.lua | 13 ++++++-- spec/unit/defaults_spec.lua | 30 +++++++++---------- 5 files changed, 51 insertions(+), 20 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index ea91633c9..17e961b01 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -114,7 +114,6 @@ read_globals = { "DMINIBAR_FONT_SIZE", "DGESDETECT_DISABLE_DOUBLE_TAP", "DAUTO_SAVE_PAGING_COUNT", - "DDICT_FONT_SIZE", "FRONTLIGHT_SENSITIVITY_DECREASE", "DALPHA_SORT_CASE_INSENSITIVE", "SEARCH_CASESENSITIVE", diff --git a/defaults.lua b/defaults.lua index 07de327f6..af8cd1b54 100644 --- a/defaults.lua +++ b/defaults.lua @@ -189,7 +189,8 @@ DMINIBAR_FONT_SIZE = 14 DAUTO_SAVE_PAGING_COUNT = nil -- dictionary font size -DDICT_FONT_SIZE = 20 +-- no longer needed +--DDICT_FONT_SIZE = 20 -- Frontlight decrease of sensitivity for two-fingered pan gesture, -- e.g. 2 changes the sensitivity by 1/2, 3 by 1/3 etc. diff --git a/frontend/apps/reader/modules/readerdictionary.lua b/frontend/apps/reader/modules/readerdictionary.lua index 869ac3ea6..47058844b 100644 --- a/frontend/apps/reader/modules/readerdictionary.lua +++ b/frontend/apps/reader/modules/readerdictionary.lua @@ -296,6 +296,30 @@ If you'd like to change the order in which dictionaries are queried (and their r callback = function() G_reader_settings:flipNilOrTrue("dict_justify") end, + }, + { -- setting used by dictquicklookup + text_func = function() + local font_size = G_reader_settings:readSetting("dict_font_size") or 20 + return T(_("Font size (%1)"), font_size) + end, + callback = function() + local SpinWidget = require("ui/widget/spinwidget") + local font_size = G_reader_settings:readSetting("dict_font_size") or 20 + local items_font = SpinWidget:new{ + width = Screen:getWidth() * 0.6, + value = font_size, + value_min = 8, + value_max = 32, + default_value = 20, + ok_text = _("Set size"), + title_text = _("Dictionary font size"), + callback = function(spin) + G_reader_settings:saveSetting("dict_font_size", spin.value) + self.ui:onRefresh() + end, + } + UIManager:show(items_font) + end } } } diff --git a/frontend/ui/widget/dictquicklookup.lua b/frontend/ui/widget/dictquicklookup.lua index 193f592db..0312d5c7b 100644 --- a/frontend/ui/widget/dictquicklookup.lua +++ b/frontend/ui/widget/dictquicklookup.lua @@ -44,8 +44,8 @@ local DictQuickLookup = InputContainer:new{ is_html = false, dict_index = 1, title_face = Font:getFace("x_smalltfont"), - content_face = Font:getFace("cfont", DDICT_FONT_SIZE), - image_alt_face = Font:getFace("cfont", DDICT_FONT_SIZE-4), + content_face = Font:getFace("cfont", 20), + image_alt_face = Font:getFace("cfont", 16), width = nil, height = nil, -- box of highlighted word, quick lookup window tries to not hide the word @@ -72,6 +72,13 @@ local highlight_strings = { } function DictQuickLookup:init() + local font_size = G_reader_settings:readSetting("dict_font_size") or 20 + self.content_face = Font:getFace("cfont", font_size) + local font_size_alt = font_size - 4 + if font_size_alt < 8 then + font_size_alt = 8 + end + self.image_alt_face = Font:getFace("cfont", font_size_alt) self:changeToDefaultDict() if Device:hasKeys() then self.key_events = { @@ -284,7 +291,7 @@ function DictQuickLookup:update() text_widget = ScrollHtmlWidget:new{ html_body = self.definition, css = self:getHtmlDictionaryCss(), - default_font_size = Screen:scaleBySize(DDICT_FONT_SIZE), + default_font_size = Screen:scaleBySize(G_reader_settings:readSetting("dict_font_size") or 20), width = self.width, height = self.is_fullpage and self.height*0.75 or self.height*0.7, dialog = self, diff --git a/spec/unit/defaults_spec.lua b/spec/unit/defaults_spec.lua index 4e8be8b0a..5fe0e2bbc 100644 --- a/spec/unit/defaults_spec.lua +++ b/spec/unit/defaults_spec.lua @@ -8,8 +8,8 @@ describe("defaults module", function() it("should load all defaults from defaults.lua", function() Defaults:init() - assert.is_same(109, #Defaults.defaults_name) - assert.is_same("DFULL_SCREEN", Defaults.defaults_name[55]) + assert.is_same(108, #Defaults.defaults_name) + assert.is_same("DFULL_SCREEN", Defaults.defaults_name[54]) end) it("should save changes to defaults.persistent.lua", function() @@ -19,14 +19,14 @@ describe("defaults module", function() -- not in persistent but checked in defaults Defaults.changed[20] = true Defaults.changed[47] = true - Defaults.changed[55] = true - Defaults.changed[88] = true - Defaults.changed[104] = true + Defaults.changed[54] = true + Defaults.changed[87] = true + Defaults.changed[103] = true Defaults:saveSettings() - assert.is_same(109, #Defaults.defaults_name) - assert.is_same("DFULL_SCREEN", Defaults.defaults_name[55]) - assert.is_same("SEARCH_LIBRARY_PATH", Defaults.defaults_name[104]) - assert.is_same("DTAP_ZONE_BACKWARD", Defaults.defaults_name[88]) + assert.is_same(108, #Defaults.defaults_name) + assert.is_same("DFULL_SCREEN", Defaults.defaults_name[54]) + assert.is_same("SEARCH_LIBRARY_PATH", Defaults.defaults_name[103]) + assert.is_same("DTAP_ZONE_BACKWARD", Defaults.defaults_name[87]) assert.is_same("DCREREADER_CONFIG_WORD_GAP_LARGE", Defaults.defaults_name[47]) assert.is_same("DCREREADER_CONFIG_H_MARGIN_SIZES_XXX_LARGE", Defaults.defaults_name[20]) local fd = io.open(persistent_filename, "r") @@ -51,10 +51,10 @@ DFULL_SCREEN = 1 -- in persistent Defaults:init() - Defaults.changed[55] = true - Defaults.defaults_value[55] = 2 - Defaults.changed[88] = true - Defaults.defaults_value[88] = { + Defaults.changed[54] = true + Defaults.defaults_value[54] = 2 + Defaults.changed[87] = true + Defaults.defaults_value[87] = { y = 10, x = 10.125, h = 20.25, @@ -100,8 +100,8 @@ DHINTCOUNT = 2 -- in persistent Defaults:init() - Defaults.changed[55] = true - Defaults.defaults_value[55] = 1 + Defaults.changed[54] = true + Defaults.defaults_value[54] = 1 Defaults:saveSettings() fd = io.open(persistent_filename) assert.Equals(