From b71d0a19b816684848b51ef4ac444c66c3522c86 Mon Sep 17 00:00:00 2001 From: Robert Date: Sun, 28 Jul 2019 08:37:43 +0200 Subject: [PATCH] [UX] Set font size for menu items (#5146) Ref: #4757 This PR add option to changing the font size of items in menu widget (filemanger in classic mode, TOC) in single line mode. Close: #4757 --- frontend/apps/filemanager/filemanagermenu.lua | 67 +++++++++++++------ .../ui/elements/filemanager_menu_order.lua | 2 +- frontend/ui/widget/menu.lua | 4 +- 3 files changed, 51 insertions(+), 22 deletions(-) diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 5297847ad..19e1f1e41 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -126,31 +126,60 @@ function FileManagerMenu:setUpdateItemTable() checked_func = function() return self.ui.file_chooser.show_unsupported end, callback = function() self.ui:toggleUnsupportedFiles() end } - self.menu_items.items_per_page = { - text = _("Items per page"), - help_text = _([[This sets the number of items per page in: + self.menu_items.items = { + text = _("Items"), + sub_item_table = { + { + text = _("Items per page"), + help_text = _([[This sets the number of items per page in: - File browser and history in 'classic' display mode - File and directory selection - Table of contents - Bookmarks list]]), - keep_menu_open = true, - callback = function() - local SpinWidget = require("ui/widget/spinwidget") - local curr_items = G_reader_settings:readSetting("items_per_page") or 14 - local items = SpinWidget:new{ - width = Screen:getWidth() * 0.6, - value = curr_items, - value_min = 6, - value_max = 24, - ok_text = _("Set items"), - title_text = _("Items per page"), - callback = function(spin) - G_reader_settings:saveSetting("items_per_page", spin.value) - self.ui:onRefresh() + keep_menu_open = true, + callback = function() + local SpinWidget = require("ui/widget/spinwidget") + local curr_items = G_reader_settings:readSetting("items_per_page") or 14 + local items = SpinWidget:new{ + width = Screen:getWidth() * 0.6, + value = curr_items, + value_min = 6, + value_max = 24, + ok_text = _("Set items"), + title_text = _("Items per page"), + callback = function(spin) + G_reader_settings:saveSetting("items_per_page", spin.value) + self.ui:onRefresh() + end + } + UIManager:show(items) + end + }, + { + text = _("Font size"), + keep_menu_open = true, + callback = function() + local SpinWidget = require("ui/widget/spinwidget") + local curr_items = G_reader_settings:readSetting("items_per_page") or 14 + local default_font_size = math.floor(24 - ((curr_items - 6)/ 18) * 10 ) + local curr_font_size = G_reader_settings:readSetting("items_font_size") or default_font_size + local items_font = SpinWidget:new{ + width = Screen:getWidth() * 0.6, + value = curr_font_size, + value_min = 10, + value_max = 72, + default_value = default_font_size, + ok_text = _("Set size"), + title_text = _("Maximum font size for item"), + callback = function(spin) + G_reader_settings:saveSetting("items_font_size", spin.value) + self.ui:onRefresh() + end + } + UIManager:show(items_font) end } - UIManager:show(items) - end + } } self.menu_items.sort_by = self.ui:getSortingMenuTable() self.menu_items.reverse_sorting = { diff --git a/frontend/ui/elements/filemanager_menu_order.lua b/frontend/ui/elements/filemanager_menu_order.lua index 98b16c332..26ef96a2d 100644 --- a/frontend/ui/elements/filemanager_menu_order.lua +++ b/frontend/ui/elements/filemanager_menu_order.lua @@ -13,7 +13,7 @@ local order = { "filemanager_display_mode", "show_hidden_files", "show_unsupported_files", - "items_per_page", + "items", "----------------------------", "sort_by", "reverse_sorting", diff --git a/frontend/ui/widget/menu.lua b/frontend/ui/widget/menu.lua index d5d51156e..05f8bb55a 100644 --- a/frontend/ui/widget/menu.lua +++ b/frontend/ui/widget/menu.lua @@ -929,8 +929,8 @@ function Menu:updateItems(select_number) end --font size between 12 and 18 for better matching local infont_size = math.floor(18 - (self.perpage - 6) / 3) - --font size between 14 and 24 for better matching - local font_size = math.floor(24 - ((self.perpage - 6)/ 18) * 10 ) + --default font size between 14 and 24 for better matching + local font_size = G_reader_settings:readSetting("items_font_size") or math.floor(24 - ((self.perpage - 6)/ 18) * 10 ) for c = 1, math.min(self.perpage, #self.item_table) do -- calculate index in item_table