mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
This should finish the work to make all globals to local variables. That allows LuaJIT to properly compile things by interning the references to the relevant parts (rather than looking up globals all the time which stops a trace).
122 lines
2.9 KiB
Lua
122 lines
2.9 KiB
Lua
local InputContainer = require("ui/widget/container/inputcontainer")
|
|
local Geom = require("ui/geometry")
|
|
local Screen = require("ui/screen")
|
|
local Device = require("ui/device")
|
|
local GestureRange = require("ui/gesturerange")
|
|
local InputDialog = require("ui/widget/inputdialog")
|
|
local UIManager = require("ui/uimanager")
|
|
local Notification = require("ui/widget/notification")
|
|
local _ = require("gettext")
|
|
|
|
local ReaderFrontLight = InputContainer:new{
|
|
steps = {0,1,2,3,4,5,6,7,8,9,10},
|
|
}
|
|
|
|
function ReaderFrontLight:init()
|
|
if Device:getFrontlight() ~= nil then
|
|
self.ges_events = {
|
|
Adjust = {
|
|
GestureRange:new{
|
|
ges = "two_finger_pan",
|
|
range = Geom:new{
|
|
x = 0, y = 0,
|
|
w = Screen:getWidth(),
|
|
h = Screen:getHeight(),
|
|
},
|
|
rate = 2.0,
|
|
}
|
|
},
|
|
}
|
|
self.ui.menu:registerToMainMenu(self)
|
|
end
|
|
end
|
|
|
|
function ReaderFrontLight:onAdjust(arg, ges)
|
|
local fl = Device:getFrontlight()
|
|
if fl.intensity ~= nil then
|
|
local rel_proportion = ges.distance / Screen:getWidth()
|
|
local delta_int = self.steps[math.ceil(#self.steps*rel_proportion)] or self.steps[#self.steps]
|
|
local msg = nil
|
|
if ges.direction == "north" then
|
|
msg = _("Increase front light intensity to ")
|
|
fl:setIntensity(fl.intensity + delta_int)
|
|
elseif ges.direction == "south" then
|
|
msg = _("Decrease front light intensity to ")
|
|
fl:setIntensity(fl.intensity - delta_int)
|
|
end
|
|
if msg ~= nil then
|
|
UIManager:show(Notification:new{
|
|
text = msg..fl.intensity,
|
|
timeout = 1
|
|
})
|
|
end
|
|
end
|
|
return true
|
|
end
|
|
|
|
function ReaderFrontLight:addToMainMenu(tab_item_table)
|
|
-- insert fldial command to main reader menu
|
|
table.insert(tab_item_table.main, {
|
|
text = _("Frontlight settings"),
|
|
callback = function()
|
|
self:onShowFlDialog()
|
|
end,
|
|
})
|
|
end
|
|
|
|
function ReaderFrontLight:onShowFlDialog()
|
|
local fl = Device:getFrontlight()
|
|
self.fl_dialog = InputDialog:new{
|
|
title = _("Frontlight Level"),
|
|
input_hint = ("(%d - %d)"):format(fl.min, fl.max),
|
|
buttons = {
|
|
{
|
|
{
|
|
text = _("Toggle"),
|
|
enabled = true,
|
|
callback = function()
|
|
self.fl_dialog.input:setText("")
|
|
fl:toggle()
|
|
end,
|
|
},
|
|
{
|
|
text = _("Apply"),
|
|
enabled = true,
|
|
callback = function()
|
|
self:fldialIntensity()
|
|
end,
|
|
},
|
|
{
|
|
text = _("OK"),
|
|
enabled = true,
|
|
callback = function()
|
|
self:fldialIntensity()
|
|
self:close()
|
|
end,
|
|
},
|
|
|
|
},
|
|
},
|
|
input_type = "number",
|
|
width = Screen:getWidth() * 0.8,
|
|
height = Screen:getHeight() * 0.2,
|
|
}
|
|
self.fl_dialog:onShowKeyboard()
|
|
UIManager:show(self.fl_dialog)
|
|
end
|
|
|
|
function ReaderFrontLight:close()
|
|
self.fl_dialog:onClose()
|
|
G_reader_settings:saveSetting("frontlight_intensity", Device:getFrontlight().intensity)
|
|
UIManager:close(self.fl_dialog)
|
|
end
|
|
|
|
function ReaderFrontLight:fldialIntensity()
|
|
local number = tonumber(self.fl_dialog:getInputText())
|
|
if number ~= nil then
|
|
Device:getFrontlight():setIntensity(number)
|
|
end
|
|
end
|
|
|
|
return ReaderFrontLight
|