mirror of https://github.com/koreader/koreader
commit
3e7d518207
File diff suppressed because it is too large
Load Diff
@ -1,41 +1,41 @@
|
|||||||
local BasePowerD = require("ui/device/basepowerd")
|
local BasePowerD = require("ui/device/basepowerd")
|
||||||
|
|
||||||
local KoboPowerD = BasePowerD:new{
|
local KoboPowerD = BasePowerD:new{
|
||||||
fl_min = 1, fl_max = 100,
|
fl_min = 1, fl_max = 100,
|
||||||
flIntensity = 20,
|
flIntensity = 20,
|
||||||
restore_settings = true,
|
restore_settings = true,
|
||||||
fl = nil,
|
fl = nil,
|
||||||
|
|
||||||
batt_capacity_file = "/sys/devices/platform/pmic_battery.1/power_supply/mc13892_bat/capacity",
|
batt_capacity_file = "/sys/devices/platform/pmic_battery.1/power_supply/mc13892_bat/capacity",
|
||||||
is_charging_file = "/sys/devices/platform/pmic_battery.1/power_supply/mc13892_bat/charge_now",
|
is_charging_file = "/sys/devices/platform/pmic_battery.1/power_supply/mc13892_bat/charge_now",
|
||||||
battCapacity = nil,
|
battCapacity = nil,
|
||||||
is_charging = nil,
|
is_charging = nil,
|
||||||
}
|
}
|
||||||
|
|
||||||
function KoboPowerD:init()
|
function KoboPowerD:init()
|
||||||
self.fl = kobolight.open()
|
self.fl = kobolight.open()
|
||||||
end
|
end
|
||||||
|
|
||||||
function KoboPowerD:toggleFrontlight()
|
function KoboPowerD:toggleFrontlight()
|
||||||
if self.fl ~= nil then
|
if self.fl ~= nil then
|
||||||
self.fl:toggle()
|
self.fl:toggle()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function KoboPowerD:setIntensityHW()
|
function KoboPowerD:setIntensityHW()
|
||||||
if self.fl ~= nil then
|
if self.fl ~= nil then
|
||||||
self.fl:setBrightness(self.flIntensity)
|
self.fl:setBrightness(self.flIntensity)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function KoboPowerD:getCapacityHW()
|
function KoboPowerD:getCapacityHW()
|
||||||
self.battCapacity = self:read_int_file(self.batt_capacity_file)
|
self.battCapacity = self:read_int_file(self.batt_capacity_file)
|
||||||
return self.battCapacity
|
return self.battCapacity
|
||||||
end
|
end
|
||||||
|
|
||||||
function KoboPowerD:isChargingHW()
|
function KoboPowerD:isChargingHW()
|
||||||
self.is_charging = self:read_int_file(self.is_charging_file)
|
self.is_charging = self:read_int_file(self.is_charging_file)
|
||||||
return self.is_charging == 1
|
return self.is_charging == 1
|
||||||
end
|
end
|
||||||
|
|
||||||
return KoboPowerD
|
return KoboPowerD
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,50 +1,50 @@
|
|||||||
local TimeVal = require("ui/timeval")
|
local TimeVal = require("ui/timeval")
|
||||||
|
|
||||||
local GestureRange = {
|
local GestureRange = {
|
||||||
ges = nil,
|
ges = nil,
|
||||||
-- spatial range limits the gesture emitting position
|
-- spatial range limits the gesture emitting position
|
||||||
range = nil,
|
range = nil,
|
||||||
-- temproal range limits the gesture emitting rate
|
-- temproal range limits the gesture emitting rate
|
||||||
rate = nil,
|
rate = nil,
|
||||||
-- span limits of this gesture
|
-- span limits of this gesture
|
||||||
scale = nil,
|
scale = nil,
|
||||||
}
|
}
|
||||||
|
|
||||||
function GestureRange:new(o)
|
function GestureRange:new(o)
|
||||||
local o = o or {}
|
local o = o or {}
|
||||||
setmetatable(o, self)
|
setmetatable(o, self)
|
||||||
self.__index = self
|
self.__index = self
|
||||||
return o
|
return o
|
||||||
end
|
end
|
||||||
|
|
||||||
function GestureRange:match(gs)
|
function GestureRange:match(gs)
|
||||||
if gs.ges ~= self.ges then
|
if gs.ges ~= self.ges then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
if self.range then
|
if self.range then
|
||||||
if not self.range:contains(gs.pos) then
|
if not self.range:contains(gs.pos) then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if self.rate then
|
if self.rate then
|
||||||
local last_time = self.last_time or TimeVal:new{}
|
local last_time = self.last_time or TimeVal:new{}
|
||||||
if gs.time - last_time > TimeVal:new{usec = 1000000 / self.rate} then
|
if gs.time - last_time > TimeVal:new{usec = 1000000 / self.rate} then
|
||||||
self.last_time = gs.time
|
self.last_time = gs.time
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if self.scale then
|
if self.scale then
|
||||||
if self.scale[1] > gs.span or self.scale[2] < gs.span then
|
if self.scale[1] > gs.span or self.scale[2] < gs.span then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if self.direction then
|
if self.direction then
|
||||||
if self.direction ~= gs.direction then
|
if self.direction ~= gs.direction then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
return GestureRange
|
return GestureRange
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,49 +1,66 @@
|
|||||||
local Configurable = {}
|
local Configurable = {}
|
||||||
|
|
||||||
|
function Configurable:new(o)
|
||||||
|
o = o or {}
|
||||||
|
setmetatable(o, self)
|
||||||
|
self.__index = self
|
||||||
|
return o
|
||||||
|
end
|
||||||
|
|
||||||
|
function Configurable:reset()
|
||||||
|
for key,value in pairs(self) do
|
||||||
|
if type(value) == "number" or type(value) == "string" then
|
||||||
|
self[key] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function Configurable:hash(sep)
|
function Configurable:hash(sep)
|
||||||
local hash = ""
|
local hash = ""
|
||||||
local excluded = {multi_threads = true,}
|
local excluded = {multi_threads = true,}
|
||||||
for key,value in pairs(self) do
|
for key,value in pairs(self) do
|
||||||
if type(value) == "number" or type(value) == "string"
|
if type(value) == "number" or type(value) == "string" then
|
||||||
and not excluded[key] then
|
hash = hash..sep..value
|
||||||
hash = hash..sep..value
|
end
|
||||||
end
|
end
|
||||||
end
|
return hash
|
||||||
return hash
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function Configurable:loadDefaults(config_options)
|
function Configurable:loadDefaults(config_options)
|
||||||
for i=1,#config_options do
|
-- reset configurable before loading new options
|
||||||
local options = config_options[i].options
|
self:reset()
|
||||||
for j=1,#config_options[i].options do
|
for i=1,#config_options do
|
||||||
local key = config_options[i].options[j].name
|
local options = config_options[i].options
|
||||||
self[key] = config_options[i].options[j].default_value
|
for j=1,#config_options[i].options do
|
||||||
if not self[key] then
|
local key = config_options[i].options[j].name
|
||||||
self[key] = config_options[i].options[j].default_arg
|
self[key] = config_options[i].options[j].default_value
|
||||||
end
|
if not self[key] then
|
||||||
end
|
self[key] = config_options[i].options[j].default_arg
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Configurable:loadSettings(settings, prefix)
|
function Configurable:loadSettings(settings, prefix)
|
||||||
for key,value in pairs(self) do
|
for key,value in pairs(self) do
|
||||||
if type(value) == "number" or type(value) == "string"
|
if type(value) == "number" or type(value) == "string"
|
||||||
or type(value) == "table" then
|
or type(value) == "table" then
|
||||||
local saved_value = settings:readSetting(prefix..key)
|
local saved_value = settings:readSetting(prefix..key)
|
||||||
self[key] = (saved_value == nil) and self[key] or saved_value
|
self[key] = (saved_value == nil) and self[key] or saved_value
|
||||||
--Debug("Configurable:loadSettings", "key", key, "saved value", saved_value,"Configurable.key", self[key])
|
--Debug("Configurable:loadSettings", "key", key, "saved value",
|
||||||
end
|
--saved_value,"Configurable.key", self[key])
|
||||||
end
|
end
|
||||||
--Debug("loaded config:", dump(Configurable))
|
end
|
||||||
|
--Debug("loaded config:", dump(Configurable))
|
||||||
end
|
end
|
||||||
|
|
||||||
function Configurable:saveSettings(settings, prefix)
|
function Configurable:saveSettings(settings, prefix)
|
||||||
for key,value in pairs(self) do
|
for key,value in pairs(self) do
|
||||||
if type(value) == "number" or type(value) == "string"
|
if type(value) == "number" or type(value) == "string"
|
||||||
or type(value) == "table" then
|
or type(value) == "table" then
|
||||||
settings:saveSetting(prefix..key, value)
|
settings:saveSetting(prefix..key, value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return Configurable
|
return Configurable
|
||||||
|
@ -1,37 +1,37 @@
|
|||||||
local EventListener = require("ui/widget/eventlistener")
|
local EventListener = require("ui/widget/eventlistener")
|
||||||
|
|
||||||
local ReaderHinting = EventListener:new{
|
local ReaderHinting = EventListener:new{
|
||||||
hinting_states = {}
|
hinting_states = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
function ReaderHinting:onHintPage()
|
function ReaderHinting:onHintPage()
|
||||||
if not self.view.hinting then return true end
|
if not self.view.hinting then return true end
|
||||||
for i=1, DHINTCOUNT do
|
for i=1, DHINTCOUNT do
|
||||||
if self.view.state.page + i <= self.ui.document.info.number_of_pages then
|
if self.view.state.page + i <= self.ui.document.info.number_of_pages then
|
||||||
self.ui.document:hintPage(
|
self.ui.document:hintPage(
|
||||||
self.view.state.page + i,
|
self.view.state.page + i,
|
||||||
self.zoom:getZoom(self.view.state.page + i),
|
self.zoom:getZoom(self.view.state.page + i),
|
||||||
self.view.state.rotation,
|
self.view.state.rotation,
|
||||||
self.view.state.gamma,
|
self.view.state.gamma,
|
||||||
self.view.render_mode)
|
self.view.render_mode)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
function ReaderHinting:onSetHinting(hinting)
|
function ReaderHinting:onSetHinting(hinting)
|
||||||
self.view.hinting = hinting
|
self.view.hinting = hinting
|
||||||
end
|
end
|
||||||
|
|
||||||
function ReaderHinting:onDisableHinting()
|
function ReaderHinting:onDisableHinting()
|
||||||
table.insert(self.hinting_states, self.view.hinting)
|
table.insert(self.hinting_states, self.view.hinting)
|
||||||
self.view.hinting = false
|
self.view.hinting = false
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
function ReaderHinting:onRestoreHinting()
|
function ReaderHinting:onRestoreHinting()
|
||||||
self.view.hinting = table.remove(self.hinting_states)
|
self.view.hinting = table.remove(self.hinting_states)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
return ReaderHinting
|
return ReaderHinting
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,104 +1,104 @@
|
|||||||
local TimeVal = {
|
local TimeVal = {
|
||||||
sec = 0,
|
sec = 0,
|
||||||
usec = 0,
|
usec = 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
function TimeVal:new(o)
|
function TimeVal:new(o)
|
||||||
local o = o or {}
|
local o = o or {}
|
||||||
if o.sec == nil then
|
if o.sec == nil then
|
||||||
o.sec = 0
|
o.sec = 0
|
||||||
end
|
end
|
||||||
if o.usec == nil then
|
if o.usec == nil then
|
||||||
o.usec = 0
|
o.usec = 0
|
||||||
elseif o.usec > 1000000 then
|
elseif o.usec > 1000000 then
|
||||||
o.sec = o.sec + maht.floor(o.usec/1000000)
|
o.sec = o.sec + maht.floor(o.usec/1000000)
|
||||||
o.usec = o.usec % 1000000
|
o.usec = o.usec % 1000000
|
||||||
end
|
end
|
||||||
setmetatable(o, self)
|
setmetatable(o, self)
|
||||||
self.__index = self
|
self.__index = self
|
||||||
return o
|
return o
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function TimeVal:__lt(time_b)
|
function TimeVal:__lt(time_b)
|
||||||
if self.sec < time_b.sec then
|
if self.sec < time_b.sec then
|
||||||
return true
|
return true
|
||||||
elseif self.sec > time_b.sec then
|
elseif self.sec > time_b.sec then
|
||||||
return false
|
return false
|
||||||
else
|
else
|
||||||
-- self.sec == time_b.sec
|
-- self.sec == time_b.sec
|
||||||
if self.usec < time_b.usec then
|
if self.usec < time_b.usec then
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function TimeVal:__le(time_b)
|
function TimeVal:__le(time_b)
|
||||||
if self.sec < time_b.sec then
|
if self.sec < time_b.sec then
|
||||||
return true
|
return true
|
||||||
elseif self.sec > time_b.sec then
|
elseif self.sec > time_b.sec then
|
||||||
return false
|
return false
|
||||||
else
|
else
|
||||||
-- self.sec == time_b.sec
|
-- self.sec == time_b.sec
|
||||||
if self.usec > time_b.usec then
|
if self.usec > time_b.usec then
|
||||||
return false
|
return false
|
||||||
else
|
else
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function TimeVal:__eq(time_b)
|
function TimeVal:__eq(time_b)
|
||||||
if self.sec == time_b.sec and self.usec == time_b.usec then
|
if self.sec == time_b.sec and self.usec == time_b.usec then
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function TimeVal:__sub(time_b)
|
function TimeVal:__sub(time_b)
|
||||||
local diff = TimeVal:new{}
|
local diff = TimeVal:new{}
|
||||||
|
|
||||||
diff.sec = self.sec - time_b.sec
|
diff.sec = self.sec - time_b.sec
|
||||||
diff.usec = self.usec - time_b.usec
|
diff.usec = self.usec - time_b.usec
|
||||||
|
|
||||||
if diff.sec < 0 and diff.usec > 0 then
|
if diff.sec < 0 and diff.usec > 0 then
|
||||||
diff.sec = diff.sec + 1
|
diff.sec = diff.sec + 1
|
||||||
diff.usec = diff.usec - 1000000
|
diff.usec = diff.usec - 1000000
|
||||||
elseif diff.sec > 0 and diff.usec < 0 then
|
elseif diff.sec > 0 and diff.usec < 0 then
|
||||||
diff.sec = diff.sec - 1
|
diff.sec = diff.sec - 1
|
||||||
diff.usec = diff.usec + 1000000
|
diff.usec = diff.usec + 1000000
|
||||||
end
|
end
|
||||||
|
|
||||||
return diff
|
return diff
|
||||||
end
|
end
|
||||||
|
|
||||||
function TimeVal:__add(time_b)
|
function TimeVal:__add(time_b)
|
||||||
local sum = TimeVal:new{}
|
local sum = TimeVal:new{}
|
||||||
|
|
||||||
sum.sec = self.sec + time_b.sec
|
sum.sec = self.sec + time_b.sec
|
||||||
sum.usec = self.usec + time_b.usec
|
sum.usec = self.usec + time_b.usec
|
||||||
if sum.usec > 1000000 then
|
if sum.usec > 1000000 then
|
||||||
sum.usec = sum.usec - 1000000
|
sum.usec = sum.usec - 1000000
|
||||||
sum.sec = sum.sec + 1
|
sum.sec = sum.sec + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
if sum.sec < 0 and sum.usec > 0 then
|
if sum.sec < 0 and sum.usec > 0 then
|
||||||
sum.sec = sum.sec + 1
|
sum.sec = sum.sec + 1
|
||||||
sum.usec = sum.usec - 1000000
|
sum.usec = sum.usec - 1000000
|
||||||
elseif sum.sec > 0 and sum.usec < 0 then
|
elseif sum.sec > 0 and sum.usec < 0 then
|
||||||
sum.sec = sum.sec - 1
|
sum.sec = sum.sec - 1
|
||||||
sum.usec = sum.usec + 1000000
|
sum.usec = sum.usec + 1000000
|
||||||
end
|
end
|
||||||
|
|
||||||
return sum
|
return sum
|
||||||
end
|
end
|
||||||
|
|
||||||
function TimeVal:now()
|
function TimeVal:now()
|
||||||
local sec, usec = util.gettime()
|
local sec, usec = util.gettime()
|
||||||
return TimeVal:new{sec = sec, usec = usec}
|
return TimeVal:new{sec = sec, usec = usec}
|
||||||
end
|
end
|
||||||
|
|
||||||
return TimeVal
|
return TimeVal
|
||||||
|
@ -1,33 +1,33 @@
|
|||||||
local Widget = require("ui/widget/widget")
|
local Widget = require("ui/widget/widget")
|
||||||
|
|
||||||
local LineWidget = Widget:new{
|
local LineWidget = Widget:new{
|
||||||
style = "solid",
|
style = "solid",
|
||||||
background = 15,
|
background = 15,
|
||||||
dimen = nil,
|
dimen = nil,
|
||||||
--@TODO replay dirty hack here 13.03 2013 (houqp)
|
--@TODO replay dirty hack here 13.03 2013 (houqp)
|
||||||
empty_segments = nil,
|
empty_segments = nil,
|
||||||
}
|
}
|
||||||
|
|
||||||
function LineWidget:paintTo(bb, x, y)
|
function LineWidget:paintTo(bb, x, y)
|
||||||
if self.style == "dashed" then
|
if self.style == "dashed" then
|
||||||
for i = 0, self.dimen.w - 20, 20 do
|
for i = 0, self.dimen.w - 20, 20 do
|
||||||
bb:paintRect(x + i, y,
|
bb:paintRect(x + i, y,
|
||||||
16, self.dimen.h, self.background)
|
16, self.dimen.h, self.background)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if self.empty_segments then
|
if self.empty_segments then
|
||||||
bb:paintRect(x, y,
|
bb:paintRect(x, y,
|
||||||
self.empty_segments[1].s,
|
self.empty_segments[1].s,
|
||||||
self.dimen.h,
|
self.dimen.h,
|
||||||
self.background)
|
self.background)
|
||||||
bb:paintRect(x + self.empty_segments[1].e, y,
|
bb:paintRect(x + self.empty_segments[1].e, y,
|
||||||
self.dimen.w - x - self.empty_segments[1].e,
|
self.dimen.w - x - self.empty_segments[1].e,
|
||||||
self.dimen.h,
|
self.dimen.h,
|
||||||
self.background)
|
self.background)
|
||||||
else
|
else
|
||||||
bb:paintRect(x, y, self.dimen.w, self.dimen.h, self.background)
|
bb:paintRect(x, y, self.dimen.w, self.dimen.h, self.background)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return LineWidget
|
return LineWidget
|
||||||
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue