From 9e2cf49be6973dbf6df380b43ccb929fb92761b0 Mon Sep 17 00:00:00 2001 From: rxi Date: Sun, 24 May 2020 12:26:41 +0100 Subject: Added `bigclock` plugin --- plugins/bigclock.lua | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 plugins/bigclock.lua (limited to 'plugins/bigclock.lua') diff --git a/plugins/bigclock.lua b/plugins/bigclock.lua new file mode 100644 index 0000000..67d62e2 --- /dev/null +++ b/plugins/bigclock.lua @@ -0,0 +1,71 @@ +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) * 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 + 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 -- cgit v1.2.3