153 lines
4.3 KiB
MonkeyC
153 lines
4.3 KiB
MonkeyC
import Toybox.Graphics;
|
|
import Toybox.Lang;
|
|
import Toybox.System;
|
|
import Toybox.WatchUi;
|
|
import Toybox.Time.Gregorian;
|
|
|
|
using Toybox.ActivityMonitor;
|
|
|
|
class terminalfaceView extends WatchUi.WatchFace {
|
|
private var font as FontResource?;
|
|
private var curY as Number?;
|
|
private var lineSpace as Number?;
|
|
private var blinking as Boolean?;
|
|
private var lastBlink as Boolean?;
|
|
|
|
function initialize() {
|
|
WatchFace.initialize();
|
|
font = WatchUi.loadResource(Rez.Fonts.id_font_input) as FontResource;
|
|
lineSpace = 23;
|
|
blinking = false;
|
|
lastBlink = false;
|
|
}
|
|
|
|
// Load your resources here
|
|
function onLayout(dc as Dc) as Void {
|
|
setLayout(Rez.Layouts.WatchFace(dc));
|
|
}
|
|
|
|
// Called when this View is brought to the foreground. Restore
|
|
// the state of this View and prepare it to be shown. This includes
|
|
// loading resources into memory.
|
|
function onShow() as Void {
|
|
}
|
|
|
|
private function prompt(dc as Dc, cmd as String) as Void {
|
|
dc.setColor(Graphics.COLOR_GREEN, Graphics.COLOR_TRANSPARENT);
|
|
dc.drawText(25, curY, font, "si", Graphics.TEXT_JUSTIFY_LEFT);
|
|
|
|
dc.setColor(Graphics.COLOR_BLUE, Graphics.COLOR_TRANSPARENT);
|
|
dc.drawText(50, curY, font, "@", Graphics.TEXT_JUSTIFY_LEFT);
|
|
|
|
dc.setColor(Graphics.COLOR_RED, Graphics.COLOR_TRANSPARENT);
|
|
dc.drawText(63, curY, font, "fnx", Graphics.TEXT_JUSTIFY_LEFT);
|
|
|
|
dc.setColor(Graphics.COLOR_BLUE, Graphics.COLOR_TRANSPARENT);
|
|
dc.drawText(113, curY, font, "~>", Graphics.TEXT_JUSTIFY_LEFT);
|
|
|
|
dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_TRANSPARENT);
|
|
dc.drawText(150, curY, font, Lang.format("$1$", [cmd]), Graphics.TEXT_JUSTIFY_LEFT);
|
|
|
|
curY += lineSpace;
|
|
}
|
|
|
|
private function response(dc as Dc, text as String) as Void {
|
|
dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_TRANSPARENT);
|
|
dc.drawText(25, curY, font, text, Graphics.TEXT_JUSTIFY_LEFT);
|
|
|
|
curY += lineSpace;
|
|
}
|
|
|
|
private function makeBatteryString() {
|
|
var stats = System.getSystemStats();
|
|
var batteryLevel = stats.battery;
|
|
var batteryDays = stats.batteryInDays;
|
|
|
|
var bar = new [10];
|
|
for (var i = 0; i < 10; i += 1)
|
|
{
|
|
if (batteryLevel > i*10)
|
|
{
|
|
bar[i] = '#';
|
|
}
|
|
else
|
|
{
|
|
bar[i] = '-';
|
|
}
|
|
}
|
|
|
|
bar.add(batteryDays.toNumber());
|
|
|
|
return Lang.format("[$1$$2$$3$$4$$5$$6$$7$$8$$9$$10$] ($11$d)", bar);
|
|
}
|
|
|
|
// Update the view
|
|
function onUpdate(dc as Dc) as Void {
|
|
curY = 45;
|
|
|
|
dc.setColor(Graphics.COLOR_TRANSPARENT, Graphics.COLOR_BLACK);
|
|
dc.clear();
|
|
|
|
prompt(dc, "date");
|
|
|
|
var today = Gregorian.info(Time.now(), Time.FORMAT_MEDIUM);
|
|
var dateString = Lang.format("$1$ $2$ $3$ $4$:$5$",
|
|
[
|
|
today.day_of_week,
|
|
today.month,
|
|
today.day,
|
|
today.hour.format("%02d"),
|
|
today.min.format("%02d"),
|
|
]);
|
|
|
|
response(dc, dateString);
|
|
|
|
prompt(dc, "steps");
|
|
var info = ActivityMonitor.getInfo();
|
|
var steps = info.steps.toFloat();
|
|
var stepGoal = info.stepGoal.toFloat();
|
|
var ratio = (steps/stepGoal)*100;
|
|
response(dc, Lang.format("$1$/$2$ ($3$%)", [steps.toNumber(), stepGoal.toNumber(), ratio.toNumber()]));
|
|
|
|
prompt(dc, "battery");
|
|
var batteryString = makeBatteryString();
|
|
response(dc, batteryString);
|
|
|
|
if (blinking)
|
|
{
|
|
if (lastBlink)
|
|
{
|
|
prompt(dc, "");
|
|
lastBlink = false;
|
|
}
|
|
else
|
|
{
|
|
prompt(dc, "_");
|
|
lastBlink = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
prompt(dc, "_");
|
|
}
|
|
|
|
}
|
|
|
|
// Called when this View is removed from the screen. Save the
|
|
// state of this View here. This includes freeing resources from
|
|
// memory.
|
|
function onHide() as Void {
|
|
}
|
|
|
|
// The user has just looked at their watch. Timers and animations may be started here.
|
|
function onExitSleep() as Void {
|
|
blinking = true;
|
|
}
|
|
|
|
// Terminate any active timers and prepare for slow updates.
|
|
function onEnterSleep() as Void {
|
|
blinking = false;
|
|
}
|
|
|
|
}
|