Merge pull request #1556 from chrox/data_storage

add datastorage module to handle data directory on various platform
pull/1571/head
Frans de Jonge 9 years ago
commit 954c2c9416

@ -29,7 +29,7 @@ ANDROID_LAUNCHER_DIR:=$(ANDROID_DIR)/luajit-launcher
WIN32_DIR=$(PLATFORM_DIR)/win32
# files to link from main directory
INSTALL_FILES=reader.lua frontend resources defaults.lua l10n \
INSTALL_FILES=reader.lua frontend resources defaults.lua datastorage.lua l10n \
git-rev README.md COPYING
# for gettext

@ -0,0 +1,14 @@
-- need low-level mechnism to detect android to avoid recursive dependency
local isAndroid = pcall(require, "android")
local DataStorage = {}
function DataStorage:getDataDir()
if isAndroid then
return "/sdcard/koreader/"
else
return "./"
end
end
return DataStorage

@ -1,10 +1,11 @@
local InfoMessage = require("ui/widget/infomessage")
local UIManager = require("ui/uimanager")
local InputContainer = require("ui/widget/container/inputcontainer")
local InputDialog = require("ui/widget/inputdialog")
local MultiInputDialog = require("ui/widget/multiinputdialog")
local ConfirmBox = require("ui/widget/confirmbox")
local CenterContainer = require("ui/widget/container/centercontainer")
local DataStorage = require("datastorage")
local UIManager = require("ui/uimanager")
local Screen = require("device").screen
local Menu = require("ui/widget/menu")
local Font = require("ui/font")
@ -319,16 +320,16 @@ function SetDefaults:SaveSettings()
file:close()
end
local filename = "defaults.persistent.lua"
local persistent_filename = DataStorage:getDataDir() .. "/defaults.persistent.lua"
local file
if io.open(filename,"r") == nil then
file = io.open(filename, "w")
if io.open(persistent_filename,"r") == nil then
file = io.open(persistent_filename, "w")
file:write("-- For configuration changes that persists between (nightly) releases\n")
file:close()
end
local dpl = {}
fileread("defaults.persistent.lua",dpl)
fileread(persistent_filename, dpl)
local dl = {}
fileread("defaults.lua",dl)
self.results = {}
@ -355,12 +356,16 @@ function SetDefaults:SaveSettings()
end
end
file = io.open("defaults.persistent.lua", "w")
for i = 1,#dpl do
file:write(dpl[i] .. "\n")
file = io.open(persistent_filename, "w")
if file then
for i = 1,#dpl do
file:write(dpl[i] .. "\n")
end
file:close()
UIManager:show(InfoMessage:new{
text = _("Default settings were saved successfully!"),
})
end
file:close()
UIManager:show(InfoMessage:new{text = _("Default settings were saved successfully!")})
settings_changed = false
end
return SetDefaults

@ -359,10 +359,9 @@ function ReaderHighlight:onHoldRelease()
end,
},
{
text = _("More"),
enabled = false,
text = _("Dictionary"),
callback = function()
self:moreAction()
self:onHighlightDictLookup()
self:onClose()
end,
},
@ -487,6 +486,15 @@ function ReaderHighlight:onHighlightSearch()
end
end
function ReaderHighlight:onHighlightDictLookup()
DEBUG("dictionary lookup highlight")
self:highlightFromHoldPos()
if self.selected_text then
local text = require("util").stripePunctuations(self.selected_text.text)
self.ui:handleEvent(Event:new("LookupWord", text))
end
end
function ReaderHighlight:shareHighlight()
DEBUG("share highlight")
end

@ -1,6 +1,7 @@
local lfs = require("libs/libkoreader-lfs")
local DocSettings = {}
local dump = require("dump")
local DataStorage = require("datastorage")
function DocSettings:getHistoryPath(fullpath)
return "./history/[" .. fullpath:gsub("(.*/)([^/]+)","%1] %2"):gsub("/","#") .. ".lua"
@ -26,7 +27,7 @@ function DocSettings:open(docfile)
local sidecar_path = nil
if docfile == ".reader" then
-- we handle reader setting as special case
history_path = "settings.reader.lua"
history_path = DataStorage:getDataDir() .. "/settings.reader.lua"
else
if lfs.attributes("./history", "mode") ~= "directory" then
lfs.mkdir("history")

@ -1,6 +1,7 @@
local TileCacheItem = require("document/tilecacheitem")
local KOPTContext = require("ffi/koptcontext")
local Document = require("document/document")
local DataStorage = require("datastorage")
local CacheItem = require("cacheitem")
local Screen = require("device").screen
local Geom = require("ui/geometry")
@ -11,7 +12,7 @@ local util = require("ffi/util")
local KoptInterface = {
ocrengine = "ocrengine",
tessocr_data = "data",
tessocr_data = DataStorage:getDataDir() .. "/data",
ocr_lang = "eng",
ocr_type = 3, -- default 0, for more accuracy use 3
last_context_size = nil,

@ -1,6 +1,12 @@
local A = require("android")
A.dl.library_path = A.dl.library_path .. ":" .. A.dir .. "/libs"
local ffi = require("ffi")
ffi.cdef[[
char *getenv(const char *name);
int putenv(const char *envvar);
]]
-- check uri of the intent that starts this application
local file = A.jni:context(A.app.activity.vm, function(JNI)
local uri = JNI:callObjectMethod(
@ -29,6 +35,9 @@ pcall(function() dofile("/sdcard/koreader/patch.lua") end)
-- set proper permission for sdcv
A.execute("chmod", "755", "./sdcv")
-- set TESSDATA_PREFIX env var
ffi.C.putenv("TESSDATA_PREFIX=/sdcard/koreader/data")
-- create fake command-line arguments
arg = {"-d", file or "/sdcard"}
dofile(A.dir.."/reader.lua")

@ -2,7 +2,8 @@
-- load default settings
require "defaults"
pcall(dofile, "defaults.persistent.lua")
local DataStorage = require("datastorage")
pcall(dofile, DataStorage:getDataDir() .. "/defaults.persistent.lua")
-- set search path for 'require()'
package.path = "common/?.lua;rocks/share/lua/5.1/?.lua;frontend/?.lua;" .. package.path

Loading…
Cancel
Save