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 - } + // } }