@ -1,5 +1,6 @@
local ButtonDialog = require ( " ui/widget/buttondialog " )
local ButtonDialog = require ( " ui/widget/buttondialog " )
local InfoMessage = require ( " ui/widget/infomessage " )
local InfoMessage = require ( " ui/widget/infomessage " )
local InputContainer = require ( " ui/widget/container/inputcontainer " )
local InputDialog = require ( " ui/widget/inputdialog " )
local InputDialog = require ( " ui/widget/inputdialog " )
local Menu = require ( " ui/widget/menu " )
local Menu = require ( " ui/widget/menu " )
local Screen = require ( " device " ) . screen
local Screen = require ( " device " ) . screen
@ -8,22 +9,9 @@ local util = require("ffi/util")
local _ = require ( " gettext " )
local _ = require ( " gettext " )
local T = require ( " ffi/util " ) . template
local T = require ( " ffi/util " ) . template
local FileManagerShortcuts = Menu : extend {
local FileManagerShortcuts = InputContainer : extend { }
width = Screen : getWidth ( ) ,
height = Screen : getHeight ( ) ,
no_title = false ,
parent = nil ,
has_close_button = true ,
is_popout = false ,
is_borderless = true ,
}
function FileManagerShortcuts : init ( )
self.item_table = self : genItemTableFromRoot ( )
Menu.init ( self )
end
function FileManagerShortcuts : genItemTableFromRoot ( )
function FileManagerShortcuts : updateItemTable ( )
local item_table = { }
local item_table = { }
local folder_shortcuts = G_reader_settings : readSetting ( " folder_shortcuts " ) or { }
local folder_shortcuts = G_reader_settings : readSetting ( " folder_shortcuts " ) or { }
table.insert ( item_table , {
table.insert ( item_table , {
@ -40,12 +28,36 @@ function FileManagerShortcuts:genItemTableFromRoot()
deletable = true ,
deletable = true ,
editable = true ,
editable = true ,
callback = function ( )
callback = function ( )
UIManager : close ( self )
UIManager : close ( self.fm_bookmark )
self.goFolder ( item.folder )
local folder = item.folder
if folder ~= nil and lfs.attributes ( folder , " mode " ) == " directory " then
if self.ui . file_chooser then
self.ui . file_chooser : changeToPath ( folder )
else -- called from Reader
local FileManager = require ( " apps/filemanager/filemanager " )
self.ui : onClose ( )
if FileManager.instance then
FileManager.instance : reinit ( folder )
else
FileManager : showFiles ( folder )
end
end
end
end ,
end ,
} )
} )
end
end
return item_table
-- try to stay on current page
local select_number = nil
if self.fm_bookmark . page and self.fm_bookmark . perpage then
select_number = ( self.fm_bookmark . page - 1 ) * self.fm_bookmark . perpage + 1
end
self.fm_bookmark : switchItemTable ( nil ,
item_table , select_number )
end
end
function FileManagerShortcuts : addNewFolder ( )
function FileManagerShortcuts : addNewFolder ( )
@ -53,7 +65,7 @@ function FileManagerShortcuts:addNewFolder()
local path_chooser = PathChooser : new {
local path_chooser = PathChooser : new {
select_directory = true ,
select_directory = true ,
select_file = false ,
select_file = false ,
path = self. curr_path,
path = self. fm_bookmark. curr_path,
onConfirm = function ( path )
onConfirm = function ( path )
local add_folder_input
local add_folder_input
local friendly_name = util.basename ( path ) or _ ( " my folder " )
local friendly_name = util.basename ( path ) or _ ( " my folder " )
@ -74,7 +86,7 @@ function FileManagerShortcuts:addNewFolder()
text = _ ( " Add " ) ,
text = _ ( " Add " ) ,
is_enter_default = true ,
is_enter_default = true ,
callback = function ( )
callback = function ( )
self : addFolderFromInput ( friendly_name , path )
self : addFolderFromInput ( add_folder_input: getInputValue ( ) , path )
UIManager : close ( add_folder_input )
UIManager : close ( add_folder_input )
end ,
end ,
} ,
} ,
@ -103,7 +115,7 @@ function FileManagerShortcuts:addFolderFromInput(friendly_name, folder)
folder = folder ,
folder = folder ,
} )
} )
G_reader_settings : saveSetting ( " folder_shortcuts " , folder_shortcuts )
G_reader_settings : saveSetting ( " folder_shortcuts " , folder_shortcuts )
self : init ( )
self : updateItemTable ( )
end
end
function FileManagerShortcuts : onMenuHold ( item )
function FileManagerShortcuts : onMenuHold ( item )
@ -117,7 +129,7 @@ function FileManagerShortcuts:onMenuHold(item)
enabled = item.editable ,
enabled = item.editable ,
callback = function ( )
callback = function ( )
UIManager : close ( folder_shortcuts_dialog )
UIManager : close ( folder_shortcuts_dialog )
self : editFolderShortcut ( item )
self ._manager : editFolderShortcut ( item )
end
end
} ,
} ,
{
{
@ -125,7 +137,7 @@ function FileManagerShortcuts:onMenuHold(item)
enabled = item.deletable ,
enabled = item.deletable ,
callback = function ( )
callback = function ( )
UIManager : close ( folder_shortcuts_dialog )
UIManager : close ( folder_shortcuts_dialog )
self : deleteFolderShortcut ( item )
self ._manager : deleteFolderShortcut ( item )
end
end
} ,
} ,
} ,
} ,
@ -175,7 +187,7 @@ function FileManagerShortcuts:renameFolderShortcut(item, new_name)
table.insert ( folder_shortcuts , element )
table.insert ( folder_shortcuts , element )
end
end
G_reader_settings : saveSetting ( " folder_shortcuts " , folder_shortcuts )
G_reader_settings : saveSetting ( " folder_shortcuts " , folder_shortcuts )
self : init ( )
self : updateItemTable ( )
end
end
function FileManagerShortcuts : deleteFolderShortcut ( item )
function FileManagerShortcuts : deleteFolderShortcut ( item )
@ -186,32 +198,30 @@ function FileManagerShortcuts:deleteFolderShortcut(item)
end
end
end
end
G_reader_settings : saveSetting ( " folder_shortcuts " , folder_shortcuts )
G_reader_settings : saveSetting ( " folder_shortcuts " , folder_shortcuts )
self : init ( )
self : updateItemTable ( )
end
function FileManagerShortcuts : onSetDimensions ( dimen )
self.dimen = dimen
end
end
function FileManagerShortcuts : onShowFolderShortcutsDialog ( )
function FileManagerShortcuts : onShowFolderShortcutsDialog ( )
local fm_bookmark = self : new {
self.fm_bookmark = Menu : new {
title = _ ( " Folder shortcuts " ) ,
title = _ ( " Folder shortcuts " ) ,
show_parent = self.ui ,
show_parent = self.ui ,
width = Screen : getWidth ( ) ,
height = Screen : getHeight ( ) ,
no_title = false ,
parent = nil ,
has_close_button = true ,
is_popout = false ,
is_borderless = true ,
curr_path = self.ui . file_chooser and self.ui . file_chooser.path or self.ui : getLastDirFile ( ) ,
curr_path = self.ui . file_chooser and self.ui . file_chooser.path or self.ui : getLastDirFile ( ) ,
goFolder = function ( folder )
onMenuHold = self.onMenuHold ,
if folder ~= nil and lfs.attributes ( folder , " mode " ) == " directory " then
_manager = self ,
if self.ui . file_chooser then
self.ui . file_chooser : changeToPath ( folder )
else -- called from Reader
local FileManager = require ( " apps/filemanager/filemanager " )
self.ui : onClose ( )
if FileManager.instance then
FileManager.instance : reinit ( folder )
else
FileManager : showFiles ( folder )
end
end
end
end ,
}
}
UIManager : show ( fm_bookmark )
self : updateItemTable ( )
UIManager : show ( self.fm_bookmark )
end
end
return FileManagerShortcuts
return FileManagerShortcuts