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