aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/bigclock.lua71
1 files changed, 71 insertions, 0 deletions
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