73 lines
1.8 KiB
Lua
73 lines
1.8 KiB
Lua
|
local core = require "core"
|
||
|
local style = require "core.style"
|
||
|
local command = require "core.command"
|
||
|
local common = require "core.common"
|
||
|
local config = require "core.config"
|
||
|
local View = require "core.view"
|
||
|
|
||
|
|
||
|
config.bigclock_time_format = "%H:%M:%S"
|
||
|
config.bigclock_date_format = "%A, %d %B %Y"
|
||
|
config.bigclock_scale = 1
|
||
|
|
||
|
|
||
|
local ClockView = View:extend()
|
||
|
|
||
|
|
||
|
function ClockView:new()
|
||
|
ClockView.super.new(self)
|
||
|
self.time_text = ""
|
||
|
self.date_text = ""
|
||
|
end
|
||
|
|
||
|
|
||
|
function ClockView:get_name()
|
||
|
return "Big Clock"
|
||
|
end
|
||
|
|
||
|
|
||
|
function ClockView:update_fonts()
|
||
|
local size = math.floor(self.size.x * 0.15 / 15) * 15 * config.bigclock_scale
|
||
|
if self.font_size ~= size then
|
||
|
self.time_font = renderer.font.load(EXEDIR .. "/data/fonts/font.ttf", size)
|
||
|
self.date_font = renderer.font.load(EXEDIR .. "/data/fonts/font.ttf", size * 0.3)
|
||
|
self.font_size = size
|
||
|
collectgarbage()
|
||
|
end
|
||
|
return self.font
|
||
|
end
|
||
|
|
||
|
|
||
|
function ClockView:update()
|
||
|
local time_text = os.date(config.bigclock_time_format)
|
||
|
local date_text = os.date(config.bigclock_date_format)
|
||
|
if self.time_text ~= time_text or self.date_text ~= date_text then
|
||
|
core.redraw = true
|
||
|
self.time_text = time_text
|
||
|
self.date_text = date_text
|
||
|
end
|
||
|
ClockView.super.update(self)
|
||
|
end
|
||
|
|
||
|
|
||
|
function ClockView:draw()
|
||
|
self:update_fonts()
|
||
|
self:draw_background(style.background)
|
||
|
local x, y = self.position.x, self.position.y
|
||
|
local w, h = self.size.x, self.size.y
|
||
|
local _, y = common.draw_text(self.time_font, style.text, self.time_text, "center", x, y, w, h)
|
||
|
local th = self.date_font:get_height()
|
||
|
common.draw_text(self.date_font, style.dim, self.date_text, "center", x, y, w, th)
|
||
|
end
|
||
|
|
||
|
|
||
|
command.add(nil, {
|
||
|
["big-clock:open"] = function()
|
||
|
local node = core.root_view:get_active_node()
|
||
|
node:add_view(ClockView())
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
|
||
|
return ClockView
|