Steampunk watchface (mmol support)

Includes delta granularity in the watch preferences.
This commit is contained in:
Andrew Warrington 2017-12-17 23:07:44 +01:00
parent a0983a99b9
commit bc8b93045b
6 changed files with 58 additions and 6 deletions

View file

@ -553,6 +553,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if(layoutSet){ if(layoutSet){
setDataFields(); setDataFields();
setColor();
} }
invalidate(); invalidate();
} }

View file

@ -1,6 +1,8 @@
package info.nightscout.androidaps.watchfaces; package info.nightscout.androidaps.watchfaces;
import android.content.Intent; import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.support.wearable.watchface.WatchFaceStyle; import android.support.wearable.watchface.WatchFaceStyle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -70,7 +72,7 @@ public class Steampunk extends BaseWatchFace {
float rotationAngle = 0f; //by default, show ? on the dial (? is at 0 degrees on the dial) float rotationAngle = 0f; //by default, show ? on the dial (? is at 0 degrees on the dial)
if (!sSgv.equals("---")) { if (!sSgv.equals("---")) {
if (sUnits.equals("mmol")) { if (sUnits.equals("mmol")) {
rotationAngle = Float.valueOf(sSgv) * 18f; rotationAngle = Float.valueOf(sSgv) * 18f; //convert to mg/dL, which is equivalent to degrees
} else { } else {
rotationAngle = Float.valueOf(sSgv); //if glucose a value is received, use it to determine the amount of rotation of the dial. rotationAngle = Float.valueOf(sSgv); //if glucose a value is received, use it to determine the amount of rotation of the dial.
} }
@ -88,13 +90,42 @@ public class Steampunk extends BaseWatchFace {
mGlucoseDial.startAnimation(rotate); mGlucoseDial.startAnimation(rotate);
lastEndDegrees = rotationAngle; //store the final angle as a starting point for the next rotation. lastEndDegrees = rotationAngle; //store the final angle as a starting point for the next rotation.
//rotate delta pointer. //set the delta gauge and rotate the delta pointer
float deltaIsNegative = 1f; //by default go clockwise float deltaIsNegative = 1f; //by default go clockwise
if (!sAvgDelta.equals("--")) { //if a legitimate delta value is received, then... if (!sAvgDelta.equals("--")) { //if a legitimate delta value is received, then...
if (sAvgDelta.substring(0,1).equals("-")) deltaIsNegative = -1f; //if the delta is negative, go counter-clockwise if (sAvgDelta.substring(0,1).equals("-")) deltaIsNegative = -1f; //if the delta is negative, go counter-clockwise
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 1.5f); //get rid of the sign so it can be converted to float. then, for each 10 in avgDelta we need to move 15 degrees, hence multiply avgDelta by 1.5.
//ensure the delta gauge is the right units and granularity
if (!sUnits.equals("-")) {
if (sUnits.equals("mmol")) {
if (sharedPrefs.getString("delta_granularity", "2").equals("1")) { //low
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mmol_10);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 30f); //get rid of the sign so it can be converted to float.
}
if (sharedPrefs.getString("delta_granularity", "2").equals("2")) { //medium
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mmol_05);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 60f); //get rid of the sign so it can be converted to float.
}
if (sharedPrefs.getString("delta_granularity", "2").equals("3")) { //high
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mmol_03);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 100f); //get rid of the sign so it can be converted to float.
}
} else {
if (sharedPrefs.getString("delta_granularity", "2").equals("1")) { //low
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mgdl_20);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 1.5f); //get rid of the sign so it can be converted to float.
}
if (sharedPrefs.getString("delta_granularity", "2").equals("2")) { //medium
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mgdl_10);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 3f); //get rid of the sign so it can be converted to float.
}
if (sharedPrefs.getString("delta_granularity", "2").equals("3")) { //high
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mgdl_5);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 6f); //get rid of the sign so it can be converted to float.
}
}
}
if (deltaRotationAngle > 35) deltaRotationAngle = 35f; if (deltaRotationAngle > 35) deltaRotationAngle = 35f;
if (deltaRotationAngle < -35) deltaRotationAngle = -35f; //if the needle will go off the chart in either direction, make it stop at the end of the gauge.
mDeltaGauge.setRotation(deltaRotationAngle * deltaIsNegative); mDeltaGauge.setRotation(deltaRotationAngle * deltaIsNegative);
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 645 KiB

View file

@ -245,7 +245,7 @@
android:text="-'" android:text="-'"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/black_86p" android:textColor="@color/black_86p"
android:textSize="12sp" android:textSize="11sp"
android:textStyle="bold" /> android:textStyle="bold" />
</LinearLayout> </LinearLayout>
@ -303,7 +303,7 @@
android:text="-'" android:text="-'"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/black_86p" android:textColor="@color/black_86p"
android:textSize="12sp" android:textSize="11sp"
android:textStyle="bold" /> android:textStyle="bold" />
</LinearLayout> </LinearLayout>

View file

@ -20,6 +20,18 @@
<item>5</item> <item>5</item>
</string-array> </string-array>
<string-array name="delta_granularity">
<item>Low</item>
<item>Medium</item>
<item>High</item>
</string-array>
<string-array name="delta_granularity_values">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="input_design"> <string-array name="input_design">
<item>Default</item> <item>Default</item>
<item>Quick righty</item> <item>Quick righty</item>

View file

@ -141,6 +141,14 @@
android:summary="Input Design" android:summary="Input Design"
android:title="Input Design" /> android:title="Input Design" />
<ListPreference
android:defaultValue="2"
android:entries="@array/delta_granularity"
android:entryValues="@array/delta_granularity_values"
android:key="delta_granularity"
android:summary="Delta Granularity (Steampunk)"
android:title="Delta Granularity (Steampunk)" />
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="showBigNumbers" android:key="showBigNumbers"