mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Merge pull request #263 from tigran123/master
Allow deleting bookmarks as requested in issue #256
This commit is contained in:
@@ -31,7 +31,7 @@ SelectMenu = {
|
||||
|
||||
item_shortcuts = {
|
||||
"Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P",
|
||||
"A", "S", "D", "F", "G", "H", "J", "K", "L", "Del",
|
||||
"A", "S", "D", "F", "G", "H", "J", "K", "L", "/",
|
||||
"Z", "X", "C", "V", "B", "N", "M", ".", "Sym", "Ent",
|
||||
},
|
||||
last_shortcut = 0,
|
||||
@@ -44,6 +44,8 @@ SelectMenu = {
|
||||
|
||||
commands = nil,
|
||||
expandable = false, -- if true handle Right/Left FW selector keys
|
||||
deletable = false, -- if true handle Del key as a request to delete item
|
||||
-- note that currently expandable and deletable are mutually exclusive
|
||||
|
||||
-- NuPogodi, 30.08.12: define font to render menu items
|
||||
own_glyph = 0, -- render menu items with default "cfont"
|
||||
@@ -150,6 +152,15 @@ function SelectMenu:addAllCommands()
|
||||
end
|
||||
end
|
||||
)
|
||||
if self.deletable then
|
||||
self.commands:add(KEY_DEL, nil, "",
|
||||
"delete menu item",
|
||||
function(sm)
|
||||
self.selected_item = (sm.perpage * (sm.page - 1) + sm.current)
|
||||
return "delete"
|
||||
end
|
||||
)
|
||||
end
|
||||
if self.expandable then
|
||||
self.commands:add(KEY_FW_RIGHT, nil, "",
|
||||
"expand menu item",
|
||||
@@ -199,10 +210,10 @@ function SelectMenu:addAllCommands()
|
||||
sm.item_shortcuts[ keydef.keycode - KEY_Z + 21 ], sm.perpage)
|
||||
end
|
||||
)
|
||||
self.commands:add(KEY_DEL, nil, "",
|
||||
"Select menu item with del key as shortcut",
|
||||
self.commands:add(KEY_SLASH, nil, "/",
|
||||
"Select menu item with / key as shortcut",
|
||||
function(sm)
|
||||
sm.selected_item = sm:getItemIndexByShortCut("Del", sm.perpage)
|
||||
sm.selected_item = sm:getItemIndexByShortCut("/", sm.perpage)
|
||||
end
|
||||
)
|
||||
self.commands:add(KEY_DOT, nil, "",
|
||||
@@ -211,10 +222,9 @@ function SelectMenu:addAllCommands()
|
||||
sm.selected_item = sm:getItemIndexByShortCut(".", sm.perpage)
|
||||
end
|
||||
)
|
||||
self.commands:add({KEY_SYM, KEY_SLASH}, nil, "",
|
||||
"Select menu item with sym/slash key as shortcut",
|
||||
self.commands:add(KEY_SYM, nil, "",
|
||||
"Select menu item with sym key as shortcut",
|
||||
function(sm)
|
||||
-- DXG has slash after dot
|
||||
sm.selected_item = sm:getItemIndexByShortCut("Sym", sm.perpage)
|
||||
end
|
||||
)
|
||||
@@ -331,7 +341,9 @@ function SelectMenu:choose(ypos, height)
|
||||
|
||||
local footer = "Page "..self.page.." of "..(math.ceil(self.items / self.perpage))
|
||||
if self.expandable then
|
||||
footer = footer.." (Use Right/Left FW-selector keys to expand/collapse nodes)"
|
||||
footer = footer.." (Use Right/Left FW-selector keys to expand/collapse items)"
|
||||
elseif self.deletable then
|
||||
footer = footer.." (Use Del key to delete item)"
|
||||
end
|
||||
renderUtf8Text(fb.bb, self.margin_H, height-7, fface, footer, true)
|
||||
end
|
||||
@@ -380,12 +392,12 @@ function SelectMenu:choose(ypos, height)
|
||||
if self.selected_item ~= nil then
|
||||
if self.expandable then
|
||||
if ret_code == "expand" then
|
||||
Debug("# expand "..self.selected_item)
|
||||
return nil, self.selected_item
|
||||
elseif ret_code == "collapse" then
|
||||
Debug("# collapse "..self.selected_item)
|
||||
return nil, -self.selected_item
|
||||
end
|
||||
elseif self.deletable and ret_code == "delete" then
|
||||
return nil, self.selected_item
|
||||
end
|
||||
Debug("# selected "..self.selected_item)
|
||||
return self.selected_item, self.item_array[self.selected_item]
|
||||
|
||||
@@ -1823,24 +1823,33 @@ end
|
||||
|
||||
function UniReader:showBookMarks()
|
||||
local menu_items = {}
|
||||
local ret_code, item_no = -1, -1
|
||||
|
||||
-- build menu items
|
||||
for k,v in ipairs(self.bookmarks) do
|
||||
table.insert(menu_items,
|
||||
"Page "..v.page.." "..v.notes.." @ "..v.datetime)
|
||||
end
|
||||
if #menu_items == 0 then
|
||||
showInfoMsgWithDelay(
|
||||
"No bookmark found.", 2000, 1)
|
||||
else
|
||||
toc_menu = SelectMenu:new{
|
||||
return showInfoMsgWithDelay("No bookmarks found", 1500, 1)
|
||||
end
|
||||
while true do
|
||||
bm_menu = SelectMenu:new{
|
||||
menu_title = "Bookmarks",
|
||||
item_array = menu_items,
|
||||
deletable = true,
|
||||
}
|
||||
item_no = toc_menu:choose(0, fb.bb:getHeight())
|
||||
if item_no then
|
||||
self:goto(self.bookmarks[item_no].page)
|
||||
else
|
||||
self:redrawCurrentPage()
|
||||
ret_code, item_no = bm_menu:choose(0, fb.bb:getHeight())
|
||||
if ret_code then -- normal item selection
|
||||
return self:goto(self.bookmarks[ret_code].page)
|
||||
elseif item_no then -- delete item
|
||||
table.remove(menu_items, item_no)
|
||||
table.remove(self.bookmarks, item_no)
|
||||
if #menu_items == 0 then
|
||||
return self:redrawCurrentPage()
|
||||
end
|
||||
else -- return via Back
|
||||
return self:redrawCurrentPage()
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -2315,9 +2324,9 @@ function UniReader:addAllCommands()
|
||||
function(unireader)
|
||||
ok = unireader:addBookmark(self.pageno)
|
||||
if not ok then
|
||||
showInfoMsgWithDelay("Page already marked!", 2000, 1)
|
||||
showInfoMsgWithDelay("Page already marked!", 1500, 1)
|
||||
else
|
||||
showInfoMsgWithDelay("Page marked.", 2000, 1)
|
||||
showInfoMsgWithDelay("Page marked", 1500, 1)
|
||||
end
|
||||
end)
|
||||
self.commands:add(KEY_B,MOD_SHIFT,"B",
|
||||
|
||||
Reference in New Issue
Block a user