Merge pull request #524 from MilosKozak/watchfaces

Watchfaces Andrew
This commit is contained in:
AdrianLxM 2017-12-04 23:19:52 +01:00 committed by GitHub
commit 17867478fb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 2711 additions and 234 deletions

View file

@ -308,6 +308,15 @@ public class NSDeviceStatus {
return Html.fromHtml(string.toString()); return Html.fromHtml(string.toString());
} }
public static long getOpenApsTimestamp() {
if (deviceStatusOpenAPSData.clockSuggested != 0) {
return deviceStatusOpenAPSData.clockSuggested;
} else {
return -1;
}
}
public Spanned getExtendedOpenApsStatus() { public Spanned getExtendedOpenApsStatus() {
StringBuilder string = new StringBuilder(); StringBuilder string = new StringBuilder();

View file

@ -25,6 +25,7 @@ import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import info.nightscout.androidaps.Config;
import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R; import info.nightscout.androidaps.R;
@ -36,8 +37,11 @@ import info.nightscout.androidaps.db.DatabaseHelper;
import info.nightscout.androidaps.db.TemporaryBasal; import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.TreatmentsInterface; import info.nightscout.androidaps.interfaces.TreatmentsInterface;
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData;
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.Loop.LoopPlugin; import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSDeviceStatus;
import info.nightscout.androidaps.plugins.Overview.OverviewPlugin; import info.nightscout.androidaps.plugins.Overview.OverviewPlugin;
import info.nightscout.androidaps.plugins.Wear.ActionStringHandler; import info.nightscout.androidaps.plugins.Wear.ActionStringHandler;
import info.nightscout.androidaps.plugins.Wear.WearPlugin; import info.nightscout.androidaps.plugins.Wear.WearPlugin;
@ -119,11 +123,6 @@ public class WatchUpdaterService extends WearableListenerService implements
@Override @Override
public int onStartCommand(Intent intent, int flags, int startId) { public int onStartCommand(Intent intent, int flags, int startId) {
double timestamp = 0;
if (intent != null) {
timestamp = intent.getDoubleExtra("timestamp", 0);
}
String action = null; String action = null;
if (intent != null) { if (intent != null) {
action = intent.getAction(); action = intent.getAction();
@ -241,23 +240,21 @@ public class WatchUpdaterService extends WearableListenerService implements
} else if (lastBG.value < lowLine) { } else if (lastBG.value < lowLine) {
sgvLevel = -1; sgvLevel = -1;
} }
DataMap dataMap = new DataMap();
int battery = getBatteryLevel(getApplicationContext()); DataMap dataMap = new DataMap();
dataMap.putString("sgvString", lastBG.valueToUnitsToString(units)); dataMap.putString("sgvString", lastBG.valueToUnitsToString(units));
dataMap.putDouble("timestamp", lastBG.date); dataMap.putLong("timestamp", lastBG.date);
if (glucoseStatus == null) { if (glucoseStatus == null) {
dataMap.putString("slopeArrow", ""); dataMap.putString("slopeArrow", "");
dataMap.putString("delta", ""); dataMap.putString("delta", "--");
dataMap.putString("avgDelta", ""); dataMap.putString("avgDelta", "--");
} else { } else {
dataMap.putString("slopeArrow", slopeArrow(glucoseStatus.delta)); dataMap.putString("slopeArrow", slopeArrow(glucoseStatus.delta));
dataMap.putString("delta", deltastring(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units)); dataMap.putString("delta", deltastring(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units));
dataMap.putString("avgDelta", deltastring(glucoseStatus.avgdelta, glucoseStatus.avgdelta * Constants.MGDL_TO_MMOLL, units)); dataMap.putString("avgDelta", deltastring(glucoseStatus.avgdelta, glucoseStatus.avgdelta * Constants.MGDL_TO_MMOLL, units));
} }
dataMap.putString("battery", "" + battery);
dataMap.putLong("sgvLevel", sgvLevel); dataMap.putLong("sgvLevel", sgvLevel);
dataMap.putInt("batteryLevel", (battery >= 30) ? 1 : 0);
dataMap.putDouble("sgvDouble", lastBG.value); dataMap.putDouble("sgvDouble", lastBG.value);
dataMap.putDouble("high", highLine); dataMap.putDouble("high", highLine);
dataMap.putDouble("low", lowLine); dataMap.putDouble("low", lowLine);
@ -272,11 +269,21 @@ public class WatchUpdaterService extends WearableListenerService implements
deltastring += "-"; deltastring += "-";
} }
boolean detailed = SP.getBoolean("wear_detailed_delta", false);
if (units.equals(Constants.MGDL)) { if (units.equals(Constants.MGDL)) {
if (detailed) {
deltastring += DecimalFormatter.to1Decimal(Math.abs(deltaMGDL)); deltastring += DecimalFormatter.to1Decimal(Math.abs(deltaMGDL));
} else {
deltastring += DecimalFormatter.to0Decimal(Math.abs(deltaMGDL));
}
} else {
if (detailed){
deltastring += DecimalFormatter.to2Decimal(Math.abs(deltaMMOL));
} else { } else {
deltastring += DecimalFormatter.to1Decimal(Math.abs(deltaMMOL)); deltastring += DecimalFormatter.to1Decimal(Math.abs(deltaMMOL));
} }
}
return deltastring; return deltastring;
} }
@ -470,7 +477,7 @@ public class WatchUpdaterService extends WearableListenerService implements
if (googleApiClient.isConnected()) { if (googleApiClient.isConnected()) {
PutDataMapRequest dataMapRequest = PutDataMapRequest.create(OPEN_SETTINGS_PATH); PutDataMapRequest dataMapRequest = PutDataMapRequest.create(OPEN_SETTINGS_PATH);
//unique content //unique content
dataMapRequest.getDataMap().putDouble("timestamp", System.currentTimeMillis()); dataMapRequest.getDataMap().putLong("timestamp", System.currentTimeMillis());
dataMapRequest.getDataMap().putString("openSettings", "openSettings"); dataMapRequest.getDataMap().putString("openSettings", "openSettings");
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest(); PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest); Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
@ -483,7 +490,7 @@ public class WatchUpdaterService extends WearableListenerService implements
if (googleApiClient.isConnected()) { if (googleApiClient.isConnected()) {
PutDataMapRequest dataMapRequest = PutDataMapRequest.create(BOLUS_PROGRESS_PATH); PutDataMapRequest dataMapRequest = PutDataMapRequest.create(BOLUS_PROGRESS_PATH);
//unique content //unique content
dataMapRequest.getDataMap().putDouble("timestamp", System.currentTimeMillis()); dataMapRequest.getDataMap().putLong("timestamp", System.currentTimeMillis());
dataMapRequest.getDataMap().putString("bolusProgress", "bolusProgress"); dataMapRequest.getDataMap().putString("bolusProgress", "bolusProgress");
dataMapRequest.getDataMap().putString("progressstatus", status); dataMapRequest.getDataMap().putString("progressstatus", status);
dataMapRequest.getDataMap().putInt("progresspercent", progresspercent); dataMapRequest.getDataMap().putInt("progresspercent", progresspercent);
@ -498,7 +505,7 @@ public class WatchUpdaterService extends WearableListenerService implements
if (googleApiClient.isConnected()) { if (googleApiClient.isConnected()) {
PutDataMapRequest dataMapRequest = PutDataMapRequest.create(ACTION_CONFIRMATION_REQUEST_PATH); PutDataMapRequest dataMapRequest = PutDataMapRequest.create(ACTION_CONFIRMATION_REQUEST_PATH);
//unique content //unique content
dataMapRequest.getDataMap().putDouble("timestamp", System.currentTimeMillis()); dataMapRequest.getDataMap().putLong("timestamp", System.currentTimeMillis());
dataMapRequest.getDataMap().putString("actionConfirmationRequest", "actionConfirmationRequest"); dataMapRequest.getDataMap().putString("actionConfirmationRequest", "actionConfirmationRequest");
dataMapRequest.getDataMap().putString("title", title); dataMapRequest.getDataMap().putString("title", title);
dataMapRequest.getDataMap().putString("message", message); dataMapRequest.getDataMap().putString("message", message);
@ -514,14 +521,57 @@ public class WatchUpdaterService extends WearableListenerService implements
} }
private void sendStatus() { private void sendStatus() {
if (googleApiClient.isConnected()) { if (googleApiClient.isConnected()) {
String status = generateStatusString(); TreatmentsInterface treatmentsInterface = MainApp.getConfigBuilder();
treatmentsInterface.updateTotalIOBTreatments();
IobTotal bolusIob = treatmentsInterface.getLastCalculationTreatments().round();
treatmentsInterface.updateTotalIOBTempBasals();
IobTotal basalIob = treatmentsInterface.getLastCalculationTempBasals().round();
String iobSum = DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob);
String iobDetail = "(" + DecimalFormatter.to2Decimal(bolusIob.iob) + "|" + DecimalFormatter.to2Decimal(basalIob.basaliob) + ")";
String cobString = generateCOBString();
String tempBasal = generateBasalString(treatmentsInterface);
//bgi
String bgiString = "";
Profile profile = MainApp.getConfigBuilder().getProfile();
double bgi = -(bolusIob.activity + basalIob.activity) * 5 * profile.getIsf();
bgiString = "" + ((bgi >= 0) ? "+" : "") + DecimalFormatter.to1Decimal(bgi);
String status = generateStatusString(profile, tempBasal,iobSum, iobDetail, bgiString);
//batteries
int phoneBattery = getBatteryLevel(getApplicationContext());
String rigBattery = NSDeviceStatus.getInstance().getUploaderStatus().trim();
long openApsStatus = -1;
//OpenAPS status
if(Config.APS){
//we are AndroidAPS
openApsStatus = LoopPlugin.lastRun != null && LoopPlugin.lastRun.lastEnact != null && LoopPlugin.lastRun.lastEnact.getTime() != 0 ? LoopPlugin.lastRun.lastEnact.getTime(): -1;
} else {
//NSClient or remote
openApsStatus = NSDeviceStatus.getOpenApsTimestamp();
}
PutDataMapRequest dataMapRequest = PutDataMapRequest.create(NEW_STATUS_PATH); PutDataMapRequest dataMapRequest = PutDataMapRequest.create(NEW_STATUS_PATH);
//unique content //unique content
dataMapRequest.getDataMap().putDouble("timestamp", System.currentTimeMillis());
dataMapRequest.getDataMap().putString("externalStatusString", status); dataMapRequest.getDataMap().putString("externalStatusString", status);
dataMapRequest.getDataMap().putString("iobSum", iobSum);
dataMapRequest.getDataMap().putString("iobDetail", iobDetail);
dataMapRequest.getDataMap().putBoolean("detailedIob", mPrefs.getBoolean("wear_detailediob", false));
dataMapRequest.getDataMap().putString("cob", cobString);
dataMapRequest.getDataMap().putString("tempBasal", tempBasal);
dataMapRequest.getDataMap().putString("battery", "" + phoneBattery);
dataMapRequest.getDataMap().putString("rigBattery", rigBattery);
dataMapRequest.getDataMap().putLong("openApsStatus", openApsStatus);
dataMapRequest.getDataMap().putString("bgi", bgiString);
dataMapRequest.getDataMap().putBoolean("showBgi", mPrefs.getBoolean("wear_showbgi", false));
dataMapRequest.getDataMap().putInt("batteryLevel", (phoneBattery >= 30) ? 1 : 0);
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest(); PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest); Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
} else { } else {
@ -536,7 +586,7 @@ public class WatchUpdaterService extends WearableListenerService implements
PutDataMapRequest dataMapRequest = PutDataMapRequest.create(NEW_PREFERENCES_PATH); PutDataMapRequest dataMapRequest = PutDataMapRequest.create(NEW_PREFERENCES_PATH);
//unique content //unique content
dataMapRequest.getDataMap().putDouble("timestamp", System.currentTimeMillis()); dataMapRequest.getDataMap().putLong("timestamp", System.currentTimeMillis());
dataMapRequest.getDataMap().putBoolean("wearcontrol", wearcontrol); dataMapRequest.getDataMap().putBoolean("wearcontrol", wearcontrol);
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest(); PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest); Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
@ -546,10 +596,10 @@ public class WatchUpdaterService extends WearableListenerService implements
} }
@NonNull @NonNull
private String generateStatusString() { private String generateStatusString(Profile profile, String tempBasal, String iobSum, String iobDetail, String bgiString) {
String status = ""; String status = "";
Profile profile = MainApp.getConfigBuilder().getProfile();
if (profile == null) { if (profile == null) {
status = MainApp.sResources.getString(R.string.noprofile); status = MainApp.sResources.getString(R.string.noprofile);
return status; return status;
@ -564,36 +614,43 @@ public class WatchUpdaterService extends WearableListenerService implements
lastLoopStatus = true; lastLoopStatus = true;
} }
//Temp basal String iobString = "";
TreatmentsInterface treatmentsInterface = MainApp.getConfigBuilder(); if (mPrefs.getBoolean("wear_detailediob", false)) {
iobString = iobSum + " " + iobDetail;
} else {
iobString = iobSum + "U";
}
status += tempBasal + " " + iobString;
//add BGI if shown, otherwise return
if (mPrefs.getBoolean("wear_showbgi", false)) {
status += " " + bgiString;
}
return status;
}
@NonNull
private String generateBasalString(TreatmentsInterface treatmentsInterface) {
String basalStringResult = "-.--U/h";
TemporaryBasal activeTemp = treatmentsInterface.getTempBasalFromHistory(System.currentTimeMillis()); TemporaryBasal activeTemp = treatmentsInterface.getTempBasalFromHistory(System.currentTimeMillis());
if (activeTemp != null) { if (activeTemp != null) {
status += activeTemp.toStringShort(); basalStringResult = activeTemp.toStringShort();
}
return basalStringResult;
} }
//IOB @NonNull
treatmentsInterface.updateTotalIOBTreatments(); private String generateCOBString() {
IobTotal bolusIob = treatmentsInterface.getLastCalculationTreatments().round();
treatmentsInterface.updateTotalIOBTempBasals();
IobTotal basalIob = treatmentsInterface.getLastCalculationTempBasals().round();
status += DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob);
if (mPrefs.getBoolean("wear_detailediob", true)) { String cobStringResult = "--";
status += "(" AutosensData autosensData = IobCobCalculatorPlugin.getAutosensData(System.currentTimeMillis());
+ DecimalFormatter.to2Decimal(bolusIob.iob) + "|" if (autosensData != null) {
+ DecimalFormatter.to2Decimal(basalIob.basaliob) + ")"; cobStringResult = (int) autosensData.cob + "g";
} }
if (!mPrefs.getBoolean("wear_showbgi", false)) { return cobStringResult;
return status;
}
double bgi = -(bolusIob.activity + basalIob.activity) * 5 * profile.getIsf();
status += " " + ((bgi >= 0) ? "+" : "") + DecimalFormatter.to2Decimal(bgi);
return status;
} }
@Override @Override

View file

@ -782,6 +782,7 @@
<string name="key_dexcomg5_nsupload">dexcomg5_nsupload</string> <string name="key_dexcomg5_nsupload">dexcomg5_nsupload</string>
<string name="dexcomg5_upload">G5 upload settings</string> <string name="dexcomg5_upload">G5 upload settings</string>
<string name="customapp">Customized APK for download</string> <string name="customapp">Customized APK for download</string>
<string name="wear_detailed_delta_title">Show detailed delta</string>
<string name="wear_detailed_delta_summary">Show delta with one more decimal place</string>
</resources> </resources>

View file

@ -4,6 +4,9 @@
android:key="wearplugin" android:key="wearplugin"
android:title="@string/wear_settings"> android:title="@string/wear_settings">
<PreferenceScreen
android:title="@string/wear_settings">
<SwitchPreference <SwitchPreference
android:defaultValue="false" android:defaultValue="false"
android:key="wearcontrol" android:key="wearcontrol"
@ -16,12 +19,17 @@
android:summary="@string/wear_detailedIOB_summary" android:summary="@string/wear_detailedIOB_summary"
android:title="@string/wear_detailedIOB_title" /> android:title="@string/wear_detailedIOB_title" />
<SwitchPreference
android:defaultValue="false"
android:key="wear_detailed_delta"
android:summary="@string/wear_detailed_delta_summary"
android:title="@string/wear_detailed_delta_title" />
<SwitchPreference <SwitchPreference
android:defaultValue="false" android:defaultValue="false"
android:key="wear_showbgi" android:key="wear_showbgi"
android:summary="@string/wear_showbgi_summary" android:summary="@string/wear_showbgi_summary"
android:title="@string/wear_showbgi_title" /> android:title="@string/wear_showbgi_title" />
</PreferenceScreen>
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>

View file

@ -34,6 +34,7 @@
<category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" /> <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
</intent-filter> </intent-filter>
</service> </service>
<service <service
android:name=".watchfaces.NOChart" android:name=".watchfaces.NOChart"
android:allowEmbedded="true" android:allowEmbedded="true"
@ -52,6 +53,7 @@
<category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" /> <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
</intent-filter> </intent-filter>
</service> </service>
<service <service
android:name=".watchfaces.Home" android:name=".watchfaces.Home"
android:allowEmbedded="true" android:allowEmbedded="true"
@ -70,6 +72,45 @@
<category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" /> <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
</intent-filter> </intent-filter>
</service> </service>
<service
android:name=".watchfaces.Home2"
android:allowEmbedded="true"
android:label="AAPSv2"
android:permission="android.permission.BIND_WALLPAPER">
<meta-data
android:name="android.service.wallpaper"
android:resource="@xml/watch_face" />
<meta-data
android:name="com.google.android.wearable.watchface.preview"
android:resource="@drawable/watchface_graph_2" />
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService" />
<category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
</intent-filter>
</service>
<service
android:name=".watchfaces.Cockpit"
android:allowEmbedded="true"
android:label="AAPS(Cockpit)"
android:permission="android.permission.BIND_WALLPAPER">
<meta-data
android:name="android.service.wallpaper"
android:resource="@xml/watch_face" />
<meta-data
android:name="com.google.android.wearable.watchface.preview"
android:resource="@drawable/watchface_cockpit" />
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService" />
<category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
</intent-filter>
</service>
<service <service
android:name=".watchfaces.LargeHome" android:name=".watchfaces.LargeHome"
android:allowEmbedded="true" android:allowEmbedded="true"

View file

@ -7,9 +7,9 @@ public class BgWatchData implements Comparable<BgWatchData>{
public double sgv; public double sgv;
public double high; public double high;
public double low; public double low;
public double timestamp; public long timestamp;
public BgWatchData(double aSgv, double aHigh, double aLow, double aTimestamp) { public BgWatchData(double aSgv, double aHigh, double aLow, long aTimestamp) {
this.sgv = aSgv; this.sgv = aSgv;
this.high = aHigh; this.high = aHigh;
this.low = aLow; this.low = aLow;

View file

@ -69,7 +69,7 @@ public class BIGChart extends WatchFace implements SharedPreferences.OnSharedPre
public boolean layoutSet = false; public boolean layoutSet = false;
public BgGraphBuilder bgGraphBuilder; public BgGraphBuilder bgGraphBuilder;
public LineChartView chart; public LineChartView chart;
public double datetime; public long datetime;
public ArrayList<BgWatchData> bgDataList = new ArrayList<>(); public ArrayList<BgWatchData> bgDataList = new ArrayList<>();
public ArrayList<TempWatchData> tempWatchDataList = new ArrayList<>(); public ArrayList<TempWatchData> tempWatchDataList = new ArrayList<>();
public ArrayList<BasalWatchData> basalWatchDataList = new ArrayList<>(); public ArrayList<BasalWatchData> basalWatchDataList = new ArrayList<>();
@ -281,7 +281,7 @@ public class BIGChart extends WatchFace implements SharedPreferences.OnSharedPre
wakeLock.acquire(50); wakeLock.acquire(50);
sgvLevel = dataMap.getLong("sgvLevel"); sgvLevel = dataMap.getLong("sgvLevel");
batteryLevel = dataMap.getInt("batteryLevel"); batteryLevel = dataMap.getInt("batteryLevel");
datetime = dataMap.getDouble("timestamp"); datetime = dataMap.getLong("timestamp");
rawString = dataMap.getString("rawString"); rawString = dataMap.getString("rawString");
sgvString = dataMap.getString("sgvString"); sgvString = dataMap.getString("sgvString");
batteryString = dataMap.getString("battery"); batteryString = dataMap.getString("battery");
@ -604,14 +604,14 @@ public class BIGChart extends WatchFace implements SharedPreferences.OnSharedPre
double sgv = entry.getDouble("sgvDouble"); double sgv = entry.getDouble("sgvDouble");
double high = entry.getDouble("high"); double high = entry.getDouble("high");
double low = entry.getDouble("low"); double low = entry.getDouble("low");
double timestamp = entry.getDouble("timestamp"); long timestamp = entry.getLong("timestamp");
bgDataList.add(new BgWatchData(sgv, high, low, timestamp)); bgDataList.add(new BgWatchData(sgv, high, low, timestamp));
} }
} else { } else {
double sgv = dataMap.getDouble("sgvDouble"); double sgv = dataMap.getDouble("sgvDouble");
double high = dataMap.getDouble("high"); double high = dataMap.getDouble("high");
double low = dataMap.getDouble("low"); double low = dataMap.getDouble("low");
double timestamp = dataMap.getDouble("timestamp"); long timestamp = dataMap.getLong("timestamp");
final int size = bgDataList.size(); final int size = bgDataList.size();
if (size > 0) { if (size > 0) {

View file

@ -31,6 +31,7 @@ import com.ustwo.clockwise.wearable.WatchFace;
import com.ustwo.clockwise.common.WatchFaceTime; import com.ustwo.clockwise.common.WatchFaceTime;
import com.ustwo.clockwise.common.WatchShape; import com.ustwo.clockwise.common.WatchShape;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@ -43,16 +44,19 @@ import lecho.lib.hellocharts.view.LineChartView;
/** /**
* Created by emmablack on 12/29/14. * Created by emmablack on 12/29/14.
* Updated by andrew-warrington on 11/15/17.
*/ */
public abstract class BaseWatchFace extends WatchFace implements SharedPreferences.OnSharedPreferenceChangeListener { public abstract class BaseWatchFace extends WatchFace implements SharedPreferences.OnSharedPreferenceChangeListener {
public final static IntentFilter INTENT_FILTER; public final static IntentFilter INTENT_FILTER;
public static final long[] vibratePattern = {0,400,300,400,300,400}; public static final long[] vibratePattern = {0,400,300,400,300,400};
public TextView mTime, mSgv, mDirection, mTimestamp, mUploaderBattery, mDelta, mStatus; public TextView mTime, mSgv, mDirection, mTimestamp, mUploaderBattery, mRigBattery, mDelta, mAvgDelta, mStatus, mBasalRate, mIOB1, mIOB2, mCOB1, mCOB2, mBgi, mLoop, mDay, mMonth, isAAPSv2, mHighLight, mLowLight;
public long datetime;
public RelativeLayout mRelativeLayout; public RelativeLayout mRelativeLayout;
public LinearLayout mLinearLayout; public LinearLayout mLinearLayout, mLinearLayout2, mDate;
public long sgvLevel = 0; public long sgvLevel = 0;
public int batteryLevel = 1;
public int ageLevel = 1; public int ageLevel = 1;
public int loopLevel = 1;
public int batteryLevel = 1;
public int highColor = Color.YELLOW; public int highColor = Color.YELLOW;
public int lowColor = Color.RED; public int lowColor = Color.RED;
public int midColor = Color.WHITE; public int midColor = Color.WHITE;
@ -60,31 +64,41 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
public int basalBackgroundColor = Color.BLUE; public int basalBackgroundColor = Color.BLUE;
public int basalCenterColor = Color.BLUE; public int basalCenterColor = Color.BLUE;
public boolean lowResMode = false; public boolean lowResMode = false;
public int pointSize = 2;
public boolean layoutSet = false; public boolean layoutSet = false;
public boolean bIsRound = false;
public int pointSize = 2;
public int missed_readings_alert_id = 818; public int missed_readings_alert_id = 818;
public BgGraphBuilder bgGraphBuilder; public BgGraphBuilder bgGraphBuilder;
public LineChartView chart; public LineChartView chart;
public double datetime;
public ArrayList<BgWatchData> bgDataList = new ArrayList<>(); public ArrayList<BgWatchData> bgDataList = new ArrayList<>();
public ArrayList<TempWatchData> tempWatchDataList = new ArrayList<>(); public ArrayList<TempWatchData> tempWatchDataList = new ArrayList<>();
public ArrayList<BasalWatchData> basalWatchDataList = new ArrayList<>(); public ArrayList<BasalWatchData> basalWatchDataList = new ArrayList<>();
public PowerManager.WakeLock wakeLock; public PowerManager.WakeLock wakeLock;
// related endTime manual layout // related endTime manual layout
public View layoutView; public View layoutView;
private final Point displaySize = new Point(); public final Point displaySize = new Point();
private int specW, specH; public int specW, specH;
private LocalBroadcastManager localBroadcastManager; private LocalBroadcastManager localBroadcastManager;
private MessageReceiver messageReceiver; private MessageReceiver messageReceiver;
protected SharedPreferences sharedPrefs; protected SharedPreferences sharedPrefs;
private String batteryString = "--";
private String sgvString = "--";
private String externalStatusString = "no status";
private String avgDelta = "";
private String delta = "";
public boolean detailedIOB = false;
public boolean showBGI = false;
public long openApsStatus;
public String externalStatusString = "no status";
public String sSgv = "---";
public String sDirection = "--";
public String sUploaderBattery = "--";
public String sRigBattery = "--";
public String sDelta = "--";
public String sAvgDelta = "--";
public String sBasalRate = "-.--U/h";
public String sIOB1 = "IOB";
public String sIOB2 = "-.--";
public String sCOB1 = "Carb";
public String sCOB2 = "--g";
public String sBgi = "--";
@Override @Override
public void onCreate() { public void onCreate() {
@ -107,6 +121,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
protected void onLayout(WatchShape shape, Rect screenBounds, WindowInsets screenInsets) { protected void onLayout(WatchShape shape, Rect screenBounds, WindowInsets screenInsets) {
super.onLayout(shape, screenBounds, screenInsets); super.onLayout(shape, screenBounds, screenInsets);
layoutView.onApplyWindowInsets(screenInsets); layoutView.onApplyWindowInsets(screenInsets);
bIsRound = screenInsets.isRound();
} }
public void performViewSetup() { public void performViewSetup() {
@ -121,22 +136,37 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
@Override @Override
public void onLayoutInflated(WatchViewStub stub) { public void onLayoutInflated(WatchViewStub stub) {
mTime = (TextView) stub.findViewById(R.id.watch_time); mTime = (TextView) stub.findViewById(R.id.watch_time);
mDay = (TextView) stub.findViewById(R.id.day);
mMonth = (TextView) stub.findViewById(R.id.month);
mDate = (LinearLayout) stub.findViewById(R.id.date_time);
mLoop = (TextView) stub.findViewById(R.id.loop);
mSgv = (TextView) stub.findViewById(R.id.sgv); mSgv = (TextView) stub.findViewById(R.id.sgv);
mDirection = (TextView) stub.findViewById(R.id.direction); mDirection = (TextView) stub.findViewById(R.id.direction);
mTimestamp = (TextView) stub.findViewById(R.id.timestamp); mTimestamp = (TextView) stub.findViewById(R.id.timestamp);
mIOB1 = (TextView) stub.findViewById(R.id.iob_text);
mIOB2 = (TextView) stub.findViewById(R.id.iobView);
mCOB1 = (TextView) stub.findViewById(R.id.cob_text);
mCOB2 = (TextView) stub.findViewById(R.id.cobView);
mBgi = (TextView) stub.findViewById(R.id.bgiView);
mStatus = (TextView) stub.findViewById(R.id.externaltstatus); mStatus = (TextView) stub.findViewById(R.id.externaltstatus);
mBasalRate = (TextView) stub.findViewById(R.id.tmpBasal);
mUploaderBattery = (TextView) stub.findViewById(R.id.uploader_battery); mUploaderBattery = (TextView) stub.findViewById(R.id.uploader_battery);
mRigBattery = (TextView) stub.findViewById(R.id.rig_battery);
mDelta = (TextView) stub.findViewById(R.id.delta); mDelta = (TextView) stub.findViewById(R.id.delta);
mAvgDelta = (TextView) stub.findViewById(R.id.avgdelta);
isAAPSv2 = (TextView) stub.findViewById(R.id.AAPSv2);
mHighLight = (TextView) stub.findViewById(R.id.highLight);
mLowLight = (TextView) stub.findViewById(R.id.lowLight);
mRelativeLayout = (RelativeLayout) stub.findViewById(R.id.main_layout); mRelativeLayout = (RelativeLayout) stub.findViewById(R.id.main_layout);
mLinearLayout = (LinearLayout) stub.findViewById(R.id.secondary_layout); mLinearLayout = (LinearLayout) stub.findViewById(R.id.secondary_layout);
mLinearLayout2 = (LinearLayout) stub.findViewById(R.id.tertiary_layout);
chart = (LineChartView) stub.findViewById(R.id.chart); chart = (LineChartView) stub.findViewById(R.id.chart);
layoutSet = true; layoutSet = true;
showAgoRawBattStatus();
mRelativeLayout.measure(specW, specH); setDataFields();
mRelativeLayout.layout(0, 0, mRelativeLayout.getMeasuredWidth(),
mRelativeLayout.getMeasuredHeight());
} }
}); }
);
ListenerService.requestData(this); ListenerService.requestData(this);
wakeLock.acquire(50); wakeLock.acquire(50);
} }
@ -164,9 +194,10 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
@Override @Override
public void onDestroy() { public void onDestroy() {
if(localBroadcastManager != null && messageReceiver != null){ if (localBroadcastManager != null && messageReceiver != null) {
localBroadcastManager.unregisterReceiver(messageReceiver);} localBroadcastManager.unregisterReceiver(messageReceiver);
if (sharedPrefs != null){ }
if (sharedPrefs != null) {
sharedPrefs.unregisterOnSharedPreferenceChangeListener(this); sharedPrefs.unregisterOnSharedPreferenceChangeListener(this);
} }
super.onDestroy(); super.onDestroy();
@ -181,7 +212,8 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
@Override @Override
protected void onDraw(Canvas canvas) { protected void onDraw(Canvas canvas) {
if(layoutSet) { if (layoutSet) {
setupCharts();
this.mRelativeLayout.draw(canvas); this.mRelativeLayout.draw(canvas);
Log.d("onDraw", "draw"); Log.d("onDraw", "draw");
} }
@ -191,17 +223,10 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
protected void onTimeChanged(WatchFaceTime oldTime, WatchFaceTime newTime) { protected void onTimeChanged(WatchFaceTime oldTime, WatchFaceTime newTime) {
if (layoutSet && (newTime.hasHourChanged(oldTime) || newTime.hasMinuteChanged(oldTime))) { if (layoutSet && (newTime.hasHourChanged(oldTime) || newTime.hasMinuteChanged(oldTime))) {
wakeLock.acquire(50); wakeLock.acquire(50);
final java.text.DateFormat timeFormat = DateFormat.getTimeFormat(BaseWatchFace.this);
mTime.setText(timeFormat.format(System.currentTimeMillis()));
showAgoRawBattStatus();
if(ageLevel()<=0) {
mSgv.setPaintFlags(mSgv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
mSgv.setPaintFlags(mSgv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
}
setDataFields();
missedReadingAlert(); missedReadingAlert();
mRelativeLayout.measure(specW, specH); mRelativeLayout.measure(specW, specH);
mRelativeLayout.layout(0, 0, mRelativeLayout.getMeasuredWidth(), mRelativeLayout.layout(0, 0, mRelativeLayout.getMeasuredWidth(),
mRelativeLayout.getMeasuredHeight()); mRelativeLayout.getMeasuredHeight());
@ -212,67 +237,49 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
//data
Bundle bundle = intent.getBundleExtra("data"); Bundle bundle = intent.getBundleExtra("data");
if (layoutSet && bundle != null) { if (layoutSet && bundle != null) {
DataMap dataMap = DataMap.fromBundle(bundle); DataMap dataMap = DataMap.fromBundle(bundle);
wakeLock.acquire(50); wakeLock.acquire(50);
sgvLevel = dataMap.getLong("sgvLevel"); sgvLevel = dataMap.getLong("sgvLevel");
batteryLevel = dataMap.getInt("batteryLevel"); datetime = dataMap.getLong("timestamp");
datetime = dataMap.getDouble("timestamp"); sSgv = dataMap.getString("sgvString");
sgvString = dataMap.getString("sgvString"); sDirection = dataMap.getString("slopeArrow");
batteryString = dataMap.getString("battery"); sDelta = dataMap.getString("delta");
mSgv.setText(dataMap.getString("sgvString")); sAvgDelta = dataMap.getString("avgDelta");
if(ageLevel()<=0) {
mSgv.setPaintFlags(mSgv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
mSgv.setPaintFlags(mSgv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
}
final java.text.DateFormat timeFormat = DateFormat.getTimeFormat(BaseWatchFace.this);
mTime.setText(timeFormat.format(System.currentTimeMillis()));
mDirection.setText(dataMap.getString("slopeArrow"));
avgDelta = dataMap.getString("avgDelta");
delta = dataMap.getString("delta");
showAgoRawBattStatus();
if (chart != null) { if (chart != null) {
addToWatchSet(dataMap); addToWatchSet(dataMap);
setupCharts(); setupCharts();
} }
mRelativeLayout.measure(specW, specH);
mRelativeLayout.layout(0, 0, mRelativeLayout.getMeasuredWidth(),
mRelativeLayout.getMeasuredHeight());
invalidate();
setColor();
} }
//status
bundle = intent.getBundleExtra("status"); bundle = intent.getBundleExtra("status");
if (layoutSet && bundle != null) { if (layoutSet && bundle != null) {
DataMap dataMap = DataMap.fromBundle(bundle); DataMap dataMap = DataMap.fromBundle(bundle);
wakeLock.acquire(50); wakeLock.acquire(50);
sBasalRate = dataMap.getString("tempBasal");
sUploaderBattery = dataMap.getString("battery");
sRigBattery = dataMap.getString("rigBattery");
detailedIOB = dataMap.getBoolean("detailedIob");
sIOB1 = dataMap.getString("iobSum") + "U";
sIOB2 = dataMap.getString("iobDetail");
sCOB1 = "Carb";
sCOB2 = dataMap.getString("cob");
sBgi = dataMap.getString("bgi");
showBGI = dataMap.getBoolean("showBgi");
externalStatusString = dataMap.getString("externalStatusString"); externalStatusString = dataMap.getString("externalStatusString");
batteryLevel = dataMap.getInt("batteryLevel");
showAgoRawBattStatus(); openApsStatus = dataMap.getLong("openApsStatus");
mRelativeLayout.measure(specW, specH);
mRelativeLayout.layout(0, 0, mRelativeLayout.getMeasuredWidth(),
mRelativeLayout.getMeasuredHeight());
invalidate();
setColor();
} }
//basals and temps
setDataFields();
bundle = intent.getBundleExtra("basals"); bundle = intent.getBundleExtra("basals");
if (layoutSet && bundle != null) { if (layoutSet && bundle != null) {
DataMap dataMap = DataMap.fromBundle(bundle); DataMap dataMap = DataMap.fromBundle(bundle);
wakeLock.acquire(500); wakeLock.acquire(500);
loadBasalsAndTemps(dataMap); loadBasalsAndTemps(dataMap);
}
mRelativeLayout.measure(specW, specH); mRelativeLayout.measure(specW, specH);
mRelativeLayout.layout(0, 0, mRelativeLayout.getMeasuredWidth(), mRelativeLayout.layout(0, 0, mRelativeLayout.getMeasuredWidth(),
@ -281,42 +288,210 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
setColor(); setColor();
} }
} }
public void setDataFields() {
setDateAndTime();
if (mSgv != null) {
if (sharedPrefs.getBoolean("showBG", true)) {
mSgv.setText(sSgv);
mSgv.setVisibility(View.VISIBLE);
} else {
//leave the textview there but invisible, as a height holder for the empty space above the white line
mSgv.setVisibility(View.INVISIBLE);
mSgv.setText("");
}
} }
private void showAgoRawBattStatus() { strikeThroughSgvIfNeeded();
if (mDirection != null) {
boolean showAvgDelta = sharedPrefs.getBoolean("showAvgDelta", true); if (sharedPrefs.getBoolean("show_direction", true)) {
mDelta.setText(delta); mDirection.setText(sDirection);
if(showAvgDelta){ mDirection.setVisibility(View.VISIBLE);
mDelta.append(" " + avgDelta); } else {
mDirection.setVisibility(View.GONE);
}
} }
if (mDelta != null) {
if( mTimestamp == null || mUploaderBattery == null|| mStatus == null){ if (sharedPrefs.getBoolean("showDelta", true)) {
return; mDelta.setText(sDelta);
mDelta.setVisibility(View.VISIBLE);
} else {
mDelta.setVisibility(View.GONE);
}
} }
boolean showStatus = sharedPrefs.getBoolean("showExternalStatus", true); if (mAvgDelta != null) {
if (sharedPrefs.getBoolean("showAvgDelta", true)) {
mAvgDelta.setText(sAvgDelta);
mAvgDelta.setVisibility(View.VISIBLE);
} else {
mAvgDelta.setVisibility(View.GONE);
}
}
if(showStatus){ if (mCOB1 != null && mCOB2 != null) {
//use short forms mCOB2.setText(sCOB2);
if (sharedPrefs.getBoolean("show_cob", true)) {
mCOB1.setVisibility(View.VISIBLE);
mCOB2.setVisibility(View.VISIBLE);
} else {
mCOB1.setVisibility(View.GONE);
mCOB2.setVisibility(View.GONE);
}
//deal with cases where there is only the value shown for COB, and not the label
} else if (mCOB2 != null) {
mCOB2.setText(sCOB2);
if (sharedPrefs.getBoolean("show_cob", true)) {
mCOB2.setVisibility(View.VISIBLE);
} else {
mCOB2.setVisibility(View.GONE);
}
}
if (mIOB1 != null && mIOB2 != null) {
if (sharedPrefs.getBoolean("show_iob", true)) {
mIOB1.setVisibility(View.VISIBLE);
mIOB2.setVisibility(View.VISIBLE);
if (detailedIOB) {
mIOB1.setText(sIOB1);
mIOB2.setText(sIOB2);
} else {
mIOB1.setText("IOB");
mIOB2.setText(sIOB1);
}
} else {
mIOB1.setVisibility(View.GONE);
mIOB2.setVisibility(View.GONE);
}
//deal with cases where there is only the value shown for IOB, and not the label
} else if (mIOB2 != null) {
if (sharedPrefs.getBoolean("show_iob", true)) {
mIOB2.setVisibility(View.VISIBLE);
if (detailedIOB) {
mIOB2.setText(sIOB2);
} else {
mIOB2.setText(sIOB1);
}
} else {
mIOB2.setText("");
}
}
if (mTimestamp != null) {
if (sharedPrefs.getBoolean("showAgo", true)) {
if (isAAPSv2 != null) {
mTimestamp.setText(readingAge(true));
} else {
if (sharedPrefs.getBoolean("showExternalStatus", true)) {
mTimestamp.setText(readingAge(true)); mTimestamp.setText(readingAge(true));
mUploaderBattery.setText("U: " + batteryString + "%");
} else { } else {
mTimestamp.setText(readingAge(false)); mTimestamp.setText(readingAge(false));
mUploaderBattery.setText("Uploader: " + batteryString + "%"); }
}
mTimestamp.setVisibility(View.VISIBLE);
} else {
mTimestamp.setVisibility(View.GONE);
}
} }
if (mUploaderBattery != null) {
if (sharedPrefs.getBoolean("show_uploader_battery", true)) {
if (isAAPSv2 != null) {
mUploaderBattery.setText(sUploaderBattery + "%");
mUploaderBattery.setVisibility(View.VISIBLE);
} else {
if (sharedPrefs.getBoolean("showExternalStatus", true)) {
mUploaderBattery.setText("U: " + sUploaderBattery + "%");
} else {
mUploaderBattery.setText("Uploader: " + sUploaderBattery + "%");
}
}
} else {
mUploaderBattery.setVisibility(View.GONE);
}
}
if (showStatus) { if (mRigBattery != null) {
if (sharedPrefs.getBoolean("show_rig_battery", false)) {
mRigBattery.setText(sRigBattery);
mRigBattery.setVisibility(View.VISIBLE);
} else {
mRigBattery.setVisibility(View.GONE);
}
}
if (mBasalRate != null) {
if (sharedPrefs.getBoolean("show_temp_basal", true)) {
mBasalRate.setText(sBasalRate);
mBasalRate.setVisibility(View.VISIBLE);
} else {
mBasalRate.setVisibility(View.GONE);
}
}
if (mBgi != null) {
if (showBGI) {
mBgi.setText(sBgi);
mBgi.setVisibility(View.VISIBLE);
} else {
mBgi.setVisibility(View.GONE);
}
}
if (mStatus != null) {
if (sharedPrefs.getBoolean("showExternalStatus", true)) {
mStatus.setText(externalStatusString);
mStatus.setVisibility(View.VISIBLE); mStatus.setVisibility(View.VISIBLE);
mStatus.setText("S: " + externalStatusString);
} else { } else {
mStatus.setVisibility(View.GONE); mStatus.setVisibility(View.GONE);
} }
} }
if (mLoop != null) {
if (sharedPrefs.getBoolean("showExternalStatus", true)) {
mLoop.setVisibility(View.VISIBLE);
if (openApsStatus != -1) {
int mins = (int) ((System.currentTimeMillis() - openApsStatus) / 1000 / 60);
mLoop.setText(mins + "'");
if (mins > 14) {
loopLevel = 0;
mLoop.setBackgroundResource(R.drawable.loop_red_25);
} else {
loopLevel = 1;
mLoop.setBackgroundResource(R.drawable.loop_green_25);
}
} else {
mLoop.setText("-'");
}
} else {
mLoop.setVisibility(View.GONE);
}
}
}
public void setDateAndTime() {
final java.text.DateFormat timeFormat = DateFormat.getTimeFormat(BaseWatchFace.this);
mTime.setText(timeFormat.format(System.currentTimeMillis()));
if (mDate != null && mDay != null && mMonth != null) {
if (sharedPrefs.getBoolean("show_date", false)) {
Date today = new Date();
SimpleDateFormat sdfDay = new SimpleDateFormat("dd");
SimpleDateFormat sdfMonth = new SimpleDateFormat("MMM");
mDay.setText(sdfDay.format(today));
mMonth.setText(sdfMonth.format(today));
mDate.setVisibility(View.VISIBLE);
} else {
mDate.setVisibility(View.GONE);
}
}
}
public void setColor() { public void setColor() {
if(lowResMode){ if(lowResMode){
setColorLowRes(); setColorLowRes();
@ -327,6 +502,18 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
} }
} }
public void strikeThroughSgvIfNeeded() {
if (mSgv !=null) {
if (sharedPrefs.getBoolean("showBG", true)) {
if (ageLevel() <= 0) {
mSgv.setPaintFlags(mSgv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
mSgv.setPaintFlags(mSgv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
}
}
}
}
protected void onWatchModeChanged(WatchMode watchMode) { protected void onWatchModeChanged(WatchMode watchMode) {
if(lowResMode ^ isLowRes(watchMode)){ //if there was a change in lowResMode if(lowResMode ^ isLowRes(watchMode)){ //if there was a change in lowResMode
@ -339,25 +526,22 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
} }
private boolean isLowRes(WatchMode watchMode) { private boolean isLowRes(WatchMode watchMode) {
return (watchMode == WatchMode.LOW_BIT) || (watchMode == WatchMode.LOW_BIT_BURN_IN) || (watchMode == WatchMode.LOW_BIT_BURN_IN); return (watchMode == WatchMode.LOW_BIT) || (watchMode == WatchMode.LOW_BIT_BURN_IN); // || (watchMode == WatchMode.LOW_BIT_BURN_IN);
} }
@Override @Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key){ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key){
setColor();
if(layoutSet){ if(layoutSet){
showAgoRawBattStatus(); setDataFields();
mRelativeLayout.measure(specW, specH);
mRelativeLayout.layout(0, 0, mRelativeLayout.getMeasuredWidth(),
mRelativeLayout.getMeasuredHeight());
} }
invalidate(); invalidate();
} }
protected abstract void setColorDark();
protected abstract void setColorDark();
protected abstract void setColorBright(); protected abstract void setColorBright();
protected abstract void setColorLowRes(); protected abstract void setColorLowRes();
public void missedReadingAlert() { public void missedReadingAlert() {
int minutes_since = (int) Math.floor(timeSince()/(1000*60)); int minutes_since = (int) Math.floor(timeSince()/(1000*60));
if(minutes_since >= 16 && ((minutes_since - 16) % 5) == 0) { if(minutes_since >= 16 && ((minutes_since - 16) % 5) == 0) {
@ -374,14 +558,14 @@ protected abstract void setColorDark();
double sgv = entry.getDouble("sgvDouble"); double sgv = entry.getDouble("sgvDouble");
double high = entry.getDouble("high"); double high = entry.getDouble("high");
double low = entry.getDouble("low"); double low = entry.getDouble("low");
double timestamp = entry.getDouble("timestamp"); long timestamp = entry.getLong("timestamp");
bgDataList.add(new BgWatchData(sgv, high, low, timestamp)); bgDataList.add(new BgWatchData(sgv, high, low, timestamp));
} }
} else { } else {
double sgv = dataMap.getDouble("sgvDouble"); double sgv = dataMap.getDouble("sgvDouble");
double high = dataMap.getDouble("high"); double high = dataMap.getDouble("high");
double low = dataMap.getDouble("low"); double low = dataMap.getDouble("low");
double timestamp = dataMap.getDouble("timestamp"); long timestamp = dataMap.getLong("timestamp");
final int size = bgDataList.size(); final int size = bgDataList.size();
if (size > 0) { if (size > 0) {

View file

@ -30,8 +30,8 @@ public class BgGraphBuilder {
private ArrayList<BasalWatchData> basalWatchDataList; private ArrayList<BasalWatchData> basalWatchDataList;
public List<TempWatchData> tempWatchDataList; public List<TempWatchData> tempWatchDataList;
private int timespan; private int timespan;
public double end_time; public long end_time;
public double start_time; public long start_time;
public double fuzzyTimeDenom = (1000 * 60 * 1); public double fuzzyTimeDenom = (1000 * 60 * 1);
public Context context; public Context context;
public double highMark; public double highMark;
@ -47,7 +47,7 @@ public class BgGraphBuilder {
public int basalBackgroundColor; public int basalBackgroundColor;
public boolean singleLine = false; public boolean singleLine = false;
private double endHour; private long endHour;
private List<PointValue> inRangeValues = new ArrayList<PointValue>(); private List<PointValue> inRangeValues = new ArrayList<PointValue>();
private List<PointValue> highValues = new ArrayList<PointValue>(); private List<PointValue> highValues = new ArrayList<PointValue>();
private List<PointValue> lowValues = new ArrayList<PointValue>(); private List<PointValue> lowValues = new ArrayList<PointValue>();
@ -316,8 +316,8 @@ public class BgGraphBuilder {
GregorianCalendar today = new GregorianCalendar(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH)); GregorianCalendar today = new GregorianCalendar(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH));
SimpleDateFormat timeFormat = new SimpleDateFormat(is24? "HH" : "h a"); SimpleDateFormat timeFormat = new SimpleDateFormat(is24? "HH" : "h a");
timeFormat.setTimeZone(TimeZone.getDefault()); timeFormat.setTimeZone(TimeZone.getDefault());
double start_hour = today.getTime().getTime(); long start_hour = today.getTime().getTime();
double timeNow = System.currentTimeMillis(); long timeNow = System.currentTimeMillis();
for (int l = 0; l <= 24; l++) { for (int l = 0; l <= 24; l++) {
if ((start_hour + (60000 * 60 * (l))) < timeNow) { if ((start_hour + (60000 * 60 * (l))) < timeNow) {
if ((start_hour + (60000 * 60 * (l + 1))) >= timeNow) { if ((start_hour + (60000 * 60 * (l + 1))) >= timeNow) {
@ -332,7 +332,7 @@ public class BgGraphBuilder {
//Add whole hours endTime the axis (as long as they are more than 15 mins away from the current time) //Add whole hours endTime the axis (as long as they are more than 15 mins away from the current time)
for (int l = 0; l <= 24; l++) { for (int l = 0; l <= 24; l++) {
double timestamp = endHour - (60000 * 60 * l); long timestamp = endHour - (60000 * 60 * l);
if((timestamp - timeNow < 0) && (timestamp > start_time)) { if((timestamp - timeNow < 0) && (timestamp > start_time)) {
if(Math.abs(timestamp - timeNow) > (1000 * 60 * 8 * timespan)){ if(Math.abs(timestamp - timeNow) > (1000 * 60 * 8 * timespan)){
xAxisValues.add(new AxisValue(fuzz(timestamp), (timeFormat.format(timestamp)).toCharArray())); xAxisValues.add(new AxisValue(fuzz(timestamp), (timeFormat.format(timestamp)).toCharArray()));
@ -350,7 +350,7 @@ public class BgGraphBuilder {
return xAxis; return xAxis;
} }
public float fuzz(double value) { public float fuzz(long value) {
return (float) Math.round(value / fuzzyTimeDenom); return (float) Math.round(value / fuzzyTimeDenom);
} }
} }

View file

@ -73,7 +73,7 @@ public class CircleWatchface extends WatchFace implements SharedPreferences.OnSh
private int batteryLevel = 0; private int batteryLevel = 0;
private double datetime = 0; private long datetime = 0;
private String direction = ""; private String direction = "";
private String delta = ""; private String delta = "";
private String avgDelta = ""; private String avgDelta = "";
@ -433,11 +433,11 @@ public class CircleWatchface extends WatchFace implements SharedPreferences.OnSh
} }
private synchronized double getDatetime() { private synchronized long getDatetime() {
return datetime; return datetime;
} }
private synchronized void setDatetime(double datetime) { private synchronized void setDatetime(long datetime) {
this.datetime = datetime; this.datetime = datetime;
} }
@ -534,7 +534,7 @@ public class CircleWatchface extends WatchFace implements SharedPreferences.OnSh
Log.d("CircleWatchface", "sgv string : " + getSgvString()); Log.d("CircleWatchface", "sgv string : " + getSgvString());
setDelta(dataMap.getString("delta")); setDelta(dataMap.getString("delta"));
setAvgDelta(dataMap.getString("avgDelta")); setAvgDelta(dataMap.getString("avgDelta"));
setDatetime(dataMap.getDouble("timestamp")); setDatetime(dataMap.getLong("timestamp"));
addToWatchSet(dataMap); addToWatchSet(dataMap);
@ -576,7 +576,7 @@ public class CircleWatchface extends WatchFace implements SharedPreferences.OnSh
double sgv = dataMap.getDouble("sgvDouble"); double sgv = dataMap.getDouble("sgvDouble");
double high = dataMap.getDouble("high"); double high = dataMap.getDouble("high");
double low = dataMap.getDouble("low"); double low = dataMap.getDouble("low");
double timestamp = dataMap.getDouble("timestamp"); long timestamp = dataMap.getLong("timestamp");
bgDataList.add(new BgWatchData(sgv, high, low, timestamp)); bgDataList.add(new BgWatchData(sgv, high, low, timestamp));
} else if (!sharedPrefs.getBoolean("animation", false)) { } else if (!sharedPrefs.getBoolean("animation", false)) {
// don't load history at once if animations are set (less resource consumption) // don't load history at once if animations are set (less resource consumption)
@ -586,7 +586,7 @@ public class CircleWatchface extends WatchFace implements SharedPreferences.OnSh
double sgv = entry.getDouble("sgvDouble"); double sgv = entry.getDouble("sgvDouble");
double high = entry.getDouble("high"); double high = entry.getDouble("high");
double low = entry.getDouble("low"); double low = entry.getDouble("low");
double timestamp = entry.getDouble("timestamp"); long timestamp = entry.getLong("timestamp");
bgDataList.add(new BgWatchData(sgv, high, low, timestamp)); bgDataList.add(new BgWatchData(sgv, high, low, timestamp));
} }
} else } else

View file

@ -0,0 +1,126 @@
package info.nightscout.androidaps.watchfaces;
import android.content.Intent;
import android.support.wearable.watchface.WatchFaceStyle;
import android.view.LayoutInflater;
import android.view.View;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interaction.menus.MainMenuActivity;
/**
* Created by andrew-warrington on 18/11/2017.
*/
public class Cockpit extends BaseWatchFace {
private long sgvTapTime = 0;
@Override
public void onCreate() {
super.onCreate();
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
layoutView = inflater.inflate(R.layout.activity_cockpit, null);
performViewSetup();
}
@Override
protected void onTapCommand(int tapType, int x, int y, long eventTime) {
if (mSgv != null) {
int extra = (mSgv.getRight() - mSgv.getLeft()) / 2;
if (tapType == TAP_TYPE_TAP &&
x + extra >= mSgv.getLeft() &&
x - extra <= mSgv.getRight() &&
y >= mSgv.getTop() &&
y <= mSgv.getBottom()) {
if (eventTime - sgvTapTime < 800) {
Intent intent = new Intent(this, MainMenuActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
sgvTapTime = eventTime;
}
}
}
@Override
protected WatchFaceStyle getWatchFaceStyle() {
return new WatchFaceStyle.Builder(this).setAcceptsTapEvents(true).build();
}
protected void setColorDark() {
mRelativeLayout.setBackgroundResource(R.drawable.airplane_cockpit_outside_clouds);
setTextSizes();
if (mHighLight != null && mLowLight != null) {
if (sgvLevel == 1) {
mHighLight.setBackgroundResource(R.drawable.airplane_led_yellow_lit);
mLowLight.setBackgroundResource(R.drawable.airplane_led_grey_unlit);
} else if (sgvLevel == 0) {
mHighLight.setBackgroundResource(R.drawable.airplane_led_grey_unlit);
mLowLight.setBackgroundResource(R.drawable.airplane_led_grey_unlit);
} else if (sgvLevel == -1) {
mHighLight.setBackgroundResource(R.drawable.airplane_led_grey_unlit);
mLowLight.setBackgroundResource(R.drawable.airplane_led_red_lit);
}
}
if (loopLevel == 1) {
mLoop.setBackgroundResource(R.drawable.loop_green_25);
} else {
mLoop.setBackgroundResource(R.drawable.loop_red_25);
}
invalidate();
}
protected void setColorLowRes() {
mRelativeLayout.setBackgroundResource(R.drawable.airplane_cockpit_outside_clouds_lowres);
}
protected void setColorBright() {
setColorDark();
}
protected void setTextSizes() {
if (mIOB2 != null) {
if (detailedIOB) {
if (bIsRound) {
mIOB2.setTextSize(10);
} else {
mIOB2.setTextSize(9);
}
} else {
if (bIsRound) {
mIOB2.setTextSize(13);
} else {
mIOB2.setTextSize(12);
}
}
}
if ((mUploaderBattery.getVisibility() != View.GONE) && (mRigBattery.getVisibility() != View.GONE)) {
if (bIsRound) {
mUploaderBattery.setTextSize(12);
mRigBattery.setTextSize(12);
} else {
mUploaderBattery.setTextSize(10);
mRigBattery.setTextSize(10);
}
} else {
if (bIsRound) {
mUploaderBattery.setTextSize(13);
mRigBattery.setTextSize(13);
} else {
mUploaderBattery.setTextSize(12);
mRigBattery.setTextSize(12);
}
}
}
}

View file

@ -0,0 +1,241 @@
package info.nightscout.androidaps.watchfaces;
import android.content.Intent;
import android.graphics.Color;
import android.support.v4.content.ContextCompat;
import android.support.wearable.watchface.WatchFaceStyle;
import android.view.LayoutInflater;
import com.ustwo.clockwise.common.WatchMode;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interaction.menus.MainMenuActivity;
public class Home2 extends BaseWatchFace {
private long chartTapTime = 0;
private long sgvTapTime = 0;
@Override
public void onCreate() {
super.onCreate();
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
layoutView = inflater.inflate(R.layout.activity_home_2, null);
performViewSetup();
}
@Override
protected void onTapCommand(int tapType, int x, int y, long eventTime) {
int extra = mSgv!=null?(mSgv.getRight() - mSgv.getLeft())/2:0;
if (tapType == TAP_TYPE_TAP&&
x >=chart.getLeft() &&
x <= chart.getRight()&&
y >= chart.getTop() &&
y <= chart.getBottom()){
if (eventTime - chartTapTime < 800){
changeChartTimeframe();
}
chartTapTime = eventTime;
} else if (tapType == TAP_TYPE_TAP&&
x + extra >=mSgv.getLeft() &&
x - extra <= mSgv.getRight()&&
y >= mSgv.getTop() &&
y <= mSgv.getBottom()){
if (eventTime - sgvTapTime < 800){
Intent intent = new Intent(this, MainMenuActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
sgvTapTime = eventTime;
}
}
private void changeChartTimeframe() {
int timeframe = Integer.parseInt(sharedPrefs.getString("chart_timeframe", "3"));
timeframe = (timeframe%5) + 1;
sharedPrefs.edit().putString("chart_timeframe", "" + timeframe).commit();
}
@Override
protected WatchFaceStyle getWatchFaceStyle(){
return new WatchFaceStyle.Builder(this).setAcceptsTapEvents(true).build();
}
protected void setColorDark() {
mLinearLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_statusView));
mLinearLayout2.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_background));
mRelativeLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_background));
mTime.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mIOB1.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mIOB2.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mCOB1.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mCOB2.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mDay.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mMonth.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mLoop.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
setTextSizes();
if (sgvLevel == 1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor));
} else if (sgvLevel == 0) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
} else if (sgvLevel == -1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor));
}
if (ageLevel == 1) {
mTimestamp.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
} else {
mTimestamp.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_TimestampOld));
}
if (batteryLevel == 1) {
mUploaderBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_uploaderBattery));
} else {
mUploaderBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_uploaderBatteryEmpty));
}
mRigBattery.setTextColor(Color.BLACK);
mDelta.setTextColor(Color.BLACK);
mAvgDelta.setTextColor(Color.BLACK);
mBasalRate.setTextColor(Color.BLACK);
mBgi.setTextColor(Color.BLACK);
if (loopLevel == 1) {
mLoop.setBackgroundResource(R.drawable.loop_green_25);
} else {
mLoop.setBackgroundResource(R.drawable.loop_red_25);
}
if (chart != null) {
highColor = ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor);
lowColor = ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor);
midColor = ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor);
gridColor = ContextCompat.getColor(getApplicationContext(), R.color.dark_gridColor);
basalBackgroundColor = ContextCompat.getColor(getApplicationContext(), R.color.basal_dark);
basalCenterColor = ContextCompat.getColor(getApplicationContext(), R.color.basal_light);
pointSize = 2;
setupCharts();
}
}
protected void setColorLowRes() {
mLinearLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_statusView));
mLinearLayout2.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_background));
mRelativeLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_background));
mLoop.setBackgroundResource(R.drawable.loop_grey_25);
mLoop.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mTimestamp.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_Timestamp));
mDelta.setTextColor(Color.BLACK);
mAvgDelta.setTextColor(Color.BLACK);
mRigBattery.setTextColor(Color.BLACK);
mUploaderBattery.setTextColor(Color.BLACK);
mBasalRate.setTextColor(Color.BLACK);
mBgi.setTextColor(Color.BLACK);
mIOB1.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mIOB2.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mCOB1.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mCOB2.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mDay.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mMonth.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mTime.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_mTime));
if (chart != null) {
highColor = ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor);
lowColor = ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor);
midColor = ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor);
gridColor = ContextCompat.getColor(getApplicationContext(), R.color.dark_gridColor);
basalBackgroundColor = ContextCompat.getColor(getApplicationContext(), R.color.basal_dark_lowres);
basalCenterColor = ContextCompat.getColor(getApplicationContext(), R.color.basal_light_lowres);
pointSize = 2;
setupCharts();
}
setTextSizes();
}
protected void setColorBright() {
if (getCurrentWatchMode() == WatchMode.INTERACTIVE) {
mLinearLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.light_stripe_background));
mLinearLayout2.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.light_background));
mRelativeLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.light_background));
mTime.setTextColor(Color.BLACK);
mIOB1.setTextColor(Color.BLACK);
mIOB2.setTextColor(Color.BLACK);
mCOB1.setTextColor(Color.BLACK);
mCOB2.setTextColor(Color.BLACK);
mDay.setTextColor(Color.BLACK);
mMonth.setTextColor(Color.BLACK);
mLoop.setTextColor(Color.BLACK);
setTextSizes();
if (sgvLevel == 1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_highColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_highColor));
} else if (sgvLevel == 0) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_midColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_midColor));
} else if (sgvLevel == -1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor));
}
if (ageLevel == 1) {
mTimestamp.setTextColor(Color.BLACK);
} else {
mTimestamp.setTextColor(Color.RED);
}
if (batteryLevel == 1) {
mUploaderBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
} else {
mUploaderBattery.setTextColor(Color.RED);
}
mRigBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mAvgDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mBasalRate.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mBgi.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
if (loopLevel == 1) {
mLoop.setBackgroundResource(R.drawable.loop_green_25);
} else {
mLoop.setBackgroundResource(R.drawable.loop_red_25);
}
if (chart != null) {
highColor = ContextCompat.getColor(getApplicationContext(), R.color.light_highColor);
lowColor = ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor);
midColor = ContextCompat.getColor(getApplicationContext(), R.color.light_midColor);
gridColor = ContextCompat.getColor(getApplicationContext(), R.color.light_gridColor);
basalBackgroundColor = ContextCompat.getColor(getApplicationContext(), R.color.basal_light);
basalCenterColor = ContextCompat.getColor(getApplicationContext(), R.color.basal_dark);
pointSize = 2;
setupCharts();
}
} else {
setColorDark();
}
}
protected void setTextSizes() {
if (mIOB1 != null && mIOB2 != null) {
if (detailedIOB) {
mIOB1.setTextSize(14);
mIOB2.setTextSize(10);
} else {
mIOB1.setTextSize(10);
mIOB2.setTextSize(14);
}
}
}
}

View file

@ -59,7 +59,7 @@ public class NOChart extends WatchFace implements SharedPreferences.OnSharedPref
public int ageLevel = 1; public int ageLevel = 1;
public boolean lowResMode = false; public boolean lowResMode = false;
public boolean layoutSet = false; public boolean layoutSet = false;
public double datetime; public long datetime;
public ArrayList<BgWatchData> bgDataList = new ArrayList<>(); public ArrayList<BgWatchData> bgDataList = new ArrayList<>();
public ArrayList<TempWatchData> tempWatchDataList = new ArrayList<>(); public ArrayList<TempWatchData> tempWatchDataList = new ArrayList<>();
public ArrayList<BasalWatchData> basalWatchDataList = new ArrayList<>(); public ArrayList<BasalWatchData> basalWatchDataList = new ArrayList<>();
@ -252,7 +252,7 @@ public class NOChart extends WatchFace implements SharedPreferences.OnSharedPref
wakeLock.acquire(50); wakeLock.acquire(50);
sgvLevel = dataMap.getLong("sgvLevel"); sgvLevel = dataMap.getLong("sgvLevel");
batteryLevel = dataMap.getInt("batteryLevel"); batteryLevel = dataMap.getInt("batteryLevel");
datetime = dataMap.getDouble("timestamp"); datetime = dataMap.getLong("timestamp");
sgvString = dataMap.getString("sgvString"); sgvString = dataMap.getString("sgvString");
mSgv.setText(dataMap.getString("sgvString")); mSgv.setText(dataMap.getString("sgvString"));

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 KiB

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.wearable.view.WatchViewStub
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/watch_view_stub"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rectLayout="@layout/rect_cockpit"
app:roundLayout="@layout/round_cockpit"
tools:context=".watchfaces.Cockpit"
tools:deviceIds="wear"/>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.wearable.view.WatchViewStub
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/watch_view_stub"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rectLayout="@layout/rect_activity_home_2"
app:roundLayout="@layout/round_activity_home_2"
tools:context=".watchfaces.Home"
tools:deviceIds="wear"/>

View file

@ -0,0 +1,369 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context=".watchfaces.Home2" tools:deviceIds="wear_square"
android:background="@color/black"
android:id="@+id/main_layout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:textAlignment="center"
android:weightSum="1">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="center_horizontal"
android:layout_weight="0.27"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:textAlignment="center">
<TextView
android:id="@+id/loop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:background="@drawable/loop_grey_25"
android:gravity="center"
android:text="--'"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/sgv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="-2dp"
android:gravity="bottom|right"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="-2dp"
android:text="---"
android:textColor="#FFFFFF"
android:textSize="38sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:baselineAligned="false"
android:gravity="center_vertical"
android:orientation="vertical"
android:textAlignment="center">
<TextView
android:id="@+id/direction"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:gravity="center_horizontal|bottom"
android:text="--"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="22sp"
android:textStyle="bold" />
<TextView
android:id="@+id/timestamp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:gravity="center"
android:text="--'"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/secondary_layout"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="0.10"
android:background="@color/light_grey"
android:gravity="center"
android:orientation="vertical"
android:padding="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:paddingEnd="2dp"
android:paddingStart="2dp"
android:textAlignment="center">
<TextView
android:id="@+id/delta"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="+/-"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/avgdelta"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="avg"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/uploader_battery"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="--%"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/rig_battery"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="--%"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="12sp"
android:textStyle="bold"
android:visibility="gone" />
<TextView
android:id="@+id/tmpBasal"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1.7"
android:gravity="center"
android:text="-.--U/h"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/bgiView"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="bgi"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="12sp"
android:textStyle="bold"
android:visibility="gone" />
<TextView
android:id="@+id/AAPSv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:text=""
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/tertiary_layout"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.22"
android:background="@color/black"
android:gravity="center"
android:orientation="vertical"
android:padding="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="7">
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:baselineAligned="false"
android:gravity="center"
android:orientation="vertical"
android:textAlignment="center">
<TextView
android:id="@+id/cob_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="Carb"
android:textColor="#FFFFFF"
android:textSize="10sp"
android:textStyle="bold" />
<TextView
android:id="@+id/cobView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="--g"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
<TextView
android:id="@+id/watch_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="12:00"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="26sp" />
<LinearLayout
android:id="@+id/date_time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
android:textAlignment="center"
android:visibility="gone">
<TextView
android:id="@+id/day"
android:layout_width="23dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="day"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="10sp" />
<TextView
android:id="@+id/month"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="mth"
android:textColor="#FFFFFF"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
android:textAlignment="center">
<TextView
android:id="@+id/iob_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="IOB"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="10sp"
android:textStyle="bold" />
<TextView
android:id="@+id/iobView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="--U"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
</LinearLayout>
</LinearLayout>
<lecho.lib.hellocharts.view.LineChartView
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_gravity="bottom"
android:layout_weight="0.41"
android:gravity="center_horizontal|top" />
</LinearLayout>
</RelativeLayout>

View file

@ -0,0 +1,491 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context=".watchfaces.Cockpit" tools:deviceIds="wear_square"
android:id="@+id/main_layout"
android:background="@drawable/airplane_cockpit_outside_clouds">
<LinearLayout
android:id="@+id/inside"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/airplane_cockpit"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="0.095">
</LinearLayout>
<LinearLayout
android:id="@+id/windows"
android:layout_width="fill_parent"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="0.2575">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="0.47" />
<LinearLayout
android:id="@+id/warnings"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.06"
android:baselineAligned="false"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="bottom"
android:layout_weight="0.2" />
<TextView
android:id="@+id/highLight"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@drawable/airplane_led_grey_unlit"
android:gravity="center"
android:text="H"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="8sp"
android:textStyle="bold" />
<TextView
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="bottom"
android:layout_weight="2" />
<TextView
android:id="@+id/lowLight"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@drawable/airplane_led_grey_unlit"
android:gravity="center"
android:text="L"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="8sp"
android:textStyle="bold" />
<TextView
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="bottom"
android:layout_weight="0.2" />
</LinearLayout>
<TextView
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="0.47" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/dashboard"
android:layout_width="fill_parent"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="0.0775">
</LinearLayout>
<LinearLayout
android:id="@+id/instruments"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.57"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1">
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.08"
android:baselineAligned="false"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:id="@+id/panel1"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="0.275"
android:baselineAligned="false"
android:orientation="horizontal"
android:gravity="center"
android:textAlignment="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.07" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.5"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:id="@+id/sgv"
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="1"
android:text="---"
android:textColor="@color/primary_text_dark"
android:textSize="26sp" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.03" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.276"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.35" />
<TextView
android:id="@+id/timestamp"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="0.65"
android:text="--'"
android:gravity="center"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.0225"
android:baselineAligned="false"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:id="@+id/panel2"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.245"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1.01">
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.020" />
<TextView
android:id="@+id/watch_time"
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="0.19"
android:gravity="center"
android:text="12:00"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tmpBasal"
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="bottom|center_horizontal"
android:layout_weight="0.19"
android:gravity="bottom|center_horizontal"
android:text="-.--U/h"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/iobView"
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="bottom|center_horizontal"
android:layout_weight="0.18"
android:gravity="bottom|center_horizontal"
android:text="--U"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/cobView"
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="bottom|center_horizontal"
android:layout_weight="0.185"
android:gravity="bottom|center_horizontal"
android:text="--g"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="12sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="0.185"
android:gravity="center"
android:orientation="horizontal"
android:textAlignment="center">
<TextView
android:id="@+id/uploader_battery"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="bottom|center_horizontal"
android:gravity="bottom|center_horizontal"
android:text="--%"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/rig_battery"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="bottom|center_horizontal"
android:gravity="bottom|center_horizontal"
android:paddingLeft="4dp"
android:text="--%"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="12sp"
android:textStyle="bold"
android:visibility="gone" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.06" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.0225"
android:baselineAligned="false"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:id="@+id/panel3"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.275"
android:baselineAligned="false"
android:orientation="horizontal"
android:textAlignment="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.07" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="0.5"
android:gravity="center"
android:orientation="vertical"
android:weightSum="0.5">
<TextView
android:id="@+id/direction"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="0.333"
android:gravity="center"
android:text="--"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="28sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.167"
android:gravity="center"
android:layout_gravity="center"
android:weightSum="2">
<TextView
android:id="@+id/delta"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="+/-"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="13sp"
android:textStyle="bold" />
<TextView
android:id="@+id/avgdelta"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="avg"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="13sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.03" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.250"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.1" />
<TextView
android:id="@+id/loop"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_gravity="start"
android:layout_weight="0.5"
android:background="@drawable/loop_grey_25"
android:text="--'"
android:gravity="center"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/AAPSv2"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.4"
android:visibility="invisible"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.08"
android:baselineAligned="false"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>

View file

@ -0,0 +1,384 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context=".watchfaces.Home2" tools:deviceIds="wear_round"
android:background="@color/black"
android:id="@+id/main_layout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:textAlignment="center"
android:weightSum="1.1">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="0.05">
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="center_horizontal"
android:layout_weight="0.27"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:textAlignment="center">
<TextView
android:id="@+id/loop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:background="@drawable/loop_grey_25"
android:gravity="center"
android:text="--'"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/sgv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="-2dp"
android:gravity="bottom|right"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="-2dp"
android:text="---"
android:textColor="#FFFFFF"
android:textSize="38sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:baselineAligned="false"
android:gravity="center_vertical"
android:orientation="vertical"
android:paddingEnd="4dp"
android:textAlignment="center">
<TextView
android:id="@+id/direction"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:gravity="center_horizontal|bottom"
android:text="--"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="22sp"
android:textStyle="bold" />
<TextView
android:id="@+id/timestamp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:gravity="center"
android:text="--'"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/secondary_layout"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="0.10"
android:background="@color/light_grey"
android:gravity="center"
android:orientation="vertical"
android:padding="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:paddingEnd="5dp"
android:paddingStart="5dp"
android:textAlignment="center">
<TextView
android:id="@+id/delta"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="+/-"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="13sp"
android:textStyle="bold" />
<TextView
android:id="@+id/avgdelta"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="avg"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="13sp"
android:textStyle="bold" />
<TextView
android:id="@+id/uploader_battery"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="--%"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="13sp"
android:textStyle="bold" />
<TextView
android:id="@+id/rig_battery"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="--%"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="13sp"
android:textStyle="bold"
android:visibility="gone" />
<TextView
android:id="@+id/tmpBasal"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1.7"
android:gravity="center"
android:text="-.--U/h"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="13sp"
android:textStyle="bold" />
<TextView
android:id="@+id/bgiView"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="bgi"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="13sp"
android:textStyle="bold"
android:visibility="gone" />
<TextView
android:id="@+id/AAPSv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:text=""
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/tertiary_layout"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.22"
android:background="@color/black"
android:gravity="center"
android:orientation="vertical"
android:padding="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="7">
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:baselineAligned="false"
android:gravity="center"
android:orientation="vertical"
android:textAlignment="center">
<TextView
android:id="@+id/cob_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="Carb"
android:textColor="#FFFFFF"
android:textSize="10sp"
android:textStyle="bold" />
<TextView
android:id="@+id/cobView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="--g"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
<TextView
android:id="@+id/watch_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="12:00"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="30sp" />
<LinearLayout
android:id="@+id/date_time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
android:textAlignment="center"
android:visibility="gone">
<TextView
android:id="@+id/day"
android:layout_width="23dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="day"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="12sp" />
<TextView
android:id="@+id/month"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="mth"
android:textColor="#FFFFFF"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
android:textAlignment="center">
<TextView
android:id="@+id/iob_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="IOB"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="10sp"
android:textStyle="bold" />
<TextView
android:id="@+id/iobView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="--U"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal"></LinearLayout>
</LinearLayout>
</LinearLayout>
<lecho.lib.hellocharts.view.LineChartView
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_gravity="bottom"
android:layout_weight="0.41"
android:gravity="center_horizontal|top" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="0.05">
</LinearLayout>
</LinearLayout>
</RelativeLayout>

View file

@ -0,0 +1,491 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context=".watchfaces.Cockpit" tools:deviceIds="wear_round"
android:id="@+id/main_layout"
android:background="@drawable/airplane_cockpit_outside_clouds">
<LinearLayout
android:id="@+id/inside"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/airplane_cockpit"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="0.095">
</LinearLayout>
<LinearLayout
android:id="@+id/windows"
android:layout_width="fill_parent"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="0.2575">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="0.47" />
<LinearLayout
android:id="@+id/warnings"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.06"
android:baselineAligned="false"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="bottom"
android:layout_weight="0.2" />
<TextView
android:id="@+id/highLight"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@drawable/airplane_led_grey_unlit"
android:gravity="center"
android:text="H"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="8sp"
android:textStyle="bold" />
<TextView
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="bottom"
android:layout_weight="2" />
<TextView
android:id="@+id/lowLight"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@drawable/airplane_led_grey_unlit"
android:gravity="center"
android:text="L"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="8sp"
android:textStyle="bold" />
<TextView
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_gravity="bottom"
android:layout_weight="0.2" />
</LinearLayout>
<TextView
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="0.47" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/dashboard"
android:layout_width="fill_parent"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="0.0775">
</LinearLayout>
<LinearLayout
android:id="@+id/instruments"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.57"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1">
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.08"
android:baselineAligned="false"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:id="@+id/panel1"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="0.275"
android:baselineAligned="false"
android:orientation="horizontal"
android:gravity="center"
android:textAlignment="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.07" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.5"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:id="@+id/sgv"
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="1"
android:text="---"
android:textColor="@color/primary_text_dark"
android:textSize="34sp" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.03" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.276"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.35" />
<TextView
android:id="@+id/timestamp"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="0.65"
android:text="--'"
android:gravity="center"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.0225"
android:baselineAligned="false"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:id="@+id/panel2"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.245"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1.01">
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.020" />
<TextView
android:id="@+id/watch_time"
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="0.19"
android:gravity="center"
android:text="12:00"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tmpBasal"
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="bottom|center_horizontal"
android:layout_weight="0.19"
android:gravity="bottom|center_horizontal"
android:text="-.--U/h"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="13sp"
android:textStyle="bold" />
<TextView
android:id="@+id/iobView"
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="bottom|center_horizontal"
android:layout_weight="0.18"
android:gravity="bottom|center_horizontal"
android:text="--U"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="13sp"
android:textStyle="bold" />
<TextView
android:id="@+id/cobView"
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="bottom|center_horizontal"
android:layout_weight="0.185"
android:gravity="bottom|center_horizontal"
android:text="--g"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="13sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="0.185"
android:gravity="center"
android:orientation="horizontal"
android:textAlignment="center">
<TextView
android:id="@+id/uploader_battery"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="bottom|center_horizontal"
android:gravity="bottom|center_horizontal"
android:text="--%"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="13sp"
android:textStyle="bold" />
<TextView
android:id="@+id/rig_battery"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="bottom|center_horizontal"
android:gravity="bottom|center_horizontal"
android:paddingLeft="4dp"
android:text="--%"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="13sp"
android:textStyle="bold"
android:visibility="gone" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.06" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.0225"
android:baselineAligned="false"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:id="@+id/panel3"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.275"
android:baselineAligned="false"
android:orientation="horizontal"
android:textAlignment="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.07" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="0.5"
android:gravity="center"
android:orientation="vertical"
android:weightSum="0.5">
<TextView
android:id="@+id/direction"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_gravity="center"
android:layout_weight="0.333"
android:gravity="center"
android:text="--"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="28sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.167"
android:gravity="center"
android:layout_gravity="center"
android:weightSum="2">
<TextView
android:id="@+id/delta"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="+/-"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="13sp"
android:textStyle="bold" />
<TextView
android:id="@+id/avgdelta"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="avg"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="13sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.03" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="0.250"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.1" />
<TextView
android:id="@+id/loop"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_gravity="start"
android:layout_weight="0.5"
android:background="@drawable/loop_grey_25"
android:gravity="center"
android:text="--'"
android:textAlignment="center"
android:textColor="@color/primary_text_dark"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/AAPSv2"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.4"
android:visibility="invisible"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="0.08"
android:baselineAligned="false"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>

View file

@ -20,8 +20,6 @@
<item>5</item> <item>5</item>
</string-array> </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>
@ -38,6 +36,7 @@
<string name="label_xdrip">AAPS</string> <string name="label_xdrip">AAPS</string>
<string name="label_xdrip2">AAPSv2</string>
<string name="label_xdrip_large">AAPS(Large)</string> <string name="label_xdrip_large">AAPS(Large)</string>
<string name="label_xdrip_big_chart">AAPS(BigChart)</string> <string name="label_xdrip_big_chart">AAPS(BigChart)</string>
<string name="label_xdrip_no_chart">AAPS(NoChart)</string> <string name="label_xdrip_no_chart">AAPS(NoChart)</string>

View file

@ -18,26 +18,34 @@
app:wear_iconOff="@drawable/settings_off" app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on" /> app:wear_iconOn="@drawable/settings_on" />
<ListPreference
android:defaultValue="1"
android:entries="@array/input_design"
android:entryValues="@array/input_design_values"
android:key="input_design"
android:summary="Input Design"
android:title="Input Design" />
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="true" android:defaultValue="false"
android:key="showExternalStatus" android:key="show_date"
android:title="Show Loop Status" android:title="Show Date"
app:wear_iconOff="@drawable/settings_off" app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on" /> app:wear_iconOn="@drawable/settings_on" />
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="true"
android:key="highlight_basals" android:key="show_iob"
android:summary="Better visible basal rate and temp basals" android:title="Show IOB"
android:title="Highlight Basals" android:summary="Show insulin on board."
app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on" />
<CheckBoxPreference
android:defaultValue="true"
android:key="show_cob"
android:title="Show COB"
android:summary="Show carb on board."
app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on" />
<CheckBoxPreference
android:defaultValue="true"
android:key="showDelta"
android:summary="Show delta. (Circle WF)"
android:title="Show Delta"
app:wear_iconOff="@drawable/settings_off" app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on"/> app:wear_iconOn="@drawable/settings_on"/>
@ -51,19 +59,47 @@
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="true" android:defaultValue="true"
android:key="dark" android:key="show_uploader_battery"
android:summary="Dark theme" android:title="Show Phone Battery"
android:title="Dark" app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on" />
<CheckBoxPreference
android:defaultValue="false"
android:key="show_rig_battery"
android:title="Show Rig Battery"
app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on" />
<CheckBoxPreference
android:defaultValue="true"
android:key="show_temp_basal"
android:title="Show Basal Rate"
app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on" />
<CheckBoxPreference
android:defaultValue="true"
android:key="showExternalStatus"
android:title="Show Loop Status"
app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on" />
<CheckBoxPreference
android:defaultValue="true"
android:key="showBG"
android:summary="Show BG. (Circle WF)"
android:title="Show BG"
app:wear_iconOff="@drawable/settings_off" app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on"/> app:wear_iconOn="@drawable/settings_on"/>
<ListPreference <CheckBoxPreference
android:defaultValue="3" android:defaultValue="true"
android:entries="@array/chart_timeframe" android:key="show_direction"
android:entryValues="@array/chart_timeframe_values" android:summary="Show direction arrow"
android:key="chart_timeframe" android:title="Show Direction Arrow"
android:summary="Chart Timeframe" app:wear_iconOff="@drawable/settings_off"
android:title="Chart Timeframe" /> app:wear_iconOn="@drawable/settings_on"/>
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="true" android:defaultValue="true"
@ -75,20 +111,36 @@
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="true" android:defaultValue="true"
android:key="showDelta" android:key="dark"
android:summary="Show delta. (Circle WF)" android:summary="Dark theme"
android:title="Show Delta" android:title="Dark"
app:wear_iconOff="@drawable/settings_off" app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on"/> app:wear_iconOn="@drawable/settings_on"/>
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="true" android:defaultValue="false"
android:key="showBG" android:key="highlight_basals"
android:summary="Show BG. (Circle WF)" android:summary="Better visible basal rate and temp basals"
android:title="Show BG" android:title="Highlight Basals"
app:wear_iconOff="@drawable/settings_off" app:wear_iconOff="@drawable/settings_off"
app:wear_iconOn="@drawable/settings_on"/> app:wear_iconOn="@drawable/settings_on"/>
<ListPreference
android:defaultValue="3"
android:entries="@array/chart_timeframe"
android:entryValues="@array/chart_timeframe_values"
android:key="chart_timeframe"
android:summary="Chart Timeframe"
android:title="Chart Timeframe" />
<ListPreference
android:defaultValue="1"
android:entries="@array/input_design"
android:entryValues="@array/input_design_values"
android:key="input_design"
android:summary="Input Design"
android:title="Input Design" />
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="showBigNumbers" android:key="showBigNumbers"