mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
FileManagerMenu: show tab from gesture position (#3792)
As it was done for ReaderMenu in 6e303e7
This commit is contained in:
@@ -294,12 +294,15 @@ function FileManagerMenu:exitOrRestart(callback)
|
||||
end
|
||||
end
|
||||
|
||||
function FileManagerMenu:onShowMenu()
|
||||
local tab_index = G_reader_settings:readSetting("filemanagermenu_tab_index") or 1
|
||||
function FileManagerMenu:onShowMenu(tab_index)
|
||||
if self.tab_item_table == nil then
|
||||
self:setUpdateItemTable()
|
||||
end
|
||||
|
||||
if not tab_index then
|
||||
tab_index = G_reader_settings:readSetting("filemanagermenu_tab_index") or 1
|
||||
end
|
||||
|
||||
local menu_container = CenterContainer:new{
|
||||
ignore = "height",
|
||||
dimen = Screen:getSize(),
|
||||
@@ -332,7 +335,6 @@ function FileManagerMenu:onShowMenu()
|
||||
-- maintain a reference to menu_container
|
||||
self.menu_container = menu_container
|
||||
UIManager:show(menu_container)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
@@ -343,16 +345,35 @@ function FileManagerMenu:onCloseFileManagerMenu()
|
||||
return true
|
||||
end
|
||||
|
||||
function FileManagerMenu:_getTabIndexFromLocation(ges)
|
||||
if self.tab_item_table == nil then
|
||||
self:setUpdateItemTable()
|
||||
end
|
||||
local last_tab_index = G_reader_settings:readSetting("filemanagermenu_tab_index") or 1
|
||||
if not ges then
|
||||
return last_tab_index
|
||||
-- if the start position is far right
|
||||
elseif ges.pos.x > 2 * Screen:getWidth() / 3 then
|
||||
return #self.tab_item_table
|
||||
-- if the start position is far left
|
||||
elseif ges.pos.x < Screen:getWidth() / 3 then
|
||||
return 1
|
||||
-- if center return the last index
|
||||
else
|
||||
return last_tab_index
|
||||
end
|
||||
end
|
||||
|
||||
function FileManagerMenu:onTapShowMenu(ges)
|
||||
if self.activation_menu ~= "swipe" then
|
||||
self:onShowMenu()
|
||||
self:onShowMenu(self:_getTabIndexFromLocation(ges))
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function FileManagerMenu:onSwipeShowMenu(ges)
|
||||
if self.activation_menu ~= "tap" and ges.direction == "south" then
|
||||
self:onShowMenu()
|
||||
self:onShowMenu(self:_getTabIndexFromLocation(ges))
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user