diff --git a/frontend/ui/widget/bookstatuswidget.lua b/frontend/ui/widget/bookstatuswidget.lua index 402801d03..c28f02724 100644 --- a/frontend/ui/widget/bookstatuswidget.lua +++ b/frontend/ui/widget/bookstatuswidget.lua @@ -50,6 +50,7 @@ local BookStatusWidget = FocusManager:extend{ } function BookStatusWidget:init() + self.updated = false self.layout = {} -- What a blank, full summary table should look like local new_summary = { @@ -229,7 +230,7 @@ end function BookStatusWidget:onChangeBookStatus(option_name, option_value) self.summary.status = option_name[option_value] self.summary.modified = os.date("%Y-%m-%d", os.time()) - self:saveSummary() + self.updated = true return true end @@ -250,7 +251,7 @@ function BookStatusWidget:setStar(num) local row = {} if num then self.summary.rating = num - self:saveSummary() + self.updated = true for i = 1, num do local star = self.star:new{ @@ -500,19 +501,6 @@ function BookStatusWidget:genSummaryGroup(width) } end -function BookStatusWidget:onUpdateNote() - self.summary.note = self.input_note:getText() - self:saveSummary() - return true -end - -function BookStatusWidget:saveSummary() - if self.summary then - self.settings:saveSetting("summary", self.summary) - self.settings:flush() - end -end - function BookStatusWidget:generateSwitchGroup(width) local height if Screen:getScreenMode() == "landscape" then @@ -523,44 +511,25 @@ function BookStatusWidget:generateSwitchGroup(width) height = Screen:scaleBySize(105) end - local args = { "complete", "reading", "abandoned" } + local args = { "reading", "abandoned", "complete", } - local current_status = self.summary.status - local position = 2 - for k, v in pairs(args) do - if v == current_status then + local position = 1 + for k, v in ipairs(args) do + if v == self.summary.status then position = k + break end end - local config = { + local switch = ToggleSwitch:new{ + width = math.floor(width * 0.6), + name = "book_status", event = "ChangeBookStatus", - default_value = 2, + toggle = { _("Reading"), _("On hold"), _("Finished"), }, args = args, - default_arg = "reading", - toggle = { _("Finished"), _("Reading"), _("On hold") }, - values = { 1, 2, 3 }, - name = "book_status", alternate = false, - enabled = true, - } - - if self.readonly then - config.enable = false - end - - local switch = ToggleSwitch:new{ - width = math.floor(width * 0.6), - default_value = config.default_value, - name = config.name, - name_text = config.name_text, - event = config.event, - toggle = config.toggle, - args = config.args, - alternate = config.alternate, - default_arg = config.default_arg, - values = config.values, - enabled = config.enable, + values = { 1, 2, 3, }, + enabled = not self.readonly, config = self, readonly = self.readonly, } @@ -611,7 +580,10 @@ function BookStatusWidget:onMultiSwipe(arg, ges_ev) end function BookStatusWidget:onClose() - self:saveSummary() + if self.updated and self.summary then + self.settings:saveSetting("summary", self.summary) + self.settings:flush() + end -- NOTE: Flash on close to avoid ghosting, since we show an image. UIManager:close(self, "flashpartial") return true @@ -639,9 +611,11 @@ function BookStatusWidget:onSwitchFocus(inputbox) text = _("Save review"), is_enter_default = true, callback = function() - self.input_note:setText(self.note_dialog:getInputText()) + local note = self.note_dialog:getInputText() + self.input_note:setText(note) + self.summary.note = note + self.updated = true self:closeInputDialog() - self:onUpdateNote() end, }, },