mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Clarify our OOP semantics across the codebase (#9586)
Basically: * Use `extend` for class definitions * Use `new` for object instantiations That includes some minor code cleanups along the way: * Updated `Widget`'s docs to make the semantics clearer. * Removed `should_restrict_JIT` (it's been dead code since https://github.com/koreader/android-luajit-launcher/pull/283) * Minor refactoring of LuaSettings/LuaData/LuaDefaults/DocSettings to behave (mostly, they are instantiated via `open` instead of `new`) like everything else and handle inheritance properly (i.e., DocSettings is now a proper LuaSettings subclass). * Default to `WidgetContainer` instead of `InputContainer` for stuff that doesn't actually setup key/gesture events. * Ditto for explicit `*Listener` only classes, make sure they're based on `EventListener` instead of something uselessly fancier. * Unless absolutely necessary, do not store references in class objects, ever; only values. Instead, always store references in instances, to avoid both sneaky inheritance issues, and sneaky GC pinning of stale references. * ReaderUI: Fix one such issue with its `active_widgets` array, with critical implications, as it essentially pinned *all* of ReaderUI's modules, including their reference to the `Document` instance (i.e., that was a big-ass leak). * Terminal: Make sure the shell is killed on plugin teardown. * InputText: Fix Home/End/Del physical keys to behave sensibly. * InputContainer/WidgetContainer: If necessary, compute self.dimen at paintTo time (previously, only InputContainers did, which might have had something to do with random widgets unconcerned about input using it as a baseclass instead of WidgetContainer...). * OverlapGroup: Compute self.dimen at *init* time, because for some reason it needs to do that, but do it directly in OverlapGroup instead of going through a weird WidgetContainer method that it was the sole user of. * ReaderCropping: Under no circumstances should a Document instance member (here, self.bbox) risk being `nil`ed! * Kobo: Minor code cleanups.
This commit is contained in:
@@ -32,37 +32,32 @@ local T = require("ffi/util").template
|
||||
local stats_book = {}
|
||||
|
||||
--[[
|
||||
--Save into sdr folder addtional section
|
||||
-- Stored in the sidecar metadata, in a dedicated table:
|
||||
["summary"] = {
|
||||
["rating"] = 5,
|
||||
["note"] = "Some text",
|
||||
["status"] = "Reading"
|
||||
["modified"] = "24.01.2016"
|
||||
},]]
|
||||
local BookStatusWidget = FocusManager:new{
|
||||
local BookStatusWidget = FocusManager:extend{
|
||||
padding = Size.padding.fullscreen,
|
||||
settings = nil,
|
||||
thumbnail = nil,
|
||||
props = nil,
|
||||
star = {},
|
||||
summary = {
|
||||
rating = nil,
|
||||
note = nil,
|
||||
status = "",
|
||||
modified = "",
|
||||
},
|
||||
star = nil, -- Button
|
||||
summary = nil, -- hash
|
||||
}
|
||||
|
||||
function BookStatusWidget:init()
|
||||
self.layout = {}
|
||||
-- What a blank, full summary table should look like
|
||||
local new_summary = {
|
||||
rating = nil,
|
||||
note = nil,
|
||||
status = "",
|
||||
modified = "",
|
||||
}
|
||||
if self.settings then
|
||||
-- What a blank, full summary table should look like
|
||||
local new_summary = {
|
||||
rating = nil,
|
||||
note = nil,
|
||||
status = "",
|
||||
modified = "",
|
||||
}
|
||||
local summary = self.settings:readSetting("summary")
|
||||
-- Check if the summary table we get is a full one, or a minimal one from CoverMenu...
|
||||
if summary then
|
||||
@@ -77,6 +72,8 @@ function BookStatusWidget:init()
|
||||
else
|
||||
self.summary = new_summary
|
||||
end
|
||||
else
|
||||
self.summary = new_summary
|
||||
end
|
||||
self.total_pages = self.ui.document:getPageCount()
|
||||
stats_book = self:getStats()
|
||||
|
||||
Reference in New Issue
Block a user