mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Screensaver on Kindle without Special Offers (#2757)
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user