Merge pull request #688 from chrox/master

hold on config panel option/zoom mode menu to set default option
pull/691/head
Qingping Hou 10 years ago
commit 7f03fc10be

@ -14,8 +14,12 @@ end
function ReaderKoptListener:onReadSettings(config)
-- normal zoom mode is zoom mode used in non-reflow mode.
self.normal_zoom_mode = config:readSetting("normal_zoom_mode") or "page"
self.normal_zoom_mode = config:readSetting("normal_zoom_mode") or
G_reader_settings:readSetting("zoom_mode") or "page"
self:setZoomMode(self.normal_zoom_mode)
self.document.configurable.contrast = config:readSetting("kopt_contrast") or
G_reader_settings:readSetting("kopt_contrast") or 1.0
self.ui:handleEvent(Event:new("GammaUpdate", 1/self.document.configurable.contrast))
end
function ReaderKoptListener:onSaveSettings()
@ -40,7 +44,7 @@ function ReaderKoptListener:onFineTuningFontSize(delta)
end
function ReaderKoptListener:onZoomUpdate(zoom)
-- an exceptional case is reflow mode
-- an exceptional case is reflow mode
if self.document.configurable.text_wrap == 1 then
self.view.state.zoom = 1.0
end
@ -48,7 +52,7 @@ end
-- misc koptoption handler
function ReaderKoptListener:onDocLangUpdate(lang)
if lang == "chi_sim" or lang == "chi_tra" or
if lang == "chi_sim" or lang == "chi_tra" or
lang == "jpn" or lang == "kor" then
self.document.configurable.word_spacing = DKOPTREADER_CONFIG_WORD_SAPCINGS[1]
else

@ -238,7 +238,8 @@ function ReaderRolling:onGotoViewRel(diff)
end
self:gotoPos(self.current_pos + pan_diff)
elseif self.view.view_mode == "page" then
self:gotoPage(self.current_page + diff)
local page_count = self.ui.document:getVisiblePageCount()
self:gotoPage(self.current_page + diff*page_count)
end
return true
end

@ -1,9 +1,11 @@
local InputContainer = require("ui/widget/container/inputcontainer")
local ConfirmBox = require("ui/widget/confirmbox")
local GestureRange = require("ui/gesturerange")
local UIManager = require("ui/uimanager")
local Device = require("ui/device")
local Input = require("ui/input")
local Screen = require("ui/screen")
local Geom = require("ui/geometry")
local GestureRange = require("ui/gesturerange")
local Event = require("ui/event")
local DEBUG = require("dbg")
local _ = require("gettext")
@ -103,10 +105,9 @@ function ReaderZooming:onReadSettings(config)
-- @TODO config file from old code base uses globalzoom_mode
-- instead of zoom_mode, we need to handle this imcompatibility
-- 04.12 2012 (houqp)
local zoom_mode = config:readSetting("zoom_mode")
if not zoom_mode then
zoom_mode = self.DEFAULT_ZOOM_MODE
end
local zoom_mode = config:readSetting("zoom_mode") or
G_reader_settings:readSetting("zoom_mode") or
self.DEFAULT_ZOOM_MODE
self:setZoomMode(zoom_mode)
end
@ -294,36 +295,51 @@ function ReaderZooming:addToMainMenu(tab_item_table)
{
text = _("Zoom to fit content width"),
checked_func = function() return self.zoom_mode == "contentwidth" end,
callback = self:genSetZoomModeCallBack("contentwidth")
callback = self:genSetZoomModeCallBack("contentwidth"),
hold_callback = function() self:makeDefault("contentwidth") end,
},
{
text = _("Zoom to fit content height"),
checked_func = function() return self.zoom_mode == "contentheight" end,
callback = self:genSetZoomModeCallBack("contentheight")
callback = self:genSetZoomModeCallBack("contentheight"),
hold_callback = function() self:makeDefault("contentheight") end,
},
{
text = _("Zoom to fit page width"),
checked_func = function() return self.zoom_mode == "pagewidth" end,
callback = self:genSetZoomModeCallBack("pagewidth")
callback = self:genSetZoomModeCallBack("pagewidth"),
hold_callback = function() self:makeDefault("pagewidth") end,
},
{
text = _("Zoom to fit page height"),
checked_func = function() return self.zoom_mode == "pageheight" end,
callback = self:genSetZoomModeCallBack("pageheight")
callback = self:genSetZoomModeCallBack("pageheight"),
hold_callback = function() self:makeDefault("pageheight") end,
},
{
text = _("Zoom to fit content"),
checked_func = function() return self.zoom_mode == "content" end,
callback = self:genSetZoomModeCallBack("content")
callback = self:genSetZoomModeCallBack("content"),
hold_callback = function() self:makeDefault("content") end,
},
{
text = _("Zoom to fit page"),
checked_func = function() return self.zoom_mode == "page" end,
callback = self:genSetZoomModeCallBack("page")
callback = self:genSetZoomModeCallBack("page"),
hold_callback = function() self:makeDefault("page") end,
},
}
})
end
end
function ReaderZooming:makeDefault(zoom_mode)
UIManager:show(ConfirmBox:new{
text = _("Set default zoom mode to \"")..zoom_mode.."\"?",
ok_callback = function()
G_reader_settings:saveSetting("zoom_mode", zoom_mode)
end,
})
end
return ReaderZooming

@ -291,6 +291,7 @@ end
function ReaderUI:saveSettings()
self:handleEvent(Event:new("SaveSettings"))
self.doc_settings:flush()
G_reader_settings:flush()
end
function ReaderUI:onFlushSettings()

@ -33,7 +33,9 @@ function Configurable:loadDefaults(config_options)
local options = config_options[i].options
for j=1,#config_options[i].options do
local key = config_options[i].options[j].name
self[key] = config_options[i].options[j].default_value
local settings_key = config_options.prefix.."_"..key
local default = G_reader_settings:readSetting(settings_key)
self[key] = default or config_options[i].options[j].default_value
if not self[key] then
self[key] = config_options[i].options[j].default_arg
end

@ -32,23 +32,37 @@ function DocSettings:getNameFromHistory(hist_name)
end
function DocSettings:open(docfile)
local conf_path = nil
local history_path = nil
local sidecar_path = nil
if docfile == ".reader" then
-- we handle reader setting as special case
conf_path = "settings.reader.lua"
history_path = "settings.reader.lua"
else
if lfs.attributes("./history","mode") ~= "directory" then
if lfs.attributes("./history", "mode") ~= "directory" then
lfs.mkdir("history")
end
conf_path = self:getHistoryPath(docfile)
history_path = self:getHistoryPath(docfile)
local sidecar = docfile:match("(.*)%.")..".sdr"
if lfs.attributes(sidecar, "mode") ~= "directory" then
lfs.mkdir(sidecar)
end
sidecar_path = sidecar.."/"..docfile:match(".*%/(.*)")..".lua"
end
-- construct settings obj
local new = { file = conf_path, data = {} }
local ok, stored = pcall(dofile, new.file)
local new = {
history_file = history_path,
sidecar_file = sidecar_path,
data = {}
}
local ok, stored = pcall(dofile, new.history_file)
if not ok then
-- try legacy conf path, for backward compatibility. this also
-- takes care of reader legacy setting
ok, stored = pcall(dofile, docfile..".kpdfview.lua")
ok, stored = pcall(dofile, new.sidecar_file)
if not ok then
-- try legacy conf path, for backward compatibility. this also
-- takes care of reader legacy setting
ok, stored = pcall(dofile, docfile..".kpdfview.lua")
end
end
if ok and stored then
new.data = stored
@ -112,18 +126,30 @@ function DocSettings:_serialize(what, outt, indent, max_lv)
end
function DocSettings:flush()
-- write a serialized version of the data table
if not self.file then
-- write serialized version of the data table into
-- i) history directory in root directory of koreader
-- ii) sidecar directory in the same directory of the document
if not self.history_file and not self.sidecar_file then
return
end
local f_out = io.open(self.file, "w")
if f_out ~= nil then
os.setlocale('C', 'numeric')
local out = {"-- we can read Lua syntax here!\nreturn "}
self:_serialize(self.data, out, 0)
table.insert(out, "\n")
f_out:write(table.concat(out))
f_out:close()
local serials = {}
if self.history_file then
table.insert(serials, io.open(self.history_file, "w"))
end
if self.sidecar_file then
table.insert(serials, io.open(self.sidecar_file, "w"))
end
os.setlocale('C', 'numeric')
local out = {"-- we can read Lua syntax here!\nreturn "}
self:_serialize(self.data, out, 0)
table.insert(out, "\n")
local s_out = table.concat(out)
for _, f_out in ipairs(serials) do
if f_out ~= nil then
f_out:write(s_out)
f_out:close()
end
end
end

@ -361,6 +361,10 @@ function CreDocument:setFloatingPunctuation(enabled)
self._document:setIntProperty("crengine.style.floating.punctuation.enabled", enabled)
end
function CreDocument:getVisiblePageCount()
return self._document:getVisiblePageCount()
end
function CreDocument:setVisiblePageCount(new_count)
DEBUG("CreDocument: set visible page count", new_count)
self._document:setVisiblePageCount(new_count)

@ -9,6 +9,7 @@ local TextWidget = require("ui/widget/textwidget")
local FixedTextWidget = require("ui/widget/fixedtextwidget")
local ProgressWidget = require("ui/widget/progresswidget")
local ToggleSwitch = require("ui/widget/toggleswitch")
local ConfirmBox = require("ui/widget/confirmbox")
local Font = require("ui/font")
local Device = require("ui/device")
local GestureRange = require("ui/gesturerange")
@ -79,6 +80,13 @@ function OptionTextItem:init()
},
doc = "Select Option Item",
},
HoldSelect = {
GestureRange:new{
ges = "hold",
range = self.dimen,
},
doc = "Hold Option Item",
},
}
else
self.active_key_events = {
@ -92,11 +100,21 @@ function OptionTextItem:onTapSelect()
item[1].color = 0
end
self[1].color = 15
self.config:onConfigChoose(self.values, self.name, self.event, self.args, self.events, self.current_item)
self.config:onConfigChoose(self.values, self.name,
self.event, self.args,
self.events, self.current_item)
UIManager:setDirty(self.config, "partial")
return true
end
function OptionTextItem:onHoldSelect()
self.config:onMakeDefault(self.name, self.name_text,
self.values or self.args,
self.values or self.item_text,
self.current_item)
return true
end
local OptionIconItem = InputContainer:new{}
function OptionIconItem:init()
self.dimen = self.icon:getSize()
@ -115,6 +133,14 @@ function OptionIconItem:init()
},
doc = "Select Option Item",
},
HoldSelect = {
GestureRange:new{
ges = "hold",
range = self.dimen,
},
doc = "Hold Option Item",
},
}
end
end
@ -126,11 +152,19 @@ function OptionIconItem:onTapSelect()
end
--self[1][1].invert = true
self[1].color = 15
self.config:onConfigChoose(self.values, self.name, self.event, self.args, self.events, self.current_item)
self.config:onConfigChoose(self.values, self.name,
self.event, self.args,
self.events, self.current_item)
UIManager:setDirty(self.config, "partial")
return true
end
function OptionIconItem:onHoldSelect()
self.config:onMakeDefault(self.name, self.name_text,
self.values, self.values, self.current_item)
return true
end
local ConfigOption = CenterContainer:new{}
function ConfigOption:init()
local default_name_font_size = 20
@ -287,6 +321,8 @@ function ConfigOption:init()
option_items[d] = option_item
option_item.items = option_items
option_item.name = self.options[c].name
option_item.name_text = self.options[c].name_text
option_item.item_text = self.options[c].item_text
option_item.values = self.options[c].values
option_item.args = self.options[c].args
option_item.event = self.options[c].event
@ -322,6 +358,7 @@ function ConfigOption:init()
option_items[d] = option_item
option_item.items = option_items
option_item.name = self.options[c].name
option_item.name_text = self.options[c].name_text
option_item.values = self.options[c].values
option_item.args = self.options[c].args
option_item.event = self.options[c].event
@ -340,6 +377,7 @@ function ConfigOption:init()
local switch = ToggleSwitch:new{
width = math.min(max_toggle_width, toggle_width),
name = self.options[c].name,
name_text = self.options[c].name_text,
toggle = self.options[c].toggle,
alternate = self.options[c].alternate,
values = self.options[c].values,
@ -537,6 +575,16 @@ function ConfigDialog:onConfigChoose(values, name, event, args, events, position
end)
end
function ConfigDialog:onMakeDefault(name, name_text, values, labels, position)
UIManager:show(ConfirmBox:new{
text = _("Set default ")..(name_text or "").." to "..labels[position].."?",
ok_callback = function()
local name = self.config_options.prefix.."_"..name
G_reader_settings:saveSetting(name, values[position])
end,
})
end
function ConfigDialog:closeDialog()
UIManager:close(self)
if self.close_callback then

@ -74,6 +74,13 @@ function ToggleSwitch:init()
},
doc = "Toggle switch",
},
HoldSelect = {
GestureRange:new{
ges = "hold",
range = self.dimen,
},
doc = "Hold switch",
},
}
end
end
@ -131,9 +138,19 @@ function ToggleSwitch:onTapSelect(arg, gev)
self.config:onConfigEvents(self.events, self.position)
end
--]]
self.config:onConfigChoose(self.values, self.name, self.event, self.args, self.events, self.position)
self.config:onConfigChoose(self.values, self.name,
self.event, self.args, self.events, self.position)
UIManager:setDirty(self.config, "partial")
return true
end
function ToggleSwitch:onHoldSelect(arg, gev)
local position = math.ceil(
(gev.pos.x - self.dimen.x) / self.dimen.w * self.n_pos
)
self.config:onMakeDefault(self.name, self.name_text,
self.values or self.args, self.toggle, position)
return true
end
return ToggleSwitch

@ -1 +1 @@
Subproject commit 3672c27f318b26830c569dc67a8121a0ef4ca2cc
Subproject commit 25deec728a94d9546e38f494bc47b26808742008

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://github.com/koreader/koreader-base/issues\n"
"POT-Creation-Date: 2014-07-01 13:59+0000\n"
"POT-Creation-Date: 2014-07-03 10:56+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -42,7 +42,7 @@ msgid ""
">>"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:294
#: frontend/apps/reader/modules/readerhighlight.lua:302
#: frontend/ui/widget/dictquicklookup.lua:152
msgid ""
"Add Note"
@ -69,7 +69,7 @@ msgid ""
msgstr ""
#: frontend/apps/reader/modules/readergoto.lua:36
#: frontend/ui/widget/confirmbox.lua:26
#: frontend/ui/widget/confirmbox.lua:29
#: plugins/evernote.koplugin/main.lua:123
#: plugins/zsync.koplugin/main.lua:254
msgid ""
@ -81,7 +81,7 @@ msgid ""
"Change Hyphenation to "
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:18
#: frontend/apps/reader/modules/readerfont.lua:19
msgid ""
"Change font"
msgstr ""
@ -117,12 +117,12 @@ msgid ""
"Cut"
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:180
#: frontend/apps/reader/modules/readerfont.lua:184
msgid ""
"Decrease gamma to "
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:150
#: frontend/apps/reader/modules/readerfont.lua:154
msgid ""
"Decrease line space to "
msgstr ""
@ -134,7 +134,7 @@ msgstr ""
#: frontend/apps/filemanager/filemanager.lua:111
#: frontend/apps/filemanager/filemanagerhistory.lua:30
#: frontend/apps/reader/modules/readerhighlight.lua:186
#: frontend/apps/reader/modules/readerhighlight.lua:187
msgid ""
"Delete"
msgstr ""
@ -154,7 +154,7 @@ msgid ""
"Document menu"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:193
#: frontend/apps/reader/modules/readerhighlight.lua:194
msgid ""
"Edit"
msgstr ""
@ -269,7 +269,7 @@ msgid ""
"Help"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:286
#: frontend/apps/reader/modules/readerhighlight.lua:294
#: frontend/ui/widget/dictquicklookup.lua:145
msgid ""
"Highlight"
@ -285,12 +285,12 @@ msgid ""
"Hyphenation"
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:177
#: frontend/apps/reader/modules/readerfont.lua:181
msgid ""
"Increase gamma to "
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:154
#: frontend/apps/reader/modules/readerfont.lua:158
msgid ""
"Increase line space to "
msgstr ""
@ -361,7 +361,7 @@ msgid ""
"Logout"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:325
#: frontend/apps/reader/modules/readerhighlight.lua:333
msgid ""
"More"
msgstr ""
@ -383,7 +383,7 @@ msgid ""
msgstr ""
#: frontend/apps/reader/modules/readerfrontlight.lua:115
#: frontend/ui/widget/confirmbox.lua:25
#: frontend/ui/widget/confirmbox.lua:28
msgid ""
"OK"
msgstr ""
@ -398,7 +398,7 @@ msgid ""
"Page"
msgstr ""
#: frontend/ui/widget/touchmenu.lua:404
#: frontend/ui/widget/touchmenu.lua:426
msgid ""
"Page "
msgstr ""
@ -450,7 +450,7 @@ msgid ""
"Received file:"
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:204
#: frontend/apps/reader/modules/readerfont.lua:208
msgid ""
"Redrawing with font "
msgstr ""
@ -480,7 +480,22 @@ msgid ""
"Scroll Mode"
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:135
#: frontend/ui/widget/configdialog.lua:580
msgid ""
"Set default "
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:223
msgid ""
"Set default font \""
msgstr ""
#: frontend/apps/reader/modules/readerzooming.lua:338
msgid ""
"Set default zoom mode to \""
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:139
msgid ""
"Set font size to "
msgstr ""
@ -495,7 +510,7 @@ msgid ""
"Set render style"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:314
#: frontend/apps/reader/modules/readerhighlight.lua:322
msgid ""
"Share"
msgstr ""
@ -535,7 +550,7 @@ msgid ""
"Suspended"
msgstr ""
#: frontend/apps/reader/modules/readerzooming.lua:292
#: frontend/apps/reader/modules/readerzooming.lua:293
msgid ""
"Switch zoom mode"
msgstr ""
@ -550,7 +565,7 @@ msgid ""
"TBRTL"
msgstr ""
#: frontend/apps/reader/modules/readertoc.lua:124
#: frontend/apps/reader/modules/readertoc.lua:153
msgid ""
"Table of Contents"
msgstr ""
@ -580,7 +595,7 @@ msgid ""
"Toggle"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:305
#: frontend/apps/reader/modules/readerhighlight.lua:313
msgid ""
"Translate"
msgstr ""
@ -632,32 +647,32 @@ msgid ""
"ZSync"
msgstr ""
#: frontend/apps/reader/modules/readerzooming.lua:315
#: frontend/apps/reader/modules/readerzooming.lua:320
msgid ""
"Zoom to fit content"
msgstr ""
#: frontend/apps/reader/modules/readerzooming.lua:300
#: frontend/apps/reader/modules/readerzooming.lua:302
msgid ""
"Zoom to fit content height"
msgstr ""
#: frontend/apps/reader/modules/readerzooming.lua:295
#: frontend/apps/reader/modules/readerzooming.lua:296
msgid ""
"Zoom to fit content width"
msgstr ""
#: frontend/apps/reader/modules/readerzooming.lua:320
#: frontend/apps/reader/modules/readerzooming.lua:326
msgid ""
"Zoom to fit page"
msgstr ""
#: frontend/apps/reader/modules/readerzooming.lua:310
#: frontend/apps/reader/modules/readerzooming.lua:314
msgid ""
"Zoom to fit page height"
msgstr ""
#: frontend/apps/reader/modules/readerzooming.lua:305
#: frontend/apps/reader/modules/readerzooming.lua:308
msgid ""
"Zoom to fit page width"
msgstr ""
@ -763,7 +778,7 @@ msgid ""
"no choices available"
msgstr ""
#: frontend/ui/widget/confirmbox.lua:23
#: frontend/ui/widget/confirmbox.lua:26
msgid ""
"no text"
msgstr ""

Loading…
Cancel
Save