diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..07312d4
Binary files /dev/null and b/.DS_Store differ
diff --git a/Builds/.DS_Store b/Builds/.DS_Store
new file mode 100644
index 0000000..f7e89a4
Binary files /dev/null and b/Builds/.DS_Store differ
diff --git a/Builds/SnapshotWatch-settings.json b/Builds/SnapshotWatch-settings.json
new file mode 100644
index 0000000..36dc4e8
--- /dev/null
+++ b/Builds/SnapshotWatch-settings.json
@@ -0,0 +1 @@
+{"settings":[{"key":"code","valueType":"string","defaultValue":"get code at app store page","configTitle":"CodeLabel","configPrompt":null,"configType":"alphaNumeric","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showHeartRate","valueType":"boolean","defaultValue":true,"configTitle":"ShowHeartRateLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"graphLength","valueType":"number","defaultValue":240,"configTitle":"GraphLengthLabel","configPrompt":null,"configType":"numeric","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"graphColour","valueType":"number","defaultValue":0,"configTitle":"GraphColourLabel","configPrompt":null,"configType":"list","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":true,"configOptions":[{"display":"DK_GRAY","value":0},{"display":"RED","value":1},{"display":"DK_RED","value":2},{"display":"ORANGE","value":3},{"display":"YELLOW","value":4},{"display":"GREEN","value":5},{"display":"DK_GREEN","value":6},{"display":"BLUE","value":7},{"display":"DK_BLUE","value":8},{"display":"PURPLE","value":9},{"display":"PINK","value":10}],"configMin":null,"configMax":null,"configMaxLength":null},{"key":"useZonesColour","valueType":"boolean","defaultValue":true,"configTitle":"UseZonesColourLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showMoveBar","valueType":"boolean","defaultValue":false,"configTitle":"ShowMoveBarLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showSteps","valueType":"boolean","defaultValue":false,"configTitle":"ShowStepsLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showRiseSet","valueType":"boolean","defaultValue":false,"configTitle":"ShowRiseSetLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showSecondTime","valueType":"boolean","defaultValue":false,"configTitle":"ShowSecondTimeLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"secondTimeOffset","valueType":"number","defaultValue":0,"configTitle":"SecondTimeOffsetLabel","configPrompt":null,"configType":"numeric","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null}],"supportsLiveValidation":false,"languages":{"valyrian":{"UseZonesColourLabel":"Additionally colour code graph by profile heart rate zones","ShowRiseSetLabel":"[PRO] Show sunrise/sunset","DK_GRAY":"Dark Gray","DK_GREEN":"Dark Green","BLUE":"Blue","SecondTimeOffsetLabel":"[PRO] Second (digital) time hour offset (integer, +-24)","PURPLE":"Purple","GREEN":"Green","ShowMoveBarLabel":"Colour graph red when move bar alert is on (or orange if red set above)","AppName":"SnapshotWatch","DK_RED":"Dark Red","DK_BLUE":"Dark Blue","RED":"Red","PINK":"Pink","CodeLabel":"Activation code for PRO features","ShowHeartRateLabel":"Show heart rate, graph, and min/max values","GraphLengthLabel":"Number of past minutes to show in heart rate graph (minimum 15, maximum 240)","GraphColourLabel":"Heart rate graph colour","ShowSecondTimeLabel":"[PRO] Show second (digital) time","YELLOW":"Yellow","ORANGE":"Orange","ShowStepsLabel":"[PRO] Show steps/step goal"}}}
\ No newline at end of file
diff --git a/Builds/SnapshotWatch.prg b/Builds/SnapshotWatch.prg
new file mode 100644
index 0000000..b9d1c19
Binary files /dev/null and b/Builds/SnapshotWatch.prg differ
diff --git a/Builds/SnapshotWatch.prg.debug.xml b/Builds/SnapshotWatch.prg.debug.xml
new file mode 100644
index 0000000..3fc526a
--- /dev/null
+++ b/Builds/SnapshotWatch.prg.debug.xml
@@ -0,0 +1,705 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Load your resources here
]]>
+
+
+ Restore the state of the app and prepare the view to be shown
]]>
+
+
+
+ Update the view
]]>
+
+
+ The user has just looked at their watch. Timers and animations may be started here.
]]>
+
+
+ Terminate any active timers and prepare for slow updates.
]]>
+
+
+
+
+
+
+
+ Draw the watch hand
]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Draw the hash mark symbols
]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bin/SnapshotWatch-settings.json b/bin/SnapshotWatch-settings.json
index c74c2ba..36dc4e8 100644
--- a/bin/SnapshotWatch-settings.json
+++ b/bin/SnapshotWatch-settings.json
@@ -1 +1 @@
-{"settings":[{"key":"code","valueType":"string","defaultValue":"get code at app store page","configTitle":"CodeLabel","configPrompt":null,"configHelpUrl":null,"configError":null,"configType":"alphaNumeric","configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showHeartRate","valueType":"boolean","defaultValue":true,"configTitle":"ShowHeartRateLabel","configPrompt":null,"configHelpUrl":null,"configError":null,"configType":"boolean","configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"graphLength","valueType":"number","defaultValue":240,"configTitle":"GraphLengthLabel","configPrompt":null,"configHelpUrl":null,"configError":null,"configType":"numeric","configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"graphColour","valueType":"number","defaultValue":0,"configTitle":"GraphColourLabel","configPrompt":null,"configHelpUrl":null,"configError":null,"configType":"list","configReadonly":false,"configRequired":true,"configOptions":[{"display":"DK_GRAY","value":0},{"display":"RED","value":1},{"display":"DK_RED","value":2},{"display":"ORANGE","value":3},{"display":"YELLOW","value":4},{"display":"GREEN","value":5},{"display":"DK_GREEN","value":6},{"display":"BLUE","value":7},{"display":"DK_BLUE","value":8},{"display":"PURPLE","value":9},{"display":"PINK","value":10}],"configMin":null,"configMax":null,"configMaxLength":null},{"key":"useZonesColour","valueType":"boolean","defaultValue":true,"configTitle":"UseZonesColourLabel","configPrompt":null,"configHelpUrl":null,"configError":null,"configType":"boolean","configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showMoveBar","valueType":"boolean","defaultValue":false,"configTitle":"ShowMoveBarLabel","configPrompt":null,"configHelpUrl":null,"configError":null,"configType":"boolean","configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showSteps","valueType":"boolean","defaultValue":false,"configTitle":"ShowStepsLabel","configPrompt":null,"configHelpUrl":null,"configError":null,"configType":"boolean","configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showRiseSet","valueType":"boolean","defaultValue":false,"configTitle":"ShowRiseSetLabel","configPrompt":null,"configHelpUrl":null,"configError":null,"configType":"boolean","configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showSecondTime","valueType":"boolean","defaultValue":false,"configTitle":"ShowSecondTimeLabel","configPrompt":null,"configHelpUrl":null,"configError":null,"configType":"boolean","configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"secondTimeOffset","valueType":"number","defaultValue":0,"configTitle":"SecondTimeOffsetLabel","configPrompt":null,"configHelpUrl":null,"configError":null,"configType":"numeric","configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null}],"languages":{"valyrian":{"UseZonesColourLabel":"Additionally colour code graph by profile heart rate zones","ShowRiseSetLabel":"[PRO] Show sunrise/sunset","DK_GRAY":"Dark Gray","DK_GREEN":"Dark Green","BLUE":"Blue","SecondTimeOffsetLabel":"[PRO] Second (digital) time hour offset (integer, +-24)","PURPLE":"Purple","GREEN":"Green","ShowMoveBarLabel":"Colour graph red when move bar alert is on (or orange if red set above)","DK_RED":"Dark Red","DK_BLUE":"Dark Blue","AppName":"SnapshotWatch","RED":"Red","PINK":"Pink","CodeLabel":"Activation code for PRO features","ShowHeartRateLabel":"Show heart rate, graph, and min/max values","GraphLengthLabel":"Number of past minutes to show in heart rate graph (minimum 15, maximum 240)","GraphColourLabel":"Heart rate graph colour","ShowSecondTimeLabel":"[PRO] Show second (digital) time","YELLOW":"Yellow","ORANGE":"Orange","ShowStepsLabel":"[PRO] Show steps/step goal"}}}
\ No newline at end of file
+{"settings":[{"key":"code","valueType":"string","defaultValue":"get code at app store page","configTitle":"CodeLabel","configPrompt":null,"configType":"alphaNumeric","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showHeartRate","valueType":"boolean","defaultValue":true,"configTitle":"ShowHeartRateLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"graphLength","valueType":"number","defaultValue":240,"configTitle":"GraphLengthLabel","configPrompt":null,"configType":"numeric","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"graphColour","valueType":"number","defaultValue":0,"configTitle":"GraphColourLabel","configPrompt":null,"configType":"list","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":true,"configOptions":[{"display":"DK_GRAY","value":0},{"display":"RED","value":1},{"display":"DK_RED","value":2},{"display":"ORANGE","value":3},{"display":"YELLOW","value":4},{"display":"GREEN","value":5},{"display":"DK_GREEN","value":6},{"display":"BLUE","value":7},{"display":"DK_BLUE","value":8},{"display":"PURPLE","value":9},{"display":"PINK","value":10}],"configMin":null,"configMax":null,"configMaxLength":null},{"key":"useZonesColour","valueType":"boolean","defaultValue":true,"configTitle":"UseZonesColourLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showMoveBar","valueType":"boolean","defaultValue":false,"configTitle":"ShowMoveBarLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showSteps","valueType":"boolean","defaultValue":false,"configTitle":"ShowStepsLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showRiseSet","valueType":"boolean","defaultValue":false,"configTitle":"ShowRiseSetLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"showSecondTime","valueType":"boolean","defaultValue":false,"configTitle":"ShowSecondTimeLabel","configPrompt":null,"configType":"boolean","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null},{"key":"secondTimeOffset","valueType":"number","defaultValue":0,"configTitle":"SecondTimeOffsetLabel","configPrompt":null,"configType":"numeric","configError":null,"configHelpUrl":null,"configReadonly":false,"configRequired":false,"configOptions":null,"configMin":null,"configMax":null,"configMaxLength":null}],"supportsLiveValidation":false,"languages":{"valyrian":{"UseZonesColourLabel":"Additionally colour code graph by profile heart rate zones","ShowRiseSetLabel":"[PRO] Show sunrise/sunset","DK_GRAY":"Dark Gray","DK_GREEN":"Dark Green","BLUE":"Blue","SecondTimeOffsetLabel":"[PRO] Second (digital) time hour offset (integer, +-24)","PURPLE":"Purple","GREEN":"Green","ShowMoveBarLabel":"Colour graph red when move bar alert is on (or orange if red set above)","AppName":"SnapshotWatch","DK_RED":"Dark Red","DK_BLUE":"Dark Blue","RED":"Red","PINK":"Pink","CodeLabel":"Activation code for PRO features","ShowHeartRateLabel":"Show heart rate, graph, and min/max values","GraphLengthLabel":"Number of past minutes to show in heart rate graph (minimum 15, maximum 240)","GraphColourLabel":"Heart rate graph colour","ShowSecondTimeLabel":"[PRO] Show second (digital) time","YELLOW":"Yellow","ORANGE":"Orange","ShowStepsLabel":"[PRO] Show steps/step goal"}}}
\ No newline at end of file
diff --git a/bin/SnapshotWatch.prg b/bin/SnapshotWatch.prg
index 0391353..f690f64 100644
Binary files a/bin/SnapshotWatch.prg and b/bin/SnapshotWatch.prg differ
diff --git a/bin/SnapshotWatch.prg.debug.xml b/bin/SnapshotWatch.prg.debug.xml
index b30c06f..3fc526a 100644
--- a/bin/SnapshotWatch.prg.debug.xml
+++ b/bin/SnapshotWatch.prg.debug.xml
@@ -1,613 +1,617 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
Load your resources here
]]>
-
+
Restore the state of the app and prepare the view to be shown
]]>
-
+
Update the view
]]>
-
+
The user has just looked at their watch. Timers and animations may be started here.
]]>
-
+
Terminate any active timers and prepare for slow updates.
]]>
-
-
-
-
-
-
-
-
-
+
@@ -615,14 +619,14 @@
Draw the watch hand
]]>
-
+
-
+
@@ -631,61 +635,71 @@
-
+
Draw the hash mark symbols
]]>
-
+
-
+
-
+
-
+
-
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
- Draw the layout
param The context
]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/manifest.xml b/manifest.xml
index 83af5e1..9e0b822 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -1,16 +1,17 @@
-
+
+
+
-
-
+
-
-
-
-
+
+ eng
+
+
-
+
\ No newline at end of file
diff --git a/monkey.jungle b/monkey.jungle
new file mode 100644
index 0000000..87796c7
--- /dev/null
+++ b/monkey.jungle
@@ -0,0 +1 @@
+project.manifest = manifest.xml
diff --git a/resources/.DS_Store b/resources/.DS_Store
new file mode 100644
index 0000000..33825a2
Binary files /dev/null and b/resources/.DS_Store differ
diff --git a/resources/drawables/.DS_Store b/resources/drawables/.DS_Store
new file mode 100644
index 0000000..010ed3f
Binary files /dev/null and b/resources/drawables/.DS_Store differ
diff --git a/resources/drawables/alarm-clock-12-Clr.png b/resources/drawables/alarm-clock-12-Clr.png
new file mode 100644
index 0000000..3072729
Binary files /dev/null and b/resources/drawables/alarm-clock-12-Clr.png differ
diff --git a/resources/drawables/alarm-clock-12-Set.png b/resources/drawables/alarm-clock-12-Set.png
new file mode 100644
index 0000000..8c043fb
Binary files /dev/null and b/resources/drawables/alarm-clock-12-Set.png differ
diff --git a/resources/drawables/battery_0.png b/resources/drawables/battery_0.png
new file mode 100644
index 0000000..b8a6f05
Binary files /dev/null and b/resources/drawables/battery_0.png differ
diff --git a/resources/drawables/battery_20.png b/resources/drawables/battery_20.png
new file mode 100644
index 0000000..cb7e0b8
Binary files /dev/null and b/resources/drawables/battery_20.png differ
diff --git a/resources/drawables/battery_40.png b/resources/drawables/battery_40.png
new file mode 100644
index 0000000..4bd2c7e
Binary files /dev/null and b/resources/drawables/battery_40.png differ
diff --git a/resources/drawables/battery_60.png b/resources/drawables/battery_60.png
new file mode 100644
index 0000000..9a4f0f6
Binary files /dev/null and b/resources/drawables/battery_60.png differ
diff --git a/resources/drawables/battery_80.png b/resources/drawables/battery_80.png
new file mode 100644
index 0000000..7a6ade9
Binary files /dev/null and b/resources/drawables/battery_80.png differ
diff --git a/resources/drawables/battery_full.png b/resources/drawables/battery_full.png
new file mode 100644
index 0000000..ba47755
Binary files /dev/null and b/resources/drawables/battery_full.png differ
diff --git a/resources/drawables/bluetooth-2-12-con.png b/resources/drawables/bluetooth-2-12-con.png
new file mode 100644
index 0000000..b743d2f
Binary files /dev/null and b/resources/drawables/bluetooth-2-12-con.png differ
diff --git a/resources/drawables/bluetooth-2-12-dc.png b/resources/drawables/bluetooth-2-12-dc.png
new file mode 100644
index 0000000..c059a95
Binary files /dev/null and b/resources/drawables/bluetooth-2-12-dc.png differ
diff --git a/resources/drawables/bluetooth-2-13-con.png b/resources/drawables/bluetooth-2-13-con.png
new file mode 100644
index 0000000..0b6ae57
Binary files /dev/null and b/resources/drawables/bluetooth-2-13-con.png differ
diff --git a/resources/drawables/bluetooth-2-13-dc.png b/resources/drawables/bluetooth-2-13-dc.png
new file mode 100644
index 0000000..6eed388
Binary files /dev/null and b/resources/drawables/bluetooth-2-13-dc.png differ
diff --git a/resources/drawables/drawables.xml b/resources/drawables/drawables.xml
index cea479a..0e03daf 100644
--- a/resources/drawables/drawables.xml
+++ b/resources/drawables/drawables.xml
@@ -1,7 +1,18 @@
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/drawables/launcher_icon.png b/resources/drawables/launcher_icon.png
index d3594e7..79f5243 100644
Binary files a/resources/drawables/launcher_icon.png and b/resources/drawables/launcher_icon.png differ
diff --git a/resources/drawables/mute-2-12-red.png b/resources/drawables/mute-2-12-red.png
new file mode 100644
index 0000000..a4f1e41
Binary files /dev/null and b/resources/drawables/mute-2-12-red.png differ
diff --git a/resources/drawables/shoe-30.png b/resources/drawables/shoe-30.png
new file mode 100644
index 0000000..657f64a
Binary files /dev/null and b/resources/drawables/shoe-30.png differ
diff --git a/resources/drawables/shoe-50.png b/resources/drawables/shoe-50.png
new file mode 100644
index 0000000..732f9cb
Binary files /dev/null and b/resources/drawables/shoe-50.png differ
diff --git a/resources/drawables/speech-bubble-12-lg.png b/resources/drawables/speech-bubble-12-lg.png
new file mode 100644
index 0000000..d759b79
Binary files /dev/null and b/resources/drawables/speech-bubble-12-lg.png differ
diff --git a/resources/drawables/volume-2-12-green.png b/resources/drawables/volume-2-12-green.png
new file mode 100644
index 0000000..e7ce80f
Binary files /dev/null and b/resources/drawables/volume-2-12-green.png differ
diff --git a/resources/drawables/volume-2-12.png b/resources/drawables/volume-2-12.png
new file mode 100644
index 0000000..b652a11
Binary files /dev/null and b/resources/drawables/volume-2-12.png differ
diff --git a/resources/drawables/watchFace1.png b/resources/drawables/watchFace1.png
new file mode 100644
index 0000000..9bf8663
Binary files /dev/null and b/resources/drawables/watchFace1.png differ
diff --git a/resources/drawables/watchface2.png b/resources/drawables/watchface2.png
new file mode 100644
index 0000000..4fa8bd3
Binary files /dev/null and b/resources/drawables/watchface2.png differ
diff --git a/resources/drawables/watchface2a.png b/resources/drawables/watchface2a.png
new file mode 100644
index 0000000..2ff58b6
Binary files /dev/null and b/resources/drawables/watchface2a.png differ
diff --git a/source/SnapshotWatchView.mc b/source/SnapshotWatchView.mc
index e2da70b..2dbc696 100644
--- a/source/SnapshotWatchView.mc
+++ b/source/SnapshotWatchView.mc
@@ -22,7 +22,7 @@ class SnapshotWatchView extends Ui.WatchFace {
var usePreferences = true;
var showHeartRate = true;
- var showSteps = false;
+ var showSteps = true;
var showRiseSet = false;
var showSecondTime = false;
var secondTimeOffset = 0;
@@ -35,9 +35,10 @@ class SnapshotWatchView extends Ui.WatchFace {
var showMoveBar = false;
var background_color = Gfx.COLOR_BLACK;
-// var background_color = Gfx.COLOR_DK_GRAY;
+ // var background_color = Gfx.COLOR_BLUE;
+ var mainTextColor = Gfx.COLOR_WHITE;
- var showSeconds = true;
+ var showSeconds = false;
var width_screen, height_screen;
var hashMarksArray = new [60];
@@ -45,8 +46,11 @@ class SnapshotWatchView extends Ui.WatchFace {
var heartMin = 1000;
var heartMax = 0;
- var proFeatures;
+ // var proFeatures = true;
+ public function initialize() {
+ Ui.WatchFace.initialize();
+ }
//! Load your resources here
function onLayout(dc) {
@@ -67,22 +71,21 @@ class SnapshotWatchView extends Ui.WatchFace {
hashMarksArray[i][0] = (i / 60.0) * Math.PI * 2;
if(i != 0 && i != 15 && i != 30 && i != 45)
- { hashMarksArray[i][1] = -85; }
+ { hashMarksArray[i][1] = -95; }
else
- { hashMarksArray[i][1] = -67; }
+ { hashMarksArray[i][1] = -85; }
}
setLayout(Rez.Layouts.WatchFace(dc));
}
-
//! Restore the state of the app and prepare the view to be shown
function onShow() {
}
//! Update the view
function onUpdate(dc) {
-
+ //var bgImage = Ui.loadResource(Rez.Drawables.BackgroundImage);
var code = "0";
if (usePreferences)
@@ -99,110 +102,137 @@ class SnapshotWatchView extends Ui.WatchFace {
secondTimeOffset = Application.getApp().getProperty("secondTimeOffset");
}
- authenticate(code);
+ // authenticate(code);
- if (!proFeatures)
- {
- showSteps = false;
- showRiseSet = false;
- showSecondTime = false;
- }
+ // if (!proFeatures)
+ // {
+ // showSteps = true;
+ // showRiseSet = false;
+ // showSecondTime = false;
+ // }
- if (showSecondTime)
- {
- if (secondTimeOffset != null && secondTimeOffset <= 24 && secondTimeOffset >= -24)
- {
- secondTimeOffset = secondTimeOffset.toNumber();
- }
- else
- {
- showSecondTime = false;
- secondTimeOffset = 0;
- }
- }
+ // if (showSecondTime)
+ // {
+ // if (secondTimeOffset <= 24 && secondTimeOffset >= -24)
+ // {
+ // secondTimeOffset = secondTimeOffset.toNumber();
+ // }
+ // else
+ // {
+ // showSecondTime = false;
+ // secondTimeOffset = 0;
+ // }
+ // }
// Clear screen
dc.setColor(background_color, Gfx.COLOR_WHITE);
dc.fillRectangle(0,0, width_screen, height_screen);
+ //dc.drawBitmap(0, 0, Ui.loadResource(Rez.Drawables.BackgroundImage));
- heartNow = 0;
+ //var myActivity = Activity.getActivityInfo();
+ heartNow = Activity.getActivityInfo().currentHeartRate;
// Plot heart rate graph
- plotHRgraph(dc);
+ //plotHRgraph(dc);
// Draw hash marks
drawHashMarks(dc);
-
- // Draw analogue clock hands
- drawHands(dc, Sys.getClockTime().hour, Sys.getClockTime().min, Sys.getClockTime().sec);
// Set text colour for the remaining information
- dc.setColor(Gfx.COLOR_WHITE, Gfx.COLOR_TRANSPARENT);
+ dc.setColor(mainTextColor, Gfx.COLOR_TRANSPARENT);
// Show cur/min/max HR values (recorded when plotting graph, above)
if (showHeartRate)
{
- if (heartNow == 0)
- { dc.drawText(width_screen/2, height_screen/2 + 20, Gfx.FONT_SMALL, "-- bpm", Graphics.TEXT_JUSTIFY_CENTER|Graphics.TEXT_JUSTIFY_VCENTER); }
+ if (heartNow == null)
+ { dc.drawText(width_screen/2, height_screen/2 + 70, Gfx.FONT_SMALL, "-- bpm", Graphics.TEXT_JUSTIFY_CENTER|Graphics.TEXT_JUSTIFY_VCENTER); }
else
- { dc.drawText(width_screen/2, height_screen/2 + 20, Gfx.FONT_SMALL, Lang.format("$1$ bpm", [heartNow]), Graphics.TEXT_JUSTIFY_CENTER|Graphics.TEXT_JUSTIFY_VCENTER); }
-
- var heartMinMaxString;
- if (heartMin == 0 || heartMax == 0)
- { heartMinMaxString = "-- / -- bpm"; }
- else
- { heartMinMaxString = Lang.format("$1$ / $2$ bpm", [heartMin, heartMax]); }
-
- dc.drawText(width_screen/2, height_screen - 19, Gfx.FONT_SMALL, heartMinMaxString, Graphics.TEXT_JUSTIFY_CENTER);
+ { dc.drawText(width_screen/2, height_screen/2 + 70, Gfx.FONT_SMALL, Lang.format("$1$ bpm", [heartNow]), Graphics.TEXT_JUSTIFY_CENTER|Graphics.TEXT_JUSTIFY_VCENTER); }
}
// Show date
+ dc.setColor(Gfx.COLOR_DK_BLUE, Gfx.COLOR_TRANSPARENT);
+ dc.drawCircle(width_screen/2-50, height_screen/2, 32);
+ dc.setColor(mainTextColor, Gfx.COLOR_TRANSPARENT);
drawDate(dc);
-
- // Show second (digital) time
- drawDigitalTime(dc, Sys.getClockTime());
+ // Show Status Icons
+ var offset = 8;
+ var heightOffset = 75;
+ var spreadOffset = offset*2;
+ dc.setColor(Gfx.COLOR_DK_BLUE, Gfx.COLOR_TRANSPARENT);
+ dc.drawEllipse(width_screen/2, height_screen/2-heightOffset+6, 37, 12);
+ dc.setColor(mainTextColor, Gfx.COLOR_TRANSPARENT);
// Show bluetooth icon
if (Sys.getDeviceSettings().phoneConnected)
- { dc.drawBitmap(39, 6, Ui.loadResource(Rez.Drawables.BluetoothIcon)); }
-
+ { dc.drawBitmap(width_screen/2-offset-4, height_screen/2-heightOffset, Ui.loadResource(Rez.Drawables.BluetoothCon)); }
+ else
+ { dc.drawBitmap(width_screen/2-offset-4, height_screen/2-heightOffset, Ui.loadResource(Rez.Drawables.BluetoothDC)); }
// Show alarm icon
if (Sys.getDeviceSettings().alarmCount > 0)
- { dc.drawBitmap(25, 23, Ui.loadResource(Rez.Drawables.AlarmIcon)); }
-
+ { dc.drawBitmap(width_screen/2-offset-spreadOffset-4, height_screen/2-heightOffset, Ui.loadResource(Rez.Drawables.AlarmIconSet)); }
+ else
+ { dc.drawBitmap(width_screen/2-offset-spreadOffset-4, height_screen/2-heightOffset, Ui.loadResource(Rez.Drawables.AlarmIconClr)); }
// Show do not disturb icon
if (Sys.getDeviceSettings().doNotDisturb)
- { dc.drawBitmap(10, 49, Ui.loadResource(Rez.Drawables.MuteIcon)); }
-
+ { dc.drawBitmap(width_screen/2+offset+spreadOffset-4, height_screen/2-heightOffset, Ui.loadResource(Rez.Drawables.MuteIcon)); }
+ else
+ { dc.drawBitmap(width_screen/2+offset+spreadOffset-4, height_screen/2-heightOffset, Ui.loadResource(Rez.Drawables.VolumeIcon)); }
// Show notification count icon
- if (Sys.getDeviceSettings().notificationCount > 0)
- {
- var offset = 0;
- if (Sys.getDeviceSettings().notificationCount >= 10) { offset = 6; }
-
- dc.drawText(width_screen/2+16+offset, 7, Gfx.FONT_SMALL, Sys.getDeviceSettings().notificationCount, Graphics.TEXT_JUSTIFY_RIGHT|Graphics.TEXT_JUSTIFY_VCENTER);
- dc.drawBitmap(width_screen/2+18+offset, 2, Ui.loadResource(Rez.Drawables.NotificationIcon));
+ var numNotifications = Sys.getDeviceSettings().notificationCount;
+ if (numNotifications >= 10) { spreadOffset += 2; }
+ dc.drawBitmap(width_screen/2+offset-4, height_screen/2-heightOffset, Ui.loadResource(Rez.Drawables.NotificationIcon));
+ if (numNotifications > 0) {
+ dc.setColor(Gfx.COLOR_RED, Gfx.COLOR_TRANSPARENT);
+ dc.drawText(width_screen/2+offset+10-4, height_screen/2-heightOffset+5, Gfx.FONT_XTINY, numNotifications, Graphics.TEXT_JUSTIFY_RIGHT|Graphics.TEXT_JUSTIFY_VCENTER);
+ dc.setColor(mainTextColor, Gfx.COLOR_TRANSPARENT);
}
- // Show battery percent
+ // Show Battery
var battery = Sys.getSystemStats().battery;
- var offset = 0;
- if (battery == 100)
- { offset = 6; }
- dc.drawText(width_screen/2-33-offset, 7, Gfx.FONT_SMALL, Lang.format("$1$%", [battery.format("%2d")]), Graphics.TEXT_JUSTIFY_LEFT|Graphics.TEXT_JUSTIFY_VCENTER);
-
- if (showSteps)
- {
- // Show steps
- dc.drawText(width_screen-4, height_screen/2 - 14, Gfx.FONT_SMALL, ActMon.getInfo().steps, Graphics.TEXT_JUSTIFY_RIGHT|Graphics.TEXT_JUSTIFY_VCENTER);
- dc.drawText(width_screen-4, height_screen/2 + 11, Gfx.FONT_SMALL, ActMon.getInfo().stepGoal, Graphics.TEXT_JUSTIFY_RIGHT|Graphics.TEXT_JUSTIFY_VCENTER);
+ offset = 40;
+ heightOffset = 7;
+ dc.setColor(Gfx.COLOR_DK_BLUE, Gfx.COLOR_TRANSPARENT);
+ dc.drawCircle(width_screen/2+offset+13, height_screen/2, 26);
+ dc.setColor(mainTextColor, Gfx.COLOR_TRANSPARENT);
+ // if (battery == 100) { offset -= 2; }
+ if (battery >= 90) {
+ // offset += 4;
+ dc.drawBitmap(width_screen/2+offset+1, height_screen/2+3-heightOffset, Ui.loadResource(Rez.Drawables.BatteryFullIcon));
+ }
+ else if (battery >= 80) {
+ dc.drawBitmap(width_screen/2+offset+1, height_screen/2+3-heightOffset, Ui.loadResource(Rez.Drawables.Battery80Icon));
+ }
+ else if (battery >= 60) {
+ dc.drawBitmap(width_screen/2+offset+1, height_screen/2+3-heightOffset, Ui.loadResource(Rez.Drawables.Battery60Icon));
+ }
+ else if (battery >= 40) {
+ dc.drawBitmap(width_screen/2+offset+1, height_screen/2+3-heightOffset, Ui.loadResource(Rez.Drawables.Battery40Icon));
+ }
+ else if (battery >= 20) {
+ dc.drawBitmap(width_screen/2+offset+1, height_screen/2+3-heightOffset, Ui.loadResource(Rez.Drawables.Battery20Icon));
+ }
+ else {
+ dc.drawBitmap(width_screen/2+offset+1, height_screen/2+3-heightOffset, Ui.loadResource(Rez.Drawables.Battery0Icon));
}
+ dc.drawText(width_screen/2+offset+15, height_screen/2-3-heightOffset, Gfx.FONT_XTINY, Lang.format("$1$%", [battery.format("%2d")]), Graphics.TEXT_JUSTIFY_CENTER|Graphics.TEXT_JUSTIFY_VCENTER);
+
+
+ // Show steps
+ dc.drawBitmap(width_screen/2-37, height_screen/2 - 58, Ui.loadResource(Rez.Drawables.ShoeIcon));
+ dc.drawText(width_screen/2, height_screen/2 - 45, Gfx.FONT_SMALL, ActMon.getInfo().steps, Graphics.TEXT_JUSTIFY_LEFT|Graphics.TEXT_JUSTIFY_VCENTER);
+ //dc.drawText(width_screen/2, height_screen/2 + 30, Gfx.FONT_SMALL, ActMon.getInfo().stepGoal, Graphics.TEXT_JUSTIFY_RIGHT|Graphics.TEXT_JUSTIFY_VCENTER);
if (showRiseSet)
{
// Show sunrise and sunset
drawSunriseSunset(dc);
}
+
+ // Show second (digital) time
+ drawDigitalTime(dc, Sys.getClockTime());
+ // Draw analogue clock hands
+ drawHands(dc, Sys.getClockTime().hour, Sys.getClockTime().min, Sys.getClockTime().sec);
}
@@ -219,162 +249,6 @@ class SnapshotWatchView extends Ui.WatchFace {
requestUpdate();
}
-
- function plotHRgraph(dc) {
-
- var curHeartMin = 0;
- var curHeartMax = 0;
-
- var sample = Sensor.getHeartRateHistory( {:order=>Sensor.ORDER_NEWEST_FIRST} );
- if (sample != null)
- {
- var heart = sample.next();
- if (heart.data != null)
- { heartNow = heart.data; }
-
- if (showHeartRate)
- {
- curHeartMin = heartMin;
- curHeartMax = heartMax;
- heartMin = 1000;
- heartMax = 0;
-
- var maxSecs = graphLength * 60;
- if (maxSecs < 900)
- { maxSecs = 900; } // 900sec = 15min
- else if (maxSecs > 14355)
- { maxSecs = 14355; } // 14400sec = 4hrs
-
- var totHeight = 44;
- var totWidth = 165;
- var binPixels = 1;
-
- var totBins = Math.ceil(totWidth / binPixels).toNumber();
- var binWidthSecs = Math.floor(binPixels * maxSecs / totWidth).toNumber();
-
- var heartSecs;
- var heartValue = 0;
- var secsBin = 0;
- var lastHeartSecs = sample.getNewestSampleTime().value();
- var heartBinMax;
- var heartBinMin;
-
- var finished = false;
-
- for (var i = 0; i < totBins; ++i) {
-
- heartBinMax = 0;
- heartBinMin = 0;
-
- if (!finished)
- {
- //deal with carryover values
- if (secsBin > 0 && heartValue != null)
- {
- heartBinMax = heartValue;
- heartBinMin = heartValue;
- }
-
- //deal with new values in this bin
- while (!finished && secsBin < binWidthSecs)
- {
- heart = sample.next();
- if (heart != null)
- {
- heartValue = heart.data;
- if (heartValue != null)
- {
- if (heartBinMax == 0)
- {
- heartBinMax = heartValue;
- heartBinMin = heartValue;
- }
- else
- {
- if (heartValue > heartBinMax)
- { heartBinMax = heartValue; }
-
- if (heartValue < heartBinMin)
- { heartBinMin = heartValue; }
- }
- }
-
- // keep track of time in this bin
- heartSecs = lastHeartSecs - heart.when.value();
- lastHeartSecs = heart.when.value();
- secsBin += heartSecs;
-
-// Sys.println(i + ": " + heartValue + " " + heartSecs + " " + secsBin + " " + heartBinMin + " " + heartBinMax);
- }
- else
- {
- finished = true;
- }
-
- } // while secsBin < binWidthSecs
-
- if (secsBin >= binWidthSecs)
- { secsBin -= binWidthSecs; }
-
- // only plot bar if we have valid values
- if (heartBinMax > 0 && heartBinMax >= heartBinMin)
- {
- if (curHeartMax > 0 && curHeartMax > curHeartMin)
- {
- var heartBinMid = (heartBinMax+heartBinMin)/2;
- var height = (heartBinMid-curHeartMin*0.9) / (curHeartMax-curHeartMin*0.9) * totHeight;
- var xVal = (width_screen-totWidth)/2 + totWidth - i*binPixels -2;
- var yVal = height_screen/2+28 + totHeight - height;
-
- if (showMoveBar && ActMon.getInfo().moveBarLevel > 0)
- {
- if (graphColour == 1)
- { dc.setColor(Gfx.COLOR_ORANGE, Gfx.COLOR_TRANSPARENT); }
- else
- { dc.setColor(Gfx.COLOR_RED, Gfx.COLOR_TRANSPARENT); }
- } else
- {
- dc.setColor(arrayColours[getHRColour(heartBinMid)], Gfx.COLOR_TRANSPARENT);
- }
-
- dc.fillRectangle(xVal, yVal, binPixels, height);
- }
-
- if (heartBinMin < heartMin)
- { heartMin = heartBinMin; }
- if (heartBinMax > heartMax)
- { heartMax = heartBinMax; }
-
-// Sys.println(i + ": " + binWidthSecs + " " + secsBin + " " + heartBinMin + " " + heartBinMax);
- }
-
- } // if !finished
-
- } // loop over all bins
-
- } // if sample != null
-
- }
- }
-
-
- function getHRColour(heartrate)
- {
- if (!useZonesColour || heartrate == null || heartrate < heartRateZones[1])
- { return graphColour; }
-// else if (heartrate >= heartRateZones[0] && heartrate < heartRateZones[1])
-// { return 0; }
- else if (heartrate >= heartRateZones[1] && heartrate < heartRateZones[2])
- { return 7; }
- else if (heartrate >= heartRateZones[2] && heartrate < heartRateZones[3])
- { return 5; }
- else if (heartrate >= heartRateZones[3] && heartrate < heartRateZones[4])
- { return 3; }
- else
- { return 2; }
- }
-
-
//! Draw the watch hand
function drawHand(dc, angle, whichHand, width, handColour)
{
@@ -428,13 +302,13 @@ class SnapshotWatchView extends Ui.WatchFace {
// Draw the hour hand - convert to minutes then compute angle
hour = ( ( ( clock_hour % 12 ) * 60 ) + clock_min ); // hour = 2*60.0;
hour = hour / (12 * 60.0) * Math.PI * 2;
- drawHand(dc, hour, 0, 2.0, Gfx.COLOR_DK_BLUE);
+ drawHand(dc, hour, 0, 2.5, Gfx.COLOR_DK_BLUE);
drawHand(dc, hour, 0, 1.6, Gfx.COLOR_LT_GRAY);
// Draw the minute hand
min = ( clock_min / 60.0); // min = 40/60.0;
min = min * Math.PI * 2;
- drawHand(dc, min, 1, 1.2, Gfx.COLOR_DK_BLUE);
+ drawHand(dc, min, 1, 1.7, Gfx.COLOR_DK_BLUE);
drawHand(dc, min, 1, 1.0, Gfx.COLOR_LT_GRAY);
// Draw the seconds hand (use hash graphic here)
@@ -446,7 +320,7 @@ class SnapshotWatchView extends Ui.WatchFace {
}
// Draw the inner circle
- dc.setColor(Gfx.COLOR_DK_GRAY, background_color);
+ dc.setColor(Gfx.COLOR_DK_BLUE, background_color);
dc.fillCircle(width_screen/2, height_screen/2, 6);
dc.setColor(background_color,background_color);
dc.drawCircle(width_screen/2, height_screen/2, 6);
@@ -499,6 +373,7 @@ class SnapshotWatchView extends Ui.WatchFace {
drawHash(dc, hashMarksArray[0][0], 110, 5, hashMarksArray[0][1], Gfx.COLOR_WHITE);
drawHash(dc, hashMarksArray[15][0], 110, 5, hashMarksArray[15][1], Gfx.COLOR_WHITE);
drawHash(dc, hashMarksArray[45][0], 110, 5, hashMarksArray[45][1], Gfx.COLOR_WHITE);
+ drawHash(dc, Math.PI, 110, 5, hashMarksArray[0][1], Gfx.COLOR_WHITE);
if(!showHeartRate)
{ drawHash(dc, hashMarksArray[30][0], 110, 5, hashMarksArray[30][1], Gfx.COLOR_WHITE); }
@@ -508,12 +383,11 @@ class SnapshotWatchView extends Ui.WatchFace {
function drawDate(dc)
{
var info = Calendar.info(Time.now(), Time.FORMAT_LONG);
- var dateStr = Lang.format("$1$ $2$ $3$", [info.day_of_week, info.month, info.day]);
+ var dateStr = Lang.format("$1$ $2$", [info.month, info.day]);
- if (showSecondTime)
- { dc.drawText(width_screen/2, height_screen/2 - 60, Gfx.FONT_MEDIUM, dateStr, Gfx.TEXT_JUSTIFY_CENTER); }
- else
- { dc.drawText(width_screen/2, height_screen/2 - 55, Gfx.FONT_MEDIUM, dateStr, Gfx.TEXT_JUSTIFY_CENTER); }
+ dc.drawText(width_screen/2-50, height_screen/2 - 30, Gfx.FONT_TINY, info.day_of_week, Gfx.TEXT_JUSTIFY_CENTER);
+ dc.drawText(width_screen/2-50, height_screen/2 - 13, Gfx.FONT_TINY, dateStr, Gfx.TEXT_JUSTIFY_CENTER);
+ dc.drawText(width_screen/2-50, height_screen/2 + 6, Gfx.FONT_TINY, info.year-2000, Gfx.TEXT_JUSTIFY_CENTER);
}
@@ -528,12 +402,12 @@ class SnapshotWatchView extends Ui.WatchFace {
else if (offsetHour < 0)
{ offsetHour += 24; }
- var ampm = "am";
+ var ampm = "AM";
if (offsetHour >= 12)
- { ampm = "pm"; }
+ { ampm = "PM"; }
- var timeString = Lang.format("$1$:$2$$3$", [to12hourFormat(offsetHour), clockTime.min.format("%02d"), ampm]);
- dc.drawText(width_screen/2, height_screen/2 - 30, Gfx.FONT_SMALL, timeString, Gfx.TEXT_JUSTIFY_CENTER|Graphics.TEXT_JUSTIFY_VCENTER);
+ var timeString = Lang.format("$1$:$2$ $3$", [to12hourFormat(offsetHour), clockTime.min.format("%02d"), ampm]);
+ dc.drawText(width_screen/2, height_screen/2 + 50, Gfx.FONT_SMALL, timeString, Gfx.TEXT_JUSTIFY_CENTER|Graphics.TEXT_JUSTIFY_VCENTER);
}
}
@@ -602,14 +476,14 @@ class SnapshotWatchView extends Ui.WatchFace {
}
- function authenticate(code) {
+ // function authenticate(code) {
- proFeatures = true;
+ // proFeatures = true;
- // set proFeatures=false
- // insert your authentication requirements here
- // then change proFeatures=true if "code" variable is valid
+ // // set proFeatures=false
+ // // insert your authentication requirements here
+ // // then change proFeatures=true if "code" variable is valid
- }
+ // }
}