50 lines
1.2 KiB
Lua
50 lines
1.2 KiB
Lua
local notification = sbar.add("item", "notifications", {
|
|
width = 0,
|
|
position = "center",
|
|
popup = {
|
|
drawing = true,
|
|
align = "center",
|
|
y_offset = -80,
|
|
},
|
|
})
|
|
|
|
local notification_popup = sbar.add("item", {
|
|
position = "popup." .. notification.name,
|
|
width = "dynamic",
|
|
icon = { drawing = false },
|
|
background = { drawing = false },
|
|
})
|
|
|
|
local function hide_notification()
|
|
sbar.animate("sin", 30, function()
|
|
notification:set({ popup = { y_offset = 2 } })
|
|
notification:set({ popup = { y_offset = -80 } })
|
|
end)
|
|
end
|
|
|
|
local function show_notification(content, hold)
|
|
hide_notification()
|
|
|
|
notification_popup:set({ label = { string = content } })
|
|
|
|
sbar.animate("sin", 30, function()
|
|
notification:set({ popup = { y_offset = -80 } })
|
|
notification:set({ popup = { y_offset = 2 } })
|
|
end)
|
|
|
|
if hold == false then
|
|
sbar.delay(5, function()
|
|
if hold then return end
|
|
hide_notification()
|
|
end)
|
|
end
|
|
end
|
|
|
|
notification:subscribe("send_message", function(env)
|
|
local content = env.MESSAGE
|
|
local hold = env.HOLD ~= nil and env.HOLD == "true" or false
|
|
show_notification(content, hold)
|
|
end)
|
|
|
|
notification:subscribe("hide_message", hide_notification)
|