hold on config panel option to set default option

pull/688/head
chrox 10 years ago
parent a92ca26bea
commit e7fc16dd25

@ -33,7 +33,9 @@ function Configurable:loadDefaults(config_options)
local options = config_options[i].options local options = config_options[i].options
for j=1,#config_options[i].options do for j=1,#config_options[i].options do
local key = config_options[i].options[j].name local key = config_options[i].options[j].name
self[key] = config_options[i].options[j].default_value local settings_key = config_options.prefix.."_"..key
local default = G_reader_settings:readSetting(settings_key)
self[key] = default or config_options[i].options[j].default_value
if not self[key] then if not self[key] then
self[key] = config_options[i].options[j].default_arg self[key] = config_options[i].options[j].default_arg
end end

@ -9,6 +9,7 @@ local TextWidget = require("ui/widget/textwidget")
local FixedTextWidget = require("ui/widget/fixedtextwidget") local FixedTextWidget = require("ui/widget/fixedtextwidget")
local ProgressWidget = require("ui/widget/progresswidget") local ProgressWidget = require("ui/widget/progresswidget")
local ToggleSwitch = require("ui/widget/toggleswitch") local ToggleSwitch = require("ui/widget/toggleswitch")
local ConfirmBox = require("ui/widget/confirmbox")
local Font = require("ui/font") local Font = require("ui/font")
local Device = require("ui/device") local Device = require("ui/device")
local GestureRange = require("ui/gesturerange") local GestureRange = require("ui/gesturerange")
@ -79,6 +80,13 @@ function OptionTextItem:init()
}, },
doc = "Select Option Item", doc = "Select Option Item",
}, },
HoldSelect = {
GestureRange:new{
ges = "hold",
range = self.dimen,
},
doc = "Hold Option Item",
},
} }
else else
self.active_key_events = { self.active_key_events = {
@ -92,11 +100,21 @@ function OptionTextItem:onTapSelect()
item[1].color = 0 item[1].color = 0
end end
self[1].color = 15 self[1].color = 15
self.config:onConfigChoose(self.values, self.name, self.event, self.args, self.events, self.current_item) self.config:onConfigChoose(self.values, self.name,
self.event, self.args,
self.events, self.current_item)
UIManager:setDirty(self.config, "partial") UIManager:setDirty(self.config, "partial")
return true return true
end end
function OptionTextItem:onHoldSelect()
self.config:onMakeDefault(self.name, self.name_text,
self.values or self.args,
self.values or self.item_text,
self.current_item)
return true
end
local OptionIconItem = InputContainer:new{} local OptionIconItem = InputContainer:new{}
function OptionIconItem:init() function OptionIconItem:init()
self.dimen = self.icon:getSize() self.dimen = self.icon:getSize()
@ -115,6 +133,14 @@ function OptionIconItem:init()
}, },
doc = "Select Option Item", doc = "Select Option Item",
}, },
HoldSelect = {
GestureRange:new{
ges = "hold",
range = self.dimen,
},
doc = "Hold Option Item",
},
} }
end end
end end
@ -126,11 +152,19 @@ function OptionIconItem:onTapSelect()
end end
--self[1][1].invert = true --self[1][1].invert = true
self[1].color = 15 self[1].color = 15
self.config:onConfigChoose(self.values, self.name, self.event, self.args, self.events, self.current_item) self.config:onConfigChoose(self.values, self.name,
self.event, self.args,
self.events, self.current_item)
UIManager:setDirty(self.config, "partial") UIManager:setDirty(self.config, "partial")
return true return true
end end
function OptionIconItem:onHoldSelect()
self.config:onMakeDefault(self.name, self.name_text,
self.values, self.values, self.current_item)
return true
end
local ConfigOption = CenterContainer:new{} local ConfigOption = CenterContainer:new{}
function ConfigOption:init() function ConfigOption:init()
local default_name_font_size = 20 local default_name_font_size = 20
@ -287,6 +321,8 @@ function ConfigOption:init()
option_items[d] = option_item option_items[d] = option_item
option_item.items = option_items option_item.items = option_items
option_item.name = self.options[c].name option_item.name = self.options[c].name
option_item.name_text = self.options[c].name_text
option_item.item_text = self.options[c].item_text
option_item.values = self.options[c].values option_item.values = self.options[c].values
option_item.args = self.options[c].args option_item.args = self.options[c].args
option_item.event = self.options[c].event option_item.event = self.options[c].event
@ -322,6 +358,7 @@ function ConfigOption:init()
option_items[d] = option_item option_items[d] = option_item
option_item.items = option_items option_item.items = option_items
option_item.name = self.options[c].name option_item.name = self.options[c].name
option_item.name_text = self.options[c].name_text
option_item.values = self.options[c].values option_item.values = self.options[c].values
option_item.args = self.options[c].args option_item.args = self.options[c].args
option_item.event = self.options[c].event option_item.event = self.options[c].event
@ -340,6 +377,7 @@ function ConfigOption:init()
local switch = ToggleSwitch:new{ local switch = ToggleSwitch:new{
width = math.min(max_toggle_width, toggle_width), width = math.min(max_toggle_width, toggle_width),
name = self.options[c].name, name = self.options[c].name,
name_text = self.options[c].name_text,
toggle = self.options[c].toggle, toggle = self.options[c].toggle,
alternate = self.options[c].alternate, alternate = self.options[c].alternate,
values = self.options[c].values, values = self.options[c].values,
@ -537,6 +575,16 @@ function ConfigDialog:onConfigChoose(values, name, event, args, events, position
end) end)
end end
function ConfigDialog:onMakeDefault(name, name_text, values, labels, position)
UIManager:show(ConfirmBox:new{
text = _("Set default ")..(name_text or "").." to "..labels[position].."?",
ok_callback = function()
local name = self.config_options.prefix.."_"..name
G_reader_settings:saveSetting(name, values[position])
end,
})
end
function ConfigDialog:closeDialog() function ConfigDialog:closeDialog()
UIManager:close(self) UIManager:close(self)
if self.close_callback then if self.close_callback then

@ -74,6 +74,13 @@ function ToggleSwitch:init()
}, },
doc = "Toggle switch", doc = "Toggle switch",
}, },
HoldSelect = {
GestureRange:new{
ges = "hold",
range = self.dimen,
},
doc = "Hold switch",
},
} }
end end
end end
@ -131,9 +138,19 @@ function ToggleSwitch:onTapSelect(arg, gev)
self.config:onConfigEvents(self.events, self.position) self.config:onConfigEvents(self.events, self.position)
end end
--]] --]]
self.config:onConfigChoose(self.values, self.name, self.event, self.args, self.events, self.position) self.config:onConfigChoose(self.values, self.name,
self.event, self.args, self.events, self.position)
UIManager:setDirty(self.config, "partial") UIManager:setDirty(self.config, "partial")
return true return true
end end
function ToggleSwitch:onHoldSelect(arg, gev)
local position = math.ceil(
(gev.pos.x - self.dimen.x) / self.dimen.w * self.n_pos
)
self.config:onMakeDefault(self.name, self.name_text,
self.values or self.args, self.toggle, position)
return true
end
return ToggleSwitch return ToggleSwitch

Loading…
Cancel
Save