正在查看: xDrip+ v04633772025.07.16 应用的 CalibrationGraph.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: xDrip+ v04633772025.07.16 应用的 CalibrationGraph.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.eveningoutpost.dexdrip;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import com.eveningoutpost.dexdrip.calibrations.CalibrationAbstract;
import com.eveningoutpost.dexdrip.calibrations.PluggableCalibration;
import com.eveningoutpost.dexdrip.models.Calibration;
import com.eveningoutpost.dexdrip.models.JoH;
import com.eveningoutpost.dexdrip.utilitymodels.CalibrationSendQueue;
import com.eveningoutpost.dexdrip.utilitymodels.Pref;
import com.eveningoutpost.dexdrip.utils.ActivityWithMenu;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.Line;
import lecho.lib.hellocharts.model.LineChartData;
import lecho.lib.hellocharts.model.PointValue;
import lecho.lib.hellocharts.util.ChartUtils;
import lecho.lib.hellocharts.view.LineChartView;
public class CalibrationGraph extends ActivityWithMenu {
TextView GraphHeader;
TextView PluginHeader;
private LineChartView chart;
private LineChartData data;
private final boolean doMgdl = Pref.getString("units", "mgdl").equals("mgdl");
private final boolean show_days_since = true;
private final double start_x = 50.0d;
private double end_x = 300.0d;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(2131492902);
JoH.fixActionBar(this);
this.GraphHeader = (TextView) findViewById(2131296263);
TextView textView = (TextView) findViewById(2131296478);
this.PluginHeader = textView;
textView.setText("");
}
@Override
public String getMenuName() {
return getString(2131755269);
}
@Override
protected void onResume() {
super.onResume();
setupCharts();
}
public void setupCharts() {
this.chart = findViewById(2131296489);
ArrayList arrayList = new ArrayList();
List<Line> calibrationsLine = getCalibrationsLine(Calibration.allForSensor(), Color.parseColor("#66FFFFFF"));
List<Line> calibrationsLine2 = getCalibrationsLine(Calibration.allForSensorInLastFourDays(), ChartUtils.COLOR_BLUE);
Calibration lastValid = Calibration.lastValid();
if (lastValid != null) {
DecimalFormat decimalFormat = new DecimalFormat("#");
decimalFormat.setMaximumFractionDigits(2);
decimalFormat.setMinimumFractionDigits(2);
this.GraphHeader.setText(getString(2131755276, decimalFormat.format(lastValid.slope), decimalFormat.format(lastValid.intercept)));
ArrayList arrayList2 = new ArrayList();
float f = (float) (this.doMgdl ? 1.0d : 0.0554994394556615d);
arrayList2.add(new PointValue(50.0f, ((float) ((lastValid.slope * 50.0d) + lastValid.intercept)) * f));
double d = this.end_x;
arrayList2.add(new PointValue((float) d, ((float) ((d * lastValid.slope) + lastValid.intercept)) * f));
Line line = new Line(arrayList2);
line.setColor(ChartUtils.COLOR_RED);
line.setHasLines(true);
line.setHasPoints(false);
arrayList.add(line);
CalibrationAbstract calibrationPluginFromPreferences = PluggableCalibration.getCalibrationPluginFromPreferences();
if (calibrationPluginFromPreferences != null) {
CalibrationAbstract.CalibrationData calibrationData = calibrationPluginFromPreferences.getCalibrationData();
ArrayList arrayList3 = new ArrayList();
arrayList3.add(new PointValue(50.0f, ((float) calibrationPluginFromPreferences.getGlucoseFromSensorValue(50.0d, calibrationData)) * f));
double d2 = this.end_x;
arrayList3.add(new PointValue((float) d2, f * ((float) calibrationPluginFromPreferences.getGlucoseFromSensorValue(d2, calibrationData))));
Line line2 = new Line(arrayList3);
line2.setColor(Color.parseColor("#88CCFF00"));
line2.setHasLines(true);
line2.setHasPoints(false);
arrayList.add(line2);
this.PluginHeader.setText("(" + calibrationPluginFromPreferences.getAlgorithmName() + ") s = " + decimalFormat.format(calibrationData.slope) + " i = " + decimalFormat.format(calibrationData.intercept));
this.PluginHeader.setTextColor(Color.parseColor("#88CCFF00"));
}
Iterator<Line> it = calibrationsLine.iterator();
while (it.hasNext()) {
arrayList.add(it.next());
}
Iterator<Line> it2 = calibrationsLine2.iterator();
while (it2.hasNext()) {
arrayList.add(it2.next());
}
}
Axis axis = new Axis();
Axis hasLines = new Axis().setHasLines(true);
axis.setName(getString(2131755192));
Object[] objArr = new Object[1];
objArr[0] = this.doMgdl ? "mg/dl" : "mmol/l";
hasLines.setName(getString(2131755193, objArr));
LineChartData lineChartData = new LineChartData(arrayList);
this.data = lineChartData;
lineChartData.setAxisXBottom(axis);
this.data.setAxisYLeft(hasLines);
this.chart.setLineChartData(this.data);
}
private static int daysAgo(long j) {
return ((int) (JoH.tsl() - j)) / 86400000;
}
public List<Line> getCalibrationsLine(List<Calibration> list, int i) {
if (list == null) {
return new ArrayList();
}
ArrayList arrayList = new ArrayList();
ArrayList arrayList2 = new ArrayList();
ArrayList arrayList3 = new ArrayList();
for (Calibration calibration : list) {
double d = calibration.estimate_raw_at_time_of_calibration;
if (d > this.end_x) {
this.end_x = d;
}
float f = (float) d;
boolean z = this.doMgdl;
double d2 = calibration.bg;
PointValue pointValue = new PointValue(f, z ? (float) d2 : ((float) d2) * 0.05549944f);
PointValue pointValue2 = new PointValue((float) calibration.raw_value, this.doMgdl ? (float) calibration.bg : ((float) calibration.bg) * 0.05549944f);
PointValue pointValue3 = new PointValue((float) calibration.adjusted_raw_value, this.doMgdl ? (float) calibration.bg : 0.05549944f * ((float) calibration.bg));
int daysAgo = daysAgo(calibration.raw_timestamp);
pointValue.setLabel((daysAgo > 0 ? Integer.toString(daysAgo) + "d " : "") + JoH.hourMinuteString(calibration.raw_timestamp));
arrayList.add(pointValue);
arrayList2.add(pointValue2);
arrayList3.add(pointValue3);
}
Line line = new Line(arrayList);
line.setColor(i);
line.setHasLines(false);
line.setPointRadius(4);
line.setHasPoints(true);
line.setHasLabels(true);
ArrayList arrayList4 = new ArrayList();
arrayList4.add(line);
if (Pref.getBooleanDefaultFalse("engineering_mode")) {
Line line2 = new Line(arrayList2);
line2.setColor(-65536);
line2.setHasLines(false);
line2.setPointRadius(1);
line2.setHasPoints(true);
line2.setHasLabels(false);
Line line3 = new Line(arrayList3);
line3.setColor(-256);
line3.setHasLines(false);
line3.setPointRadius(1);
line3.setHasPoints(true);
line3.setHasLabels(false);
arrayList4.add(line2);
arrayList4.add(line3);
}
return arrayList4;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!Pref.getBooleanDefaultFalse("engineering_mode")) {
return false;
}
getMenuInflater().inflate(2131558404, menu);
if (Calibration.lastValid() != null) {
menu.findItem(2131296333).setVisible(true);
menu.findItem(2131296334).setVisible(true);
menu.findItem(2131296332).setVisible(false);
}
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case 2131296333:
overWriteIntercept();
return true;
case 2131296334:
overWriteSlope();
return true;
default:
return super.onOptionsItemSelected(menuItem);
}
}
private void overWriteIntercept() {
final EditText editText = new EditText(this);
editText.setInputType(12290);
new AlertDialog.Builder(this).setTitle("Ovewrite Intercept").setMessage("Overwrite Intercept").setView(editText).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String obj = editText.getText().toString();
if (!TextUtils.isEmpty(obj)) {
double d = JoH.tolerantParseDouble(obj);
Calibration lastValid = Calibration.lastValid();
lastValid.intercept = d;
lastValid.save();
CalibrationSendQueue.addToQueue(lastValid, CalibrationGraph.this.getApplicationContext());
CalibrationGraph.this.recreate();
return;
}
JoH.static_toast_long(xdrip.gs(2131755693));
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
JoH.static_toast_long(xdrip.gs(2131755284));
}
}).show();
}
private void overWriteSlope() {
final EditText editText = new EditText(this);
editText.setInputType(8194);
new AlertDialog.Builder(this).setTitle("Ovewrite Slope").setMessage("Overwrite Slope").setView(editText).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String obj = editText.getText().toString();
if (!TextUtils.isEmpty(obj)) {
double d = JoH.tolerantParseDouble(obj);
Calibration lastValid = Calibration.lastValid();
lastValid.slope = d;
lastValid.save();
CalibrationSendQueue.addToQueue(lastValid, CalibrationGraph.this.getApplicationContext());
CalibrationGraph.this.recreate();
return;
}
JoH.static_toast_long(xdrip.gs(2131755693));
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
JoH.static_toast_long(xdrip.gs(2131755284));
}
}).show();
}
}