From e3da8e41f1051435ad9b5a6b6c7686730780edda Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 16 Jun 2013 16:58:26 +0800 Subject: [PATCH 1/4] remove selected word if hold moves out of word box --- frontend/ui/reader/readerhighlight.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/ui/reader/readerhighlight.lua b/frontend/ui/reader/readerhighlight.lua index cd3de8536..08d01af8f 100644 --- a/frontend/ui/reader/readerhighlight.lua +++ b/frontend/ui/reader/readerhighlight.lua @@ -141,7 +141,6 @@ function ReaderHighlight:onHold(arg, ges) end function ReaderHighlight:onHoldPan(arg, ges) - self.selected_word = nil if not self.page_boxes or #self.page_boxes == 0 then DEBUG("no page boxes detected") return true @@ -152,6 +151,11 @@ function ReaderHighlight:onHoldPan(arg, ges) --DEBUG("selected text:", self.selected_text) if self.selected_text then self.view.highlight.temp[self.hold_pos.page] = self.selected_text.boxes + -- remove selected word if hold moves out of word box + if self.selected_word and + not self.selected_word.box:contains(self.selected_text.boxes[1]) then + self.selected_word = nil + end UIManager:setDirty(self.dialog, "partial") end end From c116b34e71b9e05f4ed024746f845aff1c88c352 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 16 Jun 2013 17:10:54 +0800 Subject: [PATCH 2/4] parameterize lighten color in displaying saved highlights --- frontend/ui/reader/readerview.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/ui/reader/readerview.lua b/frontend/ui/reader/readerview.lua index 0b8386ced..c3d7349c3 100644 --- a/frontend/ui/reader/readerview.lua +++ b/frontend/ui/reader/readerview.lua @@ -18,6 +18,7 @@ ReaderView = OverlapGroup:new{ outer_page_color = 0, -- hightlight highlight = { + lighten_color = 0.2, -- color range [0.0, 1.0] temp_drawer = "invert", temp = {}, saved_drawer = "lighten", @@ -352,7 +353,7 @@ function ReaderView:drawHighlightRect(bb, x, y, rect, drawer) self.highlight.line_width, self.highlight.line_color) elseif drawer == "lighten" then - bb:lightenRect(x, y, w, h, 0.1) + bb:lightenRect(x, y, w, h, self.highlight.lighten_color) elseif drawer == "invert" then bb:invertRect(x, y, w, h) end From 8ae528629cbbea04ef69b6cf5102328c1b971fb1 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 16 Jun 2013 18:59:11 +0800 Subject: [PATCH 3/4] bugfix: make a fresh copy of Geom before transforming --- frontend/ui/reader/readerview.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/ui/reader/readerview.lua b/frontend/ui/reader/readerview.lua index c3d7349c3..e5593bed0 100644 --- a/frontend/ui/reader/readerview.lua +++ b/frontend/ui/reader/readerview.lua @@ -237,7 +237,7 @@ end function ReaderView:getScrollPageRect(page, rect_p) local rect_s = Geom:new{} for _, state in ipairs(self.page_states) do - local trans_p = Geom:new(rect_p) + local trans_p = Geom:new(rect_p):copy() trans_p:transformByScale(state.zoom, state.zoom) if page == state.page and state.visible_area:contains(trans_p) then rect_s.x = rect_s.x + state.offset.x + trans_p.x - state.visible_area.x @@ -287,7 +287,7 @@ end function ReaderView:getSinglePageRect(rect_p) local rect_s = Geom:new{} - local trans_p = Geom:new(rect_p) + local trans_p = Geom:new(rect_p):copy() trans_p:transformByScale(self.state.zoom, self.state.zoom) if self.visible_area:contains(trans_p) then rect_s.x = self.state.offset.x + trans_p.x - self.visible_area.x From 18fbc0f24821bff33c66379dbf92fbee0660b0a4 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 16 Jun 2013 19:00:15 +0800 Subject: [PATCH 4/4] export hightlights to My Clippings --- frontend/ui/reader/readerhighlight.lua | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/frontend/ui/reader/readerhighlight.lua b/frontend/ui/reader/readerhighlight.lua index 08d01af8f..810d555cf 100644 --- a/frontend/ui/reader/readerhighlight.lua +++ b/frontend/ui/reader/readerhighlight.lua @@ -223,11 +223,31 @@ function ReaderHighlight:saveHighlight() local hl_item = {} hl_item["text"] = self.selected_text.text hl_item["boxes"] = self.selected_text.boxes + hl_item["datetime"] = os.date("%Y-%m-%d %H:%M:%S"), table.insert(self.view.highlight.saved[page], hl_item) + if self.selected_text.text ~= "" then + self:exportToClippings(page, hl_item) + end end --DEBUG("saved hightlights", self.view.highlight.saved[page]) end +function ReaderHighlight:exportToClippings(page, item) + DEBUG("export highlight to My Clippings") + local clippings = io.open("/mnt/us/documents/My Clippings.txt", "a+") + if clippings then + local current_locale = os.setlocale() + os.setlocale("C") + clippings:write(self.document.file:gsub("(.*/)(.*)", "%2").."\n") + clippings:write("- Koreader Highlight Page "..page.." ") + clippings:write("| Added on "..os.date("%A, %b %d, %Y %I:%M:%S %p\n\n")) + clippings:write(item["text"].."\n") + clippings:write("==========\n") + clippings:close() + os.setlocale(current_locale) + end +end + function ReaderHighlight:addNote() DEBUG("add Note") UIManager:close(self.highlight_dialog)