diff --git a/repafield1.png b/repafield1.png
index 937b9df..129d46b 100644
Binary files a/repafield1.png and b/repafield1.png differ
diff --git a/resources/layouts/layouts.xml b/resources/layouts/layouts.xml
index 8647ead..fcd5b05 100755
--- a/resources/layouts/layouts.xml
+++ b/resources/layouts/layouts.xml
@@ -23,10 +23,6 @@
-
-
-
-
@@ -54,12 +50,24 @@
-
-
+
+ 64
+
+
+
+
+
+
-
-
+
+ 64
+
+
+
+
+
+
diff --git a/resources/settings/properties.xml b/resources/settings/properties.xml
index 7d8135a..1afc74f 100644
--- a/resources/settings/properties.xml
+++ b/resources/settings/properties.xml
@@ -1,4 +1,6 @@
0.8.0
0088FF
+ 0088FF
+ FFFF00
\ No newline at end of file
diff --git a/resources/settings/settings.xml b/resources/settings/settings.xml
index 581230a..1366662 100644
--- a/resources/settings/settings.xml
+++ b/resources/settings/settings.xml
@@ -6,5 +6,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/strings/strings.xml b/resources/strings/strings.xml
index 72a2433..ccec925 100644
--- a/resources/strings/strings.xml
+++ b/resources/strings/strings.xml
@@ -1,7 +1,7 @@
RepaField
Version
- Theme Color
-
- My Value
+ Primary Theme Color
+ Secondary Theme Color
+ Clock Color
diff --git a/source/RepaFieldView.mc b/source/RepaFieldView.mc
index fe551a3..c4d030c 100644
--- a/source/RepaFieldView.mc
+++ b/source/RepaFieldView.mc
@@ -8,15 +8,37 @@ import Toybox.Application;
class RepaFieldView extends WatchUi.DataField {
+ // settings
hidden var themeColor as Numeric;
-
- hidden var hrValue as Numeric;
- hidden var ahrValue as Numeric;
- hidden var mhrValue as Numeric;
+ hidden var themeColor2 as Numeric;
+ hidden var themeColor3 as Numeric;
hidden var hrZones as Array;
hidden var hrZoneColors as Array;
hidden var cadenceZones as Array;
hidden var cadenceZoneColors as Array;
+
+ // fields
+ hidden var fBgOverlay;
+ hidden var fTrack;
+ hidden var fPace;
+ hidden var fAPace;
+ hidden var fElevation;
+ hidden var fElevationGain;
+ hidden var fElevationLoss;
+ hidden var fCadence;
+ hidden var fDistance;
+ hidden var fTime;
+ hidden var fTimer;
+ hidden var fTimerSec;
+ hidden var fHr;
+ hidden var fAHr;
+ hidden var fMHr;
+ hidden var fHrGraph;
+
+ // values
+ hidden var hrValue as Numeric;
+ hidden var ahrValue as Numeric;
+ hidden var mhrValue as Numeric;
hidden var toDestination as Float;
hidden var distance as Float;
hidden var timer as Numeric;
@@ -33,6 +55,8 @@ class RepaFieldView extends WatchUi.DataField {
DataField.initialize();
themeColor = Application.Properties.getValue("themeColor").toNumberWithBase(16);
+ themeColor2 = Application.Properties.getValue("themeColor2").toNumberWithBase(16);
+ themeColor3 = Application.Properties.getValue("themeColor3").toNumberWithBase(16);
hrValue = 0;
ahrValue = 0;
@@ -78,39 +102,46 @@ class RepaFieldView extends WatchUi.DataField {
function onLayout(dc as Dc) as Void {
var obscurityFlags = DataField.getObscurityFlags();
- // TODO ?
// Top layout
if (obscurityFlags == (OBSCURE_TOP | OBSCURE_LEFT | OBSCURE_RIGHT)) {
View.setLayout(Rez.Layouts.TopLayout(dc));
+ return;
// Bottom layout
} else if (obscurityFlags == (OBSCURE_BOTTOM | OBSCURE_LEFT | OBSCURE_RIGHT)) {
View.setLayout(Rez.Layouts.BottomLayout(dc));
+ return;
+ }
// Use the generic, centered layout
- } else {
- View.setLayout(Rez.Layouts.MainLayout(dc));
- }
+ View.setLayout(Rez.Layouts.MainLayout(dc));
- // TODO remove
- var label = View.findDrawableById("label") as Text;
- if (label != null) {
- label.setText(Rez.Strings.label);
- }
+ // fields
+ fBgOverlay = View.findDrawableById("BgOverlay") as BgOverlay;
+ fTrack = View.findDrawableById("Track") as Track;
+ fPace = View.findDrawableById("pace") as Text;
+ fAPace = View.findDrawableById("apace") as Text;
+ fElevation = View.findDrawableById("elevation") as Text;
+ fElevationGain = View.findDrawableById("elevationGain") as Text;
+ fElevationLoss = View.findDrawableById("elevationLoss") as Text;
+ fTime = View.findDrawableById("time") as Text;
+ fTimer = View.findDrawableById("timerHM") as Text;
+ fTimerSec = View.findDrawableById("timerS") as Text;
+ fCadence = View.findDrawableById("cadence") as Text;
+ fDistance = View.findDrawableById("distance") as Text;
+ fHr = View.findDrawableById("hr") as Text;
+ fAHr = View.findDrawableById("ahr") as Text;
+ fMHr = View.findDrawableById("mhr") as Text;
+ fHrGraph = View.findDrawableById("HeartRate") as HeartRate;
- // theme color
- var bgo = View.findDrawableById("BgOverlay") as BgOverlay;
- bgo.setColor1(darken(themeColor, 4));
- bgo.setColor2(darken(themeColor, 2));
-
- var elevationField = View.findDrawableById("elevation") as Text;
- elevationField.setColor(themeColor);
- var elevationGainField = View.findDrawableById("elevationGain") as Text;
- elevationGainField.setColor(themeColor);
- var elevationLossField = View.findDrawableById("elevationLoss") as Text;
- elevationLossField.setColor(themeColor);
- var aPaceField = View.findDrawableById("apace") as Text;
- aPaceField.setColor(themeColor);
+ // theme setup
+ fBgOverlay.setColor1(darken(themeColor, 4));
+ fBgOverlay.setColor2(darken(themeColor, 2));
+ fAPace.setColor(themeColor);
+ fElevation.setColor(themeColor2);
+ fElevationGain.setColor(themeColor2);
+ fElevationLoss.setColor(themeColor2);
+ fTime.setColor(themeColor3);
}
function compute(info as Activity.Info) as Void {
@@ -189,60 +220,36 @@ class RepaFieldView extends WatchUi.DataField {
// Display the value you computed here. This will be called
// once a second when the data field is visible.
function onUpdate(dc as Dc) as Void {
- // Set the background color - don't ;)
- // (View.findDrawableById("Background") as Background).setColor(getBackgroundColor());
-
// HR value
var hrColor = calculateZoneColor(hrValue, hrZones, hrZoneColors);
- var hr = View.findDrawableById("hr") as Text;
- hr.setColor(hrColor);
- hr.setText(hrValue.format("%d"));
- var ahr = View.findDrawableById("ahr") as Text;
- ahr.setColor(darken(calculateZoneColor(ahrValue, hrZones, hrZoneColors), 2));
- ahr.setText(ahrValue.format("%d"));
- var mhr = View.findDrawableById("mhr") as Text;
- mhr.setColor(darken(calculateZoneColor(mhrValue, hrZones, hrZoneColors), 2));
- mhr.setText(mhrValue.format("%d"));
- var hrGraph = View.findDrawableById("HeartRate") as HeartRate;
- if (hrGraph != null) {
- hrGraph.setHRColor(hrColor);
- hrGraph.setHRZones(hrZones);
- hrGraph.setHRValue(hrValue);
+ fHr.setColor(hrColor);
+ fHr.setText(hrValue.format("%d"));
+ fAHr.setColor(darken(calculateZoneColor(ahrValue, hrZones, hrZoneColors), 2));
+ fAHr.setText(ahrValue.format("%d"));
+ fMHr.setColor(darken(calculateZoneColor(mhrValue, hrZones, hrZoneColors), 2));
+ fMHr.setText(mhrValue.format("%d"));
+ if (fHrGraph != null) {
+ fHrGraph.setHRColor(hrColor);
+ fHrGraph.setHRZones(hrZones);
+ fHrGraph.setHRValue(hrValue);
}
// track
- var track = View.findDrawableById("Track") as Track;
- if (track != null) {
- track.setToDestination(toDestination);
- track.setDistance(distance);
- track.setOffCourse(offCourse);
+ if (fTrack != null) {
+ fTrack.setToDestination(toDestination);
+ fTrack.setDistance(distance);
+ fTrack.setOffCourse(offCourse);
}
// time
- var time = System.getClockTime();
- var tstr = time.hour.format("%02d") + ":" + time.min.format("%02d");
- var timeField = View.findDrawableById("time") as Text;
- if (timeField != null) {
- timeField.setText(tstr);
+ if (fTime != null) {
+ var time = System.getClockTime();
+ var tstr = time.hour.format("%02d") + ":" + time.min.format("%02d");
+ fTime.setText(tstr);
}
- // TODO ?
- var ts1 = View.findDrawableById("timeS1") as Text;
- var ts2 = View.findDrawableById("timeS2") as Text;
- var ts3 = View.findDrawableById("timeS3") as Text;
- var ts4 = View.findDrawableById("timeS4") as Text;
- ts1.setColor(themeColor);
- ts1.setText(tstr);
- ts2.setColor(themeColor);
- ts2.setText(tstr);
- ts3.setColor(themeColor);
- ts3.setText(tstr);
- ts4.setColor(themeColor);
- ts4.setText(tstr);
// timer
- var timerField = View.findDrawableById("timerHM") as Text;
- var timerSecField = View.findDrawableById("timerS") as Text;
- if (timerField != null) {
+ if (fTimer != null) {
var trh = timer / 3600;
var trm = (timer % 3600) / 60;
var trs = timer % 60;
@@ -252,90 +259,72 @@ class RepaFieldView extends WatchUi.DataField {
} else if (timerState == Activity.TIMER_STATE_PAUSED) {
timerColor = Graphics.COLOR_YELLOW;
}
- timerField.setColor(timerColor);
+ fTimer.setColor(timerColor);
if (trh > 0) {
- timerField.setText(trh.format("%d") + ":" + trm.format("%02d"));
+ fTimer.setText(trh.format("%d") + ":" + trm.format("%02d"));
} else {
- timerField.setText(trm.format("%02d"));
+ fTimer.setText(trm.format("%02d"));
}
- if (timerSecField != null) {
- timerSecField.setColor(darken(timerColor, 1.5));
- timerSecField.setText(trs.format("%02d"));
+ if (fTimerSec != null) {
+ fTimerSec.setColor(darken(timerColor, 1.5));
+ fTimerSec.setText(trs.format("%02d"));
}
}
// distance
- var dstField = View.findDrawableById("distance") as Text;
- if (dstField != null) {
+ if (fDistance != null) {
if (distance >= 10000) {
- dstField.setText((distance / 1000).format("%.1f"));
+ fDistance.setText((distance / 1000).format("%.1f"));
} else {
- dstField.setText((distance / 1000).format("%.2f"));
+ fDistance.setText((distance / 1000).format("%.2f"));
}
}
// pace
- var paceField = View.findDrawableById("pace") as Text;
- if (paceField != null) {
+ if (fPace != null) {
if (speed != 0) {
var pace = 1000 / 60 / speed; // mps -> min/km
var pmin = pace.toNumber();
var psec = (pace - pmin) * 60;
- paceField.setText(pmin.format("%2d") + ":" + psec.format("%02d"));
+ fPace.setText(pmin.format("%2d") + ":" + psec.format("%02d"));
} else {
- paceField.setText("--:--");
+ fPace.setText("--:--");
}
}
- var apaceField = View.findDrawableById("apace") as Text;
- if (apaceField != null) {
+ if (fAPace != null) {
if (aspeed != 0) {
var apace = 1000 / 60 / aspeed; // mps -> min/km
var apmin = apace.toNumber();
var apsec = (apace - apmin) * 60;
- apaceField.setText(apmin.format("%2d") + ":" + apsec.format("%02d"));
+ fAPace.setText(apmin.format("%2d") + ":" + apsec.format("%02d"));
} else {
- apaceField.setText("--:--");
+ fAPace.setText("--:--");
}
}
// alt/egain/edrop
- var altField = View.findDrawableById("elevation") as Text;
- if (altField != null) {
+ if (fElevation != null) {
// draw icon
- altField.setText(altitude.format("%.0f"));
+ fElevation.setText(altitude.format("%.0f"));
}
- var eGainField = View.findDrawableById("elevationGain") as Text;
- if (eGainField != null) {
- eGainField.setText(egain.format("%d"));
+ if (fElevationGain != null) {
+ fElevationGain.setText(egain.format("%d"));
}
- var eDropField = View.findDrawableById("elevationLoss") as Text;
- if (eDropField != null) {
- eDropField.setText(edrop.format("%d"));
+ if (fElevationLoss != null) {
+ fElevationLoss.setText(edrop.format("%d"));
}
// cadence
- var cadenceColor = darken(calculateZoneColor(cadence, cadenceZones, cadenceZoneColors), 1.5);
- var cadenceField = View.findDrawableById("cadence") as Text;
- cadenceField.setColor(cadenceColor);
- if (cadenceField != null) {
+ if (fCadence != null) {
+ var cadenceColor = darken(calculateZoneColor(cadence, cadenceZones, cadenceZoneColors), 1.5);
+ fCadence.setColor(cadenceColor);
if (cadence != 0) {
- cadenceField.setText(cadence.format("%d"));
+ fCadence.setText(cadence.format("%d"));
} else {
- cadenceField.setText("-");
+ fCadence.setText("-");
}
}
- // Set the foreground color and value
- var value = View.findDrawableById("value") as Text;
- if (value != null) {
- if (getBackgroundColor() == Graphics.COLOR_BLACK) {
- value.setColor(Graphics.COLOR_WHITE);
- } else {
- value.setColor(Graphics.COLOR_BLACK);
- }
- value.setText(hrValue.format("%d"));
- }
-
// Call parent's onUpdate(dc) to redraw the layout
View.onUpdate(dc);
}