Merge pull request #983 from jotomo/issue-939
WIP: Fix bolus progress dialog not closing with onPause/onResume cycle
This commit is contained in:
commit
a35c925930
|
@ -245,12 +245,27 @@ public class MainApp extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public void stopKeepAliveService() {
|
||||
if (keepAliveReceiver != null)
|
||||
KeepAliveReceiver.cancelAlarm(this);
|
||||
}
|
||||
|
||||
public static void subscribe(Object subscriber) {
|
||||
try {
|
||||
bus().register(subscriber);
|
||||
} catch (IllegalArgumentException e) {
|
||||
// already registered
|
||||
}
|
||||
}
|
||||
|
||||
public static void unsubscribe(Object subscriber) {
|
||||
try {
|
||||
bus().unregister(subscriber);
|
||||
} catch (IllegalArgumentException e) {
|
||||
// already unregistered
|
||||
}
|
||||
}
|
||||
|
||||
public static Bus bus() {
|
||||
return sBus;
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL
|
|||
}
|
||||
|
||||
public void setInsulin(double amount) {
|
||||
this.amount = amount;
|
||||
BolusProgressDialog.amount = amount;
|
||||
bolusEnded = false;
|
||||
}
|
||||
|
||||
|
@ -55,10 +55,10 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL
|
|||
Bundle savedInstanceState) {
|
||||
getDialog().setTitle(String.format(MainApp.gs(R.string.overview_bolusprogress_goingtodeliver), amount));
|
||||
View view = inflater.inflate(R.layout.overview_bolusprogress_dialog, container, false);
|
||||
stopButton = (Button) view.findViewById(R.id.overview_bolusprogress_stop);
|
||||
statusView = (TextView) view.findViewById(R.id.overview_bolusprogress_status);
|
||||
stopPressedView = (TextView) view.findViewById(R.id.overview_bolusprogress_stoppressed);
|
||||
progressBar = (ProgressBar) view.findViewById(R.id.overview_bolusprogress_progressbar);
|
||||
stopButton = view.findViewById(R.id.overview_bolusprogress_stop);
|
||||
statusView = view.findViewById(R.id.overview_bolusprogress_status);
|
||||
stopPressedView = view.findViewById(R.id.overview_bolusprogress_stoppressed);
|
||||
progressBar = view.findViewById(R.id.overview_bolusprogress_progressbar);
|
||||
stopButton.setOnClickListener(this);
|
||||
progressBar.setMax(100);
|
||||
statusView.setText(MainApp.gs(R.string.waitingforpump));
|
||||
|
@ -70,16 +70,25 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL
|
|||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (getDialog() != null)
|
||||
getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
MainApp.bus().register(this);
|
||||
running = true;
|
||||
if (bolusEnded) dismiss();
|
||||
if (bolusEnded) {
|
||||
dismiss();
|
||||
} else {
|
||||
if (getDialog() != null)
|
||||
getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
MainApp.subscribe(this);
|
||||
running = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dismiss() {
|
||||
super.dismiss();
|
||||
try {
|
||||
super.dismiss();
|
||||
} catch (IllegalStateException e) {
|
||||
// dialog not running yet. onResume will try again. Set bolusEnded to make extra
|
||||
// sure onResume will catch this
|
||||
bolusEnded = true;
|
||||
}
|
||||
if (helperActivity != null) {
|
||||
helperActivity.finish();
|
||||
}
|
||||
|
@ -88,7 +97,7 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL
|
|||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
MainApp.bus().unregister(this);
|
||||
MainApp.unsubscribe(this);
|
||||
running = false;
|
||||
}
|
||||
|
||||
|
@ -109,16 +118,13 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL
|
|||
public void onStatusEvent(final EventOverviewBolusProgress ev) {
|
||||
Activity activity = getActivity();
|
||||
if (activity != null) {
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
log.debug("Status: " + ev.status + " Percent: " + ev.percent);
|
||||
statusView.setText(ev.status);
|
||||
progressBar.setProgress(ev.percent);
|
||||
if (ev.percent == 100) {
|
||||
stopButton.setVisibility(View.INVISIBLE);
|
||||
scheduleDismiss();
|
||||
}
|
||||
activity.runOnUiThread(() -> {
|
||||
log.debug("Status: " + ev.status + " Percent: " + ev.percent);
|
||||
statusView.setText(ev.status);
|
||||
progressBar.setProgress(ev.percent);
|
||||
if (ev.percent == 100) {
|
||||
stopButton.setVisibility(View.INVISIBLE);
|
||||
scheduleDismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -133,41 +139,25 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL
|
|||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventPumpStatusChanged c) {
|
||||
|
||||
Activity activity = getActivity();
|
||||
if (activity != null) {
|
||||
activity.runOnUiThread(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
statusView.setText(c.textStatus());
|
||||
}
|
||||
}
|
||||
);
|
||||
activity.runOnUiThread(() -> statusView.setText(c.textStatus()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void scheduleDismiss() {
|
||||
Thread t = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SystemClock.sleep(5000);
|
||||
BolusProgressDialog.bolusEnded = true;
|
||||
Activity activity = getActivity();
|
||||
if (activity != null) {
|
||||
activity.runOnUiThread(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
dismiss();
|
||||
} catch (Exception e) {
|
||||
log.error("Unhandled exception", e);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
Thread t = new Thread(() -> {
|
||||
SystemClock.sleep(5000);
|
||||
BolusProgressDialog.bolusEnded = true;
|
||||
Activity activity = getActivity();
|
||||
if (activity != null) {
|
||||
activity.runOnUiThread(() -> {
|
||||
try {
|
||||
dismiss();
|
||||
} catch (Exception e) {
|
||||
log.error("Unhandled exception", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
t.start();
|
||||
|
|
Loading…
Reference in a new issue