2020-12-18 17:26:58 +00:00
|
|
|
-- Start with a empty stub, because 99.9% of users won't actually need this.
|
|
|
|
local ReaderActivityIndicator = {}
|
|
|
|
|
|
|
|
function ReaderActivityIndicator:isStub() return true end
|
|
|
|
function ReaderActivityIndicator:init() end
|
|
|
|
function ReaderActivityIndicator:onStartActivityIndicator() end
|
|
|
|
function ReaderActivityIndicator:onStopActivityIndicator() end
|
|
|
|
function ReaderActivityIndicator:coda() end
|
|
|
|
|
|
|
|
-- Now, if we're on Kindle, and we haven't actually murdered Pillow, see what we can do...
|
2014-10-30 18:42:18 +00:00
|
|
|
local Device = require("device")
|
2020-12-18 17:26:58 +00:00
|
|
|
|
|
|
|
if Device:isKindle() then
|
|
|
|
if os.getenv("PILLOW_HARD_DISABLED") or os.getenv("PILLOW_SOFT_DISABLED") then
|
|
|
|
-- Pillow is dead, bye!
|
|
|
|
return ReaderActivityIndicator
|
|
|
|
end
|
|
|
|
|
|
|
|
if not Device:isTouchDevice() then
|
|
|
|
-- No lipc, bye!
|
|
|
|
return ReaderActivityIndicator
|
|
|
|
end
|
|
|
|
else
|
|
|
|
-- Not on Kindle, bye!
|
|
|
|
return ReaderActivityIndicator
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
-- Okay, if we're here, it's basically because we're running on a Kindle on FW 5.x under KPV
|
|
|
|
local EventListener = require("ui/widget/eventlistener")
|
2014-06-04 09:22:45 +00:00
|
|
|
local util = require("ffi/util")
|
2013-10-18 20:38:07 +00:00
|
|
|
-- lipc
|
2013-04-21 08:54:59 +00:00
|
|
|
|
2020-12-18 17:26:58 +00:00
|
|
|
ReaderActivityIndicator = EventListener:new{}
|
2013-04-21 08:54:59 +00:00
|
|
|
|
2020-12-23 22:40:07 +00:00
|
|
|
function ReaderActivityIndicator:isStub() return false end
|
|
|
|
|
2013-04-21 08:54:59 +00:00
|
|
|
function ReaderActivityIndicator:init()
|
2022-09-27 23:10:50 +00:00
|
|
|
local haslipc, lipc = pcall(require, "liblipclua")
|
|
|
|
if haslipc then
|
2020-12-18 17:26:58 +00:00
|
|
|
self.lipc_handle = lipc.init("com.github.koreader.activityindicator")
|
2014-03-13 13:52:43 +00:00
|
|
|
end
|
2013-04-21 08:54:59 +00:00
|
|
|
end
|
|
|
|
|
2014-06-04 09:22:45 +00:00
|
|
|
function ReaderActivityIndicator:onStartActivityIndicator()
|
2014-03-13 13:52:43 +00:00
|
|
|
if self.lipc_handle then
|
|
|
|
-- check if activity indicator is needed
|
|
|
|
if self.document.configurable.text_wrap == 1 then
|
|
|
|
-- start indicator depends on pillow being enabled
|
|
|
|
self.lipc_handle:set_string_property(
|
|
|
|
"com.lab126.pillow", "activityIndicator",
|
|
|
|
'{"activityIndicator":{ \
|
|
|
|
"action":"start","timeout":10000, \
|
|
|
|
"clientId":"com.github.koreader.activityindicator", \
|
|
|
|
"priority":true}}')
|
|
|
|
self.indicator_started = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return true
|
2013-04-21 08:54:59 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
function ReaderActivityIndicator:onStopActivityIndicator()
|
2014-03-13 13:52:43 +00:00
|
|
|
if self.lipc_handle and self.indicator_started then
|
|
|
|
-- stop indicator depends on pillow being enabled
|
|
|
|
self.lipc_handle:set_string_property(
|
|
|
|
"com.lab126.pillow", "activityIndicator",
|
|
|
|
'{"activityIndicator":{ \
|
|
|
|
"action":"stop","timeout":10000, \
|
|
|
|
"clientId":"com.github.koreader.activityindicator", \
|
|
|
|
"priority":true}}')
|
|
|
|
self.indicator_started = false
|
|
|
|
util.usleep(1000000)
|
|
|
|
end
|
|
|
|
return true
|
2013-04-21 08:54:59 +00:00
|
|
|
end
|
2013-10-18 20:38:07 +00:00
|
|
|
|
2014-07-04 18:10:38 +00:00
|
|
|
function ReaderActivityIndicator:coda()
|
|
|
|
if self.lipc_handle then
|
|
|
|
self.lipc_handle:close()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-10-18 20:38:07 +00:00
|
|
|
return ReaderActivityIndicator
|