Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
jamorham committed Sep 21, 2022
2 parents eb92007 + fc3f7ce commit e4a313d
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 4 deletions.
29 changes: 25 additions & 4 deletions app/src/main/java/com/eveningoutpost/dexdrip/StartNewSensor.java
@@ -1,5 +1,10 @@
package com.eveningoutpost.dexdrip;

import static com.eveningoutpost.dexdrip.Home.startWatchUpdaterService;
import static com.eveningoutpost.dexdrip.Models.BgReading.AGE_ADJUSTMENT_TIME;
import static com.eveningoutpost.dexdrip.Services.Ob1G5CollectionService.getTransmitterID;
import static com.eveningoutpost.dexdrip.xdrip.gs;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
Expand All @@ -13,6 +18,8 @@
import android.widget.Toast;

import com.eveningoutpost.dexdrip.G5Model.DexSyncKeeper;
import com.eveningoutpost.dexdrip.G5Model.DexTimeKeeper;
import com.eveningoutpost.dexdrip.G5Model.FirmwareCapability;
import com.eveningoutpost.dexdrip.G5Model.Ob1G5StateMachine;
import com.eveningoutpost.dexdrip.Models.JoH;
import com.eveningoutpost.dexdrip.Models.Sensor;
Expand All @@ -27,6 +34,7 @@
import com.eveningoutpost.dexdrip.profileeditor.ProfileAdapter;
import com.eveningoutpost.dexdrip.profileeditor.TimePickerFragment;
import com.eveningoutpost.dexdrip.ui.dialog.G6CalibrationCodeDialog;
import com.eveningoutpost.dexdrip.ui.dialog.G6EndOfLifeDialog;
import com.eveningoutpost.dexdrip.utils.ActivityWithMenu;
import com.eveningoutpost.dexdrip.utils.DexCollectionType;
import com.eveningoutpost.dexdrip.utils.LocationHelper;
Expand All @@ -36,9 +44,7 @@
import java.util.Date;
import java.util.Locale;

import static com.eveningoutpost.dexdrip.Home.startWatchUpdaterService;
import static com.eveningoutpost.dexdrip.Models.BgReading.AGE_ADJUSTMENT_TIME;
import static com.eveningoutpost.dexdrip.xdrip.gs;
import lombok.val;

public class StartNewSensor extends ActivityWithMenu {
// public static String menu_name = "Start Sensor";
Expand Down Expand Up @@ -164,12 +170,27 @@ public void onTimeUpdated(int newmins) {
timePickerFragment.show(activity.getFragmentManager(), "TimePicker");
}

private static final int ABSOLUTE_MAX_AGE_DAYS = 180;
private static final int MAX_AGE_DAYS = 100;
private static final int MONTH_WARNING_DAYS = 30;

private void startSensorOrAskForG6Code() {
final int cap = 20;
if (Ob1G5CollectionService.usingCollector() && Ob1G5StateMachine.usingG6()) {
if (JoH.pratelimit("dex-stop-start", cap)) {
JoH.clearRatelimit("dex-stop-start");
G6CalibrationCodeDialog.ask(this, this::startSensorAndSetIntent);
val transmitterAgeInDays = DexTimeKeeper.getTransmitterAgeInDays(getTransmitterID());
val modified = FirmwareCapability.isTransmitterModified(getTransmitterID());
val endOfLife = transmitterAgeInDays >= ABSOLUTE_MAX_AGE_DAYS || (!modified && transmitterAgeInDays >= MAX_AGE_DAYS);
if (transmitterAgeInDays < MAX_AGE_DAYS - MONTH_WARNING_DAYS
|| (modified && transmitterAgeInDays < ABSOLUTE_MAX_AGE_DAYS - MONTH_WARNING_DAYS)) {
// More than 30 days left of starting sensors - just ask for code
G6CalibrationCodeDialog.ask(this, this::startSensorAndSetIntent);
} else { // 30 or less days left of starting sensors - give additional message first
G6EndOfLifeDialog.show(activity, () ->
G6CalibrationCodeDialog.ask(this, this::startSensorAndSetIntent),
endOfLife, modified, transmitterAgeInDays);
}
} else {
JoH.static_toast_long(String.format(Locale.ENGLISH, getString(R.string.please_wait_seconds_before_trying_to_start_sensor), cap));
}
Expand Down
@@ -0,0 +1,49 @@
package com.eveningoutpost.dexdrip.ui.dialog;

import android.app.Activity;
import android.app.AlertDialog;

import com.eveningoutpost.dexdrip.R;

// Navid200

public class G6EndOfLifeDialog {

private static final int MAX_START_DAYS = 99;

// Inform the user that Transmitter Days is approaching maximum, or that it has passed.
public static void show(final Activity activity, final Runnable runnable, final boolean endOfLife, final boolean modified, final int currentDays) {
String title = activity.getString(R.string.reminder);
String message;
if (endOfLife) { // Cannot start sensors
title = activity.getString(R.string.notification);
message = activity.getString(R.string.TX_EOL_notification);
} else { // Approaching end of life
if (modified) { // modified transmitter
message = activity.getString(R.string.TX_EOL_reminder_mod, currentDays);
} else {
message = activity.getString(R.string.TX_EOL_reminder, MAX_START_DAYS, currentDays);
}
}
final android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(activity)
.setTitle(title)
.setMessage(message);

builder.setPositiveButton(R.string.proceed, (dialog, which) -> runnable.run());

if (endOfLife) {
builder.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.cancel());
}

final AlertDialog dialog = builder.create();
// apparently possible dialog is already showing, probably due to hash code
try {
if (dialog.isShowing()) {
dialog.dismiss();
}
} catch (Exception e) {
//
}
dialog.show();
}
}
6 changes: 6 additions & 0 deletions app/src/main/res/values/strings.xml
Expand Up @@ -1707,6 +1707,12 @@
<string name="source_wizard_button">Source Wizard Button</string>
<string name="please_wait_seconds_before_trying_to_start_sensor">Please wait %d seconds before trying to start sensor</string>
<string name="please_update_OOP2_or_move_to_calibrate_based_on_raw_mode">please update OOP2 or move to calibrate based on raw mode</string>
<string name="reminder">Reminder</string>
<string name="notification">Notification</string>
<string name="TX_EOL_reminder">When Transmitter Days on system status page reaches %1$d, it will be the last opportunity to start a sensor on this transmitter. Currently at %2$d days.</string>
<string name="TX_EOL_notification">If you proceed and start sensor, it is very likely it will fail because of Transmitter Days having reached maximum.</string>
<string name="TX_EOL_reminder_mod">Transmitter Days is approaching maximum. Soon, you will not be able to start sensors on this transmitter. Currently at %d days.</string>
<string name="proceed">Proceed</string>
<string name="special_pairing_workaround">Special Pairing Workaround</string>
<string name="save_power">Save Power</string>
<string name="reduce_battery_and_network_overhead">Reduce battery and network overhead by using batch processing and excluding unnecessary data</string>
Expand Down

0 comments on commit e4a313d

Please sign in to comment.