Time reader with normal time format v2 (#3279)

pull/3285/head
Robert 7 years ago committed by Frans de Jonge
parent 3a9651702f
commit f45188fb9d

@ -1,6 +1,5 @@
local InfoMessage = require("ui/widget/infomessage")
local InputDialog = require("ui/widget/inputdialog")
local TimeWidget = require("ui/widget/timewidget")
local UIManager = require("ui/uimanager")
local WidgetContainer = require("ui/widget/container/widgetcontainer")
local T = require("ffi/util").template
@ -46,7 +45,7 @@ function ReadTimer:addToMainMenu(menu_items)
text_func = function()
if self:scheduled() then
return T(_("Read timer (%1m)"),
string.format("%.2f", self:remainingMinutes()))
string.format("%.2f", self:remainingMinutes()))
else
return _("Read timer")
end
@ -54,59 +53,83 @@ function ReadTimer:addToMainMenu(menu_items)
checked_func = function()
return self:scheduled()
end,
callback = function()
local description = _("When should the countdown timer notify you?")
local buttons = {{
text = _("Close"),
sub_item_table = {
{
text = _("Time"),
callback = function()
local now_t = os.date("*t")
local curr_hour = now_t.hour
local curr_min = now_t.min
local curr_sec_from_midnight = curr_hour*3600 + curr_min*60
local time_widget = TimeWidget:new{
hour = curr_hour,
min = curr_min,
ok_text = _("Set timer"),
title_text = _("Set reader timer"),
callback = function(time)
self:unschedule()
local timer_sec_from_mignight = time.hour*3600 + time.min*60
local seconds
if timer_sec_from_mignight > curr_sec_from_midnight then
seconds = timer_sec_from_mignight - curr_sec_from_midnight
else
seconds = 24*3600 - (curr_sec_from_midnight - timer_sec_from_mignight)
end
if seconds > 0 and seconds < 18*3600 then
self.time = os.time() + seconds
UIManager:scheduleIn(seconds, self.alarm_callback)
UIManager:show(InfoMessage:new{
text = T(_("Timer set at: %1:%2"), string.format("%02d", time.hour),
string.format("%02d", time.min)),
timeout = 3,
})
--current time or time > 18h
elseif seconds == 0 or seconds >= 18*3600 then
UIManager:show(InfoMessage:new{
text = _("Timer could not be set. You have selected current time or time in past"),
timeout = 3,
})
end
end
}
UIManager:show(time_widget)
end,
},
{
text = _("Minutes from now"),
callback = function()
UIManager:close(self.input)
local time_widget = TimeWidget:new{
hour = 0,
min = 0,
hour_max = 17,
ok_text = _("Set timer"),
title_text = _("Set reader timer from now (hours:minutes)"),
callback = function(time)
self:unschedule()
local seconds = time.hour * 3600 + time.min * 60
if seconds > 0 then
self.time = os.time() + seconds
UIManager:scheduleIn(seconds, self.alarm_callback)
UIManager:show(InfoMessage:new{
text = T(_("Timer is set to %1 hour(s) and %2 minute(s)"), time.hour, time.min),
timeout = 3,
})
end
end
}
UIManager:show(time_widget)
end,
},
{
text = _("Stop timer"),
enabled_func = function()
return self:scheduled()
end,
}, {
text = _("Start timer"),
callback = function()
self:unschedule()
local seconds = self.input:getInputValue() * 60
if seconds > 0 then
self.time = os.time() + seconds
UIManager:scheduleIn(seconds, self.alarm_callback)
end
UIManager:close(self.input)
if self.ui == nil or self.ui.document == nil then
self.ui.menu:onCloseFileManagerMenu()
else
self.ui.menu:onTapCloseMenu()
end
end,
}}
if self:scheduled() then
description = description ..
T(_("\n\nYou have already set up a timer for %1 minutes from now. Setting a new one will overwrite it."),
string.format("%.2f", self:remainingMinutes()))
table.insert(buttons, {
text = _("Stop"),
callback = function()
self:unschedule()
if self.ui == nil or self.ui.document == nil then
self.ui.menu:onCloseFileManagerMenu()
else
self.ui.menu:onTapCloseMenu()
end
UIManager:close(self.input)
end,
})
end
description = description .. _("\n\n - Positive number is required.")
self.input = InputDialog:new{
title = _("Read timer"),
description = description,
input_type = "number",
input_hint = _("time in minutes"),
buttons = { buttons },
}
self.input:onShowKeyboard()
UIManager:show(self.input)
end,
},
},
}
end

Loading…
Cancel
Save