2
0
mirror of https://github.com/koreader/koreader synced 2024-10-31 21:20:20 +00:00
koreader/frontend/ui/elements/screen_dpi_menu_table.lua
Hans-Werner Hilse 3066c86e38 Refactoring hardware abstraction
This is a major overhaul of the hardware abstraction layer.
A few notes:

General platform distinction happens in
  frontend/device.lua
which will delegate everything else to
  frontend/device/<platform_name>/device.lua
which should extend
  frontend/device/generic/device.lua

Screen handling is implemented in
  frontend/device/screen.lua
which includes the *functionality* to support device specifics.
Actually setting up the device specific functionality, however,
is done in the device specific setup code in the relevant
device.lua file.

The same goes for input handling.
2014-11-02 21:19:04 +01:00

75 lines
2.3 KiB
Lua

local _ = require("gettext")
local Screen = require("device").screen
local function dpi() return G_reader_settings:readSetting("screen_dpi") end
local function custom() return G_reader_settings:readSetting("custom_screen_dpi") end
local function setDPI(dpi)
local InfoMessage = require("ui/widget/infomessage")
local UIManager = require("ui/uimanager")
UIManager:show(InfoMessage:new{
text = _("This will take effect on next restart."),
})
Screen:setDPI(dpi)
end
return {
text = _("Screen DPI"),
sub_item_table = {
{
text = _("Auto"),
checked_func = function()
return dpi() == nil
end,
callback = function() setDPI() end
},
{
text = _("Small"),
checked_func = function()
local dpi, custom = dpi(), custom()
return dpi and dpi <= 140 and dpi ~= custom
end,
callback = function() setDPI(120) end
},
{
text = _("Medium"),
checked_func = function()
local dpi, custom = dpi(), custom()
return dpi and dpi > 140 and dpi <= 200 and dpi ~= custom
end,
callback = function() setDPI(160) end
},
{
text = _("Large"),
checked_func = function()
local dpi, custom = dpi(), custom()
return dpi and dpi > 200 and dpi ~= custom
end,
callback = function() setDPI(240) end
},
{
text = _("Custom DPI") .. ": " .. (custom() or 160),
checked_func = function()
local dpi, custom = dpi(), custom()
return custom and dpi == custom
end,
callback = function() setDPI(custom() or 160) end,
hold_input = {
title = _("Input screen DPI"),
type = "number",
hint = "(90 - 330)",
callback = function(input)
local dpi = tonumber(input)
dpi = dpi < 90 and 90 or dpi
dpi = dpi > 330 and 330 or dpi
G_reader_settings:saveSetting("custom_screen_dpi", dpi)
setDPI(dpi)
end,
},
},
}
}