From 96823df503b54ec65991e25a9468a0b68eacbce1 Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Thu, 28 Feb 2019 22:38:24 +0100 Subject: [PATCH] [UX] Navigation settings for all devices (#4680) Before multiswipes and the gesture manager this was impractical on touch-only devices, but no more! Also includes some minor textual clarifications on some of the settings. --- .../apps/reader/modules/readergesture.lua | 5 + .../elements/common_settings_menu_table.lua | 178 ++++++++++-------- .../ui/elements/filemanager_menu_order.lua | 7 + frontend/ui/elements/reader_menu_order.lua | 7 + 4 files changed, 114 insertions(+), 83 deletions(-) diff --git a/frontend/apps/reader/modules/readergesture.lua b/frontend/apps/reader/modules/readergesture.lua index 2d70f65e2..07789b071 100644 --- a/frontend/apps/reader/modules/readergesture.lua +++ b/frontend/apps/reader/modules/readergesture.lua @@ -24,6 +24,7 @@ local action_strings = { page_jmp_fwd_10 = _("Forward 10 pages"), page_jmp_fwd_1 = _("Next page"), skim = _("Skim"), + back = _("Back"), previous_location = _("Back to previous location"), latest_bookmark = _("Go to latest bookmark"), @@ -101,6 +102,7 @@ function ReaderGesture:init() multiswipe_east_north = "history", multiswipe_south_north = "skim", multiswipe_south_west = "show_frontlight_dialog", + multiswipe_west_south = "back", multiswipe_west_east_west = "open_previous_document", multiswipe_east_north_west = "zoom_contentwidth", multiswipe_south_east_north = "zoom_contentheight", @@ -242,6 +244,7 @@ function ReaderGesture:buildMenu(ges, default) {"page_jmp_fwd_10", not self.is_docless}, {"page_jmp_fwd_1", not self.is_docless}, {"skim", not self.is_docless}, + {"back", true}, {"previous_location", not self.is_docless}, {"latest_bookmark", not self.is_docless, true}, @@ -506,6 +509,8 @@ function ReaderGesture:gestureAction(action) self:pageUpdate(-1) elseif action == "skim" then self.ui:handleEvent(Event:new("ShowSkimtoDialog")) + elseif action == "back" then + self.ui:handleEvent(Event:new("Back")) elseif action == "previous_location" then self.ui:handleEvent(Event:new("GoBackLink")) elseif action == "latest_bookmark" then diff --git a/frontend/ui/elements/common_settings_menu_table.lua b/frontend/ui/elements/common_settings_menu_table.lua index 179ca465c..46a43e73b 100644 --- a/frontend/ui/elements/common_settings_menu_table.lua +++ b/frontend/ui/elements/common_settings_menu_table.lua @@ -165,92 +165,104 @@ if Device:isTouchDevice() then } end +common_settings.navigation = { + text = _("Navigation"), +} +local back_to_exit_str = { + prompt = {_("Prompt"), _("prompt")}, + always = {_("Always"), _("always")}, + disable ={_("Disable"), _("disable")}, +} +common_settings.back_to_exit = { + text_func = function() + local back_to_exit = G_reader_settings:readSetting("back_to_exit") or "prompt" + return T(_("Back to exit (%1)"), + back_to_exit_str[back_to_exit][2]) + end, + sub_item_table = { + { + text = back_to_exit_str.prompt[1], + checked_func = function() + local setting = G_reader_settings:readSetting("back_to_exit") + return setting == "prompt" or setting == nil + end, + callback = function() + G_reader_settings:saveSetting("back_to_exit", "prompt") + end, + }, + { + text = back_to_exit_str.always[1], + checked_func = function() + return G_reader_settings:readSetting("back_to_exit") + == "always" + end, + callback = function() + G_reader_settings:saveSetting("back_to_exit", "always") + end, + }, + { + text = back_to_exit_str.disable[1], + checked_func = function() + return G_reader_settings:readSetting("back_to_exit") + == "disable" + end, + callback = function() + G_reader_settings:saveSetting("back_to_exit", "disable") + end, + }, + }, +} +common_settings.back_in_filemanager = { + text = _("Back in file browser"), + sub_item_table = { + { + text_func = function() + local back_to_exit = G_reader_settings:readSetting("back_to_exit") or "prompt" + return T(_("Back to exit (%1)"), + back_to_exit_str[back_to_exit][2]) + end, + checked_func = function() + local back_in_filemanager = G_reader_settings:readSetting("back_in_filemanager") + return back_in_filemanager == nil or back_in_filemanager == "default" + end, + callback = function() + G_reader_settings:saveSetting("back_in_filemanager", "default") + end, + }, + { + text = _("Go to parent folder"), + checked_func = function() + return G_reader_settings:readSetting("back_in_filemanager") + == "parent_folder" + end, + callback = function() + G_reader_settings:saveSetting("back_in_filemanager", "parent_folder") + end, + }, + }, +} +common_settings.enable_back_history = { + text = _("Enable back history"), + checked_func = function() + return G_reader_settings:nilOrTrue("enable_back_history") + end, + callback = function() + G_reader_settings:flipNilOrTrue("enable_back_history") + end, +} if Device:hasKeys() then - common_settings.navigation = { - text = _("Navigation"), - sub_item_table = { - { - text = _("Back key to exit KOReader"), - sub_item_table = { - { - text = _("Prompt"), - checked_func = function() - local setting = G_reader_settings:readSetting("back_to_exit") - return setting == "prompt" or setting == nil - end, - callback = function() - G_reader_settings:saveSetting("back_to_exit", "prompt") - end, - }, - { - text = _("Always"), - checked_func = function() - return G_reader_settings:readSetting("back_to_exit") - == "always" - end, - callback = function() - G_reader_settings:saveSetting("back_to_exit", "always") - end, - }, - { - text = _("Disable"), - checked_func = function() - return G_reader_settings:readSetting("back_to_exit") - == "disable" - end, - callback = function() - G_reader_settings:saveSetting("back_to_exit", "disable") - end, - }, - }, - }, - { - text = _("Back key in file browser"), - sub_item_table = { - { - text = _("Default"), - checked_func = function() - return G_reader_settings:readSetting("back_in_filemanager") - == "default" - end, - callback = function() - G_reader_settings:saveSetting("back_in_filemanager", "default") - end, - }, - { - text = _("Go to parent folder"), - checked_func = function() - return G_reader_settings:readSetting("back_in_filemanager") - == "parent_folder" - end, - callback = function() - G_reader_settings:saveSetting("back_in_filemanager", "parent_folder") - end, - }, - }, - }, - { - text = _("Enable back history"), - checked_func = function() - return G_reader_settings:nilOrTrue("enable_back_history") - end, - callback = function() - G_reader_settings:flipNilOrTrue("enable_back_history") - end, - }, - { - text = _("Invert page turn buttons"), - checked_func = function() - return G_reader_settings:isTrue("input_invert_page_turn_keys") - end, - callback = function() - G_reader_settings:flipNilOrFalse("input_invert_page_turn_keys") - Device:invertButtons() - end, - }, - } + common_settings.invert_page_turn_buttons = { + text = _("Invert page turn buttons"), + checked_func = function() + return G_reader_settings:isTrue("input_invert_page_turn_keys") + end, + callback = function() + G_reader_settings:flipNilOrFalse("input_invert_page_turn_keys") + Device:invertButtons() + end, } end + common_settings.document = { text = _("Document"), sub_item_table = { diff --git a/frontend/ui/elements/filemanager_menu_order.lua b/frontend/ui/elements/filemanager_menu_order.lua index 2a4a9f2cb..5838cc429 100644 --- a/frontend/ui/elements/filemanager_menu_order.lua +++ b/frontend/ui/elements/filemanager_menu_order.lua @@ -41,6 +41,13 @@ local order = { "battery", "mass_storage_settings", }, + navigation = { + "back_to_exit", + "back_in_filemanager", + "enable_back_history", + "----------------------------", + "invert_page_turn_buttons", + }, network = { "network_wifi", "network_proxy", diff --git a/frontend/ui/elements/reader_menu_order.lua b/frontend/ui/elements/reader_menu_order.lua index e34859855..30f7cde0a 100644 --- a/frontend/ui/elements/reader_menu_order.lua +++ b/frontend/ui/elements/reader_menu_order.lua @@ -61,6 +61,13 @@ local order = { "battery", "mass_storage_settings", }, + navigation = { + "back_to_exit", + "back_in_filemanager", + "enable_back_history", + "----------------------------", + "invert_page_turn_buttons", + }, network = { "network_wifi", "network_proxy",