From 085b4fce6ac27c51f941c8fa1acd9855c5e97ffc Mon Sep 17 00:00:00 2001 From: WS64 Date: Sat, 16 Aug 2014 22:31:32 +0200 Subject: [PATCH] Handle defaults by type (boolean/string/number) --- .../filemanager/filemanagersetdefaults.lua | 196 ++++++++++++------ 1 file changed, 131 insertions(+), 65 deletions(-) diff --git a/frontend/apps/filemanager/filemanagersetdefaults.lua b/frontend/apps/filemanager/filemanagersetdefaults.lua index 10b11fa3a..d263aec7b 100644 --- a/frontend/apps/filemanager/filemanagersetdefaults.lua +++ b/frontend/apps/filemanager/filemanagersetdefaults.lua @@ -7,10 +7,11 @@ local ConfirmBox = require("ui/widget/confirmbox") local CenterContainer = require("ui/widget/container/centercontainer") local Screen = require("ui/screen") local Menu = require("ui/widget/menu") +local Font = require("ui/font") local SetDefaults = InputContainer:new{ - bools_name = {}, - bools_value = {}, + defaults_name = {}, + defaults_value = {}, results = {}, defaults_menu = {}, } @@ -87,28 +88,29 @@ end function SetDefaults:init() local function setdisplayname(i) - local dummy = self.bools_name[i] .. " = " - if type(_G[self.bools_name[i]]) == "string" and not tonumber(self.bools_value[i]) then - dummy = dummy .. "\"" .. tostring(self.bools_value[i]) .. "\"" -- add quotation marks to strings + local dummy = self.defaults_name[i] .. " = " + if type(_G[self.defaults_name[i]]) == "string" and not tonumber(self.defaults_value[i]) then + dummy = dummy .. "\"" .. tostring(self.defaults_value[i]) .. "\"" -- add quotation marks to strings else - dummy = dummy .. tostring(self.bools_value[i]) + dummy = dummy .. tostring(self.defaults_value[i]) end return dummy end - self.bools_name = {} - self.bools_value = {} + self.defaults_name = {} + self.defaults_value = {} self.results = {} - self.fillbools() + self.filldefaults() local menu_container = CenterContainer:new{ dimen = Screen:getSize(), } self.defaults_menu = Menu:new{ - width = Screen:getWidth()-50, - height = Screen:getHeight()-50, + width = Screen:getWidth()-15, + height = Screen:getHeight()-15, + cface = Font:getFace("cfont", 22), show_parent = menu_container, _manager = self, } @@ -117,57 +119,122 @@ function SetDefaults:init() UIManager:close(menu_container) end - for i=1,#self.bools_name do - table.insert(self.results, { - text = setdisplayname(i), - callback = function() - GLOBAL_INPUT_VALUE = tostring(self.bools_value[i]) - self.set_dialog = InputDialog:new{ - title = self.bools_name[i] .. ":", - buttons = { - { - { - text = _("OK"), - enabled = true, - callback = function() - _G[self.bools_name[i]] = settype(self.set_dialog:getInputText(),type(_G[self.bools_name[i]])) - self.bools_value[i] = _G[self.bools_name[i]] - self.results[i].text = setdisplayname(i) - self:close() - self.defaults_menu:swithItemTable("Defaults", self.results, i) - UIManager:show(menu_container) - end, + for i=1,#self.defaults_name do + local settings_type = type(_G[self.defaults_name[i]]) + if settings_type == "boolean" then + table.insert(self.results, { + text = setdisplayname(i), + callback = function() + GLOBAL_INPUT_VALUE = tostring(self.defaults_value[i]) + self.set_dialog = InputDialog:new{ + title = self.defaults_name[i] .. ":", + buttons = { + { + { + text = "true", + enabled = true, + callback = function() + self.defaults_value[i] = true + if not _G[self.defaults_name[i]] then + _G[self.defaults_name[i]] = true + settings_changed = true + end + self.results[i].text = setdisplayname(i) + self:close() + self.defaults_menu:swithItemTable("Defaults", self.results, i) + UIManager:show(menu_container) + end + }, + { + text = "false", + enabled = true, + callback = function() + self.defaults_value[i] = false + if _G[self.defaults_name[i]] then + _G[self.defaults_name[i]] = false + settings_changed = true + end + self.results[i].text = setdisplayname(i) + self.defaults_menu:swithItemTable("Defaults", self.results, i) + self:close() + UIManager:show(menu_container) + end + }, + { + text = _("Cancel"), + enabled = true, + callback = function() + self:close() + UIManager:show(menu_container) + end + }, }, - { - text = _("Cancel"), - enabled = true, - callback = function() - self:close() - UIManager:show(menu_container) - end, - }, - }, - }, - width = Screen:getWidth() * 0.95, - height = Screen:getHeight() * 0.2, - } - GLOBAL_INPUT_VALUE = nil - self.set_dialog:onShowKeyboard() - UIManager:show(self.set_dialog) - end - }) + }, + input_type = settings_type, + width = Screen:getWidth() * 0.95, + height = Screen:getHeight() * 0.2, + } + GLOBAL_INPUT_VALUE = nil + self.set_dialog:onShowKeyboard() + UIManager:show(self.set_dialog) + end + }) + else + table.insert(self.results, { + text = setdisplayname(i), + callback = function() + GLOBAL_INPUT_VALUE = tostring(self.defaults_value[i]) + self.set_dialog = InputDialog:new{ + title = self.defaults_name[i] .. ":", + buttons = { + { + { + text = _("OK"), + enabled = true, + callback = function() + self.defaults_value[i] = _G[self.defaults_name[i]] + if _G[self.defaults_name[i]] ~= settype(self.set_dialog:getInputText(),settings_type) then + _G[self.defaults_name[i]] = settype(self.set_dialog:getInputText(),settings_type) + settings_changed = true + end + self.results[i].text = setdisplayname(i) + self:close() + self.defaults_menu:swithItemTable("Defaults", self.results, i) + UIManager:show(menu_container) + end, + }, + { + text = _("Cancel"), + enabled = true, + callback = function() + self:close() + UIManager:show(menu_container) + end, + }, + }, + }, + input_type = settings_type, + width = Screen:getWidth() * 0.95, + height = Screen:getHeight() * 0.2, + } + GLOBAL_INPUT_VALUE = nil + self.set_dialog:onShowKeyboard() + UIManager:show(self.set_dialog) + end + }) + end end self.defaults_menu:swithItemTable("Defaults", self.results) UIManager:show(menu_container) end -function SetDefaults:fillbools() +function SetDefaults:filldefaults() local i = 0 for n,v in orderedPairs(_G) do - if (not string.find(tostring(v), "<")) and (not string.find(tostring(v), ": ")) and string.sub(n,1,1) ~= "_" and string.upper(n) == n and n ~= "GLOBAL_INPUT_VALUE" then + if (not string.find(tostring(v), "<")) and (not string.find(tostring(v), ": ")) and string.sub(n,1,1) ~= "_" and string.upper(n) == n and n ~= "GLOBAL_INPUT_VALUE" and n ~= "LIBRARY_PATH" then i = i + 1 - SetDefaults.bools_name[i] = n - SetDefaults.bools_value[i] = v + SetDefaults.defaults_name[i] = n + SetDefaults.defaults_value[i] = v end end end @@ -203,13 +270,13 @@ function SetDefaults:SaveSettings() end local function build_setting(j) - local ret = SetDefaults.bools_name[j] .. " = " - if tonumber(SetDefaults.bools_value[j]) then - ret = ret .. tostring(tonumber(SetDefaults.bools_value[j])) - elseif type(_G[SetDefaults.bools_name[j]]) == "boolean" then - ret = ret .. tostring(SetDefaults.bools_value[j]) + local ret = SetDefaults.defaults_name[j] .. " = " + if tonumber(SetDefaults.defaults_value[j]) then + ret = ret .. tostring(tonumber(SetDefaults.defaults_value[j])) + elseif type(_G[SetDefaults.defaults_name[j]]) == "boolean" then + ret = ret .. tostring(SetDefaults.defaults_value[j]) else - ret = ret .. "\"" .. tostring(SetDefaults.bools_value[j]) .. "\"" + ret = ret .. "\"" .. tostring(SetDefaults.defaults_value[j]) .. "\"" end return ret end @@ -226,15 +293,14 @@ function SetDefaults:SaveSettings() fileread("defaults.persistent.lua",dpl) local dl = {} fileread("defaults.lua",dl) - self.bools = {} self.results = {} - self.fillbools() + self.filldefaults() local done = {} -- handle case "found in persistent", replace it for i = 1,#dpl do - for j=1,#SetDefaults.bools_name do - if string.find(dpl[i],SetDefaults.bools_name[j]) == 1 then + for j=1,#SetDefaults.defaults_name do + if string.find(dpl[i],SetDefaults.defaults_name[j]) == 1 then dpl[i] = build_setting(j) done[j] = true end @@ -243,7 +309,7 @@ function SetDefaults:SaveSettings() -- handle case "exists identical in non-persistent", ignore it for i = 1,#dl do - for j=1,#SetDefaults.bools_name do + for j=1,#SetDefaults.defaults_name do if dl[i]:gsub("1024[*]1024[*]10","10485760"):gsub("1024[*]1024[*]30","31457280"):gsub("[.]0$",""):gsub("([.][0-9]+)0","%1") == build_setting(j) then done[j] = true end @@ -251,7 +317,7 @@ function SetDefaults:SaveSettings() end -- handle case "not in persistent and different in non-persistent", add to persistent - for j=1,#SetDefaults.bools_name do + for j=1,#SetDefaults.defaults_name do if not done[j] then dpl[#dpl+1] = build_setting(j) end