From 9a1a584e19404fab4546d1b44113858a2ccc820a Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Mon, 7 Jan 2013 12:07:06 -0500 Subject: [PATCH] add option args for config so we can send string arg in events --- frontend/ui/config.lua | 37 ++++++++++++++++++++--------- frontend/ui/reader/readerconfig.lua | 3 +++ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/frontend/ui/config.lua b/frontend/ui/config.lua index 03290c210..2446ac0e8 100644 --- a/frontend/ui/config.lua +++ b/frontend/ui/config.lua @@ -85,9 +85,13 @@ function OptionTextItem:onTapSelect() end self[1].color = 15 local option_value = nil + local option_arg = nil if type(self.values) == "table" then option_value = self.values[self.current_item] self.config:onConfigChoice(self.name, option_value, self.event) + elseif type(self.args) == "table" then + option_arg = self.args[self.current_item] + self.config:onConfigChoice(self.name, option_arg, self.event) end UIManager.repaint_all = true return true @@ -159,18 +163,28 @@ function ConfigOption:init() -- make current index according to configurable table local current_item = nil if self.options[c].name then - local val = self.config.configurable[self.options[c].name] - local min_diff = math.abs(val - self.options[c].values[1]) - local diff = nil - for index, val_ in pairs(self.options[c].values) do - if val == val_ then - current_item = index - break + if self.options[c].values then + local val = self.config.configurable[self.options[c].name] + local min_diff = math.abs(val - self.options[c].values[1]) + local diff = nil + for index, val_ in pairs(self.options[c].values) do + if val == val_ then + current_item = index + break + end + diff = math.abs(val - val_) + if diff <= min_diff then + min_diff = diff + current_item = index + end end - diff = math.abs(val - val_) - if diff <= min_diff then - min_diff = diff - current_item = index + elseif self.options[c].args then + local arg = self.config.configurable[self.options[c].name] + for idx, arg_ in pairs(self.options[c].args) do + if arg_ == arg then + current_item = idx + break + end end end end @@ -200,6 +214,7 @@ function ConfigOption:init() option_item.items = option_items option_item.name = self.options[c].name option_item.values = self.options[c].values + option_item.args = self.options[c].args option_item.event = self.options[c].event option_item.current_item = d option_item.config = self.config diff --git a/frontend/ui/reader/readerconfig.lua b/frontend/ui/reader/readerconfig.lua index 4252a075a..2eed6226f 100644 --- a/frontend/ui/reader/readerconfig.lua +++ b/frontend/ui/reader/readerconfig.lua @@ -19,6 +19,9 @@ function Configurable:loadDefaults(config_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