local ConfirmBox = require ( " ui/widget/confirmbox " )
local Device = require ( " device " )
local UIManager = require ( " ui/uimanager " )
local WidgetContainer = require ( " ui/widget/container/widgetcontainer " )
local _ = require ( " gettext " )
local function showConfirmBox ( disable )
UIManager : show ( ConfirmBox : new {
text = _ ( " The system won't sleep when this message is showing. \n Press \" Stay Alive \" if you prefer to keep system on even after closing this notification. *It will drain the battery.* \n \n If for any reasons KOReader died before \" Close \" is pressed, please start and close KeepAlive plugin again to ensure settings are reset. " ) ,
ok_text = _ ( " Close " ) ,
ok_callback = disable ,
cancel_text = _ ( " Stay Alive " ) ,
} )
end
local menuItem = {
text = _ ( " Keep Alive " ) ,
}
local disable
if Device : isKobo ( ) then
disable = function ( ) UIManager : _startAutoSuspend ( ) end
menuItem.callback = function ( )
UIManager : _stopAutoSuspend ( )
showConfirmBox ( disable )
end
elseif Device : isKindle ( ) then
disable = function ( )
os.execute ( " lipc-set-prop com.lab126.powerd preventScreenSaver 0 " )
end
menuItem.callback = function ( )
os.execute ( " lipc-set-prop com.lab126.powerd preventScreenSaver 1 " )
showConfirmBox ( disable )
end
else
return { disabled = true , }
end
local KeepAlive = WidgetContainer : new {
name = " keepalive " ,
}
function KeepAlive : init ( )
self.ui . menu : registerToMainMenu ( self )
end
function KeepAlive : addToMainMenu ( tab_item_table )
table.insert ( tab_item_table.plugins , menuItem )
end
return KeepAlive