mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Time reader with normal time format v2 (#3279)
This commit is contained in:
@@ -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()
|
||||
UIManager:close(self.input)
|
||||
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()
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user