Screensaver on Kindle without Special Offers (#2757)

pull/2763/head
Robert 7 years ago committed by Frans de Jonge
parent 7872bd3bc1
commit 9a247e86ae

@ -96,7 +96,7 @@ function FileManagerMenu:setUpdateItemTable()
G_reader_settings:flush()
end
}
if Device.isKobo() then
if Device:supportsScreensaver() then
self.menu_items.screensaver = {
text = _("Screensaver"),
sub_item_table = {

@ -108,7 +108,7 @@ function ReaderMenu:setUpdateItemTable()
self.menu_items.djvu_render_mode = self.view:getRenderModeMenuTable()
end
if Device:isKobo() and Screensaver:isUsingBookCover() then
if Device:supportsScreensaver() and Screensaver:isUsingBookCover() then
local excluded = function()
return self.ui.doc_settings:readSetting("exclude_screensaver") or false
end
@ -118,6 +118,20 @@ function ReaderMenu:setUpdateItemTable()
self.menu_items.screensaver = {
text = _("Screensaver"),
sub_item_table = {
{
text = _("Use last book's cover as screensaver"),
checked_func = Screensaver.isUsingBookCover,
callback = function()
if Screensaver:isUsingBookCover() then
G_reader_settings:saveSetting(
"use_lastfile_as_screensaver", false)
else
G_reader_settings:delSetting(
"use_lastfile_as_screensaver")
end
G_reader_settings:flush()
end
},
{
text = _("Exclude this book's cover from screensaver"),
checked_func = excluded,

@ -164,6 +164,8 @@ function Device:powerOff() end
-- Hardware specific method to initialize network manager module
function Device:initNetworkManager() end
function Device:supportsScreensaver() return false end
--[[
prepare for application shutdown
--]]

@ -34,6 +34,40 @@ function Kindle:initNetworkManager(NetworkMgr)
end
end
--[[
Test if a kindle device has Special Offers
--]]
local function isSpecialOffers()
-- Look at the current blanket modules to see if the SO screensavers are enabled...
local lipc = require("liblipclua")
if not lipc then
logger.warn("could not load liblibclua")
return true
end
local lipc_handle = lipc.init("com.github.koreader.device")
if not lipc_handle then
logger.warn("could not get lipc handle")
return true
end
local is_so
local loaded_blanket_modules = lipc_handle:get_string_property("com.lab126.blanket", "load")
if string.find(loaded_blanket_modules, "ad_screensaver") then
is_so = true
else
is_so = false
end
lipc_handle:close()
return is_so
end
function Kindle:supportsScreensaver()
if isSpecialOffers() then
return false
else
return true
end
end
function Kindle:usbPlugIn()
if self.charging_mode == false and self.screen_saver_mode == false then
self.screen:saveCurrentBB()
@ -46,6 +80,10 @@ function Kindle:usbPlugIn()
end
function Kindle:intoScreenSaver()
local Screensaver = require("ui/screensaver")
if self:supportsScreensaver() and Screensaver:isUsingBookCover() then
Screensaver:show("suspend")
end
self.powerd:beforeSuspend()
if self.charging_mode == false and self.screen_saver_mode == false then
self.screen:saveCurrentBB()
@ -64,6 +102,10 @@ function Kindle:outofScreenSaver()
if os.getenv("AWESOME_STOPPED") == "yes" then
os.execute("killall -stop awesome")
end
local Screensaver = require("ui/screensaver")
if self:supportsScreensaver() and Screensaver.isUsingBookCover() then
Screensaver:close()
end
-- wait for native system update screen before we recover saved
-- Blitbuffer.
util.usleep(1500000)
@ -473,30 +515,6 @@ function KindleBasic2:init()
self.input.open("fake_events")
end
--[[
Test if a kindle device has Special Offers
--]]
local function isSpecialOffers()
-- Look at the current blanket modules to see if the SO screensavers are enabled...
local lipc = require("liblipclua")
if not lipc then
logger.warn("could not load liblibclua")
return false
end
local lipc_handle = lipc.init("com.github.koreader.device")
if not lipc_handle then
logger.warn("could not get lipc handle")
return false
end
local so = false
local loaded_blanket_modules = lipc_handle:get_string_property("com.lab126.blanket", "load")
if string.find(loaded_blanket_modules, "ad_screensaver") then
so = true
end
lipc_handle:close()
return so
end
function KindleTouch:exit()
if isSpecialOffers() then
-- fake a touch event

@ -245,6 +245,8 @@ function Kobo:initNetworkManager(NetworkMgr)
end
end
function Kobo:supportsScreensaver() return true end
local probeEvEpochTime
-- this function will update itself after the first touch event
probeEvEpochTime = function(self, ev)

Loading…
Cancel
Save