calendar: fix #289

This commit is contained in:
copycat-killer 2017-02-07 09:02:38 +01:00
parent 398edb9bf9
commit e46fa5a6df
1 changed files with 33 additions and 10 deletions

View File

@ -28,9 +28,7 @@ function calendar.hide()
end end
function calendar.show(t_out, inc_offset, scr) function calendar.show(t_out, inc_offset, scr)
local today = os.date("%e") local f, offs = nil, inc_offset or 0
local offs = inc_offset or 0
local f
calendar.offset = calendar.offset + offs calendar.offset = calendar.offset + offs
@ -38,7 +36,7 @@ function calendar.show(t_out, inc_offset, scr)
if current_month then -- today highlighted if current_month then -- today highlighted
calendar.offset = 0 calendar.offset = 0
calendar.notify_icon = string.format("%s%s.png", calendar.icons, tonumber(today)) calendar.icon = string.format("%s%s.png", calendar.icons, tonumber(os.date("%d")))
f = calendar.cal f = calendar.cal
else -- no current month showing, no day to highlight else -- no current month showing, no day to highlight
local month = tonumber(os.date("%m")) local month = tonumber(os.date("%m"))
@ -56,7 +54,7 @@ function calendar.show(t_out, inc_offset, scr)
year = year - 1 year = year - 1
end end
calendar.notify_icon = nil calendar.icon = nil
f = string.format("%s %s %s", calendar.cal, month, year) f = string.format("%s %s %s", calendar.cal, month, year)
end end
@ -66,16 +64,39 @@ function calendar.show(t_out, inc_offset, scr)
calendar.notification_preset.screen = src or 1 calendar.notification_preset.screen = src or 1
end end
helpers.async(f, function(ws) if f == calendar then
fg, bg = calendar.notification_preset.fg, calendar.notification_preset.bg calendar.update(f, false)
ws = ws:gsub("%c%[%d+[m]?%s?%d+%c%[%d+[m]?", markup.bold(markup.color(bg, fg, today)))
calendar.hide() calendar.hide()
calendar.notification = naughty.notify({ calendar.notification = naughty.notify({
preset = calendar.notification_preset, preset = calendar.notification_preset,
text = ws:gsub("\n*$", ""), icon = calendar.icon,
icon = calendar.notify_icon,
timeout = t_out or calendar.notification_preset.timeout or 5 timeout = t_out or calendar.notification_preset.timeout or 5
}) })
else
calendar.update(f, true, t_out)
end
end
function calendar.update(f, show, t_out)
local fg, bg = calendar.notification_preset.fg, calendar.notification_preset.bg
helpers.async(f, function(ws)
ws = ws:gsub("%c%[%d+[m]?%s?%d+%c%[%d+[m]?",
markup.bold(markup.color(bg, fg, os.date("%e")))):gsub("\n*$", "")
if f == calendar.cal then
calendar.notification_preset.text = ws
end
if show then
calendar.hide()
calendar.notification = naughty.notify({
preset = calendar.notification_preset,
text = ws,
icon = calendar.icon,
timeout = t_out or calendar.notification_preset.timeout or 5
})
end
end) end)
end end
@ -109,6 +130,8 @@ local function worker(args)
end end
for i, widget in ipairs(calendar.attach_to) do calendar.attach(widget) end for i, widget in ipairs(calendar.attach_to) do calendar.attach(widget) end
calendar.update(calendar.cal, false)
end end
return setmetatable(calendar, { __call = function(_, ...) return worker(...) end }) return setmetatable(calendar, { __call = function(_, ...) return worker(...) end })