mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
@@ -98,6 +98,16 @@ function Device:isKindle2()
|
||||
return (self:getModel() == "Kindle2")
|
||||
end
|
||||
|
||||
function Device:isKindle()
|
||||
local is_kindle = false
|
||||
local kindle_sn = io.open("/proc/usid", "r")
|
||||
if kindle_sn then
|
||||
is_kindle = true
|
||||
kindle_sn:close()
|
||||
end
|
||||
return is_kindle
|
||||
end
|
||||
|
||||
function Device:isKobo()
|
||||
return string.find(self:getModel() or "", "Kobo_") == 1
|
||||
end
|
||||
|
||||
@@ -39,6 +39,8 @@ local UIManager = {
|
||||
FULL_REFRESH_COUNT = DRCOUNTMAX,
|
||||
refresh_count = 0,
|
||||
|
||||
event_handlers = nil,
|
||||
|
||||
_running = true,
|
||||
_window_stack = {},
|
||||
_execution_stack = {},
|
||||
@@ -46,36 +48,97 @@ local UIManager = {
|
||||
_zeromqs = {},
|
||||
}
|
||||
|
||||
-- For the Kobo Aura an offset is needed, because the bezel make the visible screen smaller.
|
||||
if Device:getModel() ~= 'Kobo_phoenix' then
|
||||
function UIManager:offsetX()
|
||||
return 0
|
||||
end
|
||||
function UIManager:offsetY()
|
||||
return 0
|
||||
end
|
||||
else
|
||||
function UIManager:offsetX()
|
||||
if Screen.cur_rotation_mode == 0 then
|
||||
return 4
|
||||
elseif Screen.cur_rotation_mode == 1 then
|
||||
return 15
|
||||
else
|
||||
return 3
|
||||
|
||||
function UIManager:init()
|
||||
-- For the Kobo Aura an offset is needed, because the bezel make the
|
||||
-- visible screen smaller.
|
||||
if Device:getModel() ~= 'Kobo_phoenix' then
|
||||
function self:offsetX() return 0 end
|
||||
function self:offsetY() return 0 end
|
||||
else
|
||||
function self:offsetX()
|
||||
if Screen.cur_rotation_mode == 0 then
|
||||
return 4
|
||||
elseif Screen.cur_rotation_mode == 1 then
|
||||
return 15
|
||||
else
|
||||
return 3
|
||||
end
|
||||
end
|
||||
function self:offsetY()
|
||||
if Screen.cur_rotation_mode == 0 then
|
||||
return 3
|
||||
else
|
||||
return 4
|
||||
end
|
||||
end
|
||||
end
|
||||
function UIManager:offsetY()
|
||||
if Screen.cur_rotation_mode == 0 then
|
||||
return 3
|
||||
elseif Screen.cur_rotation_mode == 1 then
|
||||
return 4
|
||||
else
|
||||
return 4
|
||||
|
||||
self.event_handlers = {
|
||||
__default__ = function(input_event)
|
||||
self:sendEvent(input_event)
|
||||
end,
|
||||
SaveState = function()
|
||||
self:sendEvent(Event:new("FlushSettings"))
|
||||
end
|
||||
}
|
||||
if Device:isKobo() then
|
||||
-- lazy create suspend_msg to avoid dependence loop
|
||||
local suspend_msg = nil
|
||||
function kobo_power(input_event)
|
||||
if (input_event == "Power" or input_event == "Suspend")
|
||||
and not Device.screen_saver_mode then
|
||||
if not suspend_msg then
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
suspend_msg = InfoMessage:new{ text = _("Suspended") }
|
||||
end
|
||||
self:show(suspend_msg)
|
||||
self:sendEvent(Event:new("FlushSettings"))
|
||||
Device:prepareSuspend()
|
||||
self:scheduleIn(2, function() Device:Suspend() end)
|
||||
elseif (input_event == "Power" or input_event == "Resume")
|
||||
and Device.screen_saver_mode then
|
||||
Device:Resume()
|
||||
self:sendEvent(Event:new("Resume"))
|
||||
if suspend_msg then
|
||||
self:close(suspend_msg)
|
||||
end
|
||||
end
|
||||
end
|
||||
self.event_handlers["Power"] = kobo_power
|
||||
self.event_handlers["Suspend"] = kobo_power
|
||||
self.event_handlers["Resume"] = kobo_power
|
||||
self.event_handlers["Light"] = function()
|
||||
Device:getPowerDevice():toggleFrontlight()
|
||||
end
|
||||
self.event_handlers["__default__"] = function(input_event)
|
||||
if Device.screen_saver_mode then
|
||||
-- Suspension in Kobo can be interrupted by screen updates. We
|
||||
-- ignore user touch input here so screen udpate won't be
|
||||
-- triggered in suspend mode
|
||||
return
|
||||
else
|
||||
self:sendEvent(input_event)
|
||||
end
|
||||
end
|
||||
elseif Device:isKindle() then
|
||||
self.event_handlers["IntoSS"] = function()
|
||||
self:sendEvent(Event:new("FlushSettings"))
|
||||
Device:intoScreenSaver()
|
||||
end
|
||||
self.event_handlers["OutOfSS"] = function()
|
||||
Device:outofScreenSaver()
|
||||
end
|
||||
self.event_handlers["Charging"] = function()
|
||||
Device:usbPlugIn()
|
||||
end
|
||||
self.event_handlers["NotCharging"] = function()
|
||||
Device:usbPlugOut()
|
||||
self:sendEvent(Event:new("NotCharging"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- register & show a widget
|
||||
function UIManager:show(widget, x, y)
|
||||
-- put widget on top of stack
|
||||
@@ -246,7 +309,9 @@ function UIManager:run()
|
||||
local force_fast_refresh = false
|
||||
for _, widget in ipairs(self._window_stack) do
|
||||
if self.repaint_all or self._dirty[widget.widget] then
|
||||
widget.widget:paintTo(Screen.bb, widget.x + UIManager:offsetX(), widget.y + UIManager:offsetY() )
|
||||
widget.widget:paintTo(Screen.bb,
|
||||
widget.x + UIManager:offsetX(),
|
||||
widget.y + UIManager:offsetY())
|
||||
if self._dirty[widget.widget] == "auto" then
|
||||
request_full_refresh = true
|
||||
end
|
||||
@@ -340,41 +405,16 @@ function UIManager:run()
|
||||
|
||||
-- delegate input_event to handler
|
||||
if input_event then
|
||||
--DEBUG("in ui.lua:", input_event)
|
||||
if input_event == "IntoSS" then
|
||||
self:sendEvent(Event:new("FlushSettings"))
|
||||
Device:intoScreenSaver()
|
||||
elseif input_event == "OutOfSS" then
|
||||
Device:outofScreenSaver()
|
||||
elseif input_event == "Charging" then
|
||||
Device:usbPlugIn()
|
||||
elseif input_event == "NotCharging" then
|
||||
Device:usbPlugOut()
|
||||
self:sendEvent(Event:new("NotCharging"))
|
||||
elseif input_event == "Light" then
|
||||
Device:getPowerDevice():toggleFrontlight()
|
||||
elseif (input_event == "Power" and not Device.screen_saver_mode)
|
||||
or input_event == "Suspend" then
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
self:show(InfoMessage:new{
|
||||
text = _("Standby"),
|
||||
timeout = 1,
|
||||
})
|
||||
self:sendEvent(Event:new("FlushSettings"))
|
||||
Device:prepareSuspend()
|
||||
self:scheduleIn(0.5, function() Device:Suspend() end)
|
||||
elseif (input_event == "Power" and Device.screen_saver_mode)
|
||||
or input_event == "Resume" then
|
||||
Device:Resume()
|
||||
self:sendEvent(Event:new("Resume"))
|
||||
elseif input_event == "SaveState" then
|
||||
self:sendEvent(Event:new("FlushSettings"))
|
||||
local handler = self.event_handlers[input_event]
|
||||
if handler then
|
||||
handler(input_event)
|
||||
else
|
||||
self:sendEvent(input_event)
|
||||
self.event_handlers["__default__"](input_event)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
UIManager:init()
|
||||
return UIManager
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
export PATH=$PATH:/sbin:/usr/sbin
|
||||
|
||||
#disable wifi
|
||||
if lsmod | grep -q sdio_wifi_pwr ; then
|
||||
if lsmod | grep -q sdio_wifi_pwr ; then
|
||||
wlarm_le -i eth0 down
|
||||
ifconfig eth0 down
|
||||
/sbin/rmmod -r dhd
|
||||
|
||||
Reference in New Issue
Block a user