From 58ec887ae848c07629a1816551ee9786b94835fd Mon Sep 17 00:00:00 2001 From: Darren Croton Date: Sun, 23 Apr 2017 13:23:01 +1000 Subject: [PATCH] Added PRO features option and authenticate code in settings --- bin/SnapshotWatch-settings.json | 2 +- bin/SnapshotWatch.prg | Bin 59272 -> 60477 bytes bin/SnapshotWatch.prg.debug.xml | 764 ++++++++++++++++---------------- resources/resources.xml | 9 +- source/SnapshotWatchView.mc | 41 +- 5 files changed, 432 insertions(+), 384 deletions(-) diff --git a/bin/SnapshotWatch-settings.json b/bin/SnapshotWatch-settings.json index 864156d..66aa984 100644 --- a/bin/SnapshotWatch-settings.json +++ b/bin/SnapshotWatch-settings.json @@ -1 +1 @@ -{"settings":[{"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":"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":"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?","DK_GRAY":"Dark Gray","DK_GREEN":"Dark Green","BLUE":"Blue","SecondTimeOffsetLabel":"Second (digital) time hour offset (integer, +-24)","PURPLE":"Purple","GREEN":"Green","DK_RED":"Dark Red","DK_BLUE":"Dark Blue","AppName":"SnapshotWatch","RED":"Red","PINK":"Pink","ShowHeartRateLabel":"Show heart rate graph and min/max values","GraphColourLabel":"Heart rate graph colour","ShowSecondTimeLabel":"Show second (digital) time","YELLOW":"Yellow","ORANGE":"Orange"}}} \ No newline at end of file +{"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":"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":"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?","DK_GRAY":"Dark Gray","DK_GREEN":"Dark Green","BLUE":"Blue","SecondTimeOffsetLabel":"[PRO] Second (digital) time hour offset (integer, +-24)","PURPLE":"Purple","GREEN":"Green","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","GraphColourLabel":"Heart rate graph colour","ShowSecondTimeLabel":"[PRO] Show second (digital) time","YELLOW":"Yellow","ORANGE":"Orange"}}} \ No newline at end of file diff --git a/bin/SnapshotWatch.prg b/bin/SnapshotWatch.prg index 4e06dc97d67632907755e44f2a0c268de7d22320..19c9ae5378cf676d16f94d629e1396772544aba2 100644 GIT binary patch delta 24459 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 P7jdEcw7nC*^)>z(I5kxv7RZxNo(u))c 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - + + - + - + - - + + - + + - + - + - + - - - - - - - + + + + + + + - - - + + + - + - + - - + + + - - + + - - - - - + + + + + - - - + + + - + - - + + - + - - - + + + - + - + - + - - - + + + + @@ -419,69 +430,70 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -573,6 +585,10 @@ + + + + diff --git a/resources/resources.xml b/resources/resources.xml index 1ab1ef5..e9c0193 100644 --- a/resources/resources.xml +++ b/resources/resources.xml @@ -1,6 +1,7 @@ + get code at app store page true 0 true @@ -9,6 +10,7 @@ + Activation code for PRO features Show heart rate graph and min/max values Heart rate graph colour Dark Gray @@ -23,11 +25,14 @@ Purple Pink Additionally colour code graph by profile heart rate zones? - Show second (digital) time - Second (digital) time hour offset (integer, +-24) + [PRO] Show second (digital) time + [PRO] Second (digital) time hour offset (integer, +-24) + + + diff --git a/source/SnapshotWatchView.mc b/source/SnapshotWatchView.mc index dc7e8e4..de259e3 100644 --- a/source/SnapshotWatchView.mc +++ b/source/SnapshotWatchView.mc @@ -41,6 +41,8 @@ class SnapshotWatchView extends Ui.WatchFace { var heartMin; var heartMax; + var proFeatures; + //! Load your resources here function onLayout(dc) { @@ -49,6 +51,7 @@ class SnapshotWatchView extends Ui.WatchFace { width_screen = dc.getWidth(); height_screen = dc.getHeight(); + //colours and zones arrayColours = [Gfx.COLOR_DK_GRAY, Gfx.COLOR_RED, Gfx.COLOR_DK_RED, Gfx.COLOR_ORANGE, Gfx.COLOR_YELLOW, Gfx.COLOR_GREEN, Gfx.COLOR_DK_GREEN, Gfx.COLOR_BLUE, Gfx.COLOR_DK_BLUE, Gfx.COLOR_PURPLE, Gfx.COLOR_PINK]; heartRateZones = User.getHeartRateZones(User.getCurrentSport()); // heartRateZones = [98, 127, 146, 166, 185, 195]; @@ -76,8 +79,11 @@ class SnapshotWatchView extends Ui.WatchFace { //! Update the view function onUpdate(dc) { + var code = "0"; + if (usePreferences) { + code = Application.getApp().getProperty("code"); showHeartRate = Application.getApp().getProperty("showHeartRate"); graphColour = Application.getApp().getProperty("graphColour"); useZonesColour = Application.getApp().getProperty("useZonesColour"); @@ -85,6 +91,13 @@ class SnapshotWatchView extends Ui.WatchFace { secondTimeOffset = Application.getApp().getProperty("secondTimeOffset"); } + authenticate(code); + + if (!proFeatures) + { + showSecondTime = false; + } + if (showSecondTime) { if (secondTimeOffset != null && secondTimeOffset <= 24 && secondTimeOffset >= -24) @@ -170,13 +183,16 @@ class SnapshotWatchView extends Ui.WatchFace { { 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); - // 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); - - // Show sunrise and sunset - drawSunriseSunset(dc); - + if (proFeatures) + { + // 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); + + // Show sunrise and sunset + drawSunriseSunset(dc); + } + } @@ -548,5 +564,16 @@ class SnapshotWatchView extends Ui.WatchFace { return hour12; } + + + function authenticate(code) { + + proFeatures = true; + + // set proFeatures=false + // insert your authentication requirements here + // then change proFeatures=true if "code" variable is valid + + } }