From 397d88e41e1e0a1c8439f0d2dbf464f04b00598f Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Thu, 10 Jan 2013 15:31:51 -0500 Subject: [PATCH 1/4] Merge branches 'new_ui_code' and 'new_ui_code' of github.com:houqp/kindlepdfviewer into new_ui_code From 9468b504c19afe63857c70f0eaafa32fbd539a3e Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 3 Feb 2013 01:43:47 +0800 Subject: [PATCH 2/4] add close button toggle for menu widget --- frontend/ui/menu.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/frontend/ui/menu.lua b/frontend/ui/menu.lua index 63e6be7f5..3c23623fe 100644 --- a/frontend/ui/menu.lua +++ b/frontend/ui/menu.lua @@ -226,6 +226,8 @@ Menu = FocusManager:new{ -- set this to true to not paint as popup menu is_borderless = false, + -- set this to true to add close button + has_close_button = true, -- close_callback is a function, which is executed when menu is closed -- it is usually set by the widget which creates the menu close_callback = nil @@ -307,10 +309,12 @@ function Menu:init() -- start to set up input event callback -- ------------------------------------------ if Device:isTouchDevice() then - table.insert(self.title_bar, - MenuCloseButton:new{ - menu = self, - }) + if self.has_close_button then + table.insert(self.title_bar, + MenuCloseButton:new{ + menu = self, + }) + end self.ges_events.TapCloseAllMenus = { GestureRange:new{ ges = "tap", From 22c30439598fb96b5ae4a3a01fbabeaa24ff32d0 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 3 Feb 2013 03:35:25 +0800 Subject: [PATCH 3/4] add calling item.callback() as default onMenuChoice action --- frontend/ui/menu.lua | 8 ++++++-- frontend/ui/reader/readerfont.lua | 5 ----- frontend/ui/reader/readermenu.lua | 5 ----- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/frontend/ui/menu.lua b/frontend/ui/menu.lua index 3c23623fe..becf9a51a 100644 --- a/frontend/ui/menu.lua +++ b/frontend/ui/menu.lua @@ -480,9 +480,13 @@ function Menu:onMenuSelect(item) end --[[ -override this function to handle the choice -]]-- + default to call item callback + override this function to handle the choice +--]] function Menu:onMenuChoice(item) + if item.callback then + item.callback() + end return true end diff --git a/frontend/ui/reader/readerfont.lua b/frontend/ui/reader/readerfont.lua index 33c6f5a3d..7443a2bcb 100644 --- a/frontend/ui/reader/readerfont.lua +++ b/frontend/ui/reader/readerfont.lua @@ -99,11 +99,6 @@ function ReaderFont:onShowFontMenu() item_table = self.face_table, width = Screen:getWidth() - 100, } - function main_menu:onMenuChoice(item) - if item.callback then - item.callback() - end - end -- build container local menu_container = CenterContainer:new{ main_menu, diff --git a/frontend/ui/reader/readermenu.lua b/frontend/ui/reader/readermenu.lua index 810fb4b0d..787af9163 100644 --- a/frontend/ui/reader/readermenu.lua +++ b/frontend/ui/reader/readermenu.lua @@ -73,11 +73,6 @@ function ReaderMenu:onShowMenu() item_table = self.item_table, width = Screen:getWidth() - 100, } - function main_menu:onMenuChoice(item) - if item.callback then - item.callback() - end - end local menu_container = CenterContainer:new{ ignore = "height", From 2090dabf22105e2e02172ab459bb06470be07b95 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 3 Feb 2013 03:41:35 +0800 Subject: [PATCH 4/4] add menu to FileManager --- frontend/ui/reader/readermenu.lua | 2 +- reader.lua | 72 ++++++++++++++++++++++++++++--- 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/frontend/ui/reader/readermenu.lua b/frontend/ui/reader/readermenu.lua index 787af9163..48bc18940 100644 --- a/frontend/ui/reader/readermenu.lua +++ b/frontend/ui/reader/readermenu.lua @@ -55,7 +55,7 @@ function ReaderMenu:setUpdateItemTable() end table.insert(self.item_table, { - text = "Return to file browser", + text = "Return to file manager", callback = function() UIManager:close(self.menu_container) self.ui:onClose() diff --git a/reader.lua b/reader.lua index cad1a7d1f..90acbbeac 100755 --- a/reader.lua +++ b/reader.lua @@ -5,8 +5,62 @@ require "ui/ui" require "ui/readerui" require "ui/filechooser" require "ui/infomessage" +require "ui/button" require "document/document" + + +HomeMenu = InputContainer:new{ + item_table = {}, + ges_events = { + TapShowMenu = { + GestureRange:new{ + ges = "tap", + range = Geom:new{ + x = 0, y = 0, + w = Screen:getWidth(), + h = 25, + } + } + }, + }, +} + +function HomeMenu:setUpdateItemTable() + table.insert(self.item_table, { + text = "Exit", + callback = function() + os.exit(0) + end + }) +end + +function HomeMenu:onTapShowMenu() + if #self.item_table == 0 then + self:setUpdateItemTable() + end + + local home_menu = Menu:new{ + title = "Home menu", + item_table = self.item_table, + width = Screen:getWidth() - 100, + } + + local menu_container = CenterContainer:new{ + ignore = "height", + dimen = Screen:getSize(), + home_menu, + } + home_menu.close_callback = function () + UIManager:close(menu_container) + end + + UIManager:show(menu_container) + + return true +end + + function showReader(file, pass) local document = DocumentRegistry:openDocument(file) if not document then @@ -23,11 +77,14 @@ function showReader(file, pass) UIManager:show(reader) end -function showFileManager(path) +function showHomePage(path) local FileManager = FileChooser:new{ + title = "FileManager", path = path, - dimen = Screen:getSize(), + width = Screen:getWidth(), + height = Screen:getHeight(), is_borderless = true, + has_close_button = false, filter = function(filename) if DocumentRegistry:getProvider(filename) then return true @@ -35,17 +92,22 @@ function showFileManager(path) end } + local HomePage = InputContainer:new{ + FileManager, + HomeMenu, + } + function FileManager:onFileSelect(file) showReader(file) return true end function FileManager:onClose() - UIManager:quit() + --UIManager:quit() return true end - UIManager:show(FileManager) + UIManager:show(HomePage) end @@ -106,7 +168,7 @@ Screen.native_rotation_mode = Screen.cur_rotation_mode if ARGV[argidx] then if lfs.attributes(ARGV[argidx], "mode") == "directory" then - showFileManager(ARGV[argidx]) + showHomePage(ARGV[argidx]) elseif lfs.attributes(ARGV[argidx], "mode") == "file" then showReader(ARGV[argidx]) end