Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Toybox.Graphics;
- import Toybox.Lang;
- import Toybox.System;
- import Toybox.WatchUi;
- import Toybox.Math;
- using Toybox.ActivityMonitor as Act;
- using Toybox.Activity as Acty;
- using Toybox.Time.Gregorian;
- class DigitalElegantView extends WatchUi.WatchFace {
- var Battery;
- var InvBattery;
- var inLowPower = false;
- var canBurnIn = false;
- function initialize() {
- WatchFace.initialize();
- if (System.getDeviceSettings() has: requiresBurnInProtection) {
- canBurnIn = System.getDeviceSettings().requiresBurnInProtection;
- }
- Battery = WatchUi.loadResource(Rez.Drawables.Battery);
- InvBattery = WatchUi.loadResource(Rez.Drawables.InvBattery);
- }
- var customFont = null;
- var dateFont = null;
- var statsFont = null;
- var secFont = null;
- var indicatorFont = null;
- var mainFont = null;
- var wordsFont = null;
- var floors;
- var date = Gregorian.info(Time.now(), Time.FORMAT_SHORT);
- var DoW = ["", "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
- var M = ["", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
- var dateString = DoW[date.day_of_week] + " " + M[date.month] + " " + date.day;
- // Load your resources here
- function onLayout(dc as Dc) as Void {
- setLayout(Rez.Layouts.WatchFace(dc));
- customFont = WatchUi.loadResource(Rez.Fonts.customFont);
- dateFont = WatchUi.loadResource(Rez.Fonts.dateFont);
- statsFont = WatchUi.loadResource(Rez.Fonts.statsFont);
- secFont = WatchUi.loadResource(Rez.Fonts.secFont);
- indicatorFont = WatchUi.loadResource(Rez.Fonts.indicatorFont);
- mainFont = WatchUi.loadResource(Rez.Fonts.mainFont);
- wordsFont = WatchUi.loadResource(Rez.Fonts.wordsFont);
- }
- // 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 {}
- // Update the view
- function onUpdate(dc as Dc) as Void {
- var B = Application.Properties.getValue("BG");
- if (B == 0) { dc.setColor(Graphics.COLOR_BLACK, Graphics.COLOR_BLACK); }
- if (B == 1) { dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_WHITE); }
- dc.clear();
- var clockTime = System.getClockTime();
- var hr = clockTime.hour;
- var myHr = hr;
- var myAmPm = "";
- var SelectedColor;
- SelectedColor = Application.Properties.getValue("TextColor");
- var pwr = System.getSystemStats().battery + .5;
- var batStr = Lang.format("$1$", [pwr.format("%2d")]);
- var BTstatusBitmap = null;
- var devSettings = System.getDeviceSettings();
- var AOD;
- var R = Application.Properties.getValue("RightIndicator");
- var L = Application.Properties.getValue("LeftIndicator");
- var C = null;
- var InvC = null;
- var G = null;
- if (!System.getDeviceSettings().is24Hour) {
- myHr = hr % 12;
- myHr = (myHr == 0) ? 12 : myHr;
- myAmPm = (hr >= 12) ? "P" : "A";
- }
- var W = Application.Properties.getValue("TypeOfAodDisplay");
- if (inLowPower && canBurnIn && W == 0) {
- dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_TRANSPARENT);
- if (Application.getApp().getProperty("ShowLeadingZero") == true) { dc.drawText(dc.getWidth() / 2.1, dc.getHeight() * 0.39664, customFont, myHr.format("%02d"), Graphics.TEXT_JUSTIFY_RIGHT); }
- if (Application.getApp().getProperty("ShowLeadingZero") == false) { dc.drawText(dc.getWidth() / 2.1, dc.getHeight() * 0.39664, customFont, myHr.format("%d"), Graphics.TEXT_JUSTIFY_RIGHT); }
- dc.drawText(dc.getWidth() / 2, dc.getHeight() * 0.30052, dateFont, dateString, Graphics.TEXT_JUSTIFY_CENTER);
- if (!System.getDeviceSettings().is24Hour) { dc.drawText(dc.getWidth() * 0.8534, dc.getHeight() * 0.45193, secFont, myAmPm, Graphics.TEXT_JUSTIFY_LEFT); }
- dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() / 2.1, dc.getHeight() * 0.39664, customFont, ":" + Lang.format("$1$", [clockTime.min.format("%02d")]), Graphics.TEXT_JUSTIFY_LEFT);
- if (devSettings.phoneConnected) {
- BTstatusBitmap = WatchUi.loadResource(Rez.Drawables.connectIcon);
- dc.drawBitmap(dc.getWidth() * 0.0745, dc.getHeight() / 2, BTstatusBitmap);
- }
- dc.drawBitmap(dc.getHeight() * 0.185112, dc.getHeight() * 0.22597, WatchUi.loadResource(Rez.Drawables.NotificationIcon));
- dc.drawText(dc.getWidth() * 0.275645, dc.getHeight() * 0.22597, statsFont, System.getDeviceSettings().notificationCount, Graphics.TEXT_JUSTIFY_LEFT);
- dc.drawText(dc.getWidth() * 0.829327, dc.getHeight() * 0.22597, statsFont, batStr + "%", Graphics.TEXT_JUSTIFY_RIGHT);
- dc.setColor(0, 0);
- var y = clockTime.min % 3;
- AOD = WatchUi.loadResource(Rez.Drawables.AOD);
- dc.drawBitmap(0, y, AOD);
- } else {
- if (B == 0) {
- C = Graphics.COLOR_WHITE;
- InvC = Graphics.COLOR_BLACK;
- G = Graphics.COLOR_LT_GRAY;
- }
- if (B == 1) {
- C = Graphics.COLOR_BLACK;
- InvC = Graphics.COLOR_WHITE;
- G = Graphics.COLOR_DK_GRAY;
- }
- if (devSettings.phoneConnected) {
- if (B == 0) { BTstatusBitmap = WatchUi.loadResource(Rez.Drawables.connectIcon); }
- if (B == 1) { BTstatusBitmap = WatchUi.loadResource(Rez.Drawables.InvconnectIcon); }
- dc.drawBitmap(dc.getWidth() * 0.0745, dc.getHeight() / 2, BTstatusBitmap);
- }
- var heartRate = Activity.getActivityInfo().currentHeartRate;
- if (heartRate == null) {
- var HRH = Act.getHeartRateHistory(1, true);
- var HRS = HRH.next();
- if (HRS != null && HRS.heartRate != Act.INVALID_HR_SAMPLE) {
- heartRate = HRS.heartRate;
- }
- }
- if (heartRate != null) {
- heartRate = heartRate.toString();
- } else {
- heartRate = "--";
- }
- var info = Act.getInfo();
- var steps = info.steps;
- var stepGoal = info.stepGoal;
- var calories = info.calories;
- if (info has :floorsClimbed) {floors = info.floorsClimbed;}
- if (B == 0) {
- dc.drawBitmap(dc.getWidth() * 0.2404, dc.getHeight() * 0.1202, WatchUi.loadResource(Rez.Drawables.NotificationIcon));
- dc.drawBitmap(dc.getWidth() * 0.452, dc.getHeight() * 0.1226, Battery);
- }
- if (B == 1) {
- dc.drawBitmap(dc.getWidth() * 0.2404, dc.getHeight() * 0.1202, WatchUi.loadResource(Rez.Drawables.InvNotificationIcon));
- dc.drawBitmap(dc.getWidth() * 0.452, dc.getHeight() * 0.1226, InvBattery);
- }
- dc.setColor(C, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.331731, dc.getHeight() * 0.1202, statsFont, System.getDeviceSettings().notificationCount, Graphics.TEXT_JUSTIFY_LEFT);
- dc.drawText(dc.getWidth() * 0.625, dc.getHeight() * 0.1202, statsFont, batStr + "%", Graphics.TEXT_JUSTIFY_LEFT);
- dc.drawText(dc.getWidth() / 2, dc.getHeight() * 0.75722, mainFont, steps, Graphics.TEXT_JUSTIFY_CENTER);
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() / 2, dc.getHeight() * 0.663462, secFont, stepGoal, Graphics.TEXT_JUSTIFY_CENTER);
- dc.drawText(dc.getWidth() / 2, dc.getHeight() * 0.913462, wordsFont, "STEPS", Graphics.TEXT_JUSTIFY_CENTER);
- if (R == 0) {
- dc.setColor(G, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.8125, dc.getHeight() * 0.66106, indicatorFont, calories, Graphics.TEXT_JUSTIFY_CENTER);
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.8053, dc.getHeight() * 0.7669, wordsFont, "CAL", Graphics.TEXT_JUSTIFY_CENTER);
- }
- if (R == 1) {
- dc.setColor(G, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.8125, dc.getHeight() * 0.66106, indicatorFont, heartRate, Graphics.TEXT_JUSTIFY_CENTER);
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.8053, dc.getHeight() * 0.7669, wordsFont, "HR", Graphics.TEXT_JUSTIFY_CENTER);
- }
- if (R == 2) {
- dc.setColor(G, Graphics.COLOR_TRANSPARENT);
- if (info has :floorsClimbed) {dc.drawText(dc.getWidth() * 0.8125, dc.getHeight() * 0.66106, indicatorFont, floors, Graphics.TEXT_JUSTIFY_CENTER);}
- else {dc.drawText(dc.getWidth() * 0.8125, dc.getHeight() * 0.66106, indicatorFont, "--", Graphics.TEXT_JUSTIFY_CENTER);}
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.8053, dc.getHeight() * 0.7669, wordsFont, "FLRS", Graphics.TEXT_JUSTIFY_CENTER);
- }
- if (R == 3) { dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT); }
- if (L == 0) {
- dc.setColor(G, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.2044, dc.getHeight() * 0.66106, indicatorFont, heartRate, Graphics.TEXT_JUSTIFY_CENTER);
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.20195, dc.getHeight() * 0.7669, wordsFont, "HR", Graphics.TEXT_JUSTIFY_CENTER);
- }
- if (L == 1) {
- dc.setColor(G, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.2044, dc.getHeight() * 0.66106, indicatorFont, calories, Graphics.TEXT_JUSTIFY_CENTER);
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.20195, dc.getHeight() * 0.7669, wordsFont, "CAL", Graphics.TEXT_JUSTIFY_CENTER);
- }
- if (L == 2) {
- dc.setColor(G, Graphics.COLOR_TRANSPARENT);
- if (info has :floorsClimbed) {dc.drawText(dc.getWidth() * 0.2044, dc.getHeight() * 0.66106, indicatorFont, floors, Graphics.TEXT_JUSTIFY_CENTER);}
- else {dc.drawText(dc.getWidth() * 0.2044, dc.getHeight() * 0.66106, indicatorFont, "--", Graphics.TEXT_JUSTIFY_CENTER);}
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.20195, dc.getHeight() * 0.7669, wordsFont, "FLRS", Graphics.TEXT_JUSTIFY_CENTER);
- }
- if (L == 3) { dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT); }
- var BatteryBarLenght;
- var batInt;
- batInt = batStr.toFloat();
- BatteryBarLenght = batInt / 100 * dc.getWidth() * 0.1226;
- //round-260x260 battery
- if (batInt >= 11 && dc.getWidth() == 260) {
- dc.setColor(InvC, Graphics.COLOR_TRANSPARENT);
- dc.drawRoundedRectangle(dc.getWidth() * 0.46154, 34, dc.getWidth() * 0.1226, dc.getHeight() * 0.06923, dc.getWidth() * 0.00962);
- dc.setColor(C, Graphics.COLOR_TRANSPARENT);
- dc.fillRoundedRectangle(dc.getWidth() * 0.46154, 34, BatteryBarLenght, dc.getHeight() * 0.06923, dc.getWidth() * 0.00962);
- }
- //round-416x416 battery
- if (batInt >= 11 && dc.getWidth() == 416) {
- dc.setColor(InvC, Graphics.COLOR_TRANSPARENT);
- dc.drawRoundedRectangle(dc.getWidth() * 0.46154, dc.getHeight() * 0.13462, dc.getWidth() * 0.1226, dc.getHeight() * 0.06923, dc.getWidth() * 0.00962);
- dc.setColor(C, Graphics.COLOR_TRANSPARENT);
- dc.fillRoundedRectangle(dc.getWidth() * 0.46154, dc.getHeight() * 0.13462, BatteryBarLenght, dc.getHeight() * 0.06923, dc.getWidth() * 0.00962);
- }
- //round-240x240 battery
- if (dc.getWidth() == 240) {
- dc.setColor(InvC, Graphics.COLOR_TRANSPARENT);
- dc.drawRoundedRectangle(dc.getWidth() * 0.46154 + 1, 32, dc.getWidth() * 0.1226, dc.getHeight() * 0.06923, dc.getWidth() * 0.00962);
- dc.setColor(C, Graphics.COLOR_TRANSPARENT);
- dc.fillRoundedRectangle(dc.getWidth() * 0.46154 + 1, 32, BatteryBarLenght, dc.getHeight() * 0.06923, dc.getWidth() * 0.00962);
- }
- //round-390x390 battery
- if (batInt >= 11 && dc.getWidth() == 390) {
- dc.setColor(InvC, Graphics.COLOR_TRANSPARENT);
- dc.drawRoundedRectangle(dc.getWidth() * 0.46154, 52, dc.getWidth() * 0.1226, dc.getHeight() * 0.06923, dc.getWidth() * 0.00962);
- dc.setColor(C, Graphics.COLOR_TRANSPARENT);
- dc.fillRoundedRectangle(dc.getWidth() * 0.46154, 52, BatteryBarLenght + 1, dc.getHeight() * 0.06923, dc.getWidth() * 0.00962);
- }
- //round-360x360 battery
- if (batInt >= 11 && dc.getWidth() == 360) {
- dc.setColor(InvC, Graphics.COLOR_TRANSPARENT);
- dc.drawRoundedRectangle(dc.getWidth() * 0.46154 - 1, 48, dc.getWidth() * 0.1226 + 1, dc.getHeight() * 0.06923 + 1, dc.getWidth() * 0.00962);
- dc.setColor(C, Graphics.COLOR_TRANSPARENT);
- dc.fillRoundedRectangle(dc.getWidth() * 0.46154 - 1, 48, BatteryBarLenght + 1, dc.getHeight() * 0.06923 + 1, dc.getWidth() * 0.00962);
- }
- var StepsBarLenght;
- var stepsInt;
- var stepGoalInt;
- stepsInt = steps.toFloat();
- stepGoalInt = stepGoal.toFloat();
- StepsBarLenght = stepsInt / stepGoalInt * dc.getWidth() * 0.8125;
- dc.setColor(Graphics.COLOR_DK_GRAY, Graphics.COLOR_TRANSPARENT);
- dc.drawRoundedRectangle(dc.getWidth() * 0.101, dc.getHeight() * 0.63702, dc.getWidth() * 0.8125, dc.getHeight() * 0.02404, dc.getWidth() * 0.00962);
- dc.fillRoundedRectangle(dc.getWidth() * 0.101, dc.getHeight() * 0.63702, dc.getWidth() * 0.8125, dc.getHeight() * 0.02404, dc.getWidth() * 0.00962);
- if (stepsInt >= 100) {
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.fillRoundedRectangle(dc.getWidth() * 0.101, dc.getHeight() * 0.63702, StepsBarLenght, dc.getHeight() * 0.02404, dc.getWidth() * 0.00962);
- }
- // Get and show the current time
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- if (Application.getApp().getProperty("ShowLeadingZero") == true) { dc.drawText(dc.getWidth() / 2.1, dc.getHeight() * 0.32452, customFont, myHr.format("%02d"), Graphics.TEXT_JUSTIFY_RIGHT); }
- if (Application.getApp().getProperty("ShowLeadingZero") == false) { dc.drawText(dc.getWidth() / 2.1, dc.getHeight() * 0.32452, customFont, myHr.format("%d"), Graphics.TEXT_JUSTIFY_RIGHT); }
- dc.drawText(dc.getWidth() / 2, dc.getHeight() * 0.2284, dateFont, dateString, Graphics.TEXT_JUSTIFY_CENTER);
- if (Application.getApp().getProperty("ShowSeconds") == true) {
- dc.drawText(dc.getWidth() * 0.8534, dc.getHeight() * 0.46875, secFont, Lang.format("$1$", [clockTime.sec.format("%02d")]), Graphics.TEXT_JUSTIFY_LEFT);
- }
- if (!System.getDeviceSettings().is24Hour) { dc.drawText(dc.getWidth() * 0.8534, dc.getHeight() * 0.37981, secFont, myAmPm, Graphics.TEXT_JUSTIFY_LEFT); }
- dc.setColor(C, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() / 2.1, dc.getHeight() * 0.32452, customFont, ":" + Lang.format("$1$", [clockTime.min.format("%02d")]), Graphics.TEXT_JUSTIFY_LEFT);
- if (inLowPower && canBurnIn) {
- dc.setColor(0, 0);
- dc.drawRectangle(dc.getWidth() * 0.8534, dc.getHeight() * 0.4956, dc.getWidth() * 0.1154, dc.getHeight() * 0.08654);
- dc.fillRectangle(dc.getWidth() * 0.8534, dc.getHeight() * 0.4956, dc.getWidth() * 0.1154, dc.getHeight() * 0.08654);
- if (L == 0) {
- dc.drawRectangle(dc.getWidth() * 0.12981, dc.getHeight() * 0.6731, dc.getWidth() * 0.1635, dc.getHeight() * 0.1659);
- dc.fillRectangle(dc.getWidth() * 0.12981, dc.getHeight() * 0.6731, dc.getWidth() * 0.1635, dc.getHeight() * 0.1659);
- if (R == 0) {
- dc.setColor(G, Graphics.COLOR_TRANSPARENT);
- if (info has :floorsClimbed) {dc.drawText(dc.getWidth() * 0.2044, dc.getHeight() * 0.66106, indicatorFont, floors, Graphics.TEXT_JUSTIFY_CENTER);}
- else {dc.drawText(dc.getWidth() * 0.2044, dc.getHeight() * 0.66106, indicatorFont, "--", Graphics.TEXT_JUSTIFY_CENTER);}
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.20195, dc.getHeight() * 0.7669, wordsFont, "FLRS", Graphics.TEXT_JUSTIFY_CENTER);
- }
- if (R == 2) {
- dc.setColor(G, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.2044, dc.getHeight() * 0.66106, indicatorFont, calories, Graphics.TEXT_JUSTIFY_CENTER);
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.20195, dc.getHeight() * 0.7669, wordsFont, "CAL", Graphics.TEXT_JUSTIFY_CENTER);
- }
- }
- if (R == 1) {
- dc.drawRectangle(dc.getWidth() * 0.709135, dc.getHeight() * 0.6803, dc.getWidth() * 0.19231, dc.getHeight() * 0.16827);
- dc.fillRectangle(dc.getWidth() * 0.709135, dc.getHeight() * 0.6803, dc.getWidth() * 0.19231, dc.getHeight() * 0.16827);
- if (L == 1) {
- dc.setColor(G, Graphics.COLOR_TRANSPARENT);
- if (info has :floorsClimbed) {dc.drawText(dc.getWidth() * 0.8125, dc.getHeight() * 0.66106, indicatorFont, floors, Graphics.TEXT_JUSTIFY_CENTER);}
- else {dc.drawText(dc.getWidth() * 0.8125, dc.getHeight() * 0.66106, indicatorFont, "--", Graphics.TEXT_JUSTIFY_CENTER);}
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.8053, dc.getHeight() * 0.7669, wordsFont, "FLRS", Graphics.TEXT_JUSTIFY_CENTER);
- }
- if (L == 2) {
- dc.setColor(G, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.8125, dc.getHeight() * 0.66106, indicatorFont, calories, Graphics.TEXT_JUSTIFY_CENTER);
- dc.setColor(SelectedColor, Graphics.COLOR_TRANSPARENT);
- dc.drawText(dc.getWidth() * 0.8053, dc.getHeight() * 0.7669, wordsFont, "CAL", Graphics.TEXT_JUSTIFY_CENTER);
- }
- }
- }
- if (inLowPower && !canBurnIn) { WatchUi.requestUpdate(); }
- // Called when this View is removed from the screen. Save the
- // state of this View here. This includes freeing resources from
- // memory.
- if (inLowPower && canBurnIn && B == 0) {
- dc.setColor(0, 0);
- var y = clockTime.min % 3;
- AOD = WatchUi.loadResource(Rez.Drawables.AOD);
- dc.drawBitmap(0, y, AOD);
- }
- }
- }
- function onHide() as Void {}
- // The user has just looked at their watch. Timers and animations may be started here.
- function onExitSleep() as Void {
- inLowPower = false;
- WatchUi.requestUpdate();
- }
- // Terminate any active timers and prepare for slow updates.
- function onEnterSleep() {
- inLowPower = true;
- WatchUi.requestUpdate();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment