From e624695d546c54aa5b82c77ef2b0aea56482dc99 Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 10 Jun 2014 15:57:10 +0800 Subject: [PATCH] the Back key on Android should close the popup window and menu --- frontend/apps/filemanager/filemanager.lua | 4 +++- frontend/apps/filemanager/filemanagermenu.lua | 2 +- frontend/apps/reader/modules/readerhighlight.lua | 8 +------- frontend/apps/reader/modules/readermenu.lua | 3 ++- frontend/apps/reader/modules/readerpaging.lua | 2 +- frontend/apps/reader/modules/readerrolling.lua | 2 +- frontend/apps/reader/readerui.lua | 2 +- frontend/ui/widget/buttondialog.lua | 10 +++++++--- frontend/ui/widget/configdialog.lua | 8 +++++++- frontend/ui/widget/dictquicklookup.lua | 5 +++++ frontend/ui/widget/infomessage.lua | 2 +- frontend/ui/widget/menu.lua | 4 ++-- frontend/ui/widget/notification.lua | 2 +- frontend/ui/widget/touchmenu.lua | 6 ++++++ 14 files changed, 39 insertions(+), 21 deletions(-) diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua index e1c9c04b2..e87e0f241 100644 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -61,7 +61,8 @@ function FileManager:init() if DocumentRegistry:getProvider(filename) then return true end - end + end, + close_callback = function() return self:onClose() end, } self.file_chooser = file_chooser @@ -154,6 +155,7 @@ function FileManager:toggleHiddenFiles() end function FileManager:onClose() + DEBUG("close filemanager") UIManager:close(self) if self.onExit then self:onExit() diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 5bd0e0c98..b412efa4f 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -31,7 +31,7 @@ function FileManagerMenu:init() } self.registered_widgets = {} - if Device:hasKeyboard() then + if Device:hasKeys() then self.key_events = { ShowMenu = { { "Menu" }, doc = "show menu" }, } diff --git a/frontend/apps/reader/modules/readerhighlight.lua b/frontend/apps/reader/modules/readerhighlight.lua index 9d5c708ee..4673fed08 100644 --- a/frontend/apps/reader/modules/readerhighlight.lua +++ b/frontend/apps/reader/modules/readerhighlight.lua @@ -12,13 +12,6 @@ local _ = require("gettext") local ReaderHighlight = InputContainer:new{} function ReaderHighlight:init() - if Device:hasKeyboard() then - self.key_events = { - ShowToc = { - { "." }, - doc = "highlight text" }, - } - end self.ui.menu:registerToMainMenu(self) end @@ -310,6 +303,7 @@ function ReaderHighlight:onHoldRelease(arg, ges) { { text = _("Translate"), + enabled = false, callback = function() self:translate(self.selected_text) UIManager:close(self.highlight_dialog) diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 5e78a975d..bd06f5d10 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -43,9 +43,10 @@ function ReaderMenu:init() } self.registered_widgets = {} - if Device:hasKeyboard() then + if Device:hasKeys() then self.key_events = { ShowReaderMenu = { { "Menu" }, doc = "show menu" }, + Close = { { "Back" }, doc = "close menu" }, } end end diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index ea271ebe8..48ea66911 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -25,7 +25,7 @@ local ReaderPaging = InputContainer:new{ } function ReaderPaging:init() - if Device:hasKeyboard() then + if Device:hasKeyboard() or Device:hasKeys() then self.key_events = { GotoNextPage = { {Input.group.PgFwd}, doc = "go to next page", diff --git a/frontend/apps/reader/modules/readerrolling.lua b/frontend/apps/reader/modules/readerrolling.lua index 7d106756a..2ce38e2b6 100644 --- a/frontend/apps/reader/modules/readerrolling.lua +++ b/frontend/apps/reader/modules/readerrolling.lua @@ -23,7 +23,7 @@ local ReaderRolling = InputContainer:new{ } function ReaderRolling:init() - if Device:hasKeyboard() then + if Device:hasKeyboard() or Device:hasKeys() then self.key_events = { GotoNextView = { { Input.group.PgFwd }, diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index c8c460975..d401564e3 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -70,7 +70,7 @@ function ReaderUI:init() self.dialog = self end - if Device:hasKeyboard() then + if Device:hasKeys() then self.key_events.Back = { { "Back" }, doc = "close document", event = "Close" } diff --git a/frontend/ui/widget/buttondialog.lua b/frontend/ui/widget/buttondialog.lua index 62b401686..bee07114d 100644 --- a/frontend/ui/widget/buttondialog.lua +++ b/frontend/ui/widget/buttondialog.lua @@ -16,10 +16,9 @@ local ButtonDialog = InputContainer:new{ } function ButtonDialog:init() - if Device:hasKeyboard() then + if Device:hasKeys() then self.key_events = { - AnyKeyPressed = { { Input.group.Any }, - seqtext = "any key", doc = "close dialog" } + Close = { {"Back"}, doc = "close button dialog" } } end if Device:isTouchDevice() then @@ -58,4 +57,9 @@ function ButtonDialog:onTapClose() return true end +function ButtonDialog:onClose() + self:onTapClose() + return true +end + return ButtonDialog diff --git a/frontend/ui/widget/configdialog.lua b/frontend/ui/widget/configdialog.lua index e488aab67..99e289b59 100644 --- a/frontend/ui/widget/configdialog.lua +++ b/frontend/ui/widget/configdialog.lua @@ -459,7 +459,8 @@ function ConfigDialog:init() } } } - else + end + if Device:hasKeys() then -- set up keyboard events self.key_events.Close = { {"Back"}, doc = "close config menu" } -- we won't catch presses to "Right" @@ -551,4 +552,9 @@ function ConfigDialog:onTapCloseMenu(arg, ges_ev) end end +function ConfigDialog:onClose() + self:closeDialog() + return true +end + return ConfigDialog diff --git a/frontend/ui/widget/dictquicklookup.lua b/frontend/ui/widget/dictquicklookup.lua index 7d6f1b082..bf03a7111 100644 --- a/frontend/ui/widget/dictquicklookup.lua +++ b/frontend/ui/widget/dictquicklookup.lua @@ -46,6 +46,11 @@ local DictQuickLookup = InputContainer:new{ function DictQuickLookup:init() self:changeToDefaultDict() + if Device:hasKeys() then + self.key_events = { + Close = { {"Back"}, doc = "close quick lookup" } + } + end if Device:isTouchDevice() then self.ges_events = { TapCloseDict = { diff --git a/frontend/ui/widget/infomessage.lua b/frontend/ui/widget/infomessage.lua index f1d52265d..939e800c3 100644 --- a/frontend/ui/widget/infomessage.lua +++ b/frontend/ui/widget/infomessage.lua @@ -26,7 +26,7 @@ local InfoMessage = InputContainer:new{ } function InfoMessage:init() - if Device:hasKeyboard() then + if Device:hasKeys() then self.key_events = { AnyKeyPressed = { { Input.group.Any }, seqtext = "any key", doc = "close dialog" } diff --git a/frontend/ui/widget/menu.lua b/frontend/ui/widget/menu.lua index b116a9fac..0f86d9e9c 100644 --- a/frontend/ui/widget/menu.lua +++ b/frontend/ui/widget/menu.lua @@ -152,7 +152,7 @@ function MenuItem:init() }, } end - if Device:hasKeyboard() then + if Device:hasKeys() then self.active_key_events = { Select = { {"Press"}, doc = "chose selected item" }, } @@ -447,7 +447,7 @@ function Menu:init() } } end - if Device:hasKeyboard() then + if Device:hasKeys() then -- set up keyboard events self.key_events.Close = { {"Back"}, doc = "close menu" } self.key_events.NextPage = { diff --git a/frontend/ui/widget/notification.lua b/frontend/ui/widget/notification.lua index b9e913c3d..2389e5b5a 100644 --- a/frontend/ui/widget/notification.lua +++ b/frontend/ui/widget/notification.lua @@ -22,7 +22,7 @@ local Notification = InputContainer:new{ } function Notification:init() - if Device:hasKeyboard() then + if Device:hasKeys() then self.key_events = { AnyKeyPressed = { { Input.group.Any }, seqtext = "any key", doc = "close dialog" } } diff --git a/frontend/ui/widget/touchmenu.lua b/frontend/ui/widget/touchmenu.lua index df684b0e8..b3e7c1ec9 100644 --- a/frontend/ui/widget/touchmenu.lua +++ b/frontend/ui/widget/touchmenu.lua @@ -251,6 +251,8 @@ function TouchMenu:init() } } + self.key_events.Close = { {"Back"}, doc = "close touch menu" } + local icons = {} for _,v in ipairs(self.tab_item_table) do table.insert(icons, v.icon) @@ -498,4 +500,8 @@ function TouchMenu:onTapCloseAllMenus(arg, ges_ev) end end +function TouchMenu:onClose() + self:closeMenu() +end + return TouchMenu