From a2ea46bfdc9d9a47a503a17636dbfd88e34378a7 Mon Sep 17 00:00:00 2001 From: Robert Date: Sat, 30 Sep 2017 18:17:48 +0200 Subject: [PATCH] Rename bookmark (#3275) --- .../apps/reader/modules/readerbookmark.lua | 78 +++++++++++++++++-- 1 file changed, 73 insertions(+), 5 deletions(-) diff --git a/frontend/apps/reader/modules/readerbookmark.lua b/frontend/apps/reader/modules/readerbookmark.lua index 83fb7784e..fe293bc09 100644 --- a/frontend/apps/reader/modules/readerbookmark.lua +++ b/frontend/apps/reader/modules/readerbookmark.lua @@ -1,16 +1,19 @@ local CenterContainer = require("ui/widget/container/centercontainer") +local ConfirmBox = require("ui/widget/confirmbox") local Device = require("device") local Event = require("ui/event") local Font = require("ui/font") local Geom = require("ui/geometry") local GestureRange = require("ui/gesturerange") local InputContainer = require("ui/widget/container/inputcontainer") +local InputDialog = require("ui/widget/inputdialog") local Menu = require("ui/widget/menu") local TextViewer = require("ui/widget/textviewer") local UIManager = require("ui/uimanager") local logger = require("logger") local _ = require("gettext") local Screen = require("device").screen +local T = require("ffi/util").template local ReaderBookmark = InputContainer:new{ bm_menu_title = _("Bookmarks"), @@ -186,7 +189,9 @@ function ReaderBookmark:onShowBookmark() if not self.ui.document.info.has_pages then page = self.ui.document:getPageFromXPointer(page) end - v.text = _("Page") .. " " .. page .. " " .. v.notes .. " @ " .. v.datetime + if v.text == nil or v.text == "" then + v.text = T(_("Page %1 %2 @ %3"), page, v.notes, v.datetime) + end end local bm_menu = Menu:new{ @@ -230,20 +235,40 @@ function ReaderBookmark:onShowBookmark() buttons_table = { { { - text = _("Close"), + text = _("Rename this bookmark"), callback = function() + bookmark:renameBookmark(item) UIManager:close(self.textviewer) end, }, { text = _("Remove this bookmark"), callback = function() - bookmark:removeHightligit(item) - bm_menu:switchItemTable(nil, bookmark.bookmarks, -1) - UIManager:close(self.textviewer) + UIManager:show(ConfirmBox:new{ + text = _("Do you want remove this bookmark?"), + cancel_text = _("Cancel"), + cancel_callback = function() + return + end, + ok_text = _("Remove"), + ok_callback = function() + bookmark:removeHightligit(item) + bm_menu:switchItemTable(nil, bookmark.bookmarks, -1) + UIManager:close(self.textviewer) + end, + }) end, }, }, + { + { + text = _("Close"), + is_enter_default = true, + callback = function() + UIManager:close(self.textviewer) + end, + }, + } } } UIManager:show(self.textviewer) @@ -255,6 +280,10 @@ function ReaderBookmark:onShowBookmark() end bm_menu.show_parent = self.bookmark_menu + self.refresh = function() + bm_menu:updateItems() + self:onSaveSettings() + end UIManager:show(self.bookmark_menu) return true @@ -364,6 +393,45 @@ function ReaderBookmark:removeBookmark(item) end end +function ReaderBookmark:renameBookmark(item) + self.input = InputDialog:new{ + title = _("Rename bookmark"), + input = item.text, + input_type = "text", + buttons = { + { + { + text = _("Cancel"), + is_enter_default = true, + callback = function() + UIManager:close(self.input) + end, + }, + { + text = _("Rename"), + callback = function() + local value = self.input:getInputValue() + if value ~= "" then + for i=1, #self.bookmarks do + if item.text == self.bookmarks[i].text and item.pos0 == self.bookmarks[i].pos0 and + item.pos1 == self.bookmarks[i].pos1 and item.page == self.bookmarks[i].page then + self.bookmarks[i].text = value + UIManager:close(self.input) + self.refresh() + break + end + end + end + UIManager:close(self.input) + end, + }, + } + }, + } + self.input:onShowKeyboard() + UIManager:show(self.input) +end + function ReaderBookmark:toggleBookmark(pn_or_xp) local index = self:getDogearBookmarkIndex(pn_or_xp) if index then