Skip to content

Commit 061dc72

Browse files
committed
Merge tag '2025.04.03'
2 parents f79a93d + e313616 commit 061dc72

35 files changed

Lines changed: 608 additions & 167 deletions

app/src/main/java/com/eveningoutpost/dexdrip/CalibrationGraph.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public void setupCharts() {
8888
DecimalFormat df = new DecimalFormat("#");
8989
df.setMaximumFractionDigits(2);
9090
df.setMinimumFractionDigits(2);
91-
String Header = "slope = " + df.format(calibration.slope) + " intercept = " + df.format(calibration.intercept);
91+
String Header = getString(R.string.calibration_slope_intercept, df.format(calibration.slope), df.format(calibration.intercept));
9292
GraphHeader.setText(Header);
9393

9494
//red line
@@ -133,8 +133,8 @@ public void setupCharts() {
133133
}
134134
Axis axisX = new Axis();
135135
Axis axisY = new Axis().setHasLines(true);
136-
axisX.setName("Raw Value");
137-
axisY.setName("Glucose " + (doMgdl ? "mg/dl" : "mmol/l"));
136+
axisX.setName(getString(R.string.axis_x_raw_value));
137+
axisY.setName(getString(R.string.axis_y_glucose_mgdl_mmol, (doMgdl ? "mg/dl" : "mmol/l")));
138138

139139

140140
data = new LineChartData(lines);

app/src/main/java/com/eveningoutpost/dexdrip/EditAlertActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ public void addListenerOnButtons() {
499499
buttonSave.setOnClickListener(new View.OnClickListener() {
500500
public void onClick(View v) {
501501
// Check that values are ok.
502-
double threshold = parseDouble(alertThreshold.getText().toString());
502+
double threshold = JoH.tolerantParseDouble(alertThreshold.getText().toString());
503503
if(Double.isNaN(threshold))
504504
return;
505505

app/src/main/java/com/eveningoutpost/dexdrip/MissedReadingActivity.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@
33
import android.app.AlertDialog;
44
import android.app.TimePickerDialog;
55
import android.content.Context;
6+
import android.content.Intent;
67
import android.content.SharedPreferences;
8+
import android.media.RingtoneManager;
9+
import android.net.Uri;
710
import android.os.Bundle;
811
import android.preference.PreferenceManager;
912
import android.text.format.DateFormat;
1013
import android.view.View;
14+
import android.widget.Button;
1115
import android.widget.CheckBox;
1216
import android.widget.CompoundButton;
1317
import android.widget.EditText;
@@ -16,17 +20,23 @@
1620
import android.widget.TimePicker;
1721

1822
import com.eveningoutpost.dexdrip.models.AlertType;
23+
import com.eveningoutpost.dexdrip.models.UserError;
1924
import com.eveningoutpost.dexdrip.services.MissedReadingService;
25+
import com.eveningoutpost.dexdrip.utilitymodels.AlertPlayer;
26+
import com.eveningoutpost.dexdrip.utilitymodels.Pref;
2027
import com.eveningoutpost.dexdrip.utils.ActivityWithMenu;
2128

2229

2330
public class MissedReadingActivity extends ActivityWithMenu {
2431
public static String menu_name = "Missed reading";
2532
private Context mContext;
33+
private Button buttonalertMp3;
2634

2735
private CheckBox checkboxEnableAlert;
2836
private CheckBox checkboxAllDay;
2937
private CheckBox checkboxEnableReraise;
38+
private String audioPath; // Local representation of the path to the sound file
39+
private EditText alertMp3File; // Sound file title
3040

3141
private LinearLayout layoutTimeBetween;
3242
private LinearLayout timeInstructions;
@@ -49,6 +59,8 @@ public class MissedReadingActivity extends ActivityWithMenu {
4959
private int endHour = 23;
5060
private int endMinute = 59;
5161
private int missedMinutes = 59;
62+
private final static String TAG = AlertPlayer.class.getSimpleName();
63+
EditAlertActivity editAlert = new EditAlertActivity();
5264

5365

5466
@Override
@@ -59,9 +71,18 @@ protected void onCreate(Bundle savedInstanceState) {
5971

6072
viewTimeStart = (TextView) findViewById(R.id.missed_reading_time_start);
6173
viewTimeEnd = (TextView) findViewById(R.id.missed_reading_time_end);
74+
buttonalertMp3 = (Button)findViewById(R.id.Button_mra_mp3_file);
6275
checkboxAllDay = (CheckBox) findViewById(R.id.missed_reading_all_day);
6376
checkboxEnableAlert = (CheckBox) findViewById(R.id.missed_reading_enable_alert);
6477
checkboxEnableReraise = (CheckBox) findViewById(R.id.missed_reading_enable_alerts_reraise);
78+
/** xDrip used to use the other alerts sound file for the missed readings alert.
79+
* To avoid causing an unexpected behavior for a previous user of xDrip, the missed reading alert
80+
* by default uses the same sound file as the other alerts alert.
81+
**/
82+
if (Pref.getString("bg_missed_alerts_sound", null) == null) { // If missed reading sound file has never been set
83+
Pref.setString("bg_missed_alerts_sound", Pref.getString("other_alerts_sound", "content://settings/system/alarm_alert")); // Set it to the other alerts sound
84+
}
85+
alertMp3File = (EditText) findViewById(R.id.bg_missed_alerts_sound);
6586

6687
layoutTimeBetween = (LinearLayout) findViewById(R.id.missed_reading_time_between);
6788
timeInstructions = (LinearLayout) findViewById(R.id.missed_reading_instructions);
@@ -83,6 +104,7 @@ protected void onCreate(Bundle savedInstanceState) {
83104
boolean enableAlert = prefs.getBoolean("bg_missed_alerts",false);
84105
boolean allDay = prefs.getBoolean("missed_readings_all_day",true);
85106
boolean enableReraise = prefs.getBoolean("bg_missed_alerts_enable_alerts_reraise",false);
107+
audioPath = Pref.getString("bg_missed_alerts_sound", null);
86108

87109
checkboxAllDay.setChecked(allDay);
88110
checkboxEnableAlert.setChecked(enableAlert);
@@ -95,9 +117,15 @@ protected void onCreate(Bundle savedInstanceState) {
95117
bgMissedMinutes.setText(prefs.getString("bg_missed_minutes", "30"));
96118
bgMissedSnoozeMin.setText("" + MissedReadingService.getOtherAlertSnoozeMinutes(prefs, "bg_missed_alerts"));
97119
bgMissedReraiseSec.setText(prefs.getString("bg_missed_alerts_reraise_sec", "60"));
120+
if (!audioPath.equals("")) {
121+
alertMp3File.setText(editAlert.shortPath(audioPath));
122+
} else {
123+
alertMp3File.setText("Silent");
124+
}
98125

99126
addListenerOnButtons();
100127
enableAllControls();
128+
alertMp3File.setKeyListener(null);
101129
}
102130

103131
@Override
@@ -225,6 +253,35 @@ public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinut
225253
viewTimeEnd.setOnClickListener(endTimeListener);
226254
timeInstructionsEnd.setOnClickListener(endTimeListener);
227255

256+
buttonalertMp3.setOnClickListener(new View.OnClickListener() {
257+
public void onClick(View v) {
258+
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
259+
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
260+
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
261+
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
262+
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL);
263+
startActivityForResult(intent, 999);
264+
AlertDialog dialog = builder.create();
265+
dialog.show();
266+
}
267+
}); //- See more at: http://blog.kerul.net/2011/12/pick-file-using-intentactiongetcontent.html#sthash.c8xtIr1Y.dpuf
268+
269+
270+
}
271+
272+
public void onActivityResult(int requestCode, int resultCode, Intent data) {
273+
if (resultCode == RESULT_OK) {
274+
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
275+
if (uri != null) {
276+
audioPath = uri.toString();
277+
alertMp3File.setText(editAlert.shortPath(audioPath));
278+
} else {
279+
audioPath = "";
280+
alertMp3File.setText("Silent");
281+
}
282+
UserError.Log.d(TAG, "Selected sound path: " + audioPath);
283+
Pref.setString("bg_missed_alerts_sound", audioPath); // Update the sound file preference
284+
}
228285
}
229286

230287
public void setTimeRanges() {

app/src/main/java/com/eveningoutpost/dexdrip/Reminders.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1022,7 +1022,7 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
10221022

10231023
dialogBuilder.setTitle(((reminder == null) ? xdrip.getAppContext().getString(R.string.title_add_reminder) : xdrip.getAppContext().getString(R.string.title_edit_reminder)));
10241024
//dialogBuilder.setMessage("Enter text below");
1025-
dialogBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
1025+
dialogBuilder.setPositiveButton(xdrip.getAppContext().getString(R.string.done), new DialogInterface.OnClickListener() {
10261026
public void onClick(DialogInterface dialog, int whichButton) {
10271027
String reminder_title = titleEditText.getText().toString().trim();
10281028
Log.d(TAG, "Got reminder title: " + reminder_title);

app/src/main/java/com/eveningoutpost/dexdrip/cgm/carelinkfollow/client/CareLinkClient.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -608,14 +608,26 @@ public RecentData getLast24Hours() {
608608

609609
Map<String, String> queryParams = null;
610610
RecentData recentData = null;
611+
boolean useCloudServer = false;
611612

612613
queryParams = new HashMap<String, String>();
613614
queryParams.put("cpSerialNumber", "NONE");
614615
queryParams.put("msgType", "last24hours");
615616
queryParams.put("requestTime", String.valueOf(System.currentTimeMillis()));
616617

618+
//use cloud server in every region
619+
useCloudServer = true;
620+
617621
try {
618-
recentData = this.getData(this.careLinkServer(), "patient/connect/data", queryParams, null, RecentData.class);
622+
//Get data
623+
//carelink cloud server and no query params
624+
if(useCloudServer)
625+
recentData = this.getData(this.cloudServer(), "patient/connect/data", null, null, RecentData.class);
626+
//old carelink minimed server + query params
627+
else
628+
recentData = this.getData(this.careLinkServer(), "patient/connect/data", queryParams, null, RecentData.class);
629+
630+
//Correct time
619631
if (recentData != null)
620632
correctTimeInRecentData(recentData);
621633
} catch (Exception e) {
@@ -668,7 +680,7 @@ public RecentData getConnectDisplayMessage(String username, String role, String
668680
correctTimeInRecentData(recentData);
669681
}
670682
}
671-
//Use new data format outside US
683+
//Use new data format for new endpoint
672684
else {
673685
displayMessage = this.getData(newEndpointUrl, requestBody, DisplayMessage.class);
674686
if (displayMessage != null && displayMessage.patientData != null) {
@@ -686,6 +698,8 @@ public RecentData getConnectDisplayMessage(String username, String role, String
686698
// New M2M last24hours webapp data
687699
public RecentData getM2MPatientData(String patientUsername) {
688700

701+
RecentData recentData = null;
702+
boolean useCloudServer = false;
689703
Map<String, String> queryParams = null;
690704

691705
//Patient username is mandantory!
@@ -697,9 +711,21 @@ public RecentData getM2MPatientData(String patientUsername) {
697711
queryParams.put("msgType", "last24hours");
698712
queryParams.put("requestTime", String.valueOf(System.currentTimeMillis()));
699713

700-
RecentData recentData = this.getData(this.careLinkServer(), "/patient/m2m/connect/data/gc/patients/" + patientUsername, queryParams, null, RecentData.class);
714+
//use cloud server in every region
715+
useCloudServer = true;
716+
717+
//Get data
718+
//carelink cloud server and no query params
719+
if(useCloudServer)
720+
recentData = this.getData(this.cloudServer(), "patient/m2m/connect/data/gc/patients/" + patientUsername, null, null, RecentData.class);
721+
//old carelink minimed server + query params
722+
else
723+
recentData = this.getData(this.careLinkServer(), "patient/m2m/connect/data/gc/patients/" + patientUsername, queryParams, null, RecentData.class);
724+
725+
//Correct time
701726
if (recentData != null)
702727
correctTimeInRecentData(recentData);
728+
703729
return recentData;
704730

705731
}

app/src/main/java/com/eveningoutpost/dexdrip/g5model/Ob1G5StateMachine.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ private static void handleAuthenticationThrowable(final Throwable throwable, fin
381381
}
382382
if ((throwable instanceof BleDisconnectedException) || (throwable instanceof TimeoutException)) {
383383
if ((parent.getState() == Ob1G5CollectionService.STATE.BOND) || (parent.getState() == Ob1G5CollectionService.STATE.CHECK_AUTH)) {
384-
384+
parent.savePersist();
385385
if (parent.getState() == Ob1G5CollectionService.STATE.BOND) {
386386
UserError.Log.d(TAG, "SLEEPING BEFORE RECONNECT");
387387
threadSleep(15000);

app/src/main/java/com/eveningoutpost/dexdrip/models/Calibration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.activeandroid.Model;
1212
import com.activeandroid.annotation.Column;
1313
import com.activeandroid.annotation.Table;
14+
import com.activeandroid.query.Delete;
1415
import com.activeandroid.query.Select;
1516
import com.eveningoutpost.dexdrip.GcmActivity;
1617
import com.eveningoutpost.dexdrip.Home;
@@ -1365,6 +1366,12 @@ public static synchronized void invalidateAllForSensor() {
13651366
JoH.static_toast_long(msg);
13661367
}
13671368

1369+
public static void deleteAll() {
1370+
new Delete()
1371+
.from(Calibration.class)
1372+
.execute();
1373+
}
1374+
13681375
}
13691376

13701377
abstract class SlopeParameters {

0 commit comments

Comments
 (0)