diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 655c3e15a..eed7cc72e 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -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