mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
copt deduplicate: render_dpi, margins, rotation_mode (#10880)
This commit is contained in:
@@ -13,14 +13,11 @@ local ReaderCoptListener = EventListener:extend{}
|
||||
local CRE_HEADER_DEFAULT_SIZE = 20
|
||||
|
||||
function ReaderCoptListener:onReadSettings(config)
|
||||
local view_mode = config:readSetting("copt_view_mode")
|
||||
or G_reader_settings:readSetting("copt_view_mode")
|
||||
or 0 -- default to "page" mode
|
||||
local view_mode_name = view_mode == 0 and "page" or "scroll"
|
||||
local view_mode_name = self.document.configurable.view_mode == 0 and "page" or "scroll"
|
||||
-- Let crengine know of the view mode before rendering, as it can
|
||||
-- cause a rendering change (2-pages would become 1-page in
|
||||
-- scroll mode).
|
||||
self.ui.document:setViewMode(view_mode_name)
|
||||
self.document:setViewMode(view_mode_name)
|
||||
-- ReaderView is the holder of the view_mode state
|
||||
self.view.view_mode = view_mode_name
|
||||
|
||||
@@ -35,20 +32,19 @@ function ReaderCoptListener:onReadSettings(config)
|
||||
self.battery_percent = G_reader_settings:readSetting("cre_header_battery_percent", 0)
|
||||
self.chapter_marks = G_reader_settings:readSetting("cre_header_chapter_marks", 1)
|
||||
|
||||
self.ui.document._document:setIntProperty("window.status.title", self.title)
|
||||
self.ui.document._document:setIntProperty("window.status.clock", self.clock)
|
||||
self.ui.document._document:setIntProperty("window.status.pos.page.number", self.page_number)
|
||||
self.ui.document._document:setIntProperty("window.status.pos.page.count", self.page_count)
|
||||
self.ui.document._document:setIntProperty("crengine.page.header.chapter.marks", self.chapter_marks)
|
||||
self.ui.document._document:setIntProperty("window.status.battery", self.battery)
|
||||
self.ui.document._document:setIntProperty("window.status.battery.percent", self.battery_percent)
|
||||
self.ui.document._document:setIntProperty("window.status.pos.percent", self.reading_percent)
|
||||
self.document._document:setIntProperty("window.status.title", self.title)
|
||||
self.document._document:setIntProperty("window.status.clock", self.clock)
|
||||
self.document._document:setIntProperty("window.status.pos.page.number", self.page_number)
|
||||
self.document._document:setIntProperty("window.status.pos.page.count", self.page_count)
|
||||
self.document._document:setIntProperty("crengine.page.header.chapter.marks", self.chapter_marks)
|
||||
self.document._document:setIntProperty("window.status.battery", self.battery)
|
||||
self.document._document:setIntProperty("window.status.battery.percent", self.battery_percent)
|
||||
self.document._document:setIntProperty("window.status.pos.percent", self.reading_percent)
|
||||
|
||||
self:onTimeFormatChanged()
|
||||
|
||||
-- Enable or disable crengine header status line (note that for crengine, 0=header enabled, 1=header disabled)
|
||||
local status_line = config:readSetting("copt_status_line") or G_reader_settings:readSetting("copt_status_line", 1)
|
||||
self.ui:handleEvent(Event:new("SetStatusLine", status_line))
|
||||
self.ui:handleEvent(Event:new("SetStatusLine", self.document.configurable.status_line))
|
||||
|
||||
self.old_battery_level = self.ui.rolling:updateBatteryState()
|
||||
|
||||
@@ -87,7 +83,7 @@ end
|
||||
ReaderCoptListener.onNotCharging = ReaderCoptListener.onCharging
|
||||
|
||||
function ReaderCoptListener:onTimeFormatChanged()
|
||||
self.ui.document._document:setIntProperty("window.status.clock.12hours", G_reader_settings:isTrue("twelve_hour_clock") and 1 or 0)
|
||||
self.document._document:setIntProperty("window.status.clock.12hours", G_reader_settings:isTrue("twelve_hour_clock") and 1 or 0)
|
||||
end
|
||||
|
||||
function ReaderCoptListener:shouldHeaderBeRepainted()
|
||||
@@ -107,14 +103,14 @@ end
|
||||
|
||||
function ReaderCoptListener:updateHeader()
|
||||
-- Have crengine display accurate time and battery on its next drawing
|
||||
self.ui.document:resetBufferCache() -- be sure next repaint is a redrawing
|
||||
self.document:resetBufferCache() -- be sure next repaint is a redrawing
|
||||
-- Force a refresh if we're not hidden behind another widget
|
||||
if self:shouldHeaderBeRepainted() then
|
||||
UIManager:setDirty(self.view.dialog, "ui",
|
||||
Geom:new{
|
||||
x = 0, y = 0,
|
||||
w = Device.screen:getWidth(),
|
||||
h = self.ui.document:getHeaderHeight(),
|
||||
h = self.document:getHeaderHeight(),
|
||||
}
|
||||
)
|
||||
end
|
||||
@@ -176,7 +172,7 @@ ReaderCoptListener.onCloseDocument = ReaderCoptListener.unscheduleHeaderRefresh
|
||||
ReaderCoptListener.onSuspend = ReaderCoptListener.unscheduleHeaderRefresh
|
||||
|
||||
function ReaderCoptListener:setAndSave(setting, property, value)
|
||||
self.ui.document._document:setIntProperty(property, value)
|
||||
self.document._document:setIntProperty(property, value)
|
||||
G_reader_settings:saveSetting(setting, value)
|
||||
-- Have crengine redraw it (even if hidden by the menu at this time)
|
||||
self.ui.rolling:updateBatteryState()
|
||||
|
||||
@@ -52,41 +52,27 @@ function ReaderTypeset:onReadSettings(config)
|
||||
or 3 -- default to 'web' mode
|
||||
end
|
||||
-- Let ConfigDialog know so it can update it on screen and have it saved on quit
|
||||
self.ui.document.configurable.block_rendering_mode = self.block_rendering_mode
|
||||
self.configurable.block_rendering_mode = self.block_rendering_mode
|
||||
end
|
||||
self:setBlockRenderingMode(self.block_rendering_mode)
|
||||
|
||||
-- set render DPI
|
||||
self.render_dpi = config:readSetting("render_dpi")
|
||||
or G_reader_settings:readSetting("copt_render_dpi")
|
||||
or 96
|
||||
self:setRenderDPI(self.render_dpi)
|
||||
-- default to 96 dpi
|
||||
self.ui.document:setRenderDPI(self.configurable.render_dpi)
|
||||
|
||||
-- uncomment if we want font size to follow DPI changes
|
||||
-- self.ui.document:setRenderScaleFontWithDPI(1)
|
||||
|
||||
-- set page margins
|
||||
local h_margins = config:readSetting("copt_h_page_margins")
|
||||
or G_reader_settings:readSetting("copt_h_page_margins")
|
||||
or G_defaults:readSetting("DCREREADER_CONFIG_H_MARGIN_SIZES_MEDIUM")
|
||||
local t_margin = config:readSetting("copt_t_page_margin")
|
||||
or G_reader_settings:readSetting("copt_t_page_margin")
|
||||
or G_defaults:readSetting("DCREREADER_CONFIG_T_MARGIN_SIZES_LARGE")
|
||||
local b_margin = config:readSetting("copt_b_page_margin")
|
||||
or G_reader_settings:readSetting("copt_b_page_margin")
|
||||
or G_defaults:readSetting("DCREREADER_CONFIG_B_MARGIN_SIZES_LARGE")
|
||||
self.unscaled_margins = { h_margins[1], t_margin, h_margins[2], b_margin }
|
||||
self.unscaled_margins = { self.configurable.h_page_margins[1], self.configurable.t_page_margin,
|
||||
self.configurable.h_page_margins[2], self.configurable.b_page_margin }
|
||||
self:onSetPageMargins(self.unscaled_margins)
|
||||
self.sync_t_b_page_margins = config:readSetting("copt_sync_t_b_page_margins")
|
||||
or G_reader_settings:readSetting("copt_sync_t_b_page_margins")
|
||||
or 0
|
||||
self.sync_t_b_page_margins = self.sync_t_b_page_margins == 1 and true or false
|
||||
self.sync_t_b_page_margins = self.configurable.sync_t_b_page_margins == 1 and true or false
|
||||
|
||||
-- default to disable TXT formatting as it does more harm than good
|
||||
-- default to disable TXT formatting as it does more harm than good (the setting is not in UI)
|
||||
self.txt_preformatted = config:readSetting("txt_preformatted")
|
||||
or G_reader_settings:readSetting("txt_preformatted")
|
||||
or 1
|
||||
self:toggleTxtPreFormatted(self.txt_preformatted)
|
||||
self.ui.document:setTxtPreFormatted(self.txt_preformatted)
|
||||
|
||||
-- default to disable smooth scaling
|
||||
self.ui.document:setImageScaling(self.configurable.smooth_scaling == 1)
|
||||
@@ -97,7 +83,6 @@ end
|
||||
|
||||
function ReaderTypeset:onSaveSettings()
|
||||
self.ui.doc_settings:saveSetting("css", self.css)
|
||||
self.ui.doc_settings:saveSetting("render_dpi", self.render_dpi)
|
||||
end
|
||||
|
||||
function ReaderTypeset:onToggleEmbeddedStyleSheet(toggle)
|
||||
@@ -149,7 +134,17 @@ end
|
||||
|
||||
function ReaderTypeset:onSetBlockRenderingMode(mode)
|
||||
self:setBlockRenderingMode(mode)
|
||||
Notification:notify(T( _("Render mode set to: %1"), optionsutil:getOptionText("SetBlockRenderingMode", mode)))
|
||||
local text = T(_("Render mode set to: %1"), optionsutil:getOptionText("SetBlockRenderingMode", mode))
|
||||
Notification:notify(text)
|
||||
return true
|
||||
end
|
||||
|
||||
function ReaderTypeset:onSetRenderDPI(dpi)
|
||||
self.configurable.render_dpi = dpi
|
||||
self.ui.document:setRenderDPI(dpi)
|
||||
self.ui:handleEvent(Event:new("UpdatePos"))
|
||||
local text = T(_("Zoom set to: %1"), optionsutil:getOptionText("SetRenderDPI", dpi))
|
||||
Notification:notify(text)
|
||||
return true
|
||||
end
|
||||
|
||||
@@ -169,12 +164,6 @@ local OBSOLETED_CSS = {
|
||||
"txt.css",
|
||||
}
|
||||
|
||||
function ReaderTypeset:onSetRenderDPI(dpi)
|
||||
self:setRenderDPI(dpi)
|
||||
Notification:notify(T( _("Zoom set to: %1"), optionsutil:getOptionText("SetRenderDPI", dpi)))
|
||||
return true
|
||||
end
|
||||
|
||||
function ReaderTypeset:genStyleSheetMenu()
|
||||
local getStyleMenuItem = function(text, css_file, separator)
|
||||
return {
|
||||
@@ -358,17 +347,6 @@ function ReaderTypeset:ensureSanerBlockRenderingFlags(mode)
|
||||
self:setBlockRenderingMode(self.block_rendering_mode)
|
||||
end
|
||||
|
||||
function ReaderTypeset:toggleTxtPreFormatted(toggle)
|
||||
self.ui.document:setTxtPreFormatted(toggle)
|
||||
self.ui:handleEvent(Event:new("UpdatePos"))
|
||||
end
|
||||
|
||||
function ReaderTypeset:setRenderDPI(dpi)
|
||||
self.render_dpi = dpi
|
||||
self.ui.document:setRenderDPI(dpi)
|
||||
self.ui:handleEvent(Event:new("UpdatePos"))
|
||||
end
|
||||
|
||||
function ReaderTypeset:addToMainMenu(menu_items)
|
||||
-- insert table to main reader menu
|
||||
menu_items.set_render_style = {
|
||||
@@ -379,7 +357,7 @@ end
|
||||
|
||||
function ReaderTypeset:makeDefaultStyleSheet(css, text, touchmenu_instance)
|
||||
UIManager:show(ConfirmBox:new{
|
||||
text = T( _("Set default style to %1?"), BD.filename(text)),
|
||||
text = T(_("Set default style to %1?"), BD.filename(text)),
|
||||
ok_callback = function()
|
||||
G_reader_settings:saveSetting("copt_css", css)
|
||||
if touchmenu_instance then touchmenu_instance:updateItems() end
|
||||
@@ -397,7 +375,7 @@ function ReaderTypeset:onSetPageTopMargin(t_margin, when_applied_callback)
|
||||
if self.sync_t_b_page_margins then
|
||||
self.unscaled_margins[4] = t_margin
|
||||
-- Let ConfigDialog know so it can update it on screen and have it saved on quit
|
||||
self.ui.document.configurable.b_page_margin = t_margin
|
||||
self.configurable.b_page_margin = t_margin
|
||||
end
|
||||
self.ui:handleEvent(Event:new("SetPageMargins", self.unscaled_margins, when_applied_callback))
|
||||
end
|
||||
@@ -407,7 +385,7 @@ function ReaderTypeset:onSetPageBottomMargin(b_margin, when_applied_callback)
|
||||
if self.sync_t_b_page_margins then
|
||||
self.unscaled_margins[2] = b_margin
|
||||
-- Let ConfigDialog know so it can update it on screen and have it saved on quit
|
||||
self.ui.document.configurable.t_page_margin = b_margin
|
||||
self.configurable.t_page_margin = b_margin
|
||||
end
|
||||
self.ui:handleEvent(Event:new("SetPageMargins", self.unscaled_margins, when_applied_callback))
|
||||
end
|
||||
@@ -418,7 +396,7 @@ function ReaderTypeset:onSetPageTopAndBottomMargin(t_b_margins, when_applied_cal
|
||||
if t_margin ~= b_margin then
|
||||
-- Set Sync T/B Margins toggle to off, as user explicitly made them differ
|
||||
self.sync_t_b_page_margins = false
|
||||
self.ui.document.configurable.sync_t_b_page_margins = 0
|
||||
self.configurable.sync_t_b_page_margins = 0
|
||||
end
|
||||
self.ui:handleEvent(Event:new("SetPageMargins", self.unscaled_margins, when_applied_callback))
|
||||
end
|
||||
@@ -435,8 +413,8 @@ function ReaderTypeset:onSyncPageTopBottomMargins(toggle, when_applied_callback)
|
||||
-- and later scaled, the end result could still be different.
|
||||
-- So just take the mean and make them equal.
|
||||
local mean_margin = Math.round((self.unscaled_margins[2] + self.unscaled_margins[4]) / 2)
|
||||
self.ui.document.configurable.t_page_margin = mean_margin
|
||||
self.ui.document.configurable.b_page_margin = mean_margin
|
||||
self.configurable.t_page_margin = mean_margin
|
||||
self.configurable.b_page_margin = mean_margin
|
||||
self.unscaled_margins = { self.unscaled_margins[1], mean_margin, self.unscaled_margins[3], mean_margin }
|
||||
self.ui:handleEvent(Event:new("SetPageMargins", self.unscaled_margins, when_applied_callback))
|
||||
when_applied_callback = nil
|
||||
|
||||
@@ -867,20 +867,12 @@ function ReaderView:onReadSettings(config)
|
||||
config:delSetting("gamma")
|
||||
end
|
||||
end
|
||||
local rotation_mode = nil
|
||||
local locked = G_reader_settings:isTrue("lock_rotation")
|
||||
-- Keep current rotation by doing nothing when sticky rota is enabled.
|
||||
if not locked then
|
||||
-- Honor docsettings's rotation
|
||||
if config:has("rotation_mode") then
|
||||
rotation_mode = config:readSetting("rotation_mode") -- Doc's
|
||||
else
|
||||
-- No doc specific rotation, pickup global defaults for the doc type
|
||||
local setting_name = self.ui.paging and "kopt_rotation_mode" or "copt_rotation_mode"
|
||||
rotation_mode = G_reader_settings:readSetting(setting_name) or Screen.DEVICE_ROTATED_UPRIGHT
|
||||
end
|
||||
end
|
||||
if rotation_mode then
|
||||
if G_reader_settings:nilOrFalse("lock_rotation") then
|
||||
local setting_name = self.ui.paging and "kopt_rotation_mode" or "copt_rotation_mode"
|
||||
-- document.configurable.rotation_mode is not ready yet
|
||||
local rotation_mode = config:readSetting(setting_name)
|
||||
or G_reader_settings:readSetting(setting_name)
|
||||
or Screen.DEVICE_ROTATED_UPRIGHT
|
||||
self:onSetRotationMode(rotation_mode)
|
||||
end
|
||||
local full_screen = config:readSetting("kopt_full_screen") or self.document.configurable.full_screen
|
||||
@@ -1078,9 +1070,8 @@ function ReaderView:onSaveSettings()
|
||||
self.ui.doc_settings:saveSetting("render_mode", self.render_mode)
|
||||
end
|
||||
-- Don't etch the current rotation in stone when sticky rotation is enabled
|
||||
local locked = G_reader_settings:isTrue("lock_rotation")
|
||||
if not locked then
|
||||
self.ui.doc_settings:saveSetting("rotation_mode", Screen:getRotationMode())
|
||||
if G_reader_settings:nilOrFalse("lock_rotation") then
|
||||
self.document.configurable.rotation_mode = Screen:getRotationMode() -- will be saved by ReaderConfig
|
||||
end
|
||||
self.ui.doc_settings:saveSetting("highlight", self.highlight.saved)
|
||||
self.ui.doc_settings:saveSetting("inverse_reading_order", self.inverse_reading_order)
|
||||
|
||||
Reference in New Issue
Block a user