getCustomActions();
void executeCustomAction(CustomActionType customActionType);
diff --git a/app/src/main/java/info/nightscout/androidaps/logging/AAPSLogger.kt b/app/src/main/java/info/nightscout/androidaps/logging/AAPSLogger.kt
index e3bc5eafaa..b1b1e21426 100644
--- a/app/src/main/java/info/nightscout/androidaps/logging/AAPSLogger.kt
+++ b/app/src/main/java/info/nightscout/androidaps/logging/AAPSLogger.kt
@@ -9,6 +9,7 @@ interface AAPSLogger {
fun debug(message: String)
fun debug(enable: Boolean, tag: LTag, message: String)
fun debug(tag: LTag, message: String)
+ fun warn(tag: LTag, message: String)
fun info(tag: LTag, message: String)
fun error(tag: LTag, message: String)
fun error(message: String)
diff --git a/app/src/main/java/info/nightscout/androidaps/logging/AAPSLoggerDebug.kt b/app/src/main/java/info/nightscout/androidaps/logging/AAPSLoggerDebug.kt
index 346f12f749..ca78bf8f53 100644
--- a/app/src/main/java/info/nightscout/androidaps/logging/AAPSLoggerDebug.kt
+++ b/app/src/main/java/info/nightscout/androidaps/logging/AAPSLoggerDebug.kt
@@ -20,6 +20,10 @@ class AAPSLoggerDebug : AAPSLogger {
Log.d(tag.tag, message)
}
+ override fun warn(tag: LTag, message: String) {
+ Log.w(tag.tag, message)
+ }
+
override fun info(tag: LTag, message: String) {
Log.i(tag.tag, message)
}
diff --git a/app/src/main/java/info/nightscout/androidaps/logging/AAPSLoggerProduction.kt b/app/src/main/java/info/nightscout/androidaps/logging/AAPSLoggerProduction.kt
index bcc11634b1..65425c4e35 100644
--- a/app/src/main/java/info/nightscout/androidaps/logging/AAPSLoggerProduction.kt
+++ b/app/src/main/java/info/nightscout/androidaps/logging/AAPSLoggerProduction.kt
@@ -24,6 +24,12 @@ class AAPSLoggerProduction : AAPSLogger {
}
}
+ override fun warn(tag: LTag, message: String) {
+ if (L.isEnabled(tag.tag)) {
+ LoggerFactory.getLogger(tag.tag).warn(message)
+ }
+ }
+
override fun info(tag: LTag, message: String) {
if (L.isEnabled(tag.tag)) {
LoggerFactory.getLogger(tag.tag).info(message)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopFragment.kt
index b7549fcfed..ccd3dea3a7 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopFragment.kt
@@ -38,7 +38,7 @@ class LoopFragment : Fragment() {
@Synchronized
override fun onResume() {
super.onResume()
- disposable += RxBus
+ disposable += RxBus.INSTANCE
.toObservable(EventLoopUpdateGui::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
@@ -47,7 +47,7 @@ class LoopFragment : Fragment() {
FabricPrivacy.logException(it)
})
- disposable += RxBus
+ disposable += RxBus.INSTANCE
.toObservable(EventLoopSetLastRunGui::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.java
index e85bccbc2e..3ffbb24db5 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.java
@@ -80,6 +80,7 @@ public class LoopPlugin extends PluginBase {
private static LoopPlugin loopPlugin;
@NonNull
+ @Deprecated
public static LoopPlugin getPlugin() {
if (loopPlugin == null) {
loopPlugin = new LoopPlugin();
@@ -122,7 +123,7 @@ public class LoopPlugin extends PluginBase {
protected void onStart() {
createNotificationChannel();
super.onStart();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTempTargetChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -136,7 +137,7 @@ public class LoopPlugin extends PluginBase {
* the event causing the calculation is not EventNewBg.
*
*/
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAutosensCalculationFinished.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -280,7 +281,7 @@ public class LoopPlugin extends PluginBase {
String message = MainApp.gs(R.string.loopdisabled) + "\n" + loopEnabled.getReasons();
if (L.isEnabled(L.APS))
log.debug(message);
- RxBus.INSTANCE.send(new EventLoopSetLastRunGui(message));
+ RxBus.Companion.getINSTANCE().send(new EventLoopSetLastRunGui(message));
return;
}
final PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
@@ -294,7 +295,7 @@ public class LoopPlugin extends PluginBase {
if (profile == null || !ProfileFunctions.getInstance().isProfileValid("Loop")) {
if (L.isEnabled(L.APS))
log.debug(MainApp.gs(R.string.noprofileselected));
- RxBus.INSTANCE.send(new EventLoopSetLastRunGui(MainApp.gs(R.string.noprofileselected)));
+ RxBus.Companion.getINSTANCE().send(new EventLoopSetLastRunGui(MainApp.gs(R.string.noprofileselected)));
return;
}
@@ -309,7 +310,7 @@ public class LoopPlugin extends PluginBase {
// Check if we have any result
if (result == null) {
- RxBus.INSTANCE.send(new EventLoopSetLastRunGui(MainApp.gs(R.string.noapsselected)));
+ RxBus.Companion.getINSTANCE().send(new EventLoopSetLastRunGui(MainApp.gs(R.string.noapsselected)));
return;
}
@@ -351,14 +352,14 @@ public class LoopPlugin extends PluginBase {
if (isSuspended()) {
if (L.isEnabled(L.APS))
log.debug(MainApp.gs(R.string.loopsuspended));
- RxBus.INSTANCE.send(new EventLoopSetLastRunGui(MainApp.gs(R.string.loopsuspended)));
+ RxBus.Companion.getINSTANCE().send(new EventLoopSetLastRunGui(MainApp.gs(R.string.loopsuspended)));
return;
}
if (pump.isSuspended()) {
if (L.isEnabled(L.APS))
log.debug(MainApp.gs(R.string.pumpsuspended));
- RxBus.INSTANCE.send(new EventLoopSetLastRunGui(MainApp.gs(R.string.pumpsuspended)));
+ RxBus.Companion.getINSTANCE().send(new EventLoopSetLastRunGui(MainApp.gs(R.string.pumpsuspended)));
return;
}
@@ -374,7 +375,7 @@ public class LoopPlugin extends PluginBase {
lastRun.tbrSetByPump = waiting;
if (resultAfterConstraints.bolusRequested)
lastRun.smbSetByPump = waiting;
- RxBus.INSTANCE.send(new EventLoopUpdateGui());
+ RxBus.Companion.getINSTANCE().send(new EventLoopUpdateGui());
FabricPrivacy.getInstance().logCustom("APSRequest");
applyTBRRequest(resultAfterConstraints, profile, new Callback() {
@Override
@@ -395,11 +396,11 @@ public class LoopPlugin extends PluginBase {
LoopPlugin.getPlugin().invoke("tempBasalFallback", allowNotification, true);
}).start();
}
- RxBus.INSTANCE.send(new EventLoopUpdateGui());
+ RxBus.Companion.getINSTANCE().send(new EventLoopUpdateGui());
}
});
}
- RxBus.INSTANCE.send(new EventLoopUpdateGui());
+ RxBus.Companion.getINSTANCE().send(new EventLoopUpdateGui());
}
});
} else {
@@ -440,7 +441,7 @@ public class LoopPlugin extends PluginBase {
(NotificationManager) MainApp.instance().getSystemService(Context.NOTIFICATION_SERVICE);
// mId allows you to update the notification later on.
mNotificationManager.notify(Constants.notificationID, builder.build());
- RxBus.INSTANCE.send(new EventNewOpenLoopNotification());
+ RxBus.Companion.getINSTANCE().send(new EventNewOpenLoopNotification());
// Send to Wear
ActionStringHandler.handleInitiate("changeRequest");
@@ -453,7 +454,7 @@ public class LoopPlugin extends PluginBase {
}
}
- RxBus.INSTANCE.send(new EventLoopUpdateGui());
+ RxBus.Companion.getINSTANCE().send(new EventLoopUpdateGui());
} finally {
if (L.isEnabled(L.APS))
log.debug("invoke end");
@@ -473,7 +474,7 @@ public class LoopPlugin extends PluginBase {
NSUpload.uploadDeviceStatus();
SP.incInt(R.string.key_ObjectivesmanualEnacts);
}
- RxBus.INSTANCE.send(new EventAcceptOpenLoopChange());
+ RxBus.Companion.getINSTANCE().send(new EventAcceptOpenLoopChange());
}
});
FabricPrivacy.getInstance().logCustom("AcceptTemp");
@@ -485,7 +486,7 @@ public class LoopPlugin extends PluginBase {
*/
public void applyTBRRequest(APSResult request, Profile profile, Callback callback) {
- boolean allowPercentage = VirtualPumpPlugin.getPlugin().isEnabled(PluginType.PUMP);
+ boolean allowPercentage = VirtualPumpPlugin.Companion.getPlugin().isEnabled(PluginType.PUMP);
if (!request.tempBasalRequested) {
if (callback != null) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt
index 64f5d1aa91..4ae0396524 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt
@@ -12,7 +12,7 @@ import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.aps.openAPSMA.events.EventOpenAPSUpdateGui
import info.nightscout.androidaps.plugins.aps.openAPSMA.events.EventOpenAPSUpdateResultGui
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.JSONFormatter
@@ -27,11 +27,9 @@ import javax.inject.Inject
class OpenAPSAMAFragment : DaggerFragment() {
private var disposable: CompositeDisposable = CompositeDisposable()
- @Inject
- lateinit var openAPSAMAPlugin: OpenAPSAMAPlugin
-
- @Inject
- lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var openAPSAMAPlugin: OpenAPSAMAPlugin
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var rxBus: RxBusWrapper
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
@@ -50,7 +48,7 @@ class OpenAPSAMAFragment : DaggerFragment() {
override fun onResume() {
super.onResume()
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventOpenAPSUpdateGui::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
@@ -58,7 +56,7 @@ class OpenAPSAMAFragment : DaggerFragment() {
}, {
FabricPrivacy.logException(it)
})
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventOpenAPSUpdateResultGui::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
@@ -90,7 +88,8 @@ class OpenAPSAMAFragment : DaggerFragment() {
val iobArray = JSONArray(determineBasalAdapterAMAJS.iobDataParam)
openapsma_iobdata.text = TextUtils.concat(String.format(MainApp.gs(R.string.array_of_elements), iobArray.length()) + "\n", JSONFormatter.format(iobArray.getString(0)))
} catch (e: JSONException) {
- aapsLogger.error(LTag.APS,"Unhandled exception", e)
+ aapsLogger.error(LTag.APS, "Unhandled exception", e)
+ @Suppress("SetTextI18n")
openapsma_iobdata.text = "JSONException see log for details"
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAPlugin.java
index 282bada76c..69444ebb26 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAPlugin.java
@@ -94,25 +94,25 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
if (profile == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.noprofileselected)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.noprofileselected)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.noprofileselected));
return;
}
if (pump == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.nopumpselected)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.nopumpselected)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.nopumpselected));
return;
}
if (!isEnabled(PluginType.APS)) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_disabled)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_disabled)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.openapsma_disabled));
return;
}
if (glucoseStatus == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_noglucosedata)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_noglucosedata)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.openapsma_noglucosedata));
return;
}
@@ -165,7 +165,7 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
if (ConstraintChecker.getInstance().isAutosensModeEnabled().value()) {
AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getLastAutosensDataSynchronized("OpenAPSPlugin");
if (autosensData == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openaps_noasdata)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openaps_noasdata)));
return;
}
lastAutosensResult = autosensData.autosensResult;
@@ -215,7 +215,7 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
lastAPSResult = determineBasalResultAMA;
lastAPSRun = now;
}
- RxBus.INSTANCE.send(new EventOpenAPSUpdateGui());
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateGui());
//deviceStatus.suggested = determineBasalResultAMA.json;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSMA/OpenAPSMAFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSMA/OpenAPSMAFragment.kt
index 8d66a056dd..675100e08a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSMA/OpenAPSMAFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSMA/OpenAPSMAFragment.kt
@@ -6,10 +6,9 @@ import android.view.View
import android.view.ViewGroup
import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.L
import info.nightscout.androidaps.plugins.aps.openAPSMA.events.EventOpenAPSUpdateGui
import info.nightscout.androidaps.plugins.aps.openAPSMA.events.EventOpenAPSUpdateResultGui
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.JSONFormatter
@@ -17,14 +16,13 @@ import info.nightscout.androidaps.utils.plusAssign
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.openapsama_fragment.*
-import org.slf4j.LoggerFactory
import javax.inject.Inject
class OpenAPSMAFragment : DaggerFragment() {
private var disposable: CompositeDisposable = CompositeDisposable()
- @Inject
- lateinit var openAPSMAPlugin: OpenAPSMAPlugin
+ @Inject lateinit var openAPSMAPlugin: OpenAPSMAPlugin
+ @Inject lateinit var rxBus: RxBusWrapper
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
@@ -44,7 +42,7 @@ class OpenAPSMAFragment : DaggerFragment() {
override fun onResume() {
super.onResume()
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventOpenAPSUpdateGui::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
@@ -52,7 +50,7 @@ class OpenAPSMAFragment : DaggerFragment() {
}, {
FabricPrivacy.logException(it)
})
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventOpenAPSUpdateResultGui::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSMA/OpenAPSMAPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSMA/OpenAPSMAPlugin.java
index b98b200c8d..4bc44388fb 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSMA/OpenAPSMAPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSMA/OpenAPSMAPlugin.java
@@ -93,25 +93,25 @@ public class OpenAPSMAPlugin extends PluginBase implements APSInterface {
PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
if (profile == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.noprofileselected)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.noprofileselected)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.noprofileselected));
return;
}
if (pump == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.nopumpselected)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.nopumpselected)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.nopumpselected));
return;
}
if (!isEnabled(PluginType.APS)) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_disabled)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_disabled)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.openapsma_disabled));
return;
}
if (glucoseStatus == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_noglucosedata)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_noglucosedata)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.openapsma_noglucosedata));
return;
}
@@ -195,7 +195,7 @@ public class OpenAPSMAPlugin extends PluginBase implements APSInterface {
lastAPSResult = determineBasalResultMA;
lastAPSRun = now;
}
- RxBus.INSTANCE.send(new EventOpenAPSUpdateGui());
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateGui());
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBFragment.kt
index b68542b40a..491dba1037 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBFragment.kt
@@ -13,7 +13,7 @@ import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.aps.openAPSMA.events.EventOpenAPSUpdateGui
import info.nightscout.androidaps.plugins.aps.openAPSMA.events.EventOpenAPSUpdateResultGui
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.JSONFormatter
@@ -28,11 +28,9 @@ import javax.inject.Inject
class OpenAPSSMBFragment : DaggerFragment() {
private var disposable: CompositeDisposable = CompositeDisposable()
- @Inject
- lateinit var openAPSSMBPlugin: OpenAPSSMBPlugin
-
- @Inject
- lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var openAPSSMBPlugin: OpenAPSSMBPlugin
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var rxBus: RxBusWrapper
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
@@ -50,7 +48,7 @@ class OpenAPSSMBFragment : DaggerFragment() {
@Synchronized
override fun onResume() {
super.onResume()
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventOpenAPSUpdateGui::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
@@ -58,7 +56,7 @@ class OpenAPSSMBFragment : DaggerFragment() {
}, {
FabricPrivacy.logException(it)
})
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventOpenAPSUpdateResultGui::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
@@ -91,7 +89,7 @@ class OpenAPSSMBFragment : DaggerFragment() {
openapsma_iobdata.text = TextUtils.concat(String.format(MainApp.gs(R.string.array_of_elements), iobArray.length()) + "\n", JSONFormatter.format(iobArray.getString(0)))
} catch (e: JSONException) {
aapsLogger.error(LTag.APS, "Unhandled exception", e)
- @SuppressLint("SetTextl18n")
+ @SuppressLint("SetTextI18n")
openapsma_iobdata.text = "JSONException see log for details"
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.java
index 513efc36ea..7f9c0d124f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.java
@@ -112,25 +112,25 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface, Constr
PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
if (profile == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.noprofileselected)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.noprofileselected)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.noprofileselected));
return;
}
if (pump == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.nopumpselected)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.nopumpselected)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.nopumpselected));
return;
}
if (!isEnabled(PluginType.APS)) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_disabled)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_disabled)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.openapsma_disabled));
return;
}
if (glucoseStatus == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_noglucosedata)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openapsma_noglucosedata)));
aapsLogger.debug(LTag.APS, MainApp.gs(R.string.openapsma_noglucosedata));
return;
}
@@ -186,7 +186,7 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface, Constr
if (ConstraintChecker.getInstance().isAutosensModeEnabled().value()) {
AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getLastAutosensDataSynchronized("OpenAPSPlugin");
if (autosensData == null) {
- RxBus.INSTANCE.send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openaps_noasdata)));
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openaps_noasdata)));
return;
}
lastAutosensResult = autosensData.autosensResult;
@@ -257,7 +257,7 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface, Constr
lastAPSResult = determineBasalResultSMB;
lastAPSRun = now;
}
- RxBus.INSTANCE.send(new EventOpenAPSUpdateGui());
+ RxBus.Companion.getINSTANCE().send(new EventOpenAPSUpdateGui());
//deviceStatus.suggested = determineBasalResultAMA.json;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/bus/RxBus.kt b/app/src/main/java/info/nightscout/androidaps/plugins/bus/RxBus.kt
index 1774df1471..0b2960c7d9 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/bus/RxBus.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/bus/RxBus.kt
@@ -5,8 +5,13 @@ import io.reactivex.Observable
import io.reactivex.schedulers.Schedulers
import io.reactivex.subjects.PublishSubject
-// Use object so we have a singleton instance
-object RxBus {
+class RxBus {
+
+ companion object {
+ @JvmStatic
+ @Deprecated("Get via Dagger. Will be removed once fully transitioned to Dagger")
+ var INSTANCE: RxBus = RxBus()//TODO: remove as soon as Dagger is fully set up
+ }
private val publisher = PublishSubject.create()
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/bus/RxBusWrapper.kt b/app/src/main/java/info/nightscout/androidaps/plugins/bus/RxBusWrapper.kt
new file mode 100644
index 0000000000..bd91f12419
--- /dev/null
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/bus/RxBusWrapper.kt
@@ -0,0 +1,21 @@
+package info.nightscout.androidaps.plugins.bus
+
+import info.nightscout.androidaps.events.Event
+import io.reactivex.Observable
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class RxBusWrapper @Inject constructor() {
+
+ private val bus: RxBus = RxBus.INSTANCE
+
+ fun send(event: Event) {
+ bus.send(event)
+ }
+
+ // Listen should return an Observable and not the publisher
+ // Using ofType we filter only events that match that class type
+ fun toObservable(eventType: Class): Observable =
+ bus.toObservable(eventType)
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderFragment.kt
index 059bec1444..037934db6f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderFragment.kt
@@ -1,6 +1,5 @@
package info.nightscout.androidaps.plugins.configBuilder
-
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@@ -8,19 +7,22 @@ import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
import androidx.annotation.StringRes
-import androidx.fragment.app.Fragment
+import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.*
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.PasswordProtection
+import info.nightscout.androidaps.utils.plusAssign
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.configbuilder_fragment.*
import java.util.*
+import javax.inject.Inject
-class ConfigBuilderFragment : Fragment() {
+class ConfigBuilderFragment : DaggerFragment() {
+ @Inject lateinit var rxBus: RxBusWrapper
private var disposable: CompositeDisposable = CompositeDisposable()
private val pluginViewHolders = ArrayList()
@@ -49,14 +51,14 @@ class ConfigBuilderFragment : Fragment() {
@Synchronized
override fun onResume() {
super.onResume()
- disposable.add(RxBus
- .toObservable(EventConfigBuilderUpdateGui::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- for (pluginViewHolder in pluginViewHolders) pluginViewHolder.update()
- }, {
- FabricPrivacy.logException(it)
- }))
+ disposable += rxBus
+ .toObservable(EventConfigBuilderUpdateGui::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ for (pluginViewHolder in pluginViewHolders) pluginViewHolder.update()
+ }, {
+ FabricPrivacy.logException(it)
+ })
updateGUI()
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.java
index 076d29382b..d17ee4059b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConfigBuilderPlugin.java
@@ -25,13 +25,14 @@ import info.nightscout.androidaps.interfaces.SensitivityInterface;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBus;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.insulin.InsulinOrefRapidActingPlugin;
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin;
import info.nightscout.androidaps.plugins.profile.ns.NSProfilePlugin;
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin;
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref0Plugin;
import info.nightscout.androidaps.queue.CommandQueue;
-import info.nightscout.androidaps.utils.SP;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
/**
* Created by mike on 05.08.2016.
@@ -40,6 +41,8 @@ import info.nightscout.androidaps.utils.SP;
public class ConfigBuilderPlugin extends PluginBase {
private static ConfigBuilderPlugin configBuilderPlugin;
private final AAPSLogger aapsLogger; // TODO move to plugin base
+ private final SP sp;
+ private final RxBusWrapper rxBus;
/**
@@ -63,10 +66,10 @@ public class ConfigBuilderPlugin extends PluginBase {
private CommandQueue commandQueue = new CommandQueue();
- private Lazy insulinOrefRapidActingPlugin;
-
- //TODO: inject
- LocalProfilePlugin localProfilePlugin = LocalProfilePlugin.INSTANCE;
+ private final Lazy mainApp;
+ private final Lazy insulinOrefRapidActingPlugin;
+ private final Lazy localProfilePlugin;
+ private final Lazy virtualPumpPlugin;
/*
* Written by Adrian:
@@ -77,8 +80,13 @@ public class ConfigBuilderPlugin extends PluginBase {
* */
@Inject
public ConfigBuilderPlugin(
+ Lazy mainApp,
Lazy insulinOrefRapidActingPlugin,
- AAPSLogger aapsLogger
+ Lazy localProfilePlugin,
+ Lazy virtualPumpPlugin,
+ AAPSLogger aapsLogger,
+ SP sp,
+ RxBusWrapper rxBus
) {
super(new PluginDescription()
.mainType(PluginType.GENERAL)
@@ -90,28 +98,22 @@ public class ConfigBuilderPlugin extends PluginBase {
.shortName(R.string.configbuilder_shortname)
.description(R.string.description_config_builder)
);
+ this.mainApp = mainApp;
this.insulinOrefRapidActingPlugin = insulinOrefRapidActingPlugin;
+ this.localProfilePlugin = localProfilePlugin;
+ this.virtualPumpPlugin = virtualPumpPlugin;
this.aapsLogger = aapsLogger;
+ this.sp = sp;
+ this.rxBus =rxBus;
configBuilderPlugin = this; // TODO: only while transitioning to Dagger
}
- @Override
- protected void onStart() {
- super.onStart();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- }
-
-
public void initialize() {
pluginList = MainApp.getPluginsList();
upgradeSettings();
loadSettings();
setAlwaysEnabledPluginsEnabled();
- RxBus.INSTANCE.send(new EventAppInitialized());
+ RxBus.Companion.getINSTANCE().send(new EventAppInitialized());
}
private void setAlwaysEnabledPluginsEnabled() {
@@ -146,11 +148,11 @@ public class ConfigBuilderPlugin extends PluginBase {
private void savePref(PluginBase p, PluginType type, boolean storeVisible) {
String settingEnabled = "ConfigBuilder_" + type.name() + "_" + p.getClass().getSimpleName() + "_Enabled";
- SP.putBoolean(settingEnabled, p.isEnabled(type));
+ sp.putBoolean(settingEnabled, p.isEnabled(type));
aapsLogger.debug(LTag.CONFIGBUILDER, "Storing: " + settingEnabled + ":" + p.isEnabled(type));
if (storeVisible) {
String settingVisible = "ConfigBuilder_" + type.name() + "_" + p.getClass().getSimpleName() + "_Visible";
- SP.putBoolean(settingVisible, p.isFragmentVisible());
+ sp.putBoolean(settingVisible, p.isFragmentVisible());
aapsLogger.debug(LTag.CONFIGBUILDER, "Storing: " + settingVisible + ":" + p.isFragmentVisible());
}
}
@@ -171,16 +173,16 @@ public class ConfigBuilderPlugin extends PluginBase {
private void loadPref(PluginBase p, PluginType type, boolean loadVisible) {
String settingEnabled = "ConfigBuilder_" + type.name() + "_" + p.getClass().getSimpleName() + "_Enabled";
- if (SP.contains(settingEnabled))
- p.setPluginEnabled(type, SP.getBoolean(settingEnabled, false));
+ if (sp.contains(settingEnabled))
+ p.setPluginEnabled(type, sp.getBoolean(settingEnabled, false));
else if (p.getType() == type && (p.pluginDescription.enableByDefault || p.pluginDescription.alwaysEnabled)) {
p.setPluginEnabled(type, true);
}
aapsLogger.debug(LTag.CONFIGBUILDER, "Loaded: " + settingEnabled + ":" + p.isEnabled(type));
if (loadVisible) {
String settingVisible = "ConfigBuilder_" + type.name() + "_" + p.getClass().getSimpleName() + "_Visible";
- if (SP.contains(settingVisible))
- p.setFragmentVisible(type, SP.getBoolean(settingVisible, false) && SP.getBoolean(settingEnabled, false));
+ if (sp.contains(settingVisible))
+ p.setFragmentVisible(type, sp.getBoolean(settingVisible, false) && sp.getBoolean(settingEnabled, false));
else if (p.getType() == type && p.pluginDescription.visibleByDefault) {
p.setFragmentVisible(type, true);
}
@@ -190,7 +192,7 @@ public class ConfigBuilderPlugin extends PluginBase {
// Detect settings prior 1.60
private void upgradeSettings() {
- if (!SP.contains("ConfigBuilder_1_NSProfilePlugin_Enabled"))
+ if (!sp.contains("ConfigBuilder_1_NSProfilePlugin_Enabled"))
return;
aapsLogger.debug(LTag.CONFIGBUILDER, "Upgrading stored settings");
for (PluginBase p : pluginList) {
@@ -234,12 +236,12 @@ public class ConfigBuilderPlugin extends PluginBase {
}
String settingEnabled = "ConfigBuilder_" + type + "_" + p.getClass().getSimpleName() + "_Enabled";
String settingVisible = "ConfigBuilder_" + type + "_" + p.getClass().getSimpleName() + "_Visible";
- if (SP.contains(settingEnabled))
- p.setPluginEnabled(newType, SP.getBoolean(settingEnabled, false));
- if (SP.contains(settingVisible))
- p.setFragmentVisible(newType, SP.getBoolean(settingVisible, false) && SP.getBoolean(settingEnabled, false));
- SP.remove(settingEnabled);
- SP.remove(settingVisible);
+ if (sp.contains(settingEnabled))
+ p.setPluginEnabled(newType, sp.getBoolean(settingEnabled, false));
+ if (sp.contains(settingVisible))
+ p.setFragmentVisible(newType, sp.getBoolean(settingVisible, false) && sp.getBoolean(settingEnabled, false));
+ sp.remove(settingEnabled);
+ sp.remove(settingVisible);
if (newType == p.getType()) {
savePref(p, newType, true);
} else if (p.getType() == PluginType.PUMP && p instanceof ProfileInterface) {
@@ -261,7 +263,7 @@ public class ConfigBuilderPlugin extends PluginBase {
@NotNull
public ProfileInterface getActiveProfileInterface() {
if (activeProfile != null) return activeProfile;
- else return localProfilePlugin;
+ else return localProfilePlugin.get();
}
@Nullable
@@ -337,8 +339,8 @@ public class ConfigBuilderPlugin extends PluginBase {
pluginsInCategory = MainApp.getSpecificPluginsList(PluginType.PUMP);
activePump = (PumpInterface) getTheOneEnabledInArray(pluginsInCategory, PluginType.PUMP);
if (activePump == null) {
- activePump = VirtualPumpPlugin.getPlugin();
- VirtualPumpPlugin.getPlugin().setPluginEnabled(PluginType.PUMP, true);
+ activePump = virtualPumpPlugin.get();
+ virtualPumpPlugin.get().setPluginEnabled(PluginType.PUMP, true);
aapsLogger.debug(LTag.CONFIGBUILDER, "Defaulting VirtualPumpPlugin");
}
this.setFragmentVisiblities(((PluginBase) activePump).getName(), pluginsInCategory, PluginType.PUMP);
@@ -464,7 +466,7 @@ public class ConfigBuilderPlugin extends PluginBase {
}
} else { // enable first plugin in list
if (type == PluginType.PUMP)
- VirtualPumpPlugin.getPlugin().setPluginEnabled(type, true);
+ VirtualPumpPlugin.Companion.getPlugin().setPluginEnabled(type, true);
else if (type == PluginType.INSULIN)
insulinOrefRapidActingPlugin.get().setPluginEnabled(type, true);
else if (type == PluginType.SENSITIVITY)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/PluginViewHolder.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/PluginViewHolder.kt
index 2376ebe635..f14d0d87dd 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/PluginViewHolder.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/PluginViewHolder.kt
@@ -39,7 +39,7 @@ class PluginViewHolder internal constructor(private val fragment: ConfigBuilderF
pluginVisibility.setOnClickListener {
plugin.setFragmentVisible(pluginType, pluginVisibility.isChecked)
ConfigBuilderPlugin.getPlugin().storeSettings("CheckedCheckboxVisible")
- RxBus.send(EventRebuildTabs())
+ RxBus.INSTANCE.send(EventRebuildTabs())
ConfigBuilderPlugin.getPlugin().logPluginStatus()
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt
index 1e7355e464..68d8cfef50 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt
@@ -8,10 +8,14 @@ import info.nightscout.androidaps.db.ProfileSwitch
import info.nightscout.androidaps.db.Source
import info.nightscout.androidaps.utils.sharedPreferences.SP
import java.security.spec.InvalidParameterSpecException
+import javax.inject.Inject
import javax.inject.Singleton
@Singleton
-class ProfileFunctionImplementation constructor(private val sp: SP) : ProfileFunction {
+class ProfileFunctionImplementation @Inject constructor(
+ private val sp: SP,
+ private val configBuilderPlugin: ConfigBuilderPlugin
+) : ProfileFunction {
override fun getProfileName(): String =
getProfileName(System.currentTimeMillis(), customized = true, showRemainingTime = false)
@@ -46,7 +50,7 @@ class ProfileFunctionImplementation constructor(private val sp: SP) : ProfileFun
profileSwitch.source = Source.USER
profileSwitch.profileName = profileName
profileSwitch.profileJson = profile.data.toString()
- profileSwitch.profilePlugin = ConfigBuilderPlugin.getPlugin().activeProfileInterface::class.java.name
+ profileSwitch.profilePlugin = configBuilderPlugin.activeProfileInterface::class.java.name
profileSwitch.durationInMinutes = duration
profileSwitch.isCPP = percentage != 100 || timeShift != 0
profileSwitch.timeshift = timeShift
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctions.java b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctions.java
index fc58e29940..73fc38d7f0 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctions.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctions.java
@@ -40,6 +40,7 @@ public class ProfileFunctions implements ProfileFunction {
private static ProfileFunctions profileFunctions = null;
+ @Deprecated
public static ProfileFunctions getInstance() {
if (profileFunctions == null)
profileFunctions = new ProfileFunctions();
@@ -51,7 +52,7 @@ public class ProfileFunctions implements ProfileFunction {
}
private ProfileFunctions() {
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventProfileNeedsUpdate.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -69,7 +70,7 @@ public class ProfileFunctions implements ProfileFunction {
MainApp.instance().startActivity(i);
}
if (result.enacted)
- RxBus.INSTANCE.send(new EventNewBasalProfile());
+ RxBus.Companion.getINSTANCE().send(new EventNewBasalProfile());
}
});
}, FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/dstHelper/DstHelperPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/dstHelper/DstHelperPlugin.java
index 828fa1b86f..d6458465af 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/dstHelper/DstHelperPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/dstHelper/DstHelperPlugin.java
@@ -27,6 +27,7 @@ public class DstHelperPlugin extends PluginBase implements ConstraintsInterface
static DstHelperPlugin plugin = null;
+ @Deprecated
public static DstHelperPlugin getPlugin() {
if (plugin == null)
plugin = new DstHelperPlugin();
@@ -90,6 +91,6 @@ public class DstHelperPlugin extends PluginBase implements ConstraintsInterface
private void warnUser(int id, String warningText) {
Notification notification = new Notification(id, warningText, Notification.LOW);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt
index 7f004b7f02..9291461e12 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt
@@ -14,14 +14,13 @@ import android.widget.EditText
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
-import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.LinearSmoothScroller
import androidx.recyclerview.widget.RecyclerView
-import info.nightscout.androidaps.MainApp
+import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.constraints.objectives.activities.ObjectivesExamDialog
import info.nightscout.androidaps.plugins.constraints.objectives.dialogs.NtpProgressDialog
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventNtpStatus
@@ -30,13 +29,20 @@ import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Obje
import info.nightscout.androidaps.receivers.NetworkChangeReceiver
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate
import info.nightscout.androidaps.utils.*
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.objectives_fragment.*
-import org.slf4j.LoggerFactory
+import javax.inject.Inject
+
+class ObjectivesFragment : DaggerFragment() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var sp: SP
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var objectivesPlugin: ObjectivesPlugin
-class ObjectivesFragment : Fragment() {
- private val log = LoggerFactory.getLogger(L.CONSTRAINTS)
private val objectivesAdapter = ObjectivesAdapter()
private val handler = Handler(Looper.getMainLooper())
@@ -60,7 +66,7 @@ class ObjectivesFragment : Fragment() {
objectives_recyclerview.adapter = objectivesAdapter
objectives_fake.setOnClickListener { updateGUI() }
objectives_reset.setOnClickListener {
- ObjectivesPlugin.reset()
+ objectivesPlugin.reset()
objectives_recyclerview.adapter?.notifyDataSetChanged()
scrollToCurrentObjective()
}
@@ -71,15 +77,15 @@ class ObjectivesFragment : Fragment() {
@Synchronized
override fun onResume() {
super.onResume()
- disposable.add(RxBus
+ disposable += rxBus
.toObservable(EventObjectivesUpdateGui::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
objectives_recyclerview.adapter?.notifyDataSetChanged()
}, {
FabricPrivacy.logException(it)
- })
- )
+ }
+ )
}
@Synchronized
@@ -96,7 +102,7 @@ class ObjectivesFragment : Fragment() {
private fun startUpdateTimer() {
handler.removeCallbacks(objectiveUpdater)
- for (objective in ObjectivesPlugin.objectives) {
+ for (objective in objectivesPlugin.objectives) {
if (objective.isStarted && !objective.isAccomplished) {
val timeTillNextMinute = (System.currentTimeMillis() - objective.startedOn) % (60 * 1000)
handler.postDelayed(objectiveUpdater, timeTillNextMinute)
@@ -107,8 +113,8 @@ class ObjectivesFragment : Fragment() {
private fun scrollToCurrentObjective() {
activity?.runOnUiThread {
- for (i in 0 until ObjectivesPlugin.objectives.size) {
- val objective = ObjectivesPlugin.objectives[i]
+ for (i in 0 until objectivesPlugin.objectives.size) {
+ val objective = objectivesPlugin.objectives[i]
if (!objective.isStarted || !objective.isAccomplished) {
context?.let {
val smoothScroller = object : LinearSmoothScroller(it) {
@@ -131,16 +137,16 @@ class ObjectivesFragment : Fragment() {
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
- val objective = ObjectivesPlugin.objectives[position]
- holder.title.text = MainApp.gs(R.string.nth_objective, position + 1)
+ val objective = objectivesPlugin.objectives[position]
+ holder.title.text = resourceHelper.gs(R.string.nth_objective, position + 1)
if (objective.objective != 0) {
holder.objective.visibility = View.VISIBLE
- holder.objective.text = MainApp.gs(objective.objective)
+ holder.objective.text = resourceHelper.gs(objective.objective)
} else
holder.objective.visibility = View.GONE
if (objective.gate != 0) {
holder.gate.visibility = View.VISIBLE
- holder.gate.text = MainApp.gs(objective.gate)
+ holder.gate.text = resourceHelper.gs(objective.gate)
} else
holder.gate.visibility = View.GONE
if (!objective.isStarted) {
@@ -150,7 +156,7 @@ class ObjectivesFragment : Fragment() {
holder.accomplished.visibility = View.GONE
holder.unFinish.visibility = View.GONE
holder.unStart.visibility = View.GONE
- if (position == 0 || ObjectivesPlugin.objectives[position - 1].isAccomplished)
+ if (position == 0 || objectivesPlugin.objectives[position - 1].isAccomplished)
holder.start.visibility = View.VISIBLE
else
holder.start.visibility = View.GONE
@@ -176,7 +182,8 @@ class ObjectivesFragment : Fragment() {
if (task.shouldBeIgnored()) continue
// name
val name = TextView(holder.progress.context)
- name.text = MainApp.gs(task.task) + ":"
+ @Suppress("SetTextlI8n")
+ name.text = resourceHelper.gs(task.task) + ":"
name.setTextColor(-0x1)
holder.progress.addView(name, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
// hint
@@ -209,7 +216,7 @@ class ObjectivesFragment : Fragment() {
holder.progress.addView(separator, LinearLayout.LayoutParams.MATCH_PARENT, 2)
}
}
- holder.accomplished.text = MainApp.gs(R.string.accomplished, DateUtil.dateAndTimeString(objective.accomplishedOn))
+ holder.accomplished.text = resourceHelper.gs(R.string.accomplished, DateUtil.dateAndTimeString(objective.accomplishedOn))
holder.accomplished.setTextColor(-0x3e3e3f)
holder.verify.setOnClickListener {
NetworkChangeReceiver.grabNetworkStatus(context)
@@ -217,33 +224,33 @@ class ObjectivesFragment : Fragment() {
objective.accomplishedOn = DateUtil.now()
scrollToCurrentObjective()
startUpdateTimer()
- RxBus.send(EventObjectivesUpdateGui())
- RxBus.send(EventSWUpdate(false))
+ rxBus.send(EventObjectivesUpdateGui())
+ rxBus.send(EventSWUpdate(false))
} else {
// move out of UI thread
Thread {
NtpProgressDialog().show((context as AppCompatActivity).supportFragmentManager, "NtpCheck")
- RxBus.send(EventNtpStatus(MainApp.gs(R.string.timedetection), 0))
+ rxBus.send(EventNtpStatus(resourceHelper.gs(R.string.timedetection), 0))
SntpClient.ntpTime(object : SntpClient.Callback() {
override fun run() {
- log.debug("NTP time: $time System time: ${DateUtil.now()}")
+ aapsLogger.debug("NTP time: $time System time: ${DateUtil.now()}")
SystemClock.sleep(300)
if (!networkConnected) {
- RxBus.send(EventNtpStatus(MainApp.gs(R.string.notconnected), 99))
+ rxBus.send(EventNtpStatus(resourceHelper.gs(R.string.notconnected), 99))
} else if (success) {
if (objective.isCompleted(time)) {
objective.accomplishedOn = time
- RxBus.send(EventNtpStatus(MainApp.gs(R.string.success), 100))
+ rxBus.send(EventNtpStatus(resourceHelper.gs(R.string.success), 100))
SystemClock.sleep(1000)
- RxBus.send(EventObjectivesUpdateGui())
- RxBus.send(EventSWUpdate(false))
+ rxBus.send(EventObjectivesUpdateGui())
+ rxBus.send(EventSWUpdate(false))
SystemClock.sleep(100)
scrollToCurrentObjective()
} else {
- RxBus.send(EventNtpStatus(MainApp.gs(R.string.requirementnotmet), 99))
+ rxBus.send(EventNtpStatus(resourceHelper.gs(R.string.requirementnotmet), 99))
}
} else {
- RxBus.send(EventNtpStatus(MainApp.gs(R.string.failedretrievetime), 99))
+ rxBus.send(EventNtpStatus(resourceHelper.gs(R.string.failedretrievetime), 99))
}
}
}, NetworkChangeReceiver.isConnected())
@@ -256,29 +263,29 @@ class ObjectivesFragment : Fragment() {
objective.startedOn = DateUtil.now()
scrollToCurrentObjective()
startUpdateTimer()
- RxBus.send(EventObjectivesUpdateGui())
- RxBus.send(EventSWUpdate(false))
+ rxBus.send(EventObjectivesUpdateGui())
+ rxBus.send(EventSWUpdate(false))
} else
// move out of UI thread
Thread {
NtpProgressDialog().show((context as AppCompatActivity).supportFragmentManager, "NtpCheck")
- RxBus.send(EventNtpStatus(MainApp.gs(R.string.timedetection), 0))
+ rxBus.send(EventNtpStatus(resourceHelper.gs(R.string.timedetection), 0))
SntpClient.ntpTime(object : SntpClient.Callback() {
override fun run() {
- log.debug("NTP time: $time System time: ${DateUtil.now()}")
+ aapsLogger.debug("NTP time: $time System time: ${DateUtil.now()}")
SystemClock.sleep(300)
if (!networkConnected) {
- RxBus.send(EventNtpStatus(MainApp.gs(R.string.notconnected), 99))
+ rxBus.send(EventNtpStatus(resourceHelper.gs(R.string.notconnected), 99))
} else if (success) {
objective.startedOn = time
- RxBus.send(EventNtpStatus(MainApp.gs(R.string.success), 100))
+ rxBus.send(EventNtpStatus(resourceHelper.gs(R.string.success), 100))
SystemClock.sleep(1000)
- RxBus.send(EventObjectivesUpdateGui())
- RxBus.send(EventSWUpdate(false))
+ rxBus.send(EventObjectivesUpdateGui())
+ rxBus.send(EventSWUpdate(false))
SystemClock.sleep(100)
scrollToCurrentObjective()
} else {
- RxBus.send(EventNtpStatus(MainApp.gs(R.string.failedretrievetime), 99))
+ rxBus.send(EventNtpStatus(resourceHelper.gs(R.string.failedretrievetime), 99))
}
}
}, NetworkChangeReceiver.isConnected())
@@ -286,25 +293,25 @@ class ObjectivesFragment : Fragment() {
}
holder.unStart.setOnClickListener {
activity?.let { activity ->
- OKDialog.showConfirmation(activity, MainApp.gs(R.string.objectives), MainApp.gs(R.string.doyouwantresetstart), Runnable {
+ OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.objectives), resourceHelper.gs(R.string.doyouwantresetstart), Runnable {
objective.startedOn = 0
scrollToCurrentObjective()
- RxBus.send(EventObjectivesUpdateGui())
- RxBus.send(EventSWUpdate(false))
+ rxBus.send(EventObjectivesUpdateGui())
+ rxBus.send(EventSWUpdate(false))
})
}
}
holder.unFinish.setOnClickListener {
objective.accomplishedOn = 0
scrollToCurrentObjective()
- RxBus.send(EventObjectivesUpdateGui())
- RxBus.send(EventSWUpdate(false))
+ rxBus.send(EventObjectivesUpdateGui())
+ rxBus.send(EventSWUpdate(false))
}
if (objective.hasSpecialInput && !objective.isAccomplished && objective.isStarted && objective.specialActionEnabled()) {
// generate random request code if none exists
- val request = SP.getString(R.string.key_objectives_request_code, String.format("%1$05d", (Math.random() * 99999).toInt()))
- SP.putString(R.string.key_objectives_request_code, request)
- holder.requestCode.text = MainApp.gs(R.string.requestcode, request)
+ val request = sp.getString(R.string.key_objectives_request_code, String.format("%1$05d", (Math.random() * 99999).toInt()))
+ sp.putString(R.string.key_objectives_request_code, request)
+ holder.requestCode.text = resourceHelper.gs(R.string.requestcode, request)
holder.requestCode.visibility = View.VISIBLE
holder.enterButton.visibility = View.VISIBLE
holder.input.visibility = View.VISIBLE
@@ -312,7 +319,7 @@ class ObjectivesFragment : Fragment() {
holder.enterButton.setOnClickListener {
val input = holder.input.text.toString()
objective.specialAction(activity, input)
- RxBus.send(EventObjectivesUpdateGui())
+ rxBus.send(EventObjectivesUpdateGui())
}
} else {
holder.enterButton.visibility = View.GONE
@@ -323,7 +330,7 @@ class ObjectivesFragment : Fragment() {
}
override fun getItemCount(): Int {
- return ObjectivesPlugin.objectives.size
+ return objectivesPlugin.objectives.size
}
inner class ViewHolder internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPlugin.kt
index ebae80150c..acd8b83a13 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesPlugin.kt
@@ -5,27 +5,35 @@ import com.google.common.base.Charsets
import com.google.common.hash.Hashing
import info.nightscout.androidaps.BuildConfig
import info.nightscout.androidaps.Config
-import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.interfaces.*
+import info.nightscout.androidaps.interfaces.Constraint
+import info.nightscout.androidaps.interfaces.ConstraintsInterface
+import info.nightscout.androidaps.interfaces.PluginBase
+import info.nightscout.androidaps.interfaces.PluginDescription
+import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.*
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.OKDialog
-import info.nightscout.androidaps.utils.SP
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
-/**
- * Created by mike on 05.08.2016.
- */
-object ObjectivesPlugin : PluginBase(PluginDescription()
- .mainType(PluginType.CONSTRAINTS)
- .fragmentClass(ObjectivesFragment::class.qualifiedName)
- .alwaysEnabled(Config.APS)
- .showInList(Config.APS)
- .pluginName(R.string.objectives)
- .shortName(R.string.objectives_shortname)
- .description(R.string.description_objectives)), ConstraintsInterface {
+@Singleton
+class ObjectivesPlugin @Inject constructor(
+ private val sp: SP,
+ private val resourceHelper: ResourceHelper,
+ private val configBuilderPlugin: ConfigBuilderPlugin
+) : PluginBase(PluginDescription()
+ .mainType(PluginType.CONSTRAINTS)
+ .fragmentClass(ObjectivesFragment::class.qualifiedName)
+ .alwaysEnabled(Config.APS)
+ .showInList(Config.APS)
+ .pluginName(R.string.objectives)
+ .shortName(R.string.objectives_shortname)
+ .description(R.string.description_objectives)), ConstraintsInterface {
var objectives: MutableList = ArrayList()
@@ -40,13 +48,14 @@ object ObjectivesPlugin : PluginBase(PluginDescription()
val AMA_OBJECTIVE = 8
val SMB_OBJECTIVE = 9
- init {
+ override fun onStart() {
+ super.onStart()
convertSP()
setupObjectives()
}
override fun specialEnableCondition(): Boolean {
- val pump = ConfigBuilderPlugin.getPlugin().activePump
+ val pump = configBuilderPlugin.activePump
return pump == null || pump.pumpDescription.isTempBasalCapable
}
@@ -63,9 +72,9 @@ object ObjectivesPlugin : PluginBase(PluginDescription()
}
private fun doConvertSP(number: Int, name: String) {
- if (!SP.contains("Objectives_" + name + "_started")) {
- SP.putLong("Objectives_" + name + "_started", SP.getLong("Objectives" + number + "started", 0L))
- SP.putLong("Objectives_" + name + "_accomplished", SP.getLong("Objectives" + number + "accomplished", 0L))
+ if (!sp.contains("Objectives_" + name + "_started")) {
+ sp.putLong("Objectives_" + name + "_started", sp.getLong("Objectives" + number + "started", 0L))
+ sp.putLong("Objectives_" + name + "_accomplished", sp.getLong("Objectives" + number + "accomplished", 0L))
}
// TODO: we can remove Objectives1accomplished sometimes later
}
@@ -89,42 +98,42 @@ object ObjectivesPlugin : PluginBase(PluginDescription()
objective.startedOn = 0
objective.accomplishedOn = 0
}
- SP.putBoolean(R.string.key_ObjectivesbgIsAvailableInNS, false)
- SP.putBoolean(R.string.key_ObjectivespumpStatusIsAvailableInNS, false)
- SP.putInt(R.string.key_ObjectivesmanualEnacts, 0)
- SP.putBoolean(R.string.key_objectiveuseprofileswitch, false)
- SP.putBoolean(R.string.key_objectiveusedisconnect, false)
- SP.putBoolean(R.string.key_objectiveusereconnect, false)
- SP.putBoolean(R.string.key_objectiveusetemptarget, false)
- SP.putBoolean(R.string.key_objectiveuseactions, false)
- SP.putBoolean(R.string.key_objectiveuseloop, false)
- SP.putBoolean(R.string.key_objectiveusescale, false)
+ sp.putBoolean(R.string.key_ObjectivesbgIsAvailableInNS, false)
+ sp.putBoolean(R.string.key_ObjectivespumpStatusIsAvailableInNS, false)
+ sp.putInt(R.string.key_ObjectivesmanualEnacts, 0)
+ sp.putBoolean(R.string.key_objectiveuseprofileswitch, false)
+ sp.putBoolean(R.string.key_objectiveusedisconnect, false)
+ sp.putBoolean(R.string.key_objectiveusereconnect, false)
+ sp.putBoolean(R.string.key_objectiveusetemptarget, false)
+ sp.putBoolean(R.string.key_objectiveuseactions, false)
+ sp.putBoolean(R.string.key_objectiveuseloop, false)
+ sp.putBoolean(R.string.key_objectiveusescale, false)
}
fun completeObjectives(activity: Activity, request: String) {
- val requestCode = SP.getString(R.string.key_objectives_request_code, "")
- var url = SP.getString(R.string.key_nsclientinternal_url, "").toLowerCase()
+ val requestCode = sp.getString(R.string.key_objectives_request_code, "")
+ var url = sp.getString(R.string.key_nsclientinternal_url, "").toLowerCase()
if (!url.endsWith("/")) url = "$url/"
@Suppress("DEPRECATION") val hashNS = Hashing.sha1().hashString(url + BuildConfig.APPLICATION_ID + "/" + requestCode, Charsets.UTF_8).toString()
if (request.equals(hashNS.substring(0, 10), ignoreCase = true)) {
- SP.putLong("Objectives_" + "openloop" + "_started", DateUtil.now())
- SP.putLong("Objectives_" + "openloop" + "_accomplished", DateUtil.now())
- SP.putLong("Objectives_" + "maxbasal" + "_started", DateUtil.now())
- SP.putLong("Objectives_" + "maxbasal" + "_accomplished", DateUtil.now())
- SP.putLong("Objectives_" + "maxiobzero" + "_started", DateUtil.now())
- SP.putLong("Objectives_" + "maxiobzero" + "_accomplished", DateUtil.now())
- SP.putLong("Objectives_" + "maxiob" + "_started", DateUtil.now())
- SP.putLong("Objectives_" + "maxiob" + "_accomplished", DateUtil.now())
- SP.putLong("Objectives_" + "autosens" + "_started", DateUtil.now())
- SP.putLong("Objectives_" + "autosens" + "_accomplished", DateUtil.now())
- SP.putLong("Objectives_" + "ama" + "_started", DateUtil.now())
- SP.putLong("Objectives_" + "ama" + "_accomplished", DateUtil.now())
- SP.putLong("Objectives_" + "smb" + "_started", DateUtil.now())
- SP.putLong("Objectives_" + "smb" + "_accomplished", DateUtil.now())
+ sp.putLong("Objectives_" + "openloop" + "_started", DateUtil.now())
+ sp.putLong("Objectives_" + "openloop" + "_accomplished", DateUtil.now())
+ sp.putLong("Objectives_" + "maxbasal" + "_started", DateUtil.now())
+ sp.putLong("Objectives_" + "maxbasal" + "_accomplished", DateUtil.now())
+ sp.putLong("Objectives_" + "maxiobzero" + "_started", DateUtil.now())
+ sp.putLong("Objectives_" + "maxiobzero" + "_accomplished", DateUtil.now())
+ sp.putLong("Objectives_" + "maxiob" + "_started", DateUtil.now())
+ sp.putLong("Objectives_" + "maxiob" + "_accomplished", DateUtil.now())
+ sp.putLong("Objectives_" + "autosens" + "_started", DateUtil.now())
+ sp.putLong("Objectives_" + "autosens" + "_accomplished", DateUtil.now())
+ sp.putLong("Objectives_" + "ama" + "_started", DateUtil.now())
+ sp.putLong("Objectives_" + "ama" + "_accomplished", DateUtil.now())
+ sp.putLong("Objectives_" + "smb" + "_started", DateUtil.now())
+ sp.putLong("Objectives_" + "smb" + "_accomplished", DateUtil.now())
setupObjectives()
- OKDialog.show(activity, MainApp.gs(R.string.objectives), MainApp.gs(R.string.codeaccepted))
+ OKDialog.show(activity, resourceHelper.gs(R.string.objectives), resourceHelper.gs(R.string.codeaccepted))
} else {
- OKDialog.show(activity, MainApp.gs(R.string.objectives), MainApp.gs(R.string.codeinvalid))
+ OKDialog.show(activity, resourceHelper.gs(R.string.objectives), resourceHelper.gs(R.string.codeinvalid))
}
}
@@ -133,37 +142,37 @@ object ObjectivesPlugin : PluginBase(PluginDescription()
*/
override fun isLoopInvocationAllowed(value: Constraint): Constraint {
if (!objectives[FIRST_OBJECTIVE].isStarted)
- value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), FIRST_OBJECTIVE + 1), this)
+ value.set(false, resourceHelper.gs(R.string.objectivenotstarted, FIRST_OBJECTIVE + 1), this)
return value
}
override fun isClosedLoopAllowed(value: Constraint): Constraint {
if (!objectives[MAXIOB_ZERO_CL_OBJECTIVE].isStarted)
- value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), MAXIOB_ZERO_CL_OBJECTIVE + 1), this)
+ value.set(false, resourceHelper.gs(R.string.objectivenotstarted, MAXIOB_ZERO_CL_OBJECTIVE + 1), this)
return value
}
override fun isAutosensModeEnabled(value: Constraint): Constraint {
if (!objectives[AUTOSENS_OBJECTIVE].isStarted)
- value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), AUTOSENS_OBJECTIVE + 1), this)
+ value.set(false, resourceHelper.gs(R.string.objectivenotstarted, AUTOSENS_OBJECTIVE + 1), this)
return value
}
override fun isAMAModeEnabled(value: Constraint): Constraint {
if (!objectives[AMA_OBJECTIVE].isStarted)
- value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), AMA_OBJECTIVE + 1), this)
+ value.set(false, resourceHelper.gs(R.string.objectivenotstarted, AMA_OBJECTIVE + 1), this)
return value
}
override fun isSMBModeEnabled(value: Constraint): Constraint {
if (!objectives[SMB_OBJECTIVE].isStarted)
- value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), SMB_OBJECTIVE + 1), this)
+ value.set(false, resourceHelper.gs(R.string.objectivenotstarted, SMB_OBJECTIVE + 1), this)
return value
}
override fun applyMaxIOBConstraints(maxIob: Constraint): Constraint {
if (objectives[MAXIOB_ZERO_CL_OBJECTIVE].isStarted && !objectives[MAXIOB_ZERO_CL_OBJECTIVE].isAccomplished)
- maxIob.set(0.0, String.format(MainApp.gs(R.string.objectivenotfinished), MAXIOB_ZERO_CL_OBJECTIVE + 1), this)
+ maxIob.set(0.0, resourceHelper.gs(R.string.objectivenotfinished, MAXIOB_ZERO_CL_OBJECTIVE + 1), this)
return maxIob
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/activities/ObjectivesExamDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/activities/ObjectivesExamDialog.kt
index 1428652be5..55557f15c3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/activities/ObjectivesExamDialog.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/activities/ObjectivesExamDialog.kt
@@ -4,25 +4,28 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.fragment.app.DialogFragment
+import dagger.android.support.DaggerDialogFragment
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesUpdateGui
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective
-import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective.*
+import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective.ExamTask
+import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective.Option
import info.nightscout.androidaps.utils.DateUtil
-import info.nightscout.androidaps.utils.OKDialog
import info.nightscout.androidaps.utils.T
import info.nightscout.androidaps.utils.ToastUtils
import kotlinx.android.synthetic.main.objectives_exam_fragment.*
+import javax.inject.Inject
+
+class ObjectivesExamDialog : DaggerDialogFragment() {
+ @Inject lateinit var rxBus: RxBusWrapper
-class ObjectivesExamDialog : DialogFragment() {
companion object {
var objective: Objective? = null
}
- var currentTask = 0
+ private var currentTask = 0
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
@@ -37,7 +40,7 @@ class ObjectivesExamDialog : DialogFragment() {
override fun onStart() {
super.onStart()
dialog?.setCanceledOnTouchOutside(false)
- dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
override fun onResume() {
@@ -79,23 +82,23 @@ class ObjectivesExamDialog : DialogFragment() {
objectives_exam_verify.setOnClickListener {
var result = true
for (o in task.options) {
- val option: Option = o as Option;
+ val option: Option = o as Option
result = result && option.evaluate()
}
- task.setAnswered(result);
+ task.answered = result
if (!result) {
task.disabledTo = DateUtil.now() + T.hours(1).msecs()
ToastUtils.showToastInUiThread(context, R.string.wronganswer)
} else task.disabledTo = 0
updateGui()
- RxBus.send(EventObjectivesUpdateGui())
+ rxBus.send(EventObjectivesUpdateGui())
}
close.setOnClickListener { dismiss() }
objectives_exam_reset.setOnClickListener {
task.answered = false
//task.disabledTo = 0
updateGui()
- RxBus.send(EventObjectivesUpdateGui())
+ rxBus.send(EventObjectivesUpdateGui())
}
objectives_back_button.isEnabled = currentTask != 0
objectives_back_button.setOnClickListener {
@@ -110,7 +113,7 @@ class ObjectivesExamDialog : DialogFragment() {
objectives_next_unanswered_button.isEnabled = !objective.isCompleted
objectives_next_unanswered_button.setOnClickListener {
- for (i in (currentTask + 1)..(objective.tasks.size - 1)) {
+ for (i in (currentTask + 1) until objective.tasks.size) {
if (!objective.tasks[i].isCompleted) {
currentTask = i
updateGui()
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/dialogs/NtpProgressDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/dialogs/NtpProgressDialog.kt
index 77e6f22b43..58c54adffe 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/dialogs/NtpProgressDialog.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/dialogs/NtpProgressDialog.kt
@@ -5,32 +5,35 @@ import android.os.SystemClock
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.fragment.app.DialogFragment
-import info.nightscout.androidaps.MainApp
+import dagger.android.support.DaggerDialogFragment
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus.toObservable
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventNtpStatus
import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.dialog_bolusprogress.*
-import org.slf4j.LoggerFactory
+import javax.inject.Inject
+
+class NtpProgressDialog : DaggerDialogFragment() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var resourceHelper: ResourceHelper
-class NtpProgressDialog : DialogFragment() {
- private val log = LoggerFactory.getLogger(L.UI)
private val disposable = CompositeDisposable()
- private val DEFAULT_STATE = MainApp.gs(R.string.timedetection)
- private var state: String = DEFAULT_STATE
+ private var state: String? = null
private var percent = 0
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
- dialog?.setTitle(String.format(MainApp.gs(R.string.objectives)))
isCancelable = false
- state = savedInstanceState?.getString("state", DEFAULT_STATE) ?: DEFAULT_STATE
+ state = savedInstanceState?.getString("state", null)
percent = savedInstanceState?.getInt("percent", 0) ?: 0
return inflater.inflate(R.layout.dialog_bolusprogress, container, false)
@@ -38,41 +41,43 @@ class NtpProgressDialog : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ val defaultMessage = resourceHelper.gs(R.string.timedetection)
+ dialog?.setTitle(resourceHelper.gs(R.string.objectives))
overview_bolusprogress_stop.setOnClickListener { dismiss() }
- overview_bolusprogress_status.text = state
+ overview_bolusprogress_status.text = state ?: defaultMessage
overview_bolusprogress_progressbar.max = 100
overview_bolusprogress_progressbar.progress = percent
- overview_bolusprogress_stop.text = MainApp.gs(R.string.close)
- overview_bolusprogress_title.text = MainApp.gs(R.string.please_wait)
+ overview_bolusprogress_stop.text = resourceHelper.gs(R.string.close)
+ overview_bolusprogress_title.text = resourceHelper.gs(R.string.please_wait)
}
override fun onResume() {
super.onResume()
- if (L.isEnabled(L.UI)) log.debug("onResume")
+ aapsLogger.debug(LTag.UI, "onResume")
if (percent == 100) {
dismiss()
return
} else
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
- disposable.add(toObservable(EventNtpStatus::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ event: EventNtpStatus ->
- if (L.isEnabled(L.UI)) log.debug("Status: " + event.status + " Percent: " + event.percent)
- overview_bolusprogress_status?.text = event.status
- overview_bolusprogress_progressbar?.progress = event.percent
- if (event.percent == 100) {
- SystemClock.sleep(100)
- dismiss()
- }
- state = event.status
- percent = event.percent
- }) { FabricPrivacy.logException(it) }
- )
+ disposable += rxBus
+ .toObservable(EventNtpStatus::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ event: EventNtpStatus ->
+ aapsLogger.debug(LTag.UI, "Status: " + event.status + " Percent: " + event.percent)
+ overview_bolusprogress_status?.text = event.status
+ overview_bolusprogress_progressbar?.progress = event.percent
+ if (event.percent == 100) {
+ SystemClock.sleep(100)
+ dismiss()
+ }
+ state = event.status
+ percent = event.percent
+ }) { FabricPrivacy.logException(it) }
}
override fun onPause() {
- if (L.isEnabled(L.UI)) log.debug("onPause")
+ aapsLogger.debug(LTag.UI, "onPause")
super.onPause()
disposable.clear()
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective0.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective0.java
index f6f0267a23..e4e90cf3be 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective0.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective0.java
@@ -2,24 +2,31 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
+import javax.inject.Inject;
+
+import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.db.DatabaseHelper;
import info.nightscout.androidaps.interfaces.APSInterface;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PluginType;
-import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
-import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin;
+import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.general.nsclient.NSClientPlugin;
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin;
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil;
-import info.nightscout.androidaps.utils.SP;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
public class Objective0 extends Objective {
+ @Inject SP sp;
+ @Inject ConfigBuilderPlugin configBuilderPlugin;
+ @Inject VirtualPumpPlugin virtualPumpPlugin;
+ @Inject TreatmentsPlugin treatmentsPlugin;
public Objective0() {
super("config", R.string.objectives_0_objective, R.string.objectives_0_gate);
+ MainApp.instance().androidInjector().inject(this); // TODO inject or pass itno constructor once AutomationPlugin is prepared for Dagger
}
@Override
@@ -27,7 +34,7 @@ public class Objective0 extends Objective {
tasks.add(new Task(R.string.objectives_bgavailableinns) {
@Override
public boolean isCompleted() {
- return SP.getBoolean(R.string.key_ObjectivesbgIsAvailableInNS, false);
+ return sp.getBoolean(R.string.key_ObjectivesbgIsAvailableInNS, false);
}
});
tasks.add(new Task(R.string.nsclienthaswritepermission) {
@@ -39,18 +46,18 @@ public class Objective0 extends Objective {
tasks.add(new Task(R.string.virtualpump_uploadstatus_title) {
@Override
public boolean isCompleted() {
- return SP.getBoolean("virtualpump_uploadstatus", false);
+ return sp.getBoolean("virtualpump_uploadstatus", false);
}
@Override
public boolean shouldBeIgnored() {
- return !VirtualPumpPlugin.getPlugin().isEnabled(PluginType.PUMP);
+ return !virtualPumpPlugin.isEnabled(PluginType.PUMP);
}
});
tasks.add(new Task(R.string.objectives_pumpstatusavailableinns) {
@Override
public boolean isCompleted() {
- return SP.getBoolean(R.string.key_ObjectivespumpStatusIsAvailableInNS, false);
+ return sp.getBoolean(R.string.key_ObjectivespumpStatusIsAvailableInNS, false);
}
});
tasks.add(new Task(R.string.hasbgdata) {
@@ -68,7 +75,7 @@ public class Objective0 extends Objective {
tasks.add(new Task(R.string.apsselected) {
@Override
public boolean isCompleted() {
- APSInterface usedAPS = ConfigBuilderPlugin.getPlugin().getActiveAPS();
+ APSInterface usedAPS = configBuilderPlugin.getActiveAPS();
if (usedAPS != null && ((PluginBase) usedAPS).isEnabled(PluginType.APS))
return true;
return false;
@@ -77,7 +84,7 @@ public class Objective0 extends Objective {
tasks.add(new Task(R.string.activate_profile) {
@Override
public boolean isCompleted() {
- return TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(DateUtil.now()) != null;
+ return treatmentsPlugin.getProfileSwitchFromHistory(DateUtil.now()) != null;
}
});
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective1.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective1.java
index 1687b56987..a55214d51b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective1.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective1.java
@@ -2,16 +2,22 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
+import javax.inject.Inject;
+
+import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.plugins.general.actions.ActionsPlugin;
-import info.nightscout.androidaps.utils.SP;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
public class Objective1 extends Objective {
+ @Inject SP sp;
+ @Inject ActionsPlugin actionsPlugin;
-
+ @Inject
public Objective1() {
super("usage", R.string.objectives_usage_objective, R.string.objectives_usage_gate);
+ MainApp.instance().androidInjector().inject(this); // TODO inject or pass itno constructor once ActionsPlugin is prepared for Dagger
}
@Override
@@ -19,43 +25,43 @@ public class Objective1 extends Objective {
tasks.add(new Task(R.string.objectives_useprofileswitch) {
@Override
public boolean isCompleted() {
- return SP.getBoolean(R.string.key_objectiveuseprofileswitch, false);
+ return sp.getBoolean(R.string.key_objectiveuseprofileswitch, false);
}
});
tasks.add(new Task(R.string.objectives_usedisconnectpump) {
@Override
public boolean isCompleted() {
- return SP.getBoolean(R.string.key_objectiveusedisconnect, false);
+ return sp.getBoolean(R.string.key_objectiveusedisconnect, false);
}
}.hint(new Hint(R.string.disconnectpump_hint)));
tasks.add(new Task(R.string.objectives_usereconnectpump) {
@Override
public boolean isCompleted() {
- return SP.getBoolean(R.string.key_objectiveusereconnect, false);
+ return sp.getBoolean(R.string.key_objectiveusereconnect, false);
}
}.hint(new Hint(R.string.disconnectpump_hint)));
tasks.add(new Task(R.string.objectives_usetemptarget) {
@Override
public boolean isCompleted() {
- return SP.getBoolean(R.string.key_objectiveusetemptarget, false);
+ return sp.getBoolean(R.string.key_objectiveusetemptarget, false);
}
}.hint(new Hint(R.string.usetemptarget_hint)));
tasks.add(new Task(R.string.objectives_useactions) {
@Override
public boolean isCompleted() {
- return SP.getBoolean(R.string.key_objectiveuseactions, false) && ActionsPlugin.INSTANCE.isEnabled(PluginType.GENERAL) && ActionsPlugin.INSTANCE.isFragmentVisible();
+ return sp.getBoolean(R.string.key_objectiveuseactions, false) && actionsPlugin.isEnabled(PluginType.GENERAL) && actionsPlugin.isFragmentVisible();
}
}.hint(new Hint(R.string.useaction_hint)));
tasks.add(new Task(R.string.objectives_useloop) {
@Override
public boolean isCompleted() {
- return SP.getBoolean(R.string.key_objectiveuseloop, false);
+ return sp.getBoolean(R.string.key_objectiveuseloop, false);
}
}.hint(new Hint(R.string.useaction_hint)));
tasks.add(new Task(R.string.objectives_usescale) {
@Override
public boolean isCompleted() {
- return SP.getBoolean(R.string.key_objectiveusescale, false);
+ return sp.getBoolean(R.string.key_objectiveusescale, false);
}
}.hint(new Hint(R.string.usescale_hint)));
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java
index 017ad33a8c..8a3d609a86 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java
@@ -3,6 +3,7 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.Collections;
import java.util.List;
+import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
public class Objective2 extends Objective {
@@ -10,6 +11,7 @@ public class Objective2 extends Objective {
public Objective2() {
super("exam", R.string.objectives_exam_objective, R.string.objectives_exam_gate);
+ MainApp.instance().androidInjector().inject(this); // TODO inject or pass itno constructor once AutomationPlugin is prepared for Dagger
for (Task task : tasks) {
if (!task.isCompleted()) setAccomplishedOn(0);
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective3.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective3.java
index f8eb45bb2a..720afea51f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective3.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective3.java
@@ -4,19 +4,27 @@ import android.app.Activity;
import java.util.List;
+import javax.inject.Inject;
+
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.plugins.general.nsclient.NSClientPlugin;
-import info.nightscout.androidaps.utils.SP;
import info.nightscout.androidaps.utils.T;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
public class Objective3 extends Objective {
+ @Inject SP sp;
+ @Inject ObjectivesPlugin objectivesPlugin;
+ @Inject ResourceHelper resourceHelper;
- public final int MANUAL_ENACTS_NEEDED = 20;
+ private final int MANUAL_ENACTS_NEEDED = 20;
+ @Inject
public Objective3() {
super("openloop", R.string.objectives_openloop_objective, R.string.objectives_openloop_gate);
+ MainApp.instance().androidInjector().inject(this); // TODO inject or pass itno constructor once AutomationPlugin is prepared for Dagger
hasSpecialInput = true;
}
@@ -26,15 +34,15 @@ public class Objective3 extends Objective {
tasks.add(new Task(R.string.objectives_manualenacts) {
@Override
public boolean isCompleted() {
- return SP.getInt(R.string.key_ObjectivesmanualEnacts, 0) >= MANUAL_ENACTS_NEEDED;
+ return sp.getInt(R.string.key_ObjectivesmanualEnacts, 0) >= MANUAL_ENACTS_NEEDED;
}
@Override
public String getProgress() {
- if (SP.getInt(R.string.key_ObjectivesmanualEnacts, 0) >= MANUAL_ENACTS_NEEDED)
- return MainApp.gs(R.string.completed_well_done);
+ if (sp.getInt(R.string.key_ObjectivesmanualEnacts, 0) >= MANUAL_ENACTS_NEEDED)
+ return resourceHelper.gs(R.string.completed_well_done);
else
- return SP.getInt(R.string.key_ObjectivesmanualEnacts, 0) + " / " + MANUAL_ENACTS_NEEDED;
+ return sp.getInt(R.string.key_ObjectivesmanualEnacts, 0) + " / " + MANUAL_ENACTS_NEEDED;
}
});
}
@@ -46,6 +54,6 @@ public class Objective3 extends Objective {
@Override
public void specialAction(Activity activity, String input) {
- ObjectivesPlugin.INSTANCE.completeObjectives(activity, input);
+ objectivesPlugin.completeObjectives(activity, input);
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective5.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective5.java
index 608942c442..9a55ca077f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective5.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective5.java
@@ -11,9 +11,7 @@ import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin;
import info.nightscout.androidaps.utils.T;
public class Objective5 extends Objective {
-
- @Inject
- SafetyPlugin safetyPlugin;
+ @Inject SafetyPlugin safetyPlugin;
public Objective5() {
super("maxiobzero", R.string.objectives_maxiobzero_objective, R.string.objectives_maxiobzero_gate);
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective6.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective6.java
index d0c8452d4e..b0a87a3836 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective6.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective6.java
@@ -2,14 +2,19 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
+import javax.inject.Inject;
+
+import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
import info.nightscout.androidaps.utils.T;
public class Objective6 extends Objective {
+ @Inject ConstraintChecker constraintChecker;
public Objective6() {
super("maxiob", R.string.objectives_maxiob_objective, R.string.objectives_maxiob_gate);
+ MainApp.instance().androidInjector().inject(this); // TODO inject or pass itno constructor once AutomationPlugin is prepared for Dagger
}
@Override
@@ -18,7 +23,7 @@ public class Objective6 extends Objective {
tasks.add(new Task(R.string.maxiobset) {
@Override
public boolean isCompleted() {
- double maxIOB = ConstraintChecker.getInstance().getMaxIOBAllowed().value();
+ double maxIOB = constraintChecker.getMaxIOBAllowed().value();
return maxIOB > 0;
}
});
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/safety/SafetyPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/safety/SafetyPlugin.java
index 17bdb0133d..12f150e6eb 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/safety/SafetyPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/safety/SafetyPlugin.java
@@ -72,7 +72,7 @@ public class SafetyPlugin extends PluginBase implements ConstraintsInterface {
if (!MainApp.isEngineeringModeOrRelease()) {
if (value.value()) {
Notification n = new Notification(Notification.TOAST_ALARM, MainApp.gs(R.string.closed_loop_disabled_on_dev_branch), Notification.NORMAL);
- RxBus.INSTANCE.send(new EventNewNotification(n));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(n));
}
value.set(false, MainApp.gs(R.string.closed_loop_disabled_on_dev_branch), this);
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/signatureVerifier/SignatureVerifierPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/signatureVerifier/SignatureVerifierPlugin.java
index 9c9e38bb46..dabf3cac56 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/signatureVerifier/SignatureVerifierPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/signatureVerifier/SignatureVerifierPlugin.java
@@ -54,6 +54,7 @@ public class SignatureVerifierPlugin extends PluginBase implements ConstraintsIn
private File revokedCertsFile;
private List revokedCerts;
+ @Deprecated
public static SignatureVerifierPlugin getPlugin() {
return plugin;
}
@@ -104,7 +105,7 @@ public class SignatureVerifierPlugin extends PluginBase implements ConstraintsIn
private void showNotification() {
Notification notification = new Notification(Notification.INVALID_VERSION, MainApp.gs(R.string.running_invalid_version), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
private boolean hasIllegalSignature() {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/storage/StorageConstraintPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/storage/StorageConstraintPlugin.java
index f40b7728e5..e5111b9a5b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/storage/StorageConstraintPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/storage/StorageConstraintPlugin.java
@@ -29,6 +29,7 @@ public class StorageConstraintPlugin extends PluginBase implements ConstraintsIn
private static Logger log = LoggerFactory.getLogger(L.CONSTRAINTS);
static StorageConstraintPlugin plugin = null;
+ @Deprecated
public static StorageConstraintPlugin getPlugin() {
if (plugin == null)
plugin = new StorageConstraintPlugin();
@@ -57,9 +58,9 @@ public class StorageConstraintPlugin extends PluginBase implements ConstraintsIn
if (diskfree < Constants.MINIMUM_FREE_SPACE) {
value.set(false, MainApp.gs(R.string.diskfull, Constants.MINIMUM_FREE_SPACE), this);
Notification notification = new Notification(Notification.DISKFULL, MainApp.gs(R.string.diskfull, Constants.MINIMUM_FREE_SPACE), Notification.NORMAL);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.DISKFULL));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.DISKFULL));
}
return value;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/versionChecker/VersionCheckerPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/versionChecker/VersionCheckerPlugin.kt
index 9d88740d4b..8abe50aa50 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/versionChecker/VersionCheckerPlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/versionChecker/VersionCheckerPlugin.kt
@@ -1,27 +1,27 @@
package info.nightscout.androidaps.plugins.constraints.versionChecker
import info.nightscout.androidaps.BuildConfig
-import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.interfaces.ConstraintsInterface
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
import info.nightscout.androidaps.utils.SP
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import java.util.concurrent.TimeUnit
+import javax.inject.Inject
+import javax.inject.Singleton
import kotlin.math.roundToInt
-/**
- * Usually we would have a class here.
- * Instead of having a class we can use an object directly inherited from PluginBase.
- * This is a lazy loading singleton only loaded when actually used.
- * */
-
-object VersionCheckerPlugin : PluginBase(PluginDescription()
+@Singleton
+class VersionCheckerPlugin @Inject constructor(
+ private val rxBus: RxBusWrapper,
+ private val resourceHelper: ResourceHelper
+) : PluginBase(PluginDescription()
.mainType(PluginType.CONSTRAINTS)
.neverVisible(true)
.alwaysEnabled(true)
@@ -35,11 +35,16 @@ object VersionCheckerPlugin : PluginBase(PluginDescription()
GracePeriod.RELEASE
}
+ companion object {
+ private val WARN_EVERY: Long
+ get() = TimeUnit.DAYS.toMillis(1)
+ }
+
override fun isClosedLoopAllowed(value: Constraint): Constraint {
checkWarning()
triggerCheckVersion()
return if (isOldVersion(gracePeriod.veryOld.daysToMillis()))
- value.set(false, MainApp.gs(R.string.very_old_version), this)
+ value.set(false, resourceHelper.gs(R.string.very_old_version), this)
else
value
}
@@ -58,13 +63,13 @@ object VersionCheckerPlugin : PluginBase(PluginDescription()
SP.putLong(R.string.key_last_versionchecker_plugin_warning, now)
//notify
- val message = MainApp.gs(R.string.new_version_warning,
+ val message = resourceHelper.gs(R.string.new_version_warning,
((now - SP.getLong(R.string.key_last_time_this_version_detected, now)) / 1L.daysToMillis().toDouble()).roundToInt(),
gracePeriod.old,
gracePeriod.veryOld
)
val notification = Notification(Notification.OLDVERSION, message, Notification.NORMAL)
- RxBus.send(EventNewNotification(notification))
+ rxBus.send(EventNewNotification(notification))
}
}
@@ -73,7 +78,7 @@ object VersionCheckerPlugin : PluginBase(PluginDescription()
override fun applyMaxIOBConstraints(maxIob: Constraint): Constraint =
if (isOldVersion(gracePeriod.old.daysToMillis()))
- maxIob.set(0.toDouble(), MainApp.gs(R.string.old_version), this)
+ maxIob.set(0.toDouble(), resourceHelper.gs(R.string.old_version), this)
else
maxIob
@@ -81,9 +86,6 @@ object VersionCheckerPlugin : PluginBase(PluginDescription()
val now = System.currentTimeMillis()
return now > SP.getLong(R.string.key_last_time_this_version_detected, 0) + gracePeriod
}
-
- private val WARN_EVERY = TimeUnit.DAYS.toMillis(1)
-
}
enum class GracePeriod(val warning: Long, val old: Long, val veryOld: Long) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/versionChecker/VersionCheckerUtils.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/versionChecker/VersionCheckerUtils.kt
index ac9724608f..e05ae006a6 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/versionChecker/VersionCheckerUtils.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/versionChecker/VersionCheckerUtils.kt
@@ -97,7 +97,7 @@ fun onNewVersionDetected(currentVersion: String, newVersion: String?) {
if (now > SP.getLong(R.string.key_last_versionchecker_warning, 0) + WARN_EVERY) {
log.debug("Version ${currentVersion} outdated. Found $newVersion")
val notification = Notification(Notification.NEWVERSIONDETECTED, String.format(MainApp.gs(R.string.versionavailable), newVersion.toString()), Notification.LOW)
- RxBus.send(EventNewNotification(notification))
+ RxBus.INSTANCE.send(EventNewNotification(notification))
SP.putLong(R.string.key_last_versionchecker_warning, now)
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt
index a6d29c70d2..ef81848897 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt
@@ -1,6 +1,5 @@
package info.nightscout.androidaps.plugins.general.actions
-
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
@@ -8,39 +7,41 @@ import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import androidx.core.content.ContextCompat
-import androidx.fragment.app.Fragment
+import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
+import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.activities.HistoryBrowseActivity
import info.nightscout.androidaps.activities.TDDStatsActivity
+import info.nightscout.androidaps.dialogs.*
import info.nightscout.androidaps.events.*
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction
-import info.nightscout.androidaps.dialogs.CareDialog
-import info.nightscout.androidaps.dialogs.ExtendedBolusDialog
-import info.nightscout.androidaps.dialogs.FillDialog
-import info.nightscout.androidaps.dialogs.TempBasalDialog
import info.nightscout.androidaps.plugins.general.careportal.CareportalFragment
-import info.nightscout.androidaps.activities.ErrorHelperActivity
-import info.nightscout.androidaps.dialogs.ProfileSwitchDialog
-import info.nightscout.androidaps.dialogs.TempTargetDialog
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.SP
import info.nightscout.androidaps.utils.SingleClickButton
import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.toVisibility
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.actions_fragment.*
import kotlinx.android.synthetic.main.careportal_stats_fragment.*
import java.util.*
+import javax.inject.Inject
-class ActionsFragment : Fragment() {
+class ActionsFragment : DaggerFragment() {
+ @Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
+ @Inject lateinit var treatmentsPlugin: TreatmentsPlugin
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var mainApp: MainApp
+ @Inject lateinit var resourceHelper: ResourceHelper
private var disposable: CompositeDisposable = CompositeDisposable()
@@ -65,16 +66,16 @@ class ActionsFragment : Fragment() {
fragmentManager?.let { ExtendedBolusDialog().show(it, "Actions") }
}
actions_extendedbolus_cancel.setOnClickListener {
- if (TreatmentsPlugin.getPlugin().isInHistoryExtendedBoluslInProgress) {
- ConfigBuilderPlugin.getPlugin().commandQueue.cancelExtended(object : Callback() {
+ if (treatmentsPlugin.isInHistoryExtendedBoluslInProgress) {
+ configBuilderPlugin.commandQueue.cancelExtended(object : Callback() {
override fun run() {
if (!result.success) {
- val i = Intent(MainApp.instance(), ErrorHelperActivity::class.java)
+ val i = Intent(mainApp, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
- i.putExtra("title", MainApp.gs(R.string.extendedbolusdeliveryerror))
+ i.putExtra("title", resourceHelper.gs(R.string.extendedbolusdeliveryerror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- MainApp.instance().startActivity(i)
+ mainApp.startActivity(i)
}
}
})
@@ -84,16 +85,16 @@ class ActionsFragment : Fragment() {
fragmentManager?.let { TempBasalDialog().show(it, "Actions") }
}
actions_canceltempbasal.setOnClickListener {
- if (TreatmentsPlugin.getPlugin().isTempBasalInProgress) {
- ConfigBuilderPlugin.getPlugin().commandQueue.cancelTempBasal(true, object : Callback() {
+ if (treatmentsPlugin.isTempBasalInProgress) {
+ configBuilderPlugin.commandQueue.cancelTempBasal(true, object : Callback() {
override fun run() {
if (!result.success) {
- val i = Intent(MainApp.instance(), ErrorHelperActivity::class.java)
+ val i = Intent(mainApp, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
- i.putExtra("title", MainApp.gs(R.string.tempbasaldeliveryerror))
+ i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- MainApp.instance().startActivity(i)
+ mainApp.startActivity(i)
}
}
})
@@ -118,30 +119,30 @@ class ActionsFragment : Fragment() {
@Synchronized
override fun onResume() {
super.onResume()
- disposable += RxBus
- .toObservable(EventInitializationChanged::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventRefreshOverview::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventExtendedBolusChange::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventTempBasalChange::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventCustomActionsChanged::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventCareportalEventChange::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventInitializationChanged::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventRefreshOverview::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventExtendedBolusChange::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventTempBasalChange::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventCustomActionsChanged::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventCareportalEventChange::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
updateGui()
}
@@ -154,8 +155,8 @@ class ActionsFragment : Fragment() {
@Synchronized
fun updateGui() {
actions_profileswitch?.visibility =
- if (ConfigBuilderPlugin.getPlugin().activeProfileInterface?.profile != null) View.VISIBLE
- else View.GONE
+ if (configBuilderPlugin.activeProfileInterface.profile != null) View.VISIBLE
+ else View.GONE
if (ProfileFunctions.getInstance().getProfile() == null) {
actions_temptarget?.visibility = View.GONE
@@ -167,7 +168,7 @@ class ActionsFragment : Fragment() {
return
}
- val pump = ConfigBuilderPlugin.getPlugin().activePump ?: return
+ val pump = configBuilderPlugin.activePump ?: return
val basalProfileEnabled = MainApp.isEngineeringModeOrRelease() && pump.pumpDescription.isSetBasalProfileCapable
actions_profileswitch?.visibility = if (!basalProfileEnabled || !pump.isInitialized || pump.isSuspended) View.GONE else View.VISIBLE
@@ -176,11 +177,12 @@ class ActionsFragment : Fragment() {
actions_extendedbolus?.visibility = View.GONE
actions_extendedbolus_cancel?.visibility = View.GONE
} else {
- val activeExtendedBolus = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(System.currentTimeMillis())
+ val activeExtendedBolus = treatmentsPlugin.getExtendedBolusFromHistory(System.currentTimeMillis())
if (activeExtendedBolus != null) {
actions_extendedbolus?.visibility = View.GONE
actions_extendedbolus_cancel?.visibility = View.VISIBLE
- actions_extendedbolus_cancel?.text = MainApp.gs(R.string.cancel) + " " + activeExtendedBolus.toString()
+ @Suppress("SetTextI18n")
+ actions_extendedbolus_cancel?.text = resourceHelper.gs(R.string.cancel) + " " + activeExtendedBolus.toString()
} else {
actions_extendedbolus?.visibility = View.VISIBLE
actions_extendedbolus_cancel?.visibility = View.GONE
@@ -191,11 +193,12 @@ class ActionsFragment : Fragment() {
actions_settempbasal?.visibility = View.GONE
actions_canceltempbasal?.visibility = View.GONE
} else {
- val activeTemp = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis())
+ val activeTemp = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis())
if (activeTemp != null) {
actions_settempbasal?.visibility = View.GONE
actions_canceltempbasal?.visibility = View.VISIBLE
- actions_canceltempbasal?.text = MainApp.gs(R.string.cancel) + " " + activeTemp.toStringShort()
+ @Suppress("SetTextI18n")
+ actions_canceltempbasal?.text = resourceHelper.gs(R.string.cancel) + " " + activeTemp.toStringShort()
} else {
actions_settempbasal?.visibility = View.VISIBLE
actions_canceltempbasal?.visibility = View.GONE
@@ -203,8 +206,8 @@ class ActionsFragment : Fragment() {
}
actions_fill?.visibility =
- if (!pump.pumpDescription.isRefillingCapable || !pump.isInitialized || pump.isSuspended) View.GONE
- else View.VISIBLE
+ if (!pump.pumpDescription.isRefillingCapable || !pump.isInitialized || pump.isSuspended) View.GONE
+ else View.VISIBLE
actions_temptarget?.visibility = Config.APS.toVisibility()
actions_tddstats?.visibility = pump.pumpDescription.supportsTDDs.toVisibility()
@@ -215,7 +218,7 @@ class ActionsFragment : Fragment() {
}
private fun checkPumpCustomActions() {
- val activePump = ConfigBuilderPlugin.getPlugin().activePump ?: return
+ val activePump = configBuilderPlugin.activePump ?: return
val customActions = activePump.customActions ?: return
removePumpCustomActions()
@@ -223,24 +226,24 @@ class ActionsFragment : Fragment() {
if (!customAction.isEnabled) continue
val btn = SingleClickButton(context, null, android.R.attr.buttonStyle)
- btn.text = MainApp.gs(customAction.name)
+ btn.text = resourceHelper.gs(customAction.name)
val layoutParams = LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0.5f)
+ LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0.5f)
layoutParams.setMargins(20, 8, 20, 8) // 10,3,10,3
btn.layoutParams = layoutParams
btn.setOnClickListener { v ->
val b = v as SingleClickButton
val action = this.pumpCustomActions[b.text.toString()]
- ConfigBuilderPlugin.getPlugin().activePump!!.executeCustomAction(action!!.customActionType)
+ configBuilderPlugin.activePump!!.executeCustomAction(action!!.customActionType)
}
val top = activity?.let { ContextCompat.getDrawable(it, customAction.iconResourceId) }
btn.setCompoundDrawablesWithIntrinsicBounds(null, top, null, null)
action_buttons_layout?.addView(btn)
- this.pumpCustomActions[MainApp.gs(customAction.name)] = customAction
+ this.pumpCustomActions[resourceHelper.gs(customAction.name)] = customAction
this.pumpCustomButtons.add(btn)
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsPlugin.kt
index e534fefa26..92247c6295 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsPlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsPlugin.kt
@@ -5,8 +5,11 @@ import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType
+import javax.inject.Inject
+import javax.inject.Singleton
-object ActionsPlugin : PluginBase(PluginDescription()
+@Singleton
+class ActionsPlugin @Inject constructor(): PluginBase(PluginDescription()
.mainType(PluginType.GENERAL)
.fragmentClass(ActionsFragment::class.qualifiedName)
.enableByDefault(Config.APS || Config.PUMPCONTROL)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt
index 1db87f6472..e84fe2cc1e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationFragment.kt
@@ -5,12 +5,12 @@ import android.text.method.ScrollingMovementMethod
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.dialogs.EditEventDialog
import info.nightscout.androidaps.plugins.general.automation.dragHelpers.OnStartDragListener
import info.nightscout.androidaps.plugins.general.automation.dragHelpers.SimpleItemTouchHelperCallback
@@ -22,11 +22,14 @@ import info.nightscout.androidaps.utils.plusAssign
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.automation_fragment.*
+import javax.inject.Inject
-class AutomationFragment : Fragment(), OnStartDragListener {
+class AutomationFragment : DaggerFragment(), OnStartDragListener {
+ @Inject lateinit var automationPlugin: AutomationPlugin
+ @Inject lateinit var rxBus: RxBusWrapper
private var disposable: CompositeDisposable = CompositeDisposable()
- private var eventListAdapter: EventListAdapter? = null
+ private lateinit var eventListAdapter: EventListAdapter
private var itemTouchHelper: ItemTouchHelper? = null
@@ -37,11 +40,11 @@ class AutomationFragment : Fragment(), OnStartDragListener {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- eventListAdapter = EventListAdapter(AutomationPlugin.automationEvents, fragmentManager, activity, this)
+ eventListAdapter = EventListAdapter(automationPlugin.automationEvents, fragmentManager, activity, this)
automation_eventListView.layoutManager = LinearLayoutManager(context)
automation_eventListView.adapter = eventListAdapter
- automation_logView.setMovementMethod(ScrollingMovementMethod())
+ automation_logView.movementMethod = ScrollingMovementMethod()
automation_fabAddEvent.setOnClickListener {
val dialog = EditEventDialog()
@@ -52,7 +55,7 @@ class AutomationFragment : Fragment(), OnStartDragListener {
fragmentManager?.let { dialog.show(it, "EditEventDialog") }
}
- val callback: ItemTouchHelper.Callback = SimpleItemTouchHelperCallback(eventListAdapter!!)
+ val callback: ItemTouchHelper.Callback = SimpleItemTouchHelperCallback(eventListAdapter)
itemTouchHelper = ItemTouchHelper(callback)
itemTouchHelper?.attachToRecyclerView(automation_eventListView)
@@ -61,22 +64,22 @@ class AutomationFragment : Fragment(), OnStartDragListener {
@Synchronized
override fun onResume() {
super.onResume()
- disposable += RxBus
- .toObservable(EventAutomationUpdateGui::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- updateGui()
- }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventAutomationDataChanged::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- eventListAdapter?.notifyDataSetChanged()
- }, {
- FabricPrivacy.logException(it)
- })
+ disposable += rxBus
+ .toObservable(EventAutomationUpdateGui::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ updateGui()
+ }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventAutomationDataChanged::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ eventListAdapter.notifyDataSetChanged()
+ }, {
+ FabricPrivacy.logException(it)
+ })
updateGui()
}
@@ -88,15 +91,15 @@ class AutomationFragment : Fragment(), OnStartDragListener {
@Synchronized
private fun updateGui() {
- eventListAdapter?.notifyDataSetChanged()
+ eventListAdapter.notifyDataSetChanged()
val sb = StringBuilder()
- for (l in AutomationPlugin.executionLog.reversed())
+ for (l in automationPlugin.executionLog.reversed())
sb.append(l).append("
")
automation_logView?.text = HtmlHelper.fromHtml(sb.toString())
}
override fun onStartDrag(viewHolder: RecyclerView.ViewHolder) {
- itemTouchHelper?.startDrag(viewHolder);
+ itemTouchHelper?.startDrag(viewHolder)
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationPlugin.kt
index 0d220c2dd4..e530827435 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationPlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/AutomationPlugin.kt
@@ -12,9 +12,10 @@ import info.nightscout.androidaps.events.EventPreferenceChange
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.logging.L
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.actions.*
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationDataChanged
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateGui
@@ -22,27 +23,37 @@ import info.nightscout.androidaps.plugins.general.automation.triggers.*
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutosensCalculationFinished
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.services.LocationService
-import info.nightscout.androidaps.utils.*
+import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.plusAssign
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
-import org.slf4j.LoggerFactory
import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
-object AutomationPlugin : PluginBase(PluginDescription()
- .mainType(PluginType.GENERAL)
- .fragmentClass(AutomationFragment::class.qualifiedName)
- .pluginName(R.string.automation)
- .shortName(R.string.automation_short)
- .preferencesId(R.xml.pref_automation)
- .description(R.string.automation_description)) {
+@Singleton
+class AutomationPlugin @Inject constructor(
+ private val rxBus: RxBusWrapper,
+ private val aapsLogger: AAPSLogger,
+ private val mainApp: MainApp,
+ private val sp :SP
+) : PluginBase(PluginDescription()
+ .mainType(PluginType.GENERAL)
+ .fragmentClass(AutomationFragment::class.qualifiedName)
+ .pluginName(R.string.automation)
+ .shortName(R.string.automation_short)
+ .preferencesId(R.xml.pref_automation)
+ .description(R.string.automation_description)) {
- private val log = LoggerFactory.getLogger(L.AUTOMATION)
private var disposable: CompositeDisposable = CompositeDisposable()
- private const val key_AUTOMATION_EVENTS = "AUTOMATION_EVENTS"
+ private val keyAutomationEvents = "AUTOMATION_EVENTS"
val automationEvents = ArrayList()
var executionLog: MutableList = ArrayList()
@@ -58,72 +69,70 @@ object AutomationPlugin : PluginBase(PluginDescription()
}
override fun onStart() {
- val context = MainApp.instance().applicationContext
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
- context.startForegroundService(Intent(context, LocationService::class.java))
+ mainApp.startForegroundService(Intent(mainApp, LocationService::class.java))
else
- context.startService(Intent(context, LocationService::class.java))
+ mainApp.startService(Intent(mainApp, LocationService::class.java))
super.onStart()
loadFromSP()
loopHandler.postDelayed(refreshLoop, T.mins(1).msecs())
- disposable += RxBus
- .toObservable(EventPreferenceChange::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ e ->
- if (e.isChanged(R.string.key_location)) {
- context.stopService(Intent(context, LocationService::class.java))
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
- context.startForegroundService(Intent(context, LocationService::class.java))
- else
- context.startService(Intent(context, LocationService::class.java))
- }
- }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventAutomationDataChanged::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ storeToSP() }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventLocationChange::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ e ->
- e?.let {
- log.debug("Grabbed location: $it.location.latitude $it.location.longitude Provider: $it.location.provider")
- processActions()
- }
- }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventChargingState::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ processActions() }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventNetworkChange::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ processActions() }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventAutosensCalculationFinished::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ processActions() }, {
- FabricPrivacy.logException(it)
- })
+ disposable += rxBus
+ .toObservable(EventPreferenceChange::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ e ->
+ if (e.isChanged(R.string.key_location)) {
+ mainApp.stopService(Intent(mainApp, LocationService::class.java))
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
+ mainApp.startForegroundService(Intent(mainApp, LocationService::class.java))
+ else
+ mainApp.startService(Intent(mainApp, LocationService::class.java))
+ }
+ }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventAutomationDataChanged::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ storeToSP() }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventLocationChange::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ e ->
+ e?.let {
+ aapsLogger.debug(LTag.AUTOMATION, "Grabbed location: $it.location.latitude $it.location.longitude Provider: $it.location.provider")
+ processActions()
+ }
+ }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventChargingState::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ processActions() }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventNetworkChange::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ processActions() }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventAutosensCalculationFinished::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ processActions() }, {
+ FabricPrivacy.logException(it)
+ })
}
override fun onStop() {
disposable.clear()
loopHandler.removeCallbacks(refreshLoop)
- val context = MainApp.instance().applicationContext
- context.stopService(Intent(context, LocationService::class.java))
+ mainApp.stopService(Intent(mainApp, LocationService::class.java))
super.onStop()
}
@@ -137,12 +146,12 @@ object AutomationPlugin : PluginBase(PluginDescription()
e.printStackTrace()
}
- SP.putString(key_AUTOMATION_EVENTS, array.toString())
+ sp.putString(keyAutomationEvents, array.toString())
}
private fun loadFromSP() {
automationEvents.clear()
- val data = SP.getString(key_AUTOMATION_EVENTS, "")
+ val data = sp.getString(keyAutomationEvents, "")
if (data != "") {
try {
val array = JSONArray(data)
@@ -162,13 +171,11 @@ object AutomationPlugin : PluginBase(PluginDescription()
if (!isEnabled(PluginType.GENERAL))
return
if (LoopPlugin.getPlugin().isSuspended || !LoopPlugin.getPlugin().isEnabled(PluginType.LOOP)) {
- if (L.isEnabled(L.AUTOMATION))
- log.debug("Loop deactivated")
+ aapsLogger.debug(LTag.AUTOMATION, "Loop deactivated")
return
}
- if (L.isEnabled(L.AUTOMATION))
- log.debug("processActions")
+ aapsLogger.debug(LTag.AUTOMATION, "processActions")
for (event in automationEvents) {
if (event.isEnabled && event.trigger.shouldRun() && event.preconditions.shouldRun()) {
val actions = event.actions
@@ -186,9 +193,8 @@ object AutomationPlugin : PluginBase(PluginDescription()
sb.append(": ")
sb.append(result.comment)
executionLog.add(sb.toString())
- if (L.isEnabled(L.AUTOMATION))
- log.debug("Executed: $sb")
- RxBus.send(EventAutomationUpdateGui())
+ aapsLogger.debug(LTag.AUTOMATION, "Executed: $sb")
+ rxBus.send(EventAutomationUpdateGui())
}
})
}
@@ -200,35 +206,35 @@ object AutomationPlugin : PluginBase(PluginDescription()
fun getActionDummyObjects(): List {
return listOf(
- //ActionLoopDisable(),
- //ActionLoopEnable(),
- //ActionLoopResume(),
- //ActionLoopSuspend(),
- ActionStartTempTarget(),
- ActionStopTempTarget(),
- ActionNotification(),
- ActionProfileSwitchPercent(),
- ActionProfileSwitch(),
- ActionSendSMS()
+ //ActionLoopDisable(),
+ //ActionLoopEnable(),
+ //ActionLoopResume(),
+ //ActionLoopSuspend(),
+ ActionStartTempTarget(),
+ ActionStopTempTarget(),
+ ActionNotification(),
+ ActionProfileSwitchPercent(),
+ ActionProfileSwitch(),
+ ActionSendSMS()
)
}
fun getTriggerDummyObjects(): List {
return listOf(
- TriggerTime(),
- TriggerRecurringTime(),
- TriggerTimeRange(),
- TriggerBg(),
- TriggerDelta(),
- TriggerIob(),
- TriggerCOB(),
- TriggerProfilePercent(),
- TriggerTempTarget(),
- TriggerWifiSsid(),
- TriggerLocation(),
- TriggerAutosensValue(),
- TriggerBolusAgo(),
- TriggerPumpLastConnection()
+ TriggerTime(),
+ TriggerRecurringTime(),
+ TriggerTimeRange(),
+ TriggerBg(),
+ TriggerDelta(),
+ TriggerIob(),
+ TriggerCOB(),
+ TriggerProfilePercent(),
+ TriggerTempTarget(),
+ TriggerWifiSsid(),
+ TriggerLocation(),
+ TriggerAutosensValue(),
+ TriggerBolusAgo(),
+ TriggerPumpLastConnection()
)
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/EventListAdapter.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/EventListAdapter.java
index 87c78d02eb..2e8a68ff6a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/EventListAdapter.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/EventListAdapter.java
@@ -100,7 +100,7 @@ class EventListAdapter extends RecyclerView.Adapter
// enabled event
holder.enabled.setOnClickListener(v -> {
event.setEnabled((holder.enabled.isChecked()));
- RxBus.INSTANCE.send(new EventAutomationDataChanged());
+ RxBus.Companion.getINSTANCE().send(new EventAutomationDataChanged());
});
// edit event
@@ -138,7 +138,7 @@ class EventListAdapter extends RecyclerView.Adapter
public boolean onItemMove(int fromPosition, int toPosition) {
Collections.swap(eventList, fromPosition, toPosition);
notifyItemMoved(fromPosition, toPosition);
- RxBus.INSTANCE.send(new EventAutomationDataChanged());
+ RxBus.Companion.getINSTANCE().send(new EventAutomationDataChanged());
return true;
}
@@ -148,10 +148,10 @@ class EventListAdapter extends RecyclerView.Adapter
() -> {
eventList.remove(position);
notifyItemRemoved(position);
- RxBus.INSTANCE.send(new EventAutomationDataChanged());
- RxBus.INSTANCE.send(new EventAutomationUpdateGui());
+ RxBus.Companion.getINSTANCE().send(new EventAutomationDataChanged());
+ RxBus.Companion.getINSTANCE().send(new EventAutomationUpdateGui());
}, () -> {
- RxBus.INSTANCE.send(new EventAutomationUpdateGui());
+ RxBus.Companion.getINSTANCE().send(new EventAutomationUpdateGui());
});
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopDisable.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopDisable.java
index cf8326a0f2..390fc865b4 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopDisable.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopDisable.java
@@ -31,7 +31,7 @@ public class ActionLoopDisable extends Action {
ConfigBuilderPlugin.getPlugin().getCommandQueue().cancelTempBasal(true, new Callback() {
@Override
public void run() {
- RxBus.INSTANCE.send(new EventRefreshOverview("ActionLoopDisable"));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshOverview("ActionLoopDisable"));
if (callback != null)
callback.result(result).run();
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopEnable.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopEnable.java
index f33bec8e3f..7943014a52 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopEnable.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopEnable.java
@@ -28,7 +28,7 @@ public class ActionLoopEnable extends Action {
if (!LoopPlugin.getPlugin().isEnabled(PluginType.LOOP)) {
LoopPlugin.getPlugin().setPluginEnabled(PluginType.LOOP, true);
ConfigBuilderPlugin.getPlugin().storeSettings("ActionLoopEnable");
- RxBus.INSTANCE.send(new EventRefreshOverview("ActionLoopEnable"));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshOverview("ActionLoopEnable"));
if (callback != null)
callback.result(new PumpEnactResult().success(true).comment(R.string.ok)).run();
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopResume.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopResume.java
index 38e5dee33a..5c38d382cf 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopResume.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopResume.java
@@ -29,7 +29,7 @@ public class ActionLoopResume extends Action {
LoopPlugin.getPlugin().suspendTo(0);
ConfigBuilderPlugin.getPlugin().storeSettings("ActionLoopResume");
NSUpload.uploadOpenAPSOffline(0);
- RxBus.INSTANCE.send(new EventRefreshOverview("ActionLoopResume"));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshOverview("ActionLoopResume"));
if (callback != null)
callback.result(new PumpEnactResult().success(true).comment(R.string.ok)).run();
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopSuspend.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopSuspend.java
index 39adbcac27..08fb322b1e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopSuspend.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionLoopSuspend.java
@@ -40,7 +40,7 @@ public class ActionLoopSuspend extends Action {
public void doAction(Callback callback) {
if (!LoopPlugin.getPlugin().isSuspended()) {
LoopPlugin.getPlugin().suspendLoop(minutes.getMinutes());
- RxBus.INSTANCE.send(new EventRefreshOverview("ActionLoopSuspend"));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshOverview("ActionLoopSuspend"));
if (callback != null)
callback.result(new PumpEnactResult().success(true).comment(R.string.ok)).run();
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionNotification.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionNotification.java
index 7bd501b460..f74c48a9ec 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionNotification.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionNotification.java
@@ -41,9 +41,9 @@ public class ActionNotification extends Action {
@Override
public void doAction(Callback callback) {
Notification notification = new Notification(Notification.USERMESSAGE, text.getValue(), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
NSUpload.uploadError(text.getValue());
- RxBus.INSTANCE.send(new EventRefreshOverview("ActionNotification"));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshOverview("ActionNotification"));
if (callback != null)
callback.result(new PumpEnactResult().success(true).comment(R.string.ok)).run();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ActionListAdapter.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ActionListAdapter.kt
index d3a8eb20c0..1868920d9b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ActionListAdapter.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ActionListAdapter.kt
@@ -14,7 +14,8 @@ import info.nightscout.androidaps.plugins.bus.RxBus
import info.nightscout.androidaps.plugins.general.automation.actions.Action
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateGui
-class ActionListAdapter(private val fragmentManager: FragmentManager, private val actionList: MutableList) : RecyclerView.Adapter() {
+class ActionListAdapter(private val fragmentManager: FragmentManager, private val actionList: MutableList)
+ : RecyclerView.Adapter() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.automation_action_item, parent, false)
@@ -46,7 +47,7 @@ class ActionListAdapter(private val fragmentManager: FragmentManager, private va
view.findViewById(R.id.automation_iconTrash).setOnClickListener {
actionList.remove(action)
recyclerView.notifyDataSetChanged()
- RxBus.send(EventAutomationUpdateGui())
+ RxBus.INSTANCE.send(EventAutomationUpdateGui())
}
if (action.icon().isPresent) view.findViewById(R.id.automation_action_image).setImageResource(action.icon().get())
view.findViewById(R.id.automation_viewActionTitle).text = action.shortDescription()
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ChooseActionDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ChooseActionDialog.kt
index c6097a1e88..cc397b0d74 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ChooseActionDialog.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ChooseActionDialog.kt
@@ -7,14 +7,17 @@ import android.view.ViewGroup
import android.widget.RadioButton
import info.nightscout.androidaps.R
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
import info.nightscout.androidaps.plugins.general.automation.actions.Action
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationAddAction
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateGui
import kotlinx.android.synthetic.main.automation_dialog_choose_action.*
+import javax.inject.Inject
class ChooseActionDialog : DialogFragmentWithDate() {
+ @Inject lateinit var automationPlugin: AutomationPlugin
+ @Inject lateinit var rxBus: RxBusWrapper
private var checkedIndex = -1
@@ -32,7 +35,7 @@ class ChooseActionDialog : DialogFragmentWithDate() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- for (a in AutomationPlugin.getActionDummyObjects()) {
+ for (a in automationPlugin.getActionDummyObjects()) {
val radioButton = RadioButton(context)
radioButton.setText(a.friendlyName())
radioButton.tag = a.javaClass
@@ -45,8 +48,8 @@ class ChooseActionDialog : DialogFragmentWithDate() {
override fun submit(): Boolean {
instantiateAction()?.let {
- RxBus.send(EventAutomationAddAction(it))
- RxBus.send(EventAutomationUpdateGui())
+ rxBus.send(EventAutomationAddAction(it))
+ rxBus.send(EventAutomationUpdateGui())
}
return true
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ChooseTriggerDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ChooseTriggerDialog.kt
index eef3a7057e..1cafa61f38 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ChooseTriggerDialog.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/ChooseTriggerDialog.kt
@@ -10,8 +10,10 @@ import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
import info.nightscout.androidaps.plugins.general.automation.triggers.Trigger
import kotlinx.android.synthetic.main.automation_dialog_choose_trigger.*
+import javax.inject.Inject
class ChooseTriggerDialog : DialogFragmentWithDate() {
+ @Inject lateinit var automationPlugin: AutomationPlugin
private var checkedIndex = -1
private var clickListener: OnClickListener? = null
@@ -34,7 +36,7 @@ class ChooseTriggerDialog : DialogFragmentWithDate() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- for (t in AutomationPlugin.getTriggerDummyObjects()) {
+ for (t in automationPlugin.getTriggerDummyObjects()) {
val radioButton = RadioButton(context)
radioButton.setText(t.friendlyName())
radioButton.tag = t.javaClass
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditActionDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditActionDialog.kt
index 63a053f29f..9fad9420d6 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditActionDialog.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditActionDialog.kt
@@ -6,13 +6,16 @@ import android.view.View
import android.view.ViewGroup
import info.nightscout.androidaps.R
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.actions.Action
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateAction
import kotlinx.android.synthetic.main.automation_dialog_action.*
import org.json.JSONObject
+import javax.inject.Inject
class EditActionDialog : DialogFragmentWithDate() {
+ @Inject lateinit var rxBus: RxBusWrapper
+
private var action: Action? = null
private var actionPosition: Int = -1
@@ -39,7 +42,7 @@ class EditActionDialog : DialogFragmentWithDate() {
override fun submit(): Boolean {
action?.let {
- RxBus.send(EventAutomationUpdateAction(it, actionPosition))
+ rxBus.send(EventAutomationUpdateAction(it, actionPosition))
}
return true
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt
index 0bcb183e11..89e18a34a8 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt
@@ -7,18 +7,26 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import info.nightscout.androidaps.R
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.AutomationEvent
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
-import info.nightscout.androidaps.plugins.general.automation.events.*
+import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationAddAction
+import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationDataChanged
+import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateAction
+import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateGui
+import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateTrigger
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.ToastUtils
+import info.nightscout.androidaps.utils.plusAssign
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.automation_dialog_event.*
+import javax.inject.Inject
class EditEventDialog : DialogFragmentWithDate() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var automationPlugin: AutomationPlugin
private var actionListAdapter: ActionListAdapter? = null
private var event: AutomationEvent = AutomationEvent()
@@ -61,49 +69,48 @@ class EditEventDialog : DialogFragmentWithDate() {
showPreconditions()
- disposable.add(RxBus
- .toObservable(EventAutomationUpdateGui::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- actionListAdapter?.notifyDataSetChanged()
- showPreconditions()
- }, {
- FabricPrivacy.logException(it)
- })
- )
- disposable.add(RxBus
- .toObservable(EventAutomationAddAction::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- event.addAction(it.action)
- actionListAdapter?.notifyDataSetChanged()
- }, {
- FabricPrivacy.logException(it)
- })
- )
- disposable.add(RxBus
- .toObservable(EventAutomationUpdateTrigger::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- event.trigger = it.trigger
- automation_triggerDescription.text = event.trigger.friendlyDescription()
- }, {
- FabricPrivacy.logException(it)
- })
- )
- disposable.add(RxBus
- .toObservable(EventAutomationUpdateAction::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- event.actions[it.position] = it.action
- actionListAdapter?.notifyDataSetChanged()
- }, {
- FabricPrivacy.logException(it)
- })
- )
+ disposable += rxBus
+ .toObservable(EventAutomationUpdateGui::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ actionListAdapter?.notifyDataSetChanged()
+ showPreconditions()
+ }, {
+ FabricPrivacy.logException(it)
+ }
+ )
+ disposable += rxBus
+ .toObservable(EventAutomationAddAction::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ event.addAction(it.action)
+ actionListAdapter?.notifyDataSetChanged()
+ }, {
+ FabricPrivacy.logException(it)
+ }
+ )
+ disposable += rxBus
+ .toObservable(EventAutomationUpdateTrigger::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ event.trigger = it.trigger
+ automation_triggerDescription.text = event.trigger.friendlyDescription()
+ }, {
+ FabricPrivacy.logException(it)
+ }
+ )
+ disposable += rxBus
+ .toObservable(EventAutomationUpdateAction::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ event.actions[it.position] = it.action
+ actionListAdapter?.notifyDataSetChanged()
+ }, {
+ FabricPrivacy.logException(it)
+ })
}
- override fun submit() : Boolean{
+ override fun submit(): Boolean {
// check for title
val title = automation_inputEventTitle.text.toString()
if (title.isEmpty()) {
@@ -124,11 +131,11 @@ class EditEventDialog : DialogFragmentWithDate() {
}
// store
if (position == -1)
- AutomationPlugin.automationEvents.add(event)
+ automationPlugin.automationEvents.add(event)
else
- AutomationPlugin.automationEvents[position] = event
+ automationPlugin.automationEvents[position] = event
- RxBus.send(EventAutomationDataChanged())
+ rxBus.send(EventAutomationDataChanged())
return true
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditTriggerDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditTriggerDialog.kt
index b30a724ec5..984c892e8d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditTriggerDialog.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditTriggerDialog.kt
@@ -6,12 +6,14 @@ import android.view.View
import android.view.ViewGroup
import info.nightscout.androidaps.R
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateTrigger
import info.nightscout.androidaps.plugins.general.automation.triggers.Trigger
import kotlinx.android.synthetic.main.automation_dialog_edit_trigger.*
+import javax.inject.Inject
class EditTriggerDialog : DialogFragmentWithDate() {
+ @Inject lateinit var rxBus: RxBusWrapper
private var trigger: Trigger? = null
@@ -33,8 +35,8 @@ class EditTriggerDialog : DialogFragmentWithDate() {
trigger?.generateDialog(automation_layoutTrigger, fragmentManager)
}
- override fun submit():Boolean {
- trigger?.let { trigger -> RxBus.send(EventAutomationUpdateTrigger(trigger)) }
+ override fun submit(): Boolean {
+ trigger?.let { trigger -> rxBus.send(EventAutomationUpdateTrigger(trigger)) }
return true
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalFragment.java
index 5dd9292343..be336a0b34 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalFragment.java
@@ -120,7 +120,7 @@ public class CareportalFragment extends Fragment implements View.OnClickListener
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventCareportalEventChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGUI(), FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalPlugin.java
deleted file mode 100644
index fc28d23188..0000000000
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalPlugin.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package info.nightscout.androidaps.plugins.general.careportal;
-
-import info.nightscout.androidaps.Config;
-import info.nightscout.androidaps.R;
-import info.nightscout.androidaps.interfaces.PluginBase;
-import info.nightscout.androidaps.interfaces.PluginDescription;
-import info.nightscout.androidaps.interfaces.PluginType;
-
-public class CareportalPlugin extends PluginBase {
-
- static CareportalPlugin careportalPlugin;
-
- static public CareportalPlugin getPlugin() {
- if (careportalPlugin == null) {
- careportalPlugin = new CareportalPlugin();
- }
- return careportalPlugin;
- }
-
- public CareportalPlugin() {
- super(new PluginDescription()
- .mainType(PluginType.GENERAL)
- .fragmentClass(CareportalFragment.class.getName())
- .pluginName(R.string.careportal)
- .shortName(R.string.careportal_shortname)
- .visibleByDefault(Config.NSCLIENT)
- .enableByDefault(Config.NSCLIENT)
- .description(R.string.description_careportal)
- );
- }
-
- @Override
- public boolean specialEnableCondition() {
- return Config.NSCLIENT;
- }
-}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalPlugin.kt
new file mode 100644
index 0000000000..184db3c1cf
--- /dev/null
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/CareportalPlugin.kt
@@ -0,0 +1,25 @@
+package info.nightscout.androidaps.plugins.general.careportal
+
+import info.nightscout.androidaps.Config
+import info.nightscout.androidaps.R
+import info.nightscout.androidaps.interfaces.PluginBase
+import info.nightscout.androidaps.interfaces.PluginDescription
+import info.nightscout.androidaps.interfaces.PluginType
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class CareportalPlugin @Inject constructor() : PluginBase(PluginDescription()
+ .mainType(PluginType.GENERAL)
+ .fragmentClass(CareportalFragment::class.java.name)
+ .pluginName(R.string.careportal)
+ .shortName(R.string.careportal_shortname)
+ .visibleByDefault(Config.NSCLIENT)
+ .enableByDefault(Config.NSCLIENT)
+ .description(R.string.description_careportal)
+) {
+
+ override fun specialEnableCondition(): Boolean {
+ return Config.NSCLIENT
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.java
index 074310a8dd..402bac8a6b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodFragment.java
@@ -125,7 +125,7 @@ public class FoodFragment extends Fragment {
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventFoodDatabaseChanged.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodPlugin.java
index e5548417a2..2b9ba5af2d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodPlugin.java
@@ -12,6 +12,7 @@ public class FoodPlugin extends PluginBase {
private static FoodPlugin plugin = null;
+ @Deprecated
public static FoodPlugin getPlugin() {
if (plugin == null)
plugin = new FoodPlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodService.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodService.java
index 065c74eabb..3b177c0bcd 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodService.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/food/FoodService.java
@@ -53,7 +53,7 @@ public class FoodService extends OrmLiteBaseService {
public FoodService() {
onCreate();
dbInitialize();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNsFood.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -166,7 +166,7 @@ public class FoodService extends OrmLiteBaseService {
public void run() {
if (L.isEnabled(L.DATAFOOD))
log.debug("Firing EventFoodChange");
- RxBus.INSTANCE.send(event);
+ RxBus.Companion.getINSTANCE().send(event);
callback.setPost(null);
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/ImportExportPrefs.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/ImportExportPrefs.java
index 3a776ab541..643fd54ac0 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/ImportExportPrefs.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/ImportExportPrefs.java
@@ -110,7 +110,7 @@ public class ImportExportPrefs {
SP.putBoolean(R.string.key_setupwizard_processed, true);
OKDialog.show(context, MainApp.gs(R.string.setting_imported), MainApp.gs(R.string.restartingapp), () -> {
log.debug("Exiting");
- RxBus.INSTANCE.send(new EventAppExit());
+ RxBus.Companion.getINSTANCE().send(new EventAppExit());
if (context instanceof Activity) {
((Activity) context).finish();
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenancePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenancePlugin.java
index f9a55f53dd..816e249634 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenancePlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenancePlugin.java
@@ -39,6 +39,7 @@ public class MaintenancePlugin extends PluginBase {
private static MaintenancePlugin maintenancePlugin;
+ @Deprecated
public static MaintenancePlugin getPlugin() {
return maintenancePlugin;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientFragment.java
index ea3ee3f9a7..caff4323fa 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientFragment.java
@@ -82,7 +82,7 @@ public class NSClientFragment extends Fragment implements View.OnClickListener,
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNSClientUpdateGUI.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
@@ -100,7 +100,7 @@ public class NSClientFragment extends Fragment implements View.OnClickListener,
public void onClick(View view) {
switch (view.getId()) {
case R.id.nsclientinternal_restart:
- RxBus.INSTANCE.send(new EventNSClientRestart());
+ RxBus.Companion.getINSTANCE().send(new EventNSClientRestart());
FabricPrivacy.getInstance().logCustom("NSClientRestart");
break;
case R.id.nsclientinternal_delivernow:
@@ -118,7 +118,7 @@ public class NSClientFragment extends Fragment implements View.OnClickListener,
});
break;
case R.id.nsclientinternal_showqueue:
- RxBus.INSTANCE.send(new EventNSClientNewLog("QUEUE", NSClientPlugin.getPlugin().queue().textList()));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("QUEUE", NSClientPlugin.getPlugin().queue().textList()));
break;
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientPlugin.java
index 957d69a935..9e36c10b6a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSClientPlugin.java
@@ -50,6 +50,7 @@ public class NSClientPlugin extends PluginBase {
static NSClientPlugin nsClientPlugin;
+ @Deprecated
static public NSClientPlugin getPlugin() {
if (nsClientPlugin == null) {
nsClientPlugin = new NSClientPlugin();
@@ -110,25 +111,25 @@ public class NSClientPlugin extends PluginBase {
super.onStart();
nsClientReceiverDelegate.grabReceiversState();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNSClientStatus.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
status = event.getStatus();
- RxBus.INSTANCE.send(new EventNSClientUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventNSClientUpdateGUI());
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNetworkChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> nsClientReceiverDelegate.onStatusEvent(event), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> nsClientReceiverDelegate.onStatusEvent(event), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -137,7 +138,7 @@ public class NSClientPlugin extends PluginBase {
}
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNSClientNewLog.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -146,7 +147,7 @@ public class NSClientPlugin extends PluginBase {
log.debug(event.getAction() + " " + event.getLogText());
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventChargingState.class)
.observeOn(Schedulers.io())
.subscribe(event -> nsClientReceiverDelegate.onStatusEvent(event), FabricPrivacy::logException)
@@ -199,7 +200,7 @@ public class NSClientPlugin extends PluginBase {
synchronized (listLog) {
listLog.clear();
}
- RxBus.INSTANCE.send(new EventNSClientUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventNSClientUpdateGUI());
});
}
@@ -212,7 +213,7 @@ public class NSClientPlugin extends PluginBase {
listLog.remove(0);
}
}
- RxBus.INSTANCE.send(new EventNSClientUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventNSClientUpdateGUI());
});
}
@@ -238,7 +239,7 @@ public class NSClientPlugin extends PluginBase {
public void pause(boolean newState) {
SP.putBoolean(R.string.key_nsclientinternal_paused, newState);
paused = newState;
- RxBus.INSTANCE.send(new EventPreferenceChange(R.string.key_nsclientinternal_paused));
+ RxBus.Companion.getINSTANCE().send(new EventPreferenceChange(R.string.key_nsclientinternal_paused));
}
public UploadQueue queue() {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NsClientReceiverDelegate.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NsClientReceiverDelegate.java
index fd05b133f5..2a7791ba17 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NsClientReceiverDelegate.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NsClientReceiverDelegate.java
@@ -26,10 +26,10 @@ class NsClientReceiverDelegate {
Context context = MainApp.instance().getApplicationContext();
EventNetworkChange event = NetworkChangeReceiver.grabNetworkStatus(context);
- if (event != null) RxBus.INSTANCE.send(event);
+ if (event != null) RxBus.Companion.getINSTANCE().send(event);
EventChargingState eventChargingState = ChargingStateReceiver.grabChargingState(context);
- if (eventChargingState != null) RxBus.INSTANCE.send(eventChargingState);
+ if (eventChargingState != null) RxBus.Companion.getINSTANCE().send(eventChargingState);
}
@@ -40,11 +40,11 @@ class NsClientReceiverDelegate {
) {
EventNetworkChange event = NetworkChangeReceiver.grabNetworkStatus(MainApp.instance().getApplicationContext());
if (event != null)
- RxBus.INSTANCE.send(event);
+ RxBus.Companion.getINSTANCE().send(event);
} else if (ev.isChanged(R.string.key_ns_chargingonly)) {
EventChargingState event = ChargingStateReceiver.grabChargingState(MainApp.instance().getApplicationContext());
if (event != null)
- RxBus.INSTANCE.send(event);
+ RxBus.Companion.getINSTANCE().send(event);
}
}
@@ -70,7 +70,7 @@ class NsClientReceiverDelegate {
boolean newAllowedState = allowedChargingState && allowedNetworkState;
if (newAllowedState != allowed) {
allowed = newAllowedState;
- RxBus.INSTANCE.send(new EventPreferenceChange(R.string.key_nsclientinternal_paused));
+ RxBus.Companion.getINSTANCE().send(new EventPreferenceChange(R.string.key_nsclientinternal_paused));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSAddAck.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSAddAck.java
index 01d1f26c33..1457ba4daa 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSAddAck.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSAddAck.java
@@ -33,7 +33,7 @@ public class NSAddAck extends Event implements Ack {
nsClientID = response.getString("NSCLIENT_ID");
}
}
- RxBus.INSTANCE.send(this);
+ RxBus.Companion.getINSTANCE().send(this);
return;
} catch (Exception e) {
log.error("Unhandled exception", e);
@@ -44,7 +44,7 @@ public class NSAddAck extends Event implements Ack {
if (response.has("result")) {
_id = null;
if (response.getString("result").contains("Not")) {
- RxBus.INSTANCE.send(new EventNSClientRestart());
+ RxBus.Companion.getINSTANCE().send(new EventNSClientRestart());
return;
}
if (L.isEnabled(L.NSCLIENT))
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSAuthAck.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSAuthAck.java
index 754ff6684b..dd6267308a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSAuthAck.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSAuthAck.java
@@ -16,6 +16,6 @@ public class NSAuthAck extends Event implements Ack{
read = response.optBoolean("read");
write = response.optBoolean("write");
write_treatment = response.optBoolean("write_treatment");
- RxBus.INSTANCE.send(this);
+ RxBus.Companion.getINSTANCE().send(this);
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSUpdateAck.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSUpdateAck.java
index 2a4022980d..ac6f85dd3a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSUpdateAck.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/acks/NSUpdateAck.java
@@ -28,7 +28,7 @@ public class NSUpdateAck extends Event implements Ack {
result = true;
log.debug("Internal error: Missing _id returned on dbUpdate ack");
}
- RxBus.INSTANCE.send(this);
+ RxBus.Companion.getINSTANCE().send(this);
} catch (JSONException e) {
log.error("Unhandled exception", e);
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.java
index ba59c6297a..94081f95f2 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSettingsStatus.java
@@ -156,22 +156,22 @@ public class NSSettingsStatus {
try {
if (nsClientVersionCode < MainApp.instance().getPackageManager().getPackageInfo(MainApp.instance().getPackageName(), 0).versionCode) {
Notification notification = new Notification(Notification.OLD_NSCLIENT, MainApp.gs(R.string.unsupportedclientver), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.OLD_NSCLIENT));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.OLD_NSCLIENT));
}
} catch (PackageManager.NameNotFoundException e) {
log.error("Unhandled exception", e);
}
if (nightscoutVersionCode < Config.SUPPORTEDNSVERSION) {
Notification notification = new Notification(Notification.OLD_NS, MainApp.gs(R.string.unsupportednsversion), Notification.NORMAL);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.OLD_NS));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.OLD_NS));
}
} else {
Notification notification = new Notification(Notification.OLD_NSCLIENT, MainApp.gs(R.string.unsupportedclientver), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
if (bundle.containsKey("status")) {
try {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/services/NSClientService.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/services/NSClientService.java
index e1c57cc7c2..dcc3592f38 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/services/NSClientService.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/services/NSClientService.java
@@ -130,7 +130,7 @@ public class NSClientService extends Service {
public void onCreate() {
super.onCreate();
mWakeLock.acquire();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventConfigBuilderChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -141,7 +141,7 @@ public class NSClientService extends Service {
}
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -155,7 +155,7 @@ public class NSClientService extends Service {
}
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -165,7 +165,7 @@ public class NSClientService extends Service {
stopSelf();
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNSClientRestart.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -173,17 +173,17 @@ public class NSClientService extends Service {
restart();
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(NSAuthAck.class)
.observeOn(Schedulers.io())
.subscribe(event -> processAuthAck(event), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(NSUpdateAck.class)
.observeOn(Schedulers.io())
.subscribe(event -> processUpdateAck(event), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(NSAddAck.class)
.observeOn(Schedulers.io())
.subscribe(event -> processAddAck(event), FabricPrivacy::logException)
@@ -200,18 +200,18 @@ public class NSClientService extends Service {
public void processAddAck(NSAddAck ack) {
if (ack.nsClientID != null) {
uploadQueue.removeID(ack.json);
- RxBus.INSTANCE.send(new EventNSClientNewLog("DBADD", "Acked " + ack.nsClientID));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DBADD", "Acked " + ack.nsClientID));
} else {
- RxBus.INSTANCE.send(new EventNSClientNewLog("ERROR", "DBADD Unknown response"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("ERROR", "DBADD Unknown response"));
}
}
public void processUpdateAck(NSUpdateAck ack) {
if (ack.result) {
uploadQueue.removeID(ack.action, ack._id);
- RxBus.INSTANCE.send(new EventNSClientNewLog("DBUPDATE/DBREMOVE", "Acked " + ack._id));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DBUPDATE/DBREMOVE", "Acked " + ack._id));
} else {
- RxBus.INSTANCE.send(new EventNSClientNewLog("ERROR", "DBUPDATE/DBREMOVE Unknown response"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("ERROR", "DBUPDATE/DBREMOVE Unknown response"));
}
}
@@ -223,19 +223,19 @@ public class NSClientService extends Service {
connectionStatus += ')';
isConnected = true;
hasWriteAuth = ack.write && ack.write_treatment;
- RxBus.INSTANCE.send(new EventNSClientStatus(connectionStatus));
- RxBus.INSTANCE.send(new EventNSClientNewLog("AUTH", connectionStatus));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientStatus(connectionStatus));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("AUTH", connectionStatus));
if (!ack.write) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("ERROR", "Write permission not granted !!!!"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("ERROR", "Write permission not granted !!!!"));
}
if (!ack.write_treatment) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("ERROR", "Write treatment permission not granted !!!!"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("ERROR", "Write treatment permission not granted !!!!"));
}
if (!hasWriteAuth) {
Notification noperm = new Notification(Notification.NSCLIENT_NO_WRITE_PERMISSION, MainApp.gs(R.string.nowritepermission), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(noperm));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(noperm));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.NSCLIENT_NO_WRITE_PERMISSION));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.NSCLIENT_NO_WRITE_PERMISSION));
}
}
@@ -264,19 +264,19 @@ public class NSClientService extends Service {
if (!nsAPISecret.equals(""))
nsAPIhashCode = Hashing.sha1().hashString(nsAPISecret, Charsets.UTF_8).toString();
- RxBus.INSTANCE.send(new EventNSClientStatus("Initializing"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientStatus("Initializing"));
if (!NSClientPlugin.getPlugin().isAllowed()) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "not allowed"));
- RxBus.INSTANCE.send(new EventNSClientStatus("Not allowed"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("NSCLIENT", "not allowed"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientStatus("Not allowed"));
} else if (NSClientPlugin.getPlugin().paused) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "paused"));
- RxBus.INSTANCE.send(new EventNSClientStatus("Paused"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("NSCLIENT", "paused"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientStatus("Paused"));
} else if (!nsEnabled) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "disabled"));
- RxBus.INSTANCE.send(new EventNSClientStatus("Disabled"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("NSCLIENT", "disabled"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientStatus("Disabled"));
} else if (!nsURL.equals("")) {
try {
- RxBus.INSTANCE.send(new EventNSClientStatus("Connecting ..."));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientStatus("Connecting ..."));
IO.Options opt = new IO.Options();
opt.forceNew = true;
opt.reconnection = true;
@@ -284,7 +284,7 @@ public class NSClientService extends Service {
mSocket.on(Socket.EVENT_CONNECT, onConnect);
mSocket.on(Socket.EVENT_DISCONNECT, onDisconnect);
mSocket.on(Socket.EVENT_PING, onPing);
- RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "do connect"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("NSCLIENT", "do connect"));
mSocket.connect();
mSocket.on("dataUpdate", onDataUpdate);
mSocket.on("announcement", onAnnouncement);
@@ -292,12 +292,12 @@ public class NSClientService extends Service {
mSocket.on("urgent_alarm", onUrgentAlarm);
mSocket.on("clear_alarm", onClearAlarm);
} catch (URISyntaxException | RuntimeException e) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "Wrong URL syntax"));
- RxBus.INSTANCE.send(new EventNSClientStatus("Wrong URL syntax"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("NSCLIENT", "Wrong URL syntax"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientStatus("Wrong URL syntax"));
}
} else {
- RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "No NS URL specified"));
- RxBus.INSTANCE.send(new EventNSClientStatus("Not configured"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("NSCLIENT", "No NS URL specified"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientStatus("Not configured"));
}
}
@@ -306,7 +306,7 @@ public class NSClientService extends Service {
public void call(Object... args) {
connectCounter++;
String socketId = mSocket != null ? mSocket.id() : "NULL";
- RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "connect #" + connectCounter + " event. ID: " + socketId));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("NSCLIENT", "connect #" + connectCounter + " event. ID: " + socketId));
if (mSocket != null)
sendAuthMessage(new NSAuthAck());
watchdog();
@@ -323,16 +323,16 @@ public class NSClientService extends Service {
reconnections.remove(r);
}
}
- RxBus.INSTANCE.send(new EventNSClientNewLog("WATCHDOG", "connections in last " + WATCHDOG_INTERVAL_MINUTES + " mins: " + reconnections.size() + "/" + WATCHDOG_MAXCONNECTIONS));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("WATCHDOG", "connections in last " + WATCHDOG_INTERVAL_MINUTES + " mins: " + reconnections.size() + "/" + WATCHDOG_MAXCONNECTIONS));
if (reconnections.size() >= WATCHDOG_MAXCONNECTIONS) {
Notification n = new Notification(Notification.NSMALFUNCTION, MainApp.gs(R.string.nsmalfunction), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(n));
- RxBus.INSTANCE.send(new EventNSClientNewLog("WATCHDOG", "pausing for " + WATCHDOG_RECONNECT_IN + " mins"));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(n));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("WATCHDOG", "pausing for " + WATCHDOG_RECONNECT_IN + " mins"));
NSClientPlugin.getPlugin().pause(true);
- RxBus.INSTANCE.send(new EventNSClientUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventNSClientUpdateGUI());
new Thread(() -> {
SystemClock.sleep(T.mins(WATCHDOG_RECONNECT_IN).msecs());
- RxBus.INSTANCE.send(new EventNSClientNewLog("WATCHDOG", "reenabling NSClient"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("WATCHDOG", "reenabling NSClient"));
NSClientPlugin.getPlugin().pause(false);
}).start();
}
@@ -344,7 +344,7 @@ public class NSClientService extends Service {
public void call(Object... args) {
if (L.isEnabled(L.NSCLIENT))
log.debug("disconnect reason: {}", args);
- RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "disconnect event"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("NSCLIENT", "disconnect event"));
}
};
@@ -359,7 +359,7 @@ public class NSClientService extends Service {
mSocket.off("urgent_alarm");
mSocket.off("clear_alarm");
- RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "destroy"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("NSCLIENT", "destroy"));
isConnected = false;
hasWriteAuth = false;
mSocket.disconnect();
@@ -380,7 +380,7 @@ public class NSClientService extends Service {
log.error("Unhandled exception", e);
return;
}
- RxBus.INSTANCE.send(new EventNSClientNewLog("AUTH", "requesting auth"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("AUTH", "requesting auth"));
if (mSocket != null)
mSocket.emit("authorize", authMessage, ack);
}
@@ -395,7 +395,7 @@ public class NSClientService extends Service {
private Emitter.Listener onPing = new Emitter.Listener() {
@Override
public void call(final Object... args) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("PING", "received"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("PING", "received"));
// send data if there is something waiting
resend("Ping received");
}
@@ -424,7 +424,7 @@ public class NSClientService extends Service {
return;
}
try {
- RxBus.INSTANCE.send(new EventNSClientNewLog("ANNOUNCEMENT", JsonHelper.safeGetString(data, "message", "received")));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("ANNOUNCEMENT", JsonHelper.safeGetString(data, "message", "received")));
} catch (Exception e) {
FabricPrivacy.logException(e);
log.error("Unhandled exception", e);
@@ -451,7 +451,7 @@ public class NSClientService extends Service {
*/
@Override
public void call(final Object... args) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("ALARM", "received"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("ALARM", "received"));
JSONObject data;
try {
data = (JSONObject) args[0];
@@ -490,7 +490,7 @@ public class NSClientService extends Service {
log.error("Unhandled exception", e);
return;
}
- RxBus.INSTANCE.send(new EventNSClientNewLog("URGENTALARM", "received"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("URGENTALARM", "received"));
BroadcastUrgentAlarm.handleUrgentAlarm(data, getApplicationContext());
if (L.isEnabled(L.NSCLIENT))
log.debug(data.toString());
@@ -516,7 +516,7 @@ public class NSClientService extends Service {
log.error("Unhandled exception", e);
return;
}
- RxBus.INSTANCE.send(new EventNSClientNewLog("CLEARALARM", "received"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("CLEARALARM", "received"));
BroadcastClearAlarm.handleClearAlarm(data, getApplicationContext());
if (L.isEnabled(L.NSCLIENT))
log.debug(data.toString());
@@ -541,7 +541,7 @@ public class NSClientService extends Service {
// delta means only increment/changes are comming
boolean isDelta = data.has("delta");
boolean isFull = !isDelta;
- RxBus.INSTANCE.send(new EventNSClientNewLog("DATA", "Data packet #" + dataCounter++ + (isDelta ? " delta" : " full")));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DATA", "Data packet #" + dataCounter++ + (isDelta ? " delta" : " full")));
if (data.has("profiles")) {
JSONArray profiles = data.getJSONArray("profiles");
@@ -549,7 +549,7 @@ public class NSClientService extends Service {
JSONObject profile = (JSONObject) profiles.get(profiles.length() - 1);
profileStore = new ProfileStore(profile);
broadcastProfile = true;
- RxBus.INSTANCE.send(new EventNSClientNewLog("PROFILE", "profile received"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("PROFILE", "profile received"));
}
}
@@ -559,7 +559,7 @@ public class NSClientService extends Service {
if (!status.has("versionNum")) {
if (status.getInt("versionNum") < Config.SUPPORTEDNSVERSION) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("ERROR", "Unsupported Nightscout version !!!!"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("ERROR", "Unsupported Nightscout version !!!!"));
}
} else {
nightscoutVersionName = nsSettingsStatus.getVersion();
@@ -584,13 +584,13 @@ public class NSClientService extends Service {
}
*/
} else if (!isDelta) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("ERROR", "Unsupported Nightscout version !!!!"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("ERROR", "Unsupported Nightscout version !!!!"));
}
// If new profile received or change detected broadcast it
if (broadcastProfile && profileStore != null) {
BroadcastProfile.handleNewTreatment(profileStore, MainApp.instance().getApplicationContext(), isDelta);
- RxBus.INSTANCE.send(new EventNSClientNewLog("PROFILE", "broadcasting"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("PROFILE", "broadcasting"));
}
if (data.has("treatments")) {
@@ -599,7 +599,7 @@ public class NSClientService extends Service {
JSONArray updatedTreatments = new JSONArray();
JSONArray addedTreatments = new JSONArray();
if (treatments.length() > 0)
- RxBus.INSTANCE.send(new EventNSClientNewLog("DATA", "received " + treatments.length() + " treatments"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DATA", "received " + treatments.length() + " treatments"));
for (Integer index = 0; index < treatments.length(); index++) {
JSONObject jsonTreatment = treatments.getJSONObject(index);
NSTreatment treatment = new NSTreatment(jsonTreatment);
@@ -633,7 +633,7 @@ public class NSClientService extends Service {
if (data.has("devicestatus")) {
JSONArray devicestatuses = data.getJSONArray("devicestatus");
if (devicestatuses.length() > 0) {
- RxBus.INSTANCE.send(new EventNSClientNewLog("DATA", "received " + devicestatuses.length() + " devicestatuses"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DATA", "received " + devicestatuses.length() + " devicestatuses"));
for (Integer index = 0; index < devicestatuses.length(); index++) {
JSONObject jsonStatus = devicestatuses.getJSONObject(index);
// remove from upload queue if Ack is failing
@@ -648,7 +648,7 @@ public class NSClientService extends Service {
JSONArray updatedFoods = new JSONArray();
JSONArray addedFoods = new JSONArray();
if (foods.length() > 0)
- RxBus.INSTANCE.send(new EventNSClientNewLog("DATA", "received " + foods.length() + " foods"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DATA", "received " + foods.length() + " foods"));
for (Integer index = 0; index < foods.length(); index++) {
JSONObject jsonFood = foods.getJSONObject(index);
@@ -678,7 +678,7 @@ public class NSClientService extends Service {
if (data.has("mbgs")) {
JSONArray mbgs = data.getJSONArray("mbgs");
if (mbgs.length() > 0)
- RxBus.INSTANCE.send(new EventNSClientNewLog("DATA", "received " + mbgs.length() + " mbgs"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DATA", "received " + mbgs.length() + " mbgs"));
for (Integer index = 0; index < mbgs.length(); index++) {
JSONObject jsonMbg = mbgs.getJSONObject(index);
// remove from upload queue if Ack is failing
@@ -689,7 +689,7 @@ public class NSClientService extends Service {
if (data.has("cals")) {
JSONArray cals = data.getJSONArray("cals");
if (cals.length() > 0)
- RxBus.INSTANCE.send(new EventNSClientNewLog("DATA", "received " + cals.length() + " cals"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DATA", "received " + cals.length() + " cals"));
// Retreive actual calibration
for (Integer index = 0; index < cals.length(); index++) {
// remove from upload queue if Ack is failing
@@ -700,10 +700,10 @@ public class NSClientService extends Service {
if (data.has("sgvs")) {
JSONArray sgvs = data.getJSONArray("sgvs");
if (sgvs.length() > 0)
- RxBus.INSTANCE.send(new EventNSClientNewLog("DATA", "received " + sgvs.length() + " sgvs"));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DATA", "received " + sgvs.length() + " sgvs"));
for (Integer index = 0; index < sgvs.length(); index++) {
JSONObject jsonSgv = sgvs.getJSONObject(index);
- // RxBus.INSTANCE.send(new EventNSClientNewLog("DATA", "svg " + sgvs.getJSONObject(index).toString());
+ // RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DATA", "svg " + sgvs.getJSONObject(index).toString());
NSSgv sgv = new NSSgv(jsonSgv);
// Handle new sgv here
// remove from upload queue if Ack is failing
@@ -718,15 +718,15 @@ public class NSClientService extends Service {
if ((System.currentTimeMillis() - latestDateInReceivedData) / (60 * 1000L) < 15L)
lessThan15MinAgo = true;
if (Notification.isAlarmForStaleData() && lessThan15MinAgo) {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.NSALARM));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.NSALARM));
}
BroadcastSgvs.handleNewSgv(sgvs, MainApp.instance().getApplicationContext(), isDelta);
}
- RxBus.INSTANCE.send(new EventNSClientNewLog("LAST", DateUtil.dateAndTimeString(latestDateInReceivedData)));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("LAST", DateUtil.dateAndTimeString(latestDateInReceivedData)));
} catch (JSONException e) {
log.error("Unhandled exception", e);
}
- //RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "onDataUpdate end");
+ //RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("NSCLIENT", "onDataUpdate end");
} finally {
if (wakeLock.isHeld()) wakeLock.release();
}
@@ -744,7 +744,7 @@ public class NSClientService extends Service {
message.put("_id", dbr._id);
message.put("data", new JSONObject(dbr.data));
mSocket.emit("dbUpdate", message, ack);
- RxBus.INSTANCE.send(new EventNSClientNewLog("DBUPDATE " + dbr.collection, "Sent " + dbr._id));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DBUPDATE " + dbr.collection, "Sent " + dbr._id));
} catch (JSONException e) {
log.error("Unhandled exception", e);
}
@@ -758,7 +758,7 @@ public class NSClientService extends Service {
message.put("_id", dbr._id);
message.put("data", new JSONObject(dbr.data));
mSocket.emit("dbUpdateUnset", message, ack);
- RxBus.INSTANCE.send(new EventNSClientNewLog("DBUPDATEUNSET " + dbr.collection, "Sent " + dbr._id));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DBUPDATEUNSET " + dbr.collection, "Sent " + dbr._id));
} catch (JSONException e) {
log.error("Unhandled exception", e);
}
@@ -771,7 +771,7 @@ public class NSClientService extends Service {
message.put("collection", dbr.collection);
message.put("_id", dbr._id);
mSocket.emit("dbRemove", message, ack);
- RxBus.INSTANCE.send(new EventNSClientNewLog("DBREMOVE " + dbr.collection, "Sent " + dbr._id));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DBREMOVE " + dbr.collection, "Sent " + dbr._id));
} catch (JSONException e) {
log.error("Unhandled exception", e);
}
@@ -784,7 +784,7 @@ public class NSClientService extends Service {
message.put("collection", dbr.collection);
message.put("data", new JSONObject(dbr.data));
mSocket.emit("dbAdd", message, ack);
- RxBus.INSTANCE.send(new EventNSClientNewLog("DBADD " + dbr.collection, "Sent " + dbr.nsClientID));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("DBADD " + dbr.collection, "Sent " + dbr.nsClientID));
} catch (JSONException e) {
log.error("Unhandled exception", e);
}
@@ -793,7 +793,7 @@ public class NSClientService extends Service {
public void sendAlarmAck(AlarmAck alarmAck) {
if (!isConnected || !hasWriteAuth) return;
mSocket.emit("ack", alarmAck.level, alarmAck.group, alarmAck.silenceTime);
- RxBus.INSTANCE.send(new EventNSClientNewLog("ALARMACK ", alarmAck.level + " " + alarmAck.group + " " + alarmAck.silenceTime));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("ALARMACK ", alarmAck.level + " " + alarmAck.group + " " + alarmAck.silenceTime));
}
public void resend(final String reason) {
@@ -814,7 +814,7 @@ public class NSClientService extends Service {
}
lastResendTime = System.currentTimeMillis();
- RxBus.INSTANCE.send(new EventNSClientNewLog("QUEUE", "Resend started: " + reason));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("QUEUE", "Resend started: " + reason));
CloseableIterator iterator = null;
int maxcount = 30;
@@ -845,7 +845,7 @@ public class NSClientService extends Service {
log.error("Unhandled exception", e);
}
- RxBus.INSTANCE.send(new EventNSClientNewLog("QUEUE", "Resend ended: " + reason));
+ RxBus.Companion.getINSTANCE().send(new EventNSClientNewLog("QUEUE", "Resend ended: " + reason));
}
});
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.java
index ba6c44ef99..42ca88f61a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.java
@@ -45,6 +45,9 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
+import javax.inject.Inject;
+
+import dagger.android.support.DaggerFragment;
import info.nightscout.androidaps.Config;
import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp;
@@ -95,6 +98,7 @@ import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSDeviceStatus;
import info.nightscout.androidaps.plugins.general.overview.activities.QuickWizardListActivity;
import info.nightscout.androidaps.plugins.general.overview.graphData.GraphData;
+import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationStore;
import info.nightscout.androidaps.plugins.general.wear.ActionStringHandler;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensData;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.CobInfo;
@@ -122,7 +126,9 @@ import io.reactivex.disposables.CompositeDisposable;
import static info.nightscout.androidaps.utils.DateUtil.now;
-public class OverviewFragment extends Fragment implements View.OnClickListener, View.OnLongClickListener {
+public class OverviewFragment extends DaggerFragment implements View.OnClickListener, View.OnLongClickListener {
+ @Inject NotificationStore notificationStore;
+
private static Logger log = LoggerFactory.getLogger(L.OVERVIEW);
private CompositeDisposable disposable = new CompositeDisposable();
@@ -355,85 +361,85 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
@Override
public void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventRefreshOverview.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(eventOpenAPSUpdateGui -> scheduleUpdateGUI(eventOpenAPSUpdateGui.getFrom()),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventExtendedBolusChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventExtendedBolusChange"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTempBasalChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventTempBasalChange"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTreatmentChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventTreatmentChange"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTempTargetChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventTempTargetChange"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAcceptOpenLoopChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventAcceptOpenLoopChange"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventCareportalEventChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventCareportalEventChange"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventInitializationChanged.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventInitializationChanged"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAutosensCalculationFinished.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventAutosensCalculationFinished"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventProfileNeedsUpdate.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventProfileNeedsUpdate"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventPreferenceChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventPreferenceChange"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNewOpenLoopNotification.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> scheduleUpdateGUI("EventNewOpenLoopNotification"),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventPumpStatusChanged.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updatePumpStatus(event.getStatus()),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventIobCalculationProgress.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> {
@@ -1002,7 +1008,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
timeView.setText(DateUtil.timeString(new Date()));
}
- OverviewPlugin.INSTANCE.getNotificationStore().updateNotifications(notificationsView);
+ notificationStore.updateNotifications(notificationsView);
pumpStatusLayout.setVisibility(View.GONE);
loopStatusLayout.setVisibility(View.GONE);
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt
index 8e4a9581b8..c5df879335 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewPlugin.kt
@@ -7,8 +7,7 @@ import info.nightscout.androidaps.events.EventRefreshOverview
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationStore
@@ -17,46 +16,59 @@ import info.nightscout.androidaps.utils.SP
import info.nightscout.androidaps.utils.plusAssign
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
-import org.slf4j.LoggerFactory
+import javax.inject.Inject
+import javax.inject.Singleton
-object OverviewPlugin : PluginBase(PluginDescription()
- .mainType(PluginType.GENERAL)
- .fragmentClass(OverviewFragment::class.qualifiedName)
- .alwaysVisible(true)
- .alwaysEnabled(true)
- .pluginName(R.string.overview)
- .shortName(R.string.overview_shortname)
- .preferencesId(R.xml.pref_overview)
- .description(R.string.description_overview)) {
+@Singleton
+class OverviewPlugin @Inject constructor(
+ private val rxBus: RxBusWrapper,
+ private val notificationStore: NotificationStore
+) : PluginBase(PluginDescription()
+ .mainType(PluginType.GENERAL)
+ .fragmentClass(OverviewFragment::class.qualifiedName)
+ .alwaysVisible(true)
+ .alwaysEnabled(true)
+ .pluginName(R.string.overview)
+ .shortName(R.string.overview_shortname)
+ .preferencesId(R.xml.pref_overview)
+ .description(R.string.description_overview)) {
+
+ init {
+ INSTANCE = this
+ }
+
+ companion object {
+ @JvmStatic
+ @Deprecated("Get via Dagger. Will be removed once fully transitioned to Dagger")
+ lateinit var INSTANCE: OverviewPlugin //TODO: remove as soon as Dagger is fully set up
+ }
- private val log = LoggerFactory.getLogger(L.OVERVIEW)
private var disposable: CompositeDisposable = CompositeDisposable()
var bgTargetLow = 80.0
var bgTargetHigh = 180.0
- var notificationStore = NotificationStore()
-
override fun onStart() {
super.onStart()
- disposable += RxBus
- .toObservable(EventNewNotification::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ n ->
- if (notificationStore.add(n.notification))
- RxBus.send(EventRefreshOverview("EventNewNotification"))
- }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventDismissNotification::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ n ->
- if (notificationStore.remove(n.id))
- RxBus.send(EventRefreshOverview("EventDismissNotification"))
- }, {
- FabricPrivacy.logException(it)
- })
+ notificationStore.createNotificationChannel()
+ disposable += rxBus
+ .toObservable(EventNewNotification::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ n ->
+ if (notificationStore.add(n.notification))
+ rxBus.send(EventRefreshOverview("EventNewNotification"))
+ }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventDismissNotification::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ n ->
+ if (notificationStore.remove(n.id))
+ rxBus.send(EventRefreshOverview("EventDismissNotification"))
+ }, {
+ FabricPrivacy.logException(it)
+ })
}
override fun onStop() {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt
index 9aa1e29978..a8b5ccf1c0 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt
@@ -12,18 +12,21 @@ import androidx.recyclerview.widget.RecyclerView
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
import info.nightscout.androidaps.data.QuickWizard
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.dialogs.EditQuickWizardDialog
import info.nightscout.androidaps.plugins.general.overview.events.EventQuickWizardChange
import info.nightscout.androidaps.utils.DateUtil
-import info.nightscout.androidaps.utils.DecimalFormatter
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.overview_quickwizardlist_activity.*
+import javax.inject.Inject
class QuickWizardListActivity : NoSplashAppCompatActivity() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
private var disposable: CompositeDisposable = CompositeDisposable()
@@ -37,7 +40,7 @@ class QuickWizardListActivity : NoSplashAppCompatActivity() {
holder.from.text = DateUtil.timeString(QuickWizard[position].validFromDate())
holder.to.text = DateUtil.timeString(QuickWizard[position].validToDate())
holder.buttonText.text = QuickWizard[position].buttonText()
- holder.carbs.text = DecimalFormatter.to0Decimal(QuickWizard[position].carbs().toDouble()) + " g"
+ holder.carbs.text = resourceHelper.gs(R.string.format_carbs, QuickWizard[position].carbs())
}
override fun getItemCount(): Int = QuickWizard.size()
@@ -59,7 +62,7 @@ class QuickWizardListActivity : NoSplashAppCompatActivity() {
}
removeButton.setOnClickListener {
QuickWizard.remove(adapterPosition)
- RxBus.send(EventQuickWizardChange())
+ rxBus.send(EventQuickWizardChange())
}
}
}
@@ -82,15 +85,15 @@ class QuickWizardListActivity : NoSplashAppCompatActivity() {
override fun onResume() {
super.onResume()
- disposable += RxBus
- .toObservable(EventQuickWizardChange::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- val adapter = RecyclerViewAdapter(supportFragmentManager)
- overview_quickwizardactivity_recyclerview?.swapAdapter(adapter, false)
- }, {
- FabricPrivacy.logException(it)
- })
+ disposable += rxBus
+ .toObservable(EventQuickWizardChange::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ val adapter = RecyclerViewAdapter(supportFragmentManager)
+ overview_quickwizardactivity_recyclerview?.swapAdapter(adapter, false)
+ }, {
+ FabricPrivacy.logException(it)
+ })
}
override fun onPause() {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/EditQuickWizardDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/EditQuickWizardDialog.kt
index 8b70c637fa..393de5a445 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/EditQuickWizardDialog.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/EditQuickWizardDialog.kt
@@ -1,27 +1,32 @@
package info.nightscout.androidaps.plugins.general.overview.dialogs
-
import android.os.Bundle
-import android.view.*
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.Window
+import android.view.WindowManager
import android.widget.AdapterView
import android.widget.ArrayAdapter
-import androidx.fragment.app.DialogFragment
+import dagger.android.support.DaggerDialogFragment
import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.QuickWizard
import info.nightscout.androidaps.data.QuickWizardEntry
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventQuickWizardChange
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.SafeParse
import kotlinx.android.synthetic.main.okcancel.*
import kotlinx.android.synthetic.main.overview_editquickwizard_dialog.*
import org.json.JSONException
-import org.slf4j.LoggerFactory
import java.util.*
+import javax.inject.Inject
+class EditQuickWizardDialog : DaggerDialogFragment() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var aapsLogger: AAPSLogger
-class EditQuickWizardDialog : DialogFragment() {
- private val log = LoggerFactory.getLogger(EditQuickWizardDialog::class.java)
internal var entry = QuickWizard.newEmptyItem()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
@@ -52,11 +57,11 @@ class EditQuickWizardDialog : DialogFragment() {
entry.storage.put("useSuperBolus", overview_editquickwizard_usesuperbolus_spinner.selectedItemPosition)
entry.storage.put("useTempTarget", overview_editquickwizard_usetemptarget_spinner.selectedItemPosition)
} catch (e: JSONException) {
- log.error("Unhandled exception", e)
+ aapsLogger.error("Unhandled exception", e)
}
QuickWizard.addOrUpdate(entry)
- RxBus.send(EventQuickWizardChange())
+ rxBus.send(EventQuickWizardChange())
dismiss()
}
cancel.setOnClickListener { dismiss() }
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/DismissNotificationService.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/DismissNotificationService.java
index 3d1189de2b..7491b8abd6 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/DismissNotificationService.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/DismissNotificationService.java
@@ -27,7 +27,7 @@ public class DismissNotificationService extends IntentService {
@Override
protected void onHandleIntent(@Nullable Intent intent) {
- RxBus.INSTANCE.send(new EventDismissNotification(intent.getIntExtra("alertID", -1)));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(intent.getIntExtra("alertID", -1)));
}
public static PendingIntent deleteIntent(int id) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationRecyclerViewAdapter.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationRecyclerViewAdapter.java
index 8d1664c7e4..163c36e16d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationRecyclerViewAdapter.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationRecyclerViewAdapter.java
@@ -31,16 +31,18 @@ public class NotificationRecyclerViewAdapter extends RecyclerView.Adapter notificationsList;
+ private NotificationStore notificationStore;
- NotificationRecyclerViewAdapter(List notificationsList) {
+ NotificationRecyclerViewAdapter(NotificationStore nStore, List notificationsList) {
this.notificationsList = notificationsList;
+ this.notificationStore = nStore;
}
@NonNull
@Override
public NotificationsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.overview_notification_item, viewGroup, false);
- return new NotificationsViewHolder(v);
+ return new NotificationsViewHolder(notificationStore, v);
}
@Override
@@ -76,12 +78,14 @@ public class NotificationRecyclerViewAdapter extends RecyclerView.Adapter store = new ArrayList<>();
- private boolean usesChannels;
-
- public NotificationStore() {
- createNotificationChannel();
- }
-
- public class NotificationComparator implements Comparator {
- @Override
- public int compare(Notification o1, Notification o2) {
- return o1.level - o2.level;
- }
- }
-
- public synchronized boolean add(Notification n) {
- if (L.isEnabled(L.NOTIFICATION))
- log.debug("Notification received: " + n.text);
- for (Notification storeNotification : store) {
- if (storeNotification.id == n.id) {
- storeNotification.date = n.date;
- storeNotification.validTo = n.validTo;
- return false;
- }
- }
- store.add(n);
-
- if (SP.getBoolean(MainApp.gs(R.string.key_raise_notifications_as_android_notifications), false) && !(n instanceof NotificationWithAction)) {
- raiseSystemNotification(n);
- if (usesChannels && n.soundId != null && n.soundId != 0) {
- Intent alarm = new Intent(MainApp.instance().getApplicationContext(), AlarmSoundService.class);
- alarm.putExtra("soundid", n.soundId);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
- MainApp.instance().startForegroundService(alarm);
- else
- MainApp.instance().startService(alarm);
- }
-
- } else {
- if (n.soundId != null && n.soundId != 0) {
- Intent alarm = new Intent(MainApp.instance().getApplicationContext(), AlarmSoundService.class);
- alarm.putExtra("soundid", n.soundId);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
- MainApp.instance().startForegroundService(alarm);
- else
- MainApp.instance().startService(alarm);
- }
- }
-
- Collections.sort(store, new NotificationComparator());
- return true;
- }
-
- public synchronized boolean remove(int id) {
- for (int i = 0; i < store.size(); i++) {
- if (store.get(i).id == id) {
- if (store.get(i).soundId != null) {
- Intent alarm = new Intent(MainApp.instance().getApplicationContext(), AlarmSoundService.class);
- MainApp.instance().stopService(alarm);
- }
- store.remove(i);
- return true;
- }
- }
- return false;
- }
-
- private synchronized void removeExpired() {
- for (int i = 0; i < store.size(); i++) {
- Notification n = store.get(i);
- if (n.validTo.getTime() != 0 && n.validTo.getTime() < System.currentTimeMillis()) {
- store.remove(i);
- i--;
- }
- }
- }
-
- void snoozeTo(long timeToSnooze) {
- if (L.isEnabled(L.NOTIFICATION))
- log.debug("Snoozing alarm until: " + timeToSnooze);
- SP.putLong("snoozedTo", timeToSnooze);
- }
-
- private void unSnooze() {
- if (Notification.isAlarmForStaleData()) {
- Notification notification = new Notification(Notification.NSALARM, MainApp.gs(R.string.nsalarm_staledata), Notification.URGENT);
- SP.putLong("snoozedTo", System.currentTimeMillis());
- add(notification);
- if (L.isEnabled(L.NOTIFICATION))
- log.debug("Snoozed to current time and added back notification!");
- }
- }
-
- private void raiseSystemNotification(Notification n) {
- Context context = MainApp.instance().getApplicationContext();
- NotificationManager mgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
- Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(), MainApp.getIcon());
- int smallIcon = MainApp.getNotificationIcon();
- Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
- NotificationCompat.Builder notificationBuilder =
- new NotificationCompat.Builder(context, CHANNEL_ID)
- .setSmallIcon(smallIcon)
- .setLargeIcon(largeIcon)
- .setContentText(n.text)
- .setPriority(NotificationCompat.PRIORITY_MAX)
- .setDeleteIntent(DismissNotificationService.deleteIntent(n.id));
- if (n.level == Notification.URGENT) {
- notificationBuilder.setVibrate(new long[]{1000, 1000, 1000, 1000})
- .setContentTitle(MainApp.gs(R.string.urgent_alarm))
- .setSound(sound, AudioManager.STREAM_ALARM);
- } else {
- notificationBuilder.setVibrate(new long[]{0, 100, 50, 100, 50})
- .setContentTitle(MainApp.gs(R.string.info))
- ;
- }
- mgr.notify(n.id, notificationBuilder.build());
- }
-
- private void createNotificationChannel() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- usesChannels = true;
- NotificationManager mNotificationManager =
- (NotificationManager) MainApp.instance().getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
- @SuppressLint("WrongConstant") NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
- CHANNEL_ID,
- NotificationManager.IMPORTANCE_HIGH);
- mNotificationManager.createNotificationChannel(channel);
- }
- }
-
- public synchronized void updateNotifications(RecyclerView notificationsView) {
- removeExpired();
- unSnooze();
- if (store.size() > 0) {
- NotificationRecyclerViewAdapter adapter = new NotificationRecyclerViewAdapter(cloneStore());
- notificationsView.setAdapter(adapter);
- notificationsView.setVisibility(View.VISIBLE);
- } else {
- notificationsView.setVisibility(View.GONE);
- }
- }
-
- private synchronized List cloneStore() {
- List clone = new ArrayList<>(store.size());
- clone.addAll(store);
- return clone;
- }
-}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationStore.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationStore.kt
new file mode 100644
index 0000000000..c6f2045407
--- /dev/null
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationStore.kt
@@ -0,0 +1,172 @@
+package info.nightscout.androidaps.plugins.general.overview.notifications
+
+import android.annotation.SuppressLint
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.content.Context
+import android.content.Intent
+import android.graphics.BitmapFactory
+import android.media.AudioManager
+import android.media.RingtoneManager
+import android.os.Build
+import android.view.View
+import androidx.core.app.NotificationCompat
+import androidx.recyclerview.widget.RecyclerView
+import info.nightscout.androidaps.MainApp
+import info.nightscout.androidaps.R
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.services.AlarmSoundService
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
+
+/**
+ * Created by mike on 03.12.2016.
+ */
+@Singleton
+class NotificationStore @Inject constructor(
+ private val aapsLogger: AAPSLogger,
+ private val sp: SP,
+ private val resourceHelper: ResourceHelper,
+ private val mainApp: MainApp
+) {
+
+ var store: MutableList = ArrayList()
+ private var usesChannels = false
+
+ companion object {
+ private const val CHANNEL_ID = "AndroidAPS-Overview"
+ }
+
+ inner class NotificationComparator : Comparator {
+ override fun compare(o1: Notification, o2: Notification): Int {
+ return o1.level - o2.level
+ }
+ }
+
+ @Synchronized
+ fun add(n: Notification): Boolean {
+ aapsLogger.debug(LTag.NOTIFICATION, "Notification received: " + n.text)
+ for (storeNotification in store) {
+ if (storeNotification.id == n.id) {
+ storeNotification.date = n.date
+ storeNotification.validTo = n.validTo
+ return false
+ }
+ }
+ store.add(n)
+ if (sp.getBoolean(R.string.key_raise_notifications_as_android_notifications, false) && n !is NotificationWithAction) {
+ raiseSystemNotification(n)
+ if (usesChannels && n.soundId != null && n.soundId != 0) {
+ val alarm = Intent(mainApp, AlarmSoundService::class.java)
+ alarm.putExtra("soundid", n.soundId)
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) mainApp.startForegroundService(alarm) else mainApp.startService(alarm)
+ }
+ } else {
+ if (n.soundId != null && n.soundId != 0) {
+ val alarm = Intent(mainApp, AlarmSoundService::class.java)
+ alarm.putExtra("soundid", n.soundId)
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) mainApp.startForegroundService(alarm) else mainApp.startService(alarm)
+ }
+ }
+ Collections.sort(store, NotificationComparator())
+ return true
+ }
+
+ @Synchronized fun remove(id: Int): Boolean {
+ for (i in store.indices) {
+ if (store[i].id == id) {
+ if (store[i].soundId != null) {
+ val alarm = Intent(mainApp, AlarmSoundService::class.java)
+ mainApp.stopService(alarm)
+ }
+ store.removeAt(i)
+ return true
+ }
+ }
+ return false
+ }
+
+ @Synchronized private fun removeExpired() {
+ var i = 0
+ while (i < store.size) {
+ val n = store[i]
+ if (n.validTo.time != 0L && n.validTo.time < System.currentTimeMillis()) {
+ store.removeAt(i)
+ i--
+ }
+ i++
+ }
+ }
+
+ fun snoozeTo(timeToSnooze: Long) {
+ aapsLogger.debug(LTag.NOTIFICATION, "Snoozing alarm until: $timeToSnooze")
+ sp.putLong("snoozedTo", timeToSnooze)
+ }
+
+ private fun unSnooze() {
+ if (Notification.isAlarmForStaleData()) {
+ val notification = Notification(Notification.NSALARM, resourceHelper.gs(R.string.nsalarm_staledata), Notification.URGENT)
+ sp.putLong("snoozedTo", System.currentTimeMillis())
+ add(notification)
+ aapsLogger.debug(LTag.NOTIFICATION, "Snoozed to current time and added back notification!")
+ }
+ }
+
+ private fun raiseSystemNotification(n: Notification) {
+ val mgr = mainApp.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+ val largeIcon = BitmapFactory.decodeResource(mainApp.resources, MainApp.getIcon())
+ val smallIcon = MainApp.getNotificationIcon()
+ val sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM)
+ val notificationBuilder = NotificationCompat.Builder(mainApp, CHANNEL_ID)
+ .setSmallIcon(smallIcon)
+ .setLargeIcon(largeIcon)
+ .setContentText(n.text)
+ .setPriority(NotificationCompat.PRIORITY_MAX)
+ .setDeleteIntent(DismissNotificationService.deleteIntent(n.id))
+ if (n.level == Notification.URGENT) {
+ notificationBuilder.setVibrate(longArrayOf(1000, 1000, 1000, 1000))
+ .setContentTitle(resourceHelper.gs(R.string.urgent_alarm))
+ .setSound(sound, AudioManager.STREAM_ALARM)
+ } else {
+ notificationBuilder.setVibrate(longArrayOf(0, 100, 50, 100, 50))
+ .setContentTitle(resourceHelper.gs(R.string.info))
+ }
+ mgr.notify(n.id, notificationBuilder.build())
+ }
+
+ fun createNotificationChannel() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ usesChannels = true
+ val mNotificationManager = mainApp.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+ @SuppressLint("WrongConstant") val channel = NotificationChannel(CHANNEL_ID,
+ CHANNEL_ID,
+ NotificationManager.IMPORTANCE_HIGH)
+ mNotificationManager.createNotificationChannel(channel)
+ }
+ }
+
+ @Synchronized
+ fun updateNotifications(notificationsView: RecyclerView) {
+ removeExpired()
+ unSnooze()
+ if (store.size > 0) {
+ val adapter = NotificationRecyclerViewAdapter(this, cloneStore())
+ notificationsView.adapter = adapter
+ notificationsView.visibility = View.VISIBLE
+ } else {
+ notificationsView.visibility = View.GONE
+ }
+ }
+
+ @Synchronized
+ private fun cloneStore(): List {
+ val clone: MutableList = ArrayList(store.size)
+ clone.addAll(store)
+ return clone
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/DummyService.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/DummyService.java
index 007298ac76..90837133e3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/DummyService.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/DummyService.java
@@ -35,7 +35,7 @@ public class DummyService extends Service {
// TODO: I guess this was moved here in order to adhere to the 5 seconds rule to call "startForeground" after a Service was called as Foreground service?
// As onCreate() is not called every time a service is started, copied to onStartCommand().
startForeground(PersistentNotificationPlugin.ONGOING_NOTIFICATION_ID, PersistentNotificationPlugin.getPlugin().getLastNotification());
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.java
index 1cc2b1426a..651be3e65f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.java
@@ -56,6 +56,7 @@ public class PersistentNotificationPlugin extends PluginBase {
private static PersistentNotificationPlugin plugin;
private Notification notification;
+ @Deprecated
public static PersistentNotificationPlugin getPlugin() {
if (plugin == null) plugin = new PersistentNotificationPlugin();
return plugin;
@@ -93,49 +94,49 @@ public class PersistentNotificationPlugin extends PluginBase {
protected void onStart() {
super.onStart();
createNotificationChannel(); // make sure channels exist before triggering updates through the bus
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventRefreshOverview.class)
.observeOn(Schedulers.io())
.subscribe(event -> triggerNotificationUpdate(false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventExtendedBolusChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> triggerNotificationUpdate(false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTempBasalChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> triggerNotificationUpdate(false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTreatmentChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> triggerNotificationUpdate(false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventInitializationChanged.class)
.observeOn(Schedulers.io())
.subscribe(event -> triggerNotificationUpdate(false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNewBasalProfile.class)
.observeOn(Schedulers.io())
.subscribe(event -> triggerNotificationUpdate(false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAutosensCalculationFinished.class)
.observeOn(Schedulers.io())
.subscribe(event -> triggerNotificationUpdate(false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> triggerNotificationUpdate(false),
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorFragment.kt
index 3423d6d7df..01f99cf3dc 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorFragment.kt
@@ -4,14 +4,14 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.fragment.app.Fragment
import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.plugins.bus.RxBus.toObservable
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.smsCommunicator.events.EventSmsCommunicatorUpdateGui
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.HtmlHelper
+import info.nightscout.androidaps.utils.plusAssign
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.smscommunicator_fragment.*
@@ -20,10 +20,10 @@ import javax.inject.Inject
import kotlin.math.max
class SmsCommunicatorFragment : DaggerFragment() {
- private val disposable = CompositeDisposable()
+ @Inject lateinit var smsCommunicatorPlugin: SmsCommunicatorPlugin
+ @Inject lateinit var rxBus: RxBusWrapper
- @Inject
- lateinit var smsCommunicatorPlugin: SmsCommunicatorPlugin
+ private val disposable = CompositeDisposable()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
@@ -33,10 +33,10 @@ class SmsCommunicatorFragment : DaggerFragment() {
@Synchronized
override fun onResume() {
super.onResume()
- disposable.add(toObservable(EventSmsCommunicatorUpdateGui::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGui() }) { FabricPrivacy.logException(it) }
- )
+ disposable += rxBus
+ .toObservable(EventSmsCommunicatorUpdateGui::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGui() }) { FabricPrivacy.logException(it) }
updateGui()
}
@@ -59,13 +59,15 @@ class SmsCommunicatorFragment : DaggerFragment() {
for (x in start until smsCommunicatorPlugin.messages.size) {
val sms = smsCommunicatorPlugin.messages[x]
when {
- sms.ignored -> {
+ sms.ignored -> {
logText += DateUtil.timeString(sms.date) + " <<< " + "░ " + sms.phoneNumber + " " + sms.text + "
"
}
+
sms.received -> {
logText += DateUtil.timeString(sms.date) + " <<< " + (if (sms.processed) "● " else "○ ") + sms.phoneNumber + " " + sms.text + "
"
}
- sms.sent -> {
+
+ sms.sent -> {
logText += DateUtil.timeString(sms.date) + " >>> " + (if (sms.processed) "● " else "○ ") + sms.phoneNumber + " " + sms.text + "
"
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt
index dbdd3c52c2..635450f4f1 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.kt
@@ -23,11 +23,9 @@ import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.logging.AAPSLogger
-import info.nightscout.androidaps.logging.L
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
-import info.nightscout.androidaps.plugins.bus.RxBus.send
-import info.nightscout.androidaps.plugins.bus.RxBus.toObservable
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions
@@ -45,7 +43,6 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
import org.apache.commons.lang3.StringUtils
-import org.slf4j.LoggerFactory
import java.text.Normalizer
import java.util.*
import javax.inject.Inject
@@ -53,11 +50,12 @@ import javax.inject.Singleton
@Singleton
class SmsCommunicatorPlugin @Inject constructor(
- val configBuilderPlugin: ConfigBuilderPlugin,
- val treatmentsPlugin: TreatmentsPlugin,
- val resourceHelper: ResourceHelper,
- val constraintChecker: ConstraintChecker,
- val aapsLogger: AAPSLogger
+ private val configBuilderPlugin: ConfigBuilderPlugin,
+ private val treatmentsPlugin: TreatmentsPlugin,
+ private val resourceHelper: ResourceHelper,
+ private val constraintChecker: ConstraintChecker,
+ private val aapsLogger: AAPSLogger,
+ private val rxBus: RxBusWrapper
) : PluginBase(PluginDescription()
.mainType(PluginType.GENERAL)
.fragmentClass(SmsCommunicatorFragment::class.java.name)
@@ -66,6 +64,7 @@ class SmsCommunicatorPlugin @Inject constructor(
.preferencesId(R.xml.pref_smscommunicator)
.description(R.string.description_sms_communicator)
) {
+
private val disposable = CompositeDisposable()
var allowedNumbers: MutableList = ArrayList()
var messageToConfirm: AuthRequest? = null
@@ -92,10 +91,10 @@ class SmsCommunicatorPlugin @Inject constructor(
override fun onStart() {
processSettings(null)
super.onStart()
- disposable.add(toObservable(EventPreferenceChange::class.java)
+ disposable += rxBus
+ .toObservable(EventPreferenceChange::class.java)
.observeOn(Schedulers.io())
.subscribe({ event: EventPreferenceChange? -> processSettings(event) }) { FabricPrivacy.logException(it) }
- )
}
override fun onStop() {
@@ -151,7 +150,7 @@ class SmsCommunicatorPlugin @Inject constructor(
for (number in substrings) {
val cleaned = number.replace("\\s+".toRegex(), "")
allowedNumbers.add(cleaned)
- aapsLogger.debug(LTag.SMS,"Found allowed number: $cleaned")
+ aapsLogger.debug(LTag.SMS, "Found allowed number: $cleaned")
}
}
}
@@ -183,19 +182,19 @@ class SmsCommunicatorPlugin @Inject constructor(
fun processSms(receivedSms: Sms) {
if (!isEnabled(PluginType.GENERAL)) {
- aapsLogger.debug(LTag.SMS,"Ignoring SMS. Plugin disabled.")
+ aapsLogger.debug(LTag.SMS, "Ignoring SMS. Plugin disabled.")
return
}
if (!isAllowedNumber(receivedSms.phoneNumber)) {
- aapsLogger.debug(LTag.SMS,"Ignoring SMS from: " + receivedSms.phoneNumber + ". Sender not allowed")
+ aapsLogger.debug(LTag.SMS, "Ignoring SMS from: " + receivedSms.phoneNumber + ". Sender not allowed")
receivedSms.ignored = true
messages.add(receivedSms)
- send(EventSmsCommunicatorUpdateGui())
+ rxBus.send(EventSmsCommunicatorUpdateGui())
return
}
val pump = configBuilderPlugin.activePump ?: return
messages.add(receivedSms)
- aapsLogger.debug(LTag.SMS,receivedSms.toString())
+ aapsLogger.debug(LTag.SMS, receivedSms.toString())
val splitted = receivedSms.text.split(Regex("\\s+")).toTypedArray()
val remoteCommandsAllowed = SP.getBoolean(R.string.key_smscommunicator_remotecommandsallowed, false)
if (splitted.isNotEmpty() && isCommand(splitted[0].toUpperCase(Locale.getDefault()), receivedSms.phoneNumber)) {
@@ -260,7 +259,7 @@ class SmsCommunicatorPlugin @Inject constructor(
} else sendSMS(Sms(receivedSms.phoneNumber, R.string.smscommunicator_unknowncommand))
}
}
- send(EventSmsCommunicatorUpdateGui())
+ rxBus.send(EventSmsCommunicatorUpdateGui())
}
private fun processBG(receivedSms: Sms) {
@@ -277,10 +276,10 @@ class SmsCommunicatorPlugin @Inject constructor(
}
val glucoseStatus = GlucoseStatus.getGlucoseStatusData()
if (glucoseStatus != null) reply += resourceHelper.gs(R.string.sms_delta) + " " + Profile.toUnitsString(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units) + " " + units + ", "
- TreatmentsPlugin.getPlugin().updateTotalIOBTreatments()
- val bolusIob = TreatmentsPlugin.getPlugin().lastCalculationTreatments.round()
- TreatmentsPlugin.getPlugin().updateTotalIOBTempBasals()
- val basalIob = TreatmentsPlugin.getPlugin().lastCalculationTempBasals.round()
+ treatmentsPlugin.updateTotalIOBTreatments()
+ val bolusIob = treatmentsPlugin.lastCalculationTreatments.round()
+ treatmentsPlugin.updateTotalIOBTempBasals()
+ val basalIob = treatmentsPlugin.lastCalculationTempBasals.round()
val cobInfo = IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "SMS COB")
reply += (resourceHelper.gs(R.string.sms_iob) + " " + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U ("
+ resourceHelper.gs(R.string.sms_bolus) + " " + DecimalFormatter.to2Decimal(bolusIob.iob) + "U "
@@ -298,7 +297,7 @@ class SmsCommunicatorPlugin @Inject constructor(
loopPlugin.setPluginEnabled(PluginType.LOOP, false)
configBuilderPlugin.commandQueue.cancelTempBasal(true, object : Callback() {
override fun run() {
- send(EventRefreshOverview("SMS_LOOP_STOP"))
+ rxBus.send(EventRefreshOverview("SMS_LOOP_STOP"))
val replyText = resourceHelper.gs(R.string.smscommunicator_loophasbeendisabled) + " " +
resourceHelper.gs(if (result.success) R.string.smscommunicator_tempbasalcanceled else R.string.smscommunicator_tempbasalcancelfailed)
sendSMS(Sms(receivedSms.phoneNumber, replyText))
@@ -314,7 +313,7 @@ class SmsCommunicatorPlugin @Inject constructor(
if (!loopPlugin.isEnabled(PluginType.LOOP)) {
loopPlugin.setPluginEnabled(PluginType.LOOP, true)
sendSMS(Sms(receivedSms.phoneNumber, R.string.smscommunicator_loophasbeenenabled))
- send(EventRefreshOverview("SMS_LOOP_START"))
+ rxBus.send(EventRefreshOverview("SMS_LOOP_START"))
} else
sendSMS(Sms(receivedSms.phoneNumber, R.string.smscommunicator_loopisenabled))
receivedSms.processed = true
@@ -333,7 +332,7 @@ class SmsCommunicatorPlugin @Inject constructor(
"RESUME" -> {
LoopPlugin.getPlugin().suspendTo(0)
- send(EventRefreshOverview("SMS_LOOP_RESUME"))
+ rxBus.send(EventRefreshOverview("SMS_LOOP_RESUME"))
NSUpload.uploadOpenAPSOffline(0.0)
sendSMSToAllNumbers(Sms(receivedSms.phoneNumber, R.string.smscommunicator_loopresumed))
}
@@ -358,7 +357,7 @@ class SmsCommunicatorPlugin @Inject constructor(
if (result.success) {
LoopPlugin.getPlugin().suspendTo(System.currentTimeMillis() + anInteger() * 60L * 1000)
NSUpload.uploadOpenAPSOffline(anInteger() * 60.toDouble())
- send(EventRefreshOverview("SMS_LOOP_SUSPENDED"))
+ rxBus.send(EventRefreshOverview("SMS_LOOP_SUSPENDED"))
val replyText = resourceHelper.gs(R.string.smscommunicator_loopsuspended) + " " +
resourceHelper.gs(if (result.success) R.string.smscommunicator_tempbasalcanceled else R.string.smscommunicator_tempbasalcancelfailed)
sendSMSToAllNumbers(Sms(receivedSms.phoneNumber, replyText))
@@ -380,8 +379,8 @@ class SmsCommunicatorPlugin @Inject constructor(
private fun processTREATMENTS(splitted: Array, receivedSms: Sms) {
if (splitted[1].toUpperCase(Locale.getDefault()) == "REFRESH") {
- TreatmentsPlugin.getPlugin().service.resetTreatments()
- send(EventNSClientRestart())
+ treatmentsPlugin.service.resetTreatments()
+ rxBus.send(EventNSClientRestart())
sendSMS(Sms(receivedSms.phoneNumber, "TREATMENTS REFRESH SENT"))
receivedSms.processed = true
} else
@@ -390,7 +389,7 @@ class SmsCommunicatorPlugin @Inject constructor(
private fun processNSCLIENT(splitted: Array, receivedSms: Sms) {
if (splitted[1].toUpperCase(Locale.getDefault()) == "RESTART") {
- send(EventNSClientRestart())
+ rxBus.send(EventNSClientRestart())
sendSMS(Sms(receivedSms.phoneNumber, "NSCLIENT RESTART SENT"))
receivedSms.processed = true
} else
@@ -670,7 +669,7 @@ class SmsCommunicatorPlugin @Inject constructor(
.source(Source.USER)
.low(Profile.toMgdl(eatingSoonTT, currentProfile.units))
.high(Profile.toMgdl(eatingSoonTT, currentProfile.units))
- TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget)
+ treatmentsPlugin.addToHistoryTempTarget(tempTarget)
val tt = if (currentProfile.units == Constants.MMOL) {
DecimalFormatter.to1Decimal(eatingSoonTT)
} else DecimalFormatter.to0Decimal(eatingSoonTT)
@@ -781,7 +780,7 @@ class SmsCommunicatorPlugin @Inject constructor(
.source(Source.USER)
.low(Profile.toMgdl(tt, units))
.high(Profile.toMgdl(tt, units))
- TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget)
+ treatmentsPlugin.addToHistoryTempTarget(tempTarget)
val ttString = if (units == Constants.MMOL) DecimalFormatter.to1Decimal(tt) else DecimalFormatter.to0Decimal(tt)
val replyText = String.format(resourceHelper.gs(R.string.smscommunicator_tt_set), ttString, ttDuration)
sendSMSToAllNumbers(Sms(receivedSms.phoneNumber, replyText))
@@ -799,7 +798,7 @@ class SmsCommunicatorPlugin @Inject constructor(
.duration(0)
.low(0.0)
.high(0.0)
- TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget)
+ treatmentsPlugin.addToHistoryTempTarget(tempTarget)
val replyText = String.format(resourceHelper.gs(R.string.smscommunicator_tt_canceled))
sendSMSToAllNumbers(Sms(receivedSms.phoneNumber, replyText))
}
@@ -860,7 +859,7 @@ class SmsCommunicatorPlugin @Inject constructor(
val smsManager = SmsManager.getDefault()
sms.text = stripAccents(sms.text)
try {
- aapsLogger.debug(LTag.SMS,"Sending SMS to " + sms.phoneNumber + ": " + sms.text)
+ aapsLogger.debug(LTag.SMS, "Sending SMS to " + sms.phoneNumber + ": " + sms.text)
if (sms.text.toByteArray().size <= 140) smsManager.sendTextMessage(sms.phoneNumber, null, sms.text, null, null)
else {
val parts = smsManager.divideMessage(sms.text)
@@ -871,19 +870,19 @@ class SmsCommunicatorPlugin @Inject constructor(
} catch (e: IllegalArgumentException) {
return if (e.message == "Invalid message body") {
val notification = Notification(Notification.INVALID_MESSAGE_BODY, resourceHelper.gs(R.string.smscommunicator_messagebody), Notification.NORMAL)
- send(EventNewNotification(notification))
+ rxBus.send(EventNewNotification(notification))
false
} else {
val notification = Notification(Notification.INVALID_PHONE_NUMBER, resourceHelper.gs(R.string.smscommunicator_invalidphonennumber), Notification.NORMAL)
- send(EventNewNotification(notification))
+ rxBus.send(EventNewNotification(notification))
false
}
} catch (e: SecurityException) {
val notification = Notification(Notification.MISSING_SMS_PERMISSION, resourceHelper.gs(R.string.smscommunicator_missingsmspermission), Notification.NORMAL)
- send(EventNewNotification(notification))
+ rxBus.send(EventNewNotification(notification))
return false
}
- send(EventSmsCommunicatorUpdateGui())
+ rxBus.send(EventSmsCommunicatorUpdateGui())
return true
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolFragment.kt
index f83b9cc243..39ce79efaf 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolFragment.kt
@@ -5,20 +5,26 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ScrollView
-import androidx.fragment.app.Fragment
+import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.tidepool.comm.TidepoolUploader
import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolDoUpload
import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolResetData
import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolUpdateGUI
import info.nightscout.androidaps.utils.FabricPrivacy
-import info.nightscout.androidaps.utils.SP
+import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.sharedPreferences.SP
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.tidepool_fragment.*
+import javax.inject.Inject
-class TidepoolFragment : Fragment() {
+class TidepoolFragment : DaggerFragment() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var tidepoolPlugin: TidepoolPlugin
+ @Inject lateinit var tidepoolUploader: TidepoolUploader
+ @Inject lateinit var sp: SP
private var disposable: CompositeDisposable = CompositeDisposable()
@@ -28,28 +34,27 @@ class TidepoolFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- tidepool_login.setOnClickListener { TidepoolUploader.doLogin(false) }
- tidepool_uploadnow.setOnClickListener { RxBus.send(EventTidepoolDoUpload()) }
- tidepool_removeall.setOnClickListener { RxBus.send(EventTidepoolResetData()) }
- tidepool_resertstart.setOnClickListener { SP.putLong(R.string.key_tidepool_last_end, 0) }
+ tidepool_login.setOnClickListener { tidepoolUploader.doLogin(false) }
+ tidepool_uploadnow.setOnClickListener { rxBus.send(EventTidepoolDoUpload()) }
+ tidepool_removeall.setOnClickListener { rxBus.send(EventTidepoolResetData()) }
+ tidepool_resertstart.setOnClickListener { sp.putLong(R.string.key_tidepool_last_end, 0) }
}
@Synchronized
override fun onResume() {
super.onResume()
- disposable.add(RxBus
- .toObservable(EventTidepoolUpdateGUI::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- TidepoolPlugin.updateLog()
- tidepool_log?.text = TidepoolPlugin.textLog
- tidepool_status?.text = TidepoolUploader.connectionStatus.name
- tidepool_log?.text = TidepoolPlugin.textLog
- tidepool_logscrollview?.fullScroll(ScrollView.FOCUS_DOWN)
- }, {
- FabricPrivacy.logException(it)
- })
- )
+ disposable += rxBus
+ .toObservable(EventTidepoolUpdateGUI::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ tidepoolPlugin.updateLog()
+ tidepool_log?.text = tidepoolPlugin.textLog
+ tidepool_status?.text = tidepoolUploader.connectionStatus.name
+ tidepool_log?.text = tidepoolPlugin.textLog
+ tidepool_logscrollview?.fullScroll(ScrollView.FOCUS_DOWN)
+ }, {
+ FabricPrivacy.logException(it)
+ })
}
@Synchronized
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolPlugin.kt
index e8971ab9d5..ecd6c6632f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolPlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/TidepoolPlugin.kt
@@ -11,9 +11,13 @@ import info.nightscout.androidaps.events.EventPreferenceChange
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.tidepool.comm.TidepoolUploader
+import info.nightscout.androidaps.plugins.general.tidepool.comm.TidepoolUploader.ConnectionStatus.CONNECTED
+import info.nightscout.androidaps.plugins.general.tidepool.comm.TidepoolUploader.ConnectionStatus.DISCONNECTED
+import info.nightscout.androidaps.plugins.general.tidepool.comm.UploadChunk
import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolDoUpload
import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolResetData
import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolStatus
@@ -21,21 +25,37 @@ import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolU
import info.nightscout.androidaps.plugins.general.tidepool.utils.RateLimit
import info.nightscout.androidaps.receivers.ChargingStateReceiver
import info.nightscout.androidaps.receivers.NetworkChangeReceiver
-import info.nightscout.androidaps.utils.*
+import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.HtmlHelper
+import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.ToastUtils
+import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
-import org.slf4j.LoggerFactory
import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
-object TidepoolPlugin : PluginBase(PluginDescription()
- .mainType(PluginType.GENERAL)
- .pluginName(R.string.tidepool)
- .shortName(R.string.tidepool_shortname)
- .fragmentClass(TidepoolFragment::class.qualifiedName)
- .preferencesId(R.xml.pref_tidepool)
- .description(R.string.description_tidepool)
+@Singleton
+class TidepoolPlugin @Inject constructor(
+ private val aapsLogger: AAPSLogger,
+ private val rxBus: RxBusWrapper,
+ private val mainApp: MainApp,
+ private val resourceHelper: ResourceHelper,
+ private val tidepoolUploader: TidepoolUploader,
+ private val uploadChunk: UploadChunk,
+ private val sp: SP
+) : PluginBase(PluginDescription()
+ .mainType(PluginType.GENERAL)
+ .pluginName(R.string.tidepool)
+ .shortName(R.string.tidepool_shortname)
+ .fragmentClass(TidepoolFragment::class.qualifiedName)
+ .preferencesId(R.xml.pref_tidepool)
+ .description(R.string.description_tidepool)
) {
- private val log = LoggerFactory.getLogger(L.TIDEPOOL)
+
private var disposable: CompositeDisposable = CompositeDisposable()
private val listLog = ArrayList()
@@ -43,66 +63,66 @@ object TidepoolPlugin : PluginBase(PluginDescription()
override fun onStart() {
super.onStart()
- disposable += RxBus
- .toObservable(EventTidepoolDoUpload::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ doUpload() }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventTidepoolResetData::class.java)
- .observeOn(Schedulers.io())
- .subscribe({
- if (TidepoolUploader.connectionStatus != TidepoolUploader.ConnectionStatus.CONNECTED) {
- log.debug("Not connected for delete Dataset")
- } else {
- TidepoolUploader.deleteDataSet()
- SP.putLong(R.string.key_tidepool_last_end, 0)
- TidepoolUploader.doLogin()
- }
- }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventTidepoolStatus::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ event -> addToLog(event) }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventNewBG::class.java)
- .observeOn(Schedulers.io())
- .filter { it.bgReading != null } // better would be optional in API level >24
- .map { it.bgReading }
- .subscribe({ bgReading ->
- if (bgReading!!.date < TidepoolUploader.getLastEnd())
- TidepoolUploader.setLastEnd(bgReading.date)
- if (isEnabled(PluginType.GENERAL)
- && (!SP.getBoolean(R.string.key_tidepool_only_while_charging, false) || ChargingStateReceiver.isCharging())
- && (!SP.getBoolean(R.string.key_tidepool_only_while_unmetered, false) || NetworkChangeReceiver.isWifiConnected())
- && RateLimit.rateLimit("tidepool-new-data-upload", T.mins(4).secs().toInt()))
- doUpload()
- }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventPreferenceChange::class.java)
- .observeOn(Schedulers.io())
- .subscribe({ event ->
- if (event.isChanged(R.string.key_tidepool_dev_servers)
- || event.isChanged(R.string.key_tidepool_username)
- || event.isChanged(R.string.key_tidepool_password)
- )
- TidepoolUploader.resetInstance()
- }, {
- FabricPrivacy.logException(it)
- })
- disposable += RxBus
- .toObservable(EventNetworkChange::class.java)
- .observeOn(Schedulers.io())
- .subscribe({}, {
- FabricPrivacy.logException(it)
- }) // TODO start upload on wifi connect
+ disposable += rxBus
+ .toObservable(EventTidepoolDoUpload::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ doUpload() }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventTidepoolResetData::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({
+ if (tidepoolUploader.connectionStatus != CONNECTED) {
+ aapsLogger.debug(LTag.TIDEPOOL, "Not connected for delete Dataset")
+ } else {
+ tidepoolUploader.deleteDataSet()
+ sp.putLong(R.string.key_tidepool_last_end, 0)
+ tidepoolUploader.doLogin()
+ }
+ }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventTidepoolStatus::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ event -> addToLog(event) }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventNewBG::class.java)
+ .observeOn(Schedulers.io())
+ .filter { it.bgReading != null } // better would be optional in API level >24
+ .map { it.bgReading }
+ .subscribe({ bgReading ->
+ if (bgReading!!.date < uploadChunk.getLastEnd())
+ uploadChunk.setLastEnd(bgReading.date)
+ if (isEnabled(PluginType.GENERAL)
+ && (!sp.getBoolean(R.string.key_tidepool_only_while_charging, false) || ChargingStateReceiver.isCharging())
+ && (!sp.getBoolean(R.string.key_tidepool_only_while_unmetered, false) || NetworkChangeReceiver.isWifiConnected())
+ && RateLimit.rateLimit("tidepool-new-data-upload", T.mins(4).secs().toInt()))
+ doUpload()
+ }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventPreferenceChange::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ event ->
+ if (event.isChanged(R.string.key_tidepool_dev_servers)
+ || event.isChanged(R.string.key_tidepool_username)
+ || event.isChanged(R.string.key_tidepool_password)
+ )
+ tidepoolUploader.resetInstance()
+ }, {
+ FabricPrivacy.logException(it)
+ })
+ disposable += rxBus
+ .toObservable(EventNetworkChange::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({}, {
+ FabricPrivacy.logException(it)
+ }) // TODO start upload on wifi connect
}
@@ -114,19 +134,20 @@ object TidepoolPlugin : PluginBase(PluginDescription()
override fun preprocessPreferences(preferenceFragment: PreferenceFragment) {
super.preprocessPreferences(preferenceFragment)
- val tidepoolTestLogin = preferenceFragment.findPreference(MainApp.gs(R.string.key_tidepool_test_login))
+ val tidepoolTestLogin = preferenceFragment.findPreference(resourceHelper.gs(R.string.key_tidepool_test_login))
tidepoolTestLogin?.setOnPreferenceClickListener {
- TidepoolUploader.testLogin(preferenceFragment.getActivity())
+ tidepoolUploader.testLogin(preferenceFragment.getActivity())
false
}
}
private fun doUpload() =
- when (TidepoolUploader.connectionStatus) {
- TidepoolUploader.ConnectionStatus.FAILED -> {}
- TidepoolUploader.ConnectionStatus.CONNECTING -> {}
- TidepoolUploader.ConnectionStatus.DISCONNECTED -> TidepoolUploader.doLogin(true)
- TidepoolUploader.ConnectionStatus.CONNECTED -> TidepoolUploader.doUpload()
+ when (tidepoolUploader.connectionStatus) {
+ DISCONNECTED -> tidepoolUploader.doLogin(true)
+ CONNECTED -> tidepoolUploader.doUpload()
+
+ else -> {
+ }
}
@Synchronized
@@ -138,7 +159,7 @@ object TidepoolPlugin : PluginBase(PluginDescription()
listLog.removeAt(0)
}
}
- RxBus.send(EventTidepoolUpdateGUI())
+ rxBus.send(EventTidepoolUpdateGUI())
}
@Synchronized
@@ -152,7 +173,7 @@ object TidepoolPlugin : PluginBase(PluginDescription()
}
textLog = HtmlHelper.fromHtml(newTextLog.toString())
} catch (e: OutOfMemoryError) {
- ToastUtils.showToastInUiThread(MainApp.instance().applicationContext, "Out of memory!\nStop using this phone !!!", R.raw.error)
+ ToastUtils.showToastInUiThread(mainApp, "Out of memory!\nStop using this phone !!!", R.raw.error)
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/TidepoolCallback.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/TidepoolCallback.kt
index 58ba913e91..d2fc11e2c6 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/TidepoolCallback.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/TidepoolCallback.kt
@@ -20,7 +20,7 @@ internal class TidepoolCallback(private val session: Session, val name: Strin
} else {
val msg = name + " was not successful: " + response.code() + " " + response.message()
if (L.isEnabled(L.TIDEPOOL)) log.debug(msg)
- RxBus.send(EventTidepoolStatus(msg))
+ RxBus.INSTANCE.send(EventTidepoolStatus(msg))
onFail()
}
}
@@ -28,7 +28,7 @@ internal class TidepoolCallback(private val session: Session, val name: Strin
override fun onFailure(call: Call, t: Throwable) {
val msg = "$name Failed: $t"
if (L.isEnabled(L.TIDEPOOL)) log.debug(msg)
- RxBus.send(EventTidepoolStatus(msg))
+ RxBus.INSTANCE.send(EventTidepoolStatus(msg))
onFail()
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/TidepoolUploader.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/TidepoolUploader.kt
index 5a65206f83..8091b0d421 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/TidepoolUploader.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/TidepoolUploader.kt
@@ -6,32 +6,47 @@ import android.os.SystemClock
import info.nightscout.androidaps.BuildConfig
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolStatus
-import info.nightscout.androidaps.plugins.general.tidepool.messages.*
+import info.nightscout.androidaps.plugins.general.tidepool.messages.AuthReplyMessage
+import info.nightscout.androidaps.plugins.general.tidepool.messages.AuthRequestMessage
+import info.nightscout.androidaps.plugins.general.tidepool.messages.DatasetReplyMessage
+import info.nightscout.androidaps.plugins.general.tidepool.messages.OpenDatasetRequestMessage
+import info.nightscout.androidaps.plugins.general.tidepool.messages.UploadReplyMessage
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.OKDialog
-import info.nightscout.androidaps.utils.SP
import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.OkHttpClient
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.logging.HttpLoggingInterceptor
-import org.slf4j.LoggerFactory
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
+import javax.inject.Inject
+import javax.inject.Singleton
-object TidepoolUploader {
-
- private val log = LoggerFactory.getLogger(L.TIDEPOOL)
+@Singleton
+class TidepoolUploader @Inject constructor(
+ private val aapsLogger: AAPSLogger,
+ private val rxBus: RxBusWrapper,
+ private val mainApp: MainApp,
+ private val resourceHelper: ResourceHelper,
+ private val sp: SP,
+ private val uploadChunk: UploadChunk
+) {
private var wl: PowerManager.WakeLock? = null
- private const val INTEGRATION_BASE_URL = "https://int-api.tidepool.org"
- private const val PRODUCTION_BASE_URL = "https://api.tidepool.org"
-
- internal const val VERSION = "0.0.1"
+ companion object {
+ private const val INTEGRATION_BASE_URL = "https://int-api.tidepool.org"
+ private const val PRODUCTION_BASE_URL = "https://api.tidepool.org"
+ internal const val VERSION = "0.0.1"
+ const val PUMP_TYPE = "Tandem"
+ }
private var retrofit: Retrofit? = null
@@ -41,31 +56,29 @@ object TidepoolUploader {
DISCONNECTED, CONNECTING, CONNECTED, FAILED
}
- val PUMPTYPE = "Tandem"
-
var connectionStatus: ConnectionStatus = ConnectionStatus.DISCONNECTED
- fun getRetrofitInstance(): Retrofit? {
+ private fun getRetrofitInstance(): Retrofit? {
if (retrofit == null) {
val httpLoggingInterceptor = HttpLoggingInterceptor()
httpLoggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
val client = OkHttpClient.Builder()
- .addInterceptor(httpLoggingInterceptor)
- .addInterceptor(InfoInterceptor(TidepoolUploader::class.java.name))
- .build()
+ .addInterceptor(httpLoggingInterceptor)
+ .addInterceptor(InfoInterceptor(TidepoolUploader::class.java.name))
+ .build()
retrofit = Retrofit.Builder()
- .baseUrl(if (SP.getBoolean(R.string.key_tidepool_dev_servers, false)) INTEGRATION_BASE_URL else PRODUCTION_BASE_URL)
- .client(client)
- .addConverterFactory(GsonConverterFactory.create())
- .build()
+ .baseUrl(if (sp.getBoolean(R.string.key_tidepool_dev_servers, false)) INTEGRATION_BASE_URL else PRODUCTION_BASE_URL)
+ .client(client)
+ .addConverterFactory(GsonConverterFactory.create())
+ .build()
}
return retrofit
}
- fun createSession(): Session {
+ private fun createSession(): Session {
val service = getRetrofitInstance()?.create(TidepoolApiService::class.java)
return Session(AuthRequestMessage.getAuthRequestHeader(), SESSION_TOKEN_HEADER, service)
}
@@ -73,16 +86,14 @@ object TidepoolUploader {
// TODO: call on preference change
fun resetInstance() {
retrofit = null
- if (L.isEnabled(L.TIDEPOOL))
- log.debug("Instance reset")
+ aapsLogger.debug(LTag.TIDEPOOL, "Instance reset")
connectionStatus = ConnectionStatus.DISCONNECTED
}
@Synchronized
fun doLogin(doUpload: Boolean = false) {
- if (connectionStatus == TidepoolUploader.ConnectionStatus.CONNECTED || connectionStatus == TidepoolUploader.ConnectionStatus.CONNECTING) {
- if (L.isEnabled(L.TIDEPOOL))
- log.debug("Already connected")
+ if (connectionStatus == ConnectionStatus.CONNECTED || connectionStatus == ConnectionStatus.CONNECTING) {
+ aapsLogger.debug(LTag.TIDEPOOL, "Already connected")
return
}
// TODO failure backoff
@@ -90,21 +101,21 @@ object TidepoolUploader {
session = createSession()
val authHeader = session?.authHeader
if (authHeader != null) {
- connectionStatus = TidepoolUploader.ConnectionStatus.CONNECTING
- RxBus.send(EventTidepoolStatus(("Connecting")))
+ connectionStatus = ConnectionStatus.CONNECTING
+ rxBus.send(EventTidepoolStatus(("Connecting")))
val call = session?.service?.getLogin(authHeader)
call?.enqueue(TidepoolCallback(session!!, "Login", {
startSession(session!!, doUpload)
}, {
- connectionStatus = TidepoolUploader.ConnectionStatus.FAILED
+ connectionStatus = ConnectionStatus.FAILED
releaseWakeLock()
}))
return
} else {
- if (L.isEnabled(L.TIDEPOOL)) log.debug("Cannot do login as user credentials have not been set correctly")
- connectionStatus = TidepoolUploader.ConnectionStatus.FAILED
- RxBus.send(EventTidepoolStatus(("Invalid credentials")))
+ aapsLogger.debug(LTag.TIDEPOOL, "Cannot do login as user credentials have not been set correctly")
+ connectionStatus = ConnectionStatus.FAILED
+ rxBus.send(EventTidepoolStatus(("Invalid credentials")))
releaseWakeLock()
return
}
@@ -116,13 +127,13 @@ object TidepoolUploader {
val call = session.service?.getLogin(it)
call?.enqueue(TidepoolCallback(session, "Login", {
- OKDialog.show(rootContext, MainApp.gs(R.string.tidepool), "Successfully logged into Tidepool.")
+ OKDialog.show(rootContext, resourceHelper.gs(R.string.tidepool), "Successfully logged into Tidepool.")
}, {
- OKDialog.show(rootContext, MainApp.gs(R.string.tidepool), "Failed to log into Tidepool.\nCheck that your user name and password are correct.")
+ OKDialog.show(rootContext, resourceHelper.gs(R.string.tidepool), "Failed to log into Tidepool.\nCheck that your user name and password are correct.")
}))
}
- ?: OKDialog.show(rootContext, MainApp.gs(R.string.tidepool), "Cannot do login as user credentials have not been set correctly")
+ ?: OKDialog.show(rootContext, resourceHelper.gs(R.string.tidepool), "Cannot do login as user credentials have not been set correctly")
}
@@ -131,43 +142,42 @@ object TidepoolUploader {
if (session.authReply?.userid != null) {
// See if we already have an open data set to write to
val datasetCall = session.service!!.getOpenDataSets(session.token!!,
- session.authReply!!.userid!!, BuildConfig.APPLICATION_ID, 1)
+ session.authReply!!.userid!!, BuildConfig.APPLICATION_ID, 1)
datasetCall.enqueue(TidepoolCallback>(session, "Get Open Datasets", {
if (session.datasetReply == null) {
- RxBus.send(EventTidepoolStatus(("Creating new dataset")))
+ rxBus.send(EventTidepoolStatus(("Creating new dataset")))
val call = session.service.openDataSet(session.token!!, session.authReply!!.userid!!, OpenDatasetRequestMessage().getBody())
call.enqueue(TidepoolCallback(session, "Open New Dataset", {
- connectionStatus = TidepoolUploader.ConnectionStatus.CONNECTED
- RxBus.send(EventTidepoolStatus(("New dataset OK")))
+ connectionStatus = ConnectionStatus.CONNECTED
+ rxBus.send(EventTidepoolStatus(("New dataset OK")))
if (doUpload) doUpload()
else
releaseWakeLock()
}, {
- RxBus.send(EventTidepoolStatus(("New dataset FAILED")))
- connectionStatus = TidepoolUploader.ConnectionStatus.FAILED
+ rxBus.send(EventTidepoolStatus(("New dataset FAILED")))
+ connectionStatus = ConnectionStatus.FAILED
releaseWakeLock()
}))
} else {
- if (L.isEnabled(L.TIDEPOOL))
- log.debug("Existing Dataset: " + session.datasetReply!!.getUploadId())
+ aapsLogger.debug(LTag.TIDEPOOL, "Existing Dataset: " + session.datasetReply!!.getUploadId())
// TODO: Wouldn't need to do this if we could block on the above `call.enqueue`.
// ie, do the openDataSet conditionally, and then do `doUpload` either way.
- connectionStatus = TidepoolUploader.ConnectionStatus.CONNECTED
- RxBus.send(EventTidepoolStatus(("Appending to existing dataset")))
+ connectionStatus = ConnectionStatus.CONNECTED
+ rxBus.send(EventTidepoolStatus(("Appending to existing dataset")))
if (doUpload) doUpload()
else
releaseWakeLock()
}
}, {
- connectionStatus = TidepoolUploader.ConnectionStatus.FAILED
- RxBus.send(EventTidepoolStatus(("Open dataset FAILED")))
+ connectionStatus = ConnectionStatus.FAILED
+ rxBus.send(EventTidepoolStatus(("Open dataset FAILED")))
releaseWakeLock()
}))
} else {
- log.error("Got login response but cannot determine userId - cannot proceed")
- connectionStatus = TidepoolUploader.ConnectionStatus.FAILED
- RxBus.send(EventTidepoolStatus(("Error userId")))
+ aapsLogger.error("Got login response but cannot determine userId - cannot proceed")
+ connectionStatus = ConnectionStatus.FAILED
+ rxBus.send(EventTidepoolStatus(("Error userId")))
releaseWakeLock()
}
}
@@ -176,39 +186,39 @@ object TidepoolUploader {
fun doUpload() {
session.let { session ->
if (session == null) {
- log.error("Session is null, cannot proceed")
+ aapsLogger.error("Session is null, cannot proceed")
releaseWakeLock()
return
}
extendWakeLock(60000)
session.iterations++
- val chunk = UploadChunk.getNext(session)
+ val chunk = uploadChunk.getNext(session)
when {
- chunk == null -> {
- log.error("Upload chunk is null, cannot proceed")
+ chunk == null -> {
+ aapsLogger.error("Upload chunk is null, cannot proceed")
releaseWakeLock()
}
chunk.length == 2 -> {
- if (L.isEnabled(L.TIDEPOOL)) log.debug("Empty dataset - marking as succeeded")
- RxBus.send(EventTidepoolStatus(("No data to upload")))
+ aapsLogger.debug(LTag.TIDEPOOL, "Empty dataset - marking as succeeded")
+ rxBus.send(EventTidepoolStatus(("No data to upload")))
releaseWakeLock()
- unploadNext()
+ uploadNext()
}
- else -> {
+ else -> {
val body = chunk.toRequestBody("application/json".toMediaTypeOrNull())
- RxBus.send(EventTidepoolStatus(("Uploading")))
+ rxBus.send(EventTidepoolStatus(("Uploading")))
if (session.service != null && session.token != null && session.datasetReply != null) {
val call = session.service.doUpload(session.token!!, session.datasetReply!!.getUploadId()!!, body)
call.enqueue(TidepoolCallback(session, "Data Upload", {
- setLastEnd(session.end)
- RxBus.send(EventTidepoolStatus(("Upload completed OK")))
+ uploadChunk.setLastEnd(session.end)
+ rxBus.send(EventTidepoolStatus(("Upload completed OK")))
releaseWakeLock()
- unploadNext()
+ uploadNext()
}, {
- RxBus.send(EventTidepoolStatus(("Upload FAILED")))
+ rxBus.send(EventTidepoolStatus(("Upload FAILED")))
releaseWakeLock()
}))
}
@@ -217,11 +227,10 @@ object TidepoolUploader {
}
}
- private fun unploadNext() {
- if (getLastEnd() < DateUtil.now() - T.mins(1).msecs()) {
+ private fun uploadNext() {
+ if (uploadChunk.getLastEnd() < DateUtil.now() - T.mins(1).msecs()) {
SystemClock.sleep(3000)
- if (L.isEnabled(L.TIDEPOOL))
- log.debug("Restarting doUpload. Last: " + DateUtil.dateAndTimeString(getLastEnd()))
+ aapsLogger.debug(LTag.TIDEPOOL, "Restarting doUpload. Last: " + DateUtil.dateAndTimeString(uploadChunk.getLastEnd()))
doUpload()
}
}
@@ -232,62 +241,47 @@ object TidepoolUploader {
val call = session!!.service?.deleteDataSet(session!!.token!!, session!!.datasetReply!!.id!!)
call?.enqueue(TidepoolCallback(session!!, "Delete Dataset", {
connectionStatus = ConnectionStatus.DISCONNECTED
- RxBus.send(EventTidepoolStatus(("Dataset removed OK")))
+ rxBus.send(EventTidepoolStatus(("Dataset removed OK")))
releaseWakeLock()
}, {
connectionStatus = ConnectionStatus.DISCONNECTED
- RxBus.send(EventTidepoolStatus(("Dataset remove FAILED")))
+ rxBus.send(EventTidepoolStatus(("Dataset remove FAILED")))
releaseWakeLock()
}))
} else {
- log.error("Got login response but cannot determine datasetId - cannot proceed")
+ aapsLogger.error("Got login response but cannot determine datasetId - cannot proceed")
}
}
+ @Suppress("unused")
fun deleteAllData() {
val session = this.session
val token = session?.token
- val userid = session?.authReply?.userid
+ val userId = session?.authReply?.userid
try {
requireNotNull(session)
requireNotNull(token)
- requireNotNull(userid)
+ requireNotNull(userId)
extendWakeLock(60000)
- val call = session.service?.deleteAllData(token, userid)
+ val call = session.service?.deleteAllData(token, userId)
call?.enqueue(TidepoolCallback(session, "Delete all data", {
connectionStatus = ConnectionStatus.DISCONNECTED
- RxBus.send(EventTidepoolStatus(("All data removed OK")))
+ rxBus.send(EventTidepoolStatus(("All data removed OK")))
releaseWakeLock()
}, {
connectionStatus = ConnectionStatus.DISCONNECTED
- RxBus.send(EventTidepoolStatus(("All data remove FAILED")))
+ rxBus.send(EventTidepoolStatus(("All data remove FAILED")))
releaseWakeLock()
}))
} catch (e: IllegalArgumentException) {
- log.error("Got login response but cannot determine userId - cannot proceed")
- }
- }
-
- fun getLastEnd(): Long {
- val result = SP.getLong(R.string.key_tidepool_last_end, 0)
- return Math.max(result, DateUtil.now() - T.months(2).msecs())
- }
-
- fun setLastEnd(time: Long) {
- if (time > getLastEnd()) {
- SP.putLong(R.string.key_tidepool_last_end, time)
- val friendlyEnd = DateUtil.dateAndTimeString(time)
- RxBus.send(EventTidepoolStatus(("Marking uploaded data up to $friendlyEnd")))
- if (L.isEnabled(L.TIDEPOOL)) log.debug("Updating last end to: " + DateUtil.dateAndTimeString(time))
- } else {
- if (L.isEnabled(L.TIDEPOOL)) log.debug("Cannot set last end to: " + DateUtil.dateAndTimeString(time) + " vs " + DateUtil.dateAndTimeString(getLastEnd()))
+ aapsLogger.error("Got login response but cannot determine userId - cannot proceed")
}
}
@Synchronized
private fun extendWakeLock(ms: Long) {
if (wl == null) {
- val pm = MainApp.instance().getSystemService(Context.POWER_SERVICE) as PowerManager
+ val pm = mainApp.getSystemService(Context.POWER_SERVICE) as PowerManager
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "AndroidAPS:TidepoolUploader")
wl?.acquire(ms)
} else {
@@ -303,7 +297,7 @@ object TidepoolUploader {
try {
it.release()
} catch (e: Exception) {
- log.error("Error releasing wakelock: $e")
+ aapsLogger.error("Error releasing wakelock: $e")
}
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/UploadChunk.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/UploadChunk.kt
index 40cab06f4c..fd24befd3c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/UploadChunk.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/comm/UploadChunk.kt
@@ -2,19 +2,30 @@ package info.nightscout.androidaps.plugins.general.tidepool.comm
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
+import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.tidepool.elements.*
import info.nightscout.androidaps.plugins.general.tidepool.events.EventTidepoolStatus
import info.nightscout.androidaps.plugins.general.tidepool.utils.GsonInstance
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.utils.DateUtil
-import info.nightscout.androidaps.utils.SP
import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.sharedPreferences.SP
import org.slf4j.LoggerFactory
import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
+import kotlin.math.max
-object UploadChunk {
+@Singleton
+class UploadChunk @Inject constructor(
+ private val sp: SP,
+ private val rxBus: RxBusWrapper,
+ private val aapsLogger: AAPSLogger,
+ private val treatmentsPlugin: TreatmentsPlugin
+) {
private val MAX_UPLOAD_SIZE = T.days(7).msecs() // don't change this
@@ -24,13 +35,13 @@ object UploadChunk {
if (session == null)
return null
- session.start = TidepoolUploader.getLastEnd()
+ session.start = getLastEnd()
session.end = Math.min(session.start + MAX_UPLOAD_SIZE, DateUtil.now())
val result = get(session.start, session.end)
if (result.length < 3) {
if (L.isEnabled(L.TIDEPOOL)) log.debug("No records in this time period, setting start to best end time")
- TidepoolUploader.setLastEnd(Math.max(session.end, getOldestRecordTimeStamp()))
+ setLastEnd(Math.max(session.end, getOldestRecordTimeStamp()))
}
return result
}
@@ -49,20 +60,36 @@ object UploadChunk {
val records = LinkedList()
- if (SP.getBoolean(R.string.key_tidepool_upload_bolus, true))
+ if (sp.getBoolean(R.string.key_tidepool_upload_bolus, true))
records.addAll(getTreatments(start, end))
- if (SP.getBoolean(R.string.key_tidepool_upload_bg, true))
+ if (sp.getBoolean(R.string.key_tidepool_upload_bg, true))
records.addAll(getBloodTests(start, end))
- if (SP.getBoolean(R.string.key_tidepool_upload_tbr, true))
+ if (sp.getBoolean(R.string.key_tidepool_upload_tbr, true))
records.addAll(getBasals(start, end))
- if (SP.getBoolean(R.string.key_tidepool_upload_cgm, true))
+ if (sp.getBoolean(R.string.key_tidepool_upload_cgm, true))
records.addAll(getBgReadings(start, end))
- if (SP.getBoolean(R.string.key_tidepool_upload_profile, true))
+ if (sp.getBoolean(R.string.key_tidepool_upload_profile, true))
records.addAll(getProfiles(start, end))
return GsonInstance.defaultGsonInstance().toJson(records)
}
+ fun getLastEnd(): Long {
+ val result = sp.getLong(R.string.key_tidepool_last_end, 0)
+ return max(result, DateUtil.now() - T.months(2).msecs())
+ }
+
+ fun setLastEnd(time: Long) {
+ if (time > getLastEnd()) {
+ sp.putLong(R.string.key_tidepool_last_end, time)
+ val friendlyEnd = DateUtil.dateAndTimeString(time)
+ rxBus.send(EventTidepoolStatus(("Marking uploaded data up to $friendlyEnd")))
+ aapsLogger.debug(LTag.TIDEPOOL, "Updating last end to: " + DateUtil.dateAndTimeString(time))
+ } else {
+ aapsLogger.debug(LTag.TIDEPOOL, "Cannot set last end to: " + DateUtil.dateAndTimeString(time) + " vs " + DateUtil.dateAndTimeString(getLastEnd()))
+ }
+ }
+
// numeric limits must match max time windows
private fun getOldestRecordTimeStamp(): Long {
@@ -79,7 +106,7 @@ object UploadChunk {
private fun getTreatments(start: Long, end: Long): List {
val result = LinkedList()
- val treatments = TreatmentsPlugin.getPlugin().service.getTreatmentDataFromTime(start, end, true)
+ val treatments = treatmentsPlugin.service.getTreatmentDataFromTime(start, end, true)
for (treatment in treatments) {
if (treatment.carbs > 0) {
result.add(WizardElement(treatment))
@@ -94,7 +121,7 @@ object UploadChunk {
val readings = MainApp.getDbHelper().getCareportalEvents(start, end, true)
val selection = BloodGlucoseElement.fromCareportalEvents(readings)
if (selection.isNotEmpty())
- RxBus.send(EventTidepoolStatus("${selection.size} BGs selected for upload"))
+ rxBus.send(EventTidepoolStatus("${selection.size} BGs selected for upload"))
return selection
}
@@ -103,16 +130,16 @@ object UploadChunk {
val readings = MainApp.getDbHelper().getBgreadingsDataFromTime(start, end, true)
val selection = SensorGlucoseElement.fromBgReadings(readings)
if (selection.isNotEmpty())
- RxBus.send(EventTidepoolStatus("${selection.size} CGMs selected for upload"))
+ rxBus.send(EventTidepoolStatus("${selection.size} CGMs selected for upload"))
return selection
}
private fun getBasals(start: Long, end: Long): List {
- val tbrs = TreatmentsPlugin.getPlugin().temporaryBasalsFromHistory
+ val tbrs = treatmentsPlugin.temporaryBasalsFromHistory
tbrs.merge()
val selection = BasalElement.fromTemporaryBasals(tbrs, start, end) // TODO do not upload running TBR
if (selection.isNotEmpty())
- RxBus.send(EventTidepoolStatus("${selection.size} TBRs selected for upload"))
+ rxBus.send(EventTidepoolStatus("${selection.size} TBRs selected for upload"))
return selection
}
@@ -123,7 +150,7 @@ object UploadChunk {
ProfileElement.newInstanceOrNull(ps)?.let { selection.add(it) }
}
if (selection.size > 0)
- RxBus.send(EventTidepoolStatus("${selection.size} ProfileSwitches selected for upload"))
+ rxBus.send(EventTidepoolStatus("${selection.size} ProfileSwitches selected for upload"))
return selection
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/elements/ProfileElement.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/elements/ProfileElement.kt
index 82ae37cebc..8c15511d60 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/elements/ProfileElement.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/elements/ProfileElement.kt
@@ -25,7 +25,7 @@ class ProfileElement private constructor(ps: ProfileSwitch)
@Expose
internal var insulinSensitivities: IsfProfile = IsfProfile()
@Expose
- internal var deviceId: String = TidepoolUploader.PUMPTYPE + ":" + (ConfigBuilderPlugin.getPlugin().activePump?.serialNumber()
+ internal var deviceId: String = TidepoolUploader.PUMP_TYPE + ":" + (ConfigBuilderPlugin.getPlugin().activePump?.serialNumber()
?: InstanceId.instanceId())
@Expose
internal var deviceSerialNumber: String = ConfigBuilderPlugin.getPlugin().activePump?.serialNumber()
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/messages/OpenDatasetRequestMessage.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/messages/OpenDatasetRequestMessage.kt
index 38b93b2f7b..3f8bd4efb2 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/messages/OpenDatasetRequestMessage.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/tidepool/messages/OpenDatasetRequestMessage.kt
@@ -12,7 +12,7 @@ import java.util.*
class OpenDatasetRequestMessage : BaseMessage() {
@Expose
- var deviceId: String = TidepoolUploader.PUMPTYPE + ":" + (ConfigBuilderPlugin.getPlugin().activePump?.serialNumber()
+ var deviceId: String = TidepoolUploader.PUMP_TYPE + ":" + (ConfigBuilderPlugin.getPlugin().activePump?.serialNumber()
?: InstanceId.instanceId())
@Expose
var time = DateUtil.toISOAsUTC(DateUtil.now())
@@ -28,9 +28,9 @@ class OpenDatasetRequestMessage : BaseMessage() {
@Expose
var dataSetType = "continuous"
@Expose
- var deviceManufacturers = arrayOf(TidepoolUploader.PUMPTYPE)
+ var deviceManufacturers = arrayOf(TidepoolUploader.PUMP_TYPE)
@Expose
- var deviceModel = TidepoolUploader.PUMPTYPE
+ var deviceModel = TidepoolUploader.PUMP_TYPE
@Expose
var deviceTags = arrayOf("bgm", "cgm", "insulin-pump")
@Expose
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/wear/ActionStringHandler.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/wear/ActionStringHandler.java
index 3a4674938f..2dc275f9d8 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/wear/ActionStringHandler.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/wear/ActionStringHandler.java
@@ -631,7 +631,7 @@ public class ActionStringHandler {
doECarbs(carbs, starttime, duration);
} else if ("dismissoverviewnotification".equals(act[0])) {
- RxBus.INSTANCE.send(new EventDismissNotification(SafeParse.stringToInt(act[1])));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(SafeParse.stringToInt(act[1])));
} else if ("changeRequest".equals(act[0])) {
LoopPlugin.getPlugin().acceptChangeRequest();
NotificationManager notificationManager =
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/wear/WearPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/wear/WearPlugin.java
index ec01bff68b..c509794d88 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/wear/WearPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/wear/WearPlugin.java
@@ -41,6 +41,7 @@ public class WearPlugin extends PluginBase {
private CompositeDisposable disposable = new CompositeDisposable();
+ @Deprecated
public static WearPlugin getPlugin() {
return wearPlugin;
}
@@ -73,43 +74,43 @@ public class WearPlugin extends PluginBase {
}
super.onStart();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventOpenAPSUpdateGui.class)
.observeOn(Schedulers.io())
.subscribe(event -> sendDataToWatch(true, true, false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventExtendedBolusChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> sendDataToWatch(true, true, false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTempBasalChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> sendDataToWatch(true, true, false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTreatmentChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> sendDataToWatch(true, true, false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNewBasalProfile.class)
.observeOn(Schedulers.io())
.subscribe(event -> sendDataToWatch(false, true, false),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAutosensCalculationFinished.class)
.observeOn(Schedulers.io())
.subscribe(event -> sendDataToWatch(true, true, true),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -119,7 +120,7 @@ public class WearPlugin extends PluginBase {
sendDataToWatch(true, false, false);
}, FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventRefreshOverview.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -127,7 +128,7 @@ public class WearPlugin extends PluginBase {
sendDataToWatch(true, false, false);
}, FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventBolusRequested.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -138,7 +139,7 @@ public class WearPlugin extends PluginBase {
ctx.startService(intent);
}, FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventDismissBolusProgressIfRunning.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -155,7 +156,7 @@ public class WearPlugin extends PluginBase {
ctx.startService(intent);
}, FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventOverviewBolusProgress.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/xdripStatusline/StatusLinePlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/xdripStatusline/StatusLinePlugin.kt
index 28e0f3c984..2ad6c0994d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/xdripStatusline/StatusLinePlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/xdripStatusline/StatusLinePlugin.kt
@@ -9,9 +9,8 @@ import info.nightscout.androidaps.events.*
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.interfaces.TreatmentsInterface
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
-import info.nightscout.androidaps.plugins.bus.RxBus.toObservable
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
@@ -19,6 +18,7 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutos
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.utils.DecimalFormatter
import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.plusAssign
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import io.reactivex.disposables.CompositeDisposable
@@ -29,9 +29,11 @@ import javax.inject.Singleton
@Singleton
class StatusLinePlugin @Inject constructor(
private val sp: SP,
+ private val rxBus: RxBusWrapper,
private val profileFunction: ProfileFunction,
private val resourceHelper: ResourceHelper,
private val configBuilderPlugin: ConfigBuilderPlugin,
+ private val treatmentsPlugin: TreatmentsPlugin,
private val mainApp: MainApp) : PluginBase(
PluginDescription()
.mainType(PluginType.GENERAL)
@@ -56,30 +58,30 @@ class StatusLinePlugin @Inject constructor(
override fun onStart() {
super.onStart()
- disposable.add(toObservable(EventRefreshOverview::class.java)
+ disposable += rxBus.toObservable(EventRefreshOverview::class.java)
.observeOn(Schedulers.io())
- .subscribe({ if (lastLoopStatus != LoopPlugin.getPlugin().isEnabled(PluginType.LOOP)) sendStatus() }) { FabricPrivacy.logException(it) })
- disposable.add(toObservable(EventExtendedBolusChange::class.java)
+ .subscribe({ if (lastLoopStatus != LoopPlugin.getPlugin().isEnabled(PluginType.LOOP)) sendStatus() }) { FabricPrivacy.logException(it) }
+ disposable += rxBus.toObservable(EventExtendedBolusChange::class.java)
.observeOn(Schedulers.io())
- .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) })
- disposable.add(toObservable(EventTempBasalChange::class.java)
+ .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) }
+ disposable += rxBus.toObservable(EventTempBasalChange::class.java)
.observeOn(Schedulers.io())
- .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) })
- disposable.add(toObservable(EventTreatmentChange::class.java)
+ .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) }
+ disposable += rxBus.toObservable(EventTreatmentChange::class.java)
.observeOn(Schedulers.io())
- .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) })
- disposable.add(toObservable(EventConfigBuilderChange::class.java)
+ .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) }
+ disposable += rxBus.toObservable(EventConfigBuilderChange::class.java)
.observeOn(Schedulers.io())
- .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) })
- disposable.add(toObservable(EventAutosensCalculationFinished::class.java)
+ .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) }
+ disposable += rxBus.toObservable(EventAutosensCalculationFinished::class.java)
.observeOn(Schedulers.io())
- .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) })
- disposable.add(toObservable(EventPreferenceChange::class.java)
+ .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) }
+ disposable += rxBus.toObservable(EventPreferenceChange::class.java)
.observeOn(Schedulers.io())
- .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) })
- disposable.add(toObservable(EventAppInitialized::class.java)
+ .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) }
+ disposable += rxBus.toObservable(EventAppInitialized::class.java)
.observeOn(Schedulers.io())
- .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) })
+ .subscribe({ sendStatus() }) { FabricPrivacy.logException(it) }
}
override fun onStop() {
@@ -114,16 +116,15 @@ class StatusLinePlugin @Inject constructor(
lastLoopStatus = true
}
//Temp basal
- val treatmentsInterface: TreatmentsInterface = TreatmentsPlugin.getPlugin()
- val activeTemp = treatmentsInterface.getTempBasalFromHistory(System.currentTimeMillis())
+ val activeTemp = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis())
if (activeTemp != null) {
status += activeTemp.toStringShort() + " "
}
//IOB
- treatmentsInterface.updateTotalIOBTreatments()
- val bolusIob = treatmentsInterface.lastCalculationTreatments.round()
- treatmentsInterface.updateTotalIOBTempBasals()
- val basalIob = treatmentsInterface.lastCalculationTempBasals.round()
+ treatmentsPlugin.updateTotalIOBTreatments()
+ val bolusIob = treatmentsPlugin.lastCalculationTreatments.round()
+ treatmentsPlugin.updateTotalIOBTempBasals()
+ val basalIob = treatmentsPlugin.lastCalculationTempBasals.round()
status += DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U"
if (sp.getBoolean(R.string.key_xdripstatus_detailediob, true)) {
status += ("("
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefBasePlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefBasePlugin.kt
index f76b174684..7a19dda90c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefBasePlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefBasePlugin.kt
@@ -1,22 +1,29 @@
package info.nightscout.androidaps.plugins.insulin
-import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.Iob
import info.nightscout.androidaps.interfaces.InsulinInterface
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.plugins.bus.RxBus.send
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
import info.nightscout.androidaps.plugins.treatments.Treatment
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import javax.inject.Inject
/**
* Created by adrian on 13.08.2017.
+ *
+ * parameters are injected from child class
+ *
*/
-abstract class InsulinOrefBasePlugin() : PluginBase(PluginDescription()
+abstract class InsulinOrefBasePlugin (
+ val rxBus: RxBusWrapper,
+ val resourceHelper: ResourceHelper
+) : PluginBase(PluginDescription()
.mainType(PluginType.INSULIN)
.fragmentClass(InsulinFragment::class.java.name)
.shortName(R.string.insulin_shortname)
@@ -38,12 +45,12 @@ abstract class InsulinOrefBasePlugin() : PluginBase(PluginDescription()
if (System.currentTimeMillis() - lastWarned > 60 * 1000) {
lastWarned = System.currentTimeMillis()
val notification = Notification(Notification.SHORT_DIA, String.format(notificationPattern, dia, MIN_DIA), Notification.URGENT)
- send(EventNewNotification(notification))
+ rxBus.send(EventNewNotification(notification))
}
}
private val notificationPattern: String
- get() = MainApp.gs(R.string.dia_too_short)
+ get() = resourceHelper.gs(R.string.dia_too_short)
open val userDefinedDia: Double
get() {
@@ -79,7 +86,7 @@ abstract class InsulinOrefBasePlugin() : PluginBase(PluginDescription()
var comment = commentStandardText()
val userDia = userDefinedDia
if (userDia < MIN_DIA) {
- comment += "\n" + String.format(MainApp.gs(R.string.dia_too_short), userDia, MIN_DIA)
+ comment += "\n" + resourceHelper.gs(R.string.dia_too_short, userDia, MIN_DIA)
}
return comment
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefFreePeakPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefFreePeakPlugin.kt
index d5d1a23c1a..2e22e18af4 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefFreePeakPlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefFreePeakPlugin.kt
@@ -2,6 +2,7 @@ package info.nightscout.androidaps.plugins.insulin
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.InsulinInterface
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import javax.inject.Inject
@@ -13,8 +14,9 @@ import javax.inject.Singleton
@Singleton
class InsulinOrefFreePeakPlugin @Inject constructor(
private val sp: SP,
- private val resourceHelper: ResourceHelper
-) : InsulinOrefBasePlugin() {
+ resourceHelper: ResourceHelper,
+ rxBus: RxBusWrapper
+) : InsulinOrefBasePlugin(rxBus, resourceHelper) {
override fun getId(): Int {
return InsulinInterface.OREF_FREE_PEAK
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefRapidActingPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefRapidActingPlugin.kt
index 4cdb152a4d..67ec420b17 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefRapidActingPlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefRapidActingPlugin.kt
@@ -3,28 +3,34 @@ package info.nightscout.androidaps.plugins.insulin
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.InsulinInterface
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
import javax.inject.Inject
/**
* Created by adrian on 14/08/17.
*/
-class InsulinOrefRapidActingPlugin @Inject constructor(): InsulinOrefBasePlugin() {
+class InsulinOrefRapidActingPlugin @Inject constructor(
+ resourceHelper: ResourceHelper,
+ rxBus: RxBusWrapper
+) : InsulinOrefBasePlugin(rxBus, resourceHelper) {
+
override fun getId(): Int {
return InsulinInterface.OREF_RAPID_ACTING
}
override fun getFriendlyName(): String {
- return MainApp.gs(R.string.rapid_acting_oref)
+ return resourceHelper.gs(R.string.rapid_acting_oref)
}
override fun commentStandardText(): String {
- return MainApp.gs(R.string.fastactinginsulincomment)
+ return resourceHelper.gs(R.string.fastactinginsulincomment)
}
override val peak = 75
-
init {
pluginDescription
.pluginName(R.string.rapid_acting_oref)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefUltraRapidActingPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefUltraRapidActingPlugin.kt
index d5ce7bd7c6..4e7be23e2a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefUltraRapidActingPlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefUltraRapidActingPlugin.kt
@@ -3,12 +3,20 @@ package info.nightscout.androidaps.plugins.insulin
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.InsulinInterface
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
import javax.inject.Inject
/**
* Created by adrian on 14/08/17.
*/
-class InsulinOrefUltraRapidActingPlugin @Inject constructor(): InsulinOrefBasePlugin() {
+class InsulinOrefUltraRapidActingPlugin @Inject constructor(
+ private val sp: SP,
+ resourceHelper: ResourceHelper,
+ rxBus: RxBusWrapper
+) : InsulinOrefBasePlugin(rxBus, resourceHelper) {
+
override fun getId(): Int {
return InsulinInterface.OREF_ULTRA_RAPID_ACTING
@@ -24,7 +32,6 @@ class InsulinOrefUltraRapidActingPlugin @Inject constructor(): InsulinOrefBasePl
override val peak = 55
-
init {
pluginDescription
.pluginName(R.string.ultrarapid_oref)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.java
index 67d46df22d..6c4dc9c2fb 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.java
@@ -57,6 +57,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
private static IobCobCalculatorPlugin plugin = null;
+ @Deprecated
public static IobCobCalculatorPlugin getPlugin() {
if (plugin == null)
plugin = new IobCobCalculatorPlugin();
@@ -89,7 +90,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
protected void onStart() {
super.onStart();
// EventConfigBuilderChange
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventConfigBuilderChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -109,7 +110,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
}, FabricPrivacy::logException)
);
// EventNewBasalProfile
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNewBasalProfile.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -135,7 +136,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
}, FabricPrivacy::logException)
);
// EventNewBG
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNewBG.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -149,7 +150,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
}, FabricPrivacy::logException)
);
// EventPreferenceChange
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -180,7 +181,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
}, FabricPrivacy::logException)
);
// EventAppInitialized
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAppInitialized.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -193,7 +194,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
}, FabricPrivacy::logException)
);
// EventNewHistoryData
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNewHistoryData.class)
.observeOn(Schedulers.io())
.subscribe(event -> newHistoryData(event), FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOref1Thread.java b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOref1Thread.java
index 9fe87856b7..7f89a5f966 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOref1Thread.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOref1Thread.java
@@ -119,7 +119,7 @@ public class IobCobOref1Thread extends Thread {
// start from oldest to be able sub cob
for (int i = bucketed_data.size() - 4; i >= 0; i--) {
String progress = i + (MainApp.isDev() ? " (" + from + ")" : "");
- RxBus.INSTANCE.send(new EventIobCalculationProgress(progress));
+ RxBus.Companion.getINSTANCE().send(new EventIobCalculationProgress(progress));
if (iobCobCalculatorPlugin.stopCalculationTrigger) {
iobCobCalculatorPlugin.stopCalculationTrigger = false;
@@ -201,7 +201,7 @@ public class IobCobOref1Thread extends Thread {
log.debug(bucketed_data.toString());
log.debug(IobCobCalculatorPlugin.getPlugin().getBgReadings().toString());
Notification notification = new Notification(Notification.SENDLOGFILES, MainApp.gs(R.string.sendlogfiles), Notification.LOW);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
SP.putBoolean("log_AUTOSENS", true);
break;
}
@@ -227,7 +227,7 @@ public class IobCobOref1Thread extends Thread {
log.debug(bucketed_data.toString());
log.debug(IobCobCalculatorPlugin.getPlugin().getBgReadings().toString());
Notification notification = new Notification(Notification.SENDLOGFILES, MainApp.gs(R.string.sendlogfiles), Notification.LOW);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
SP.putBoolean("log_AUTOSENS", true);
break;
}
@@ -387,12 +387,12 @@ public class IobCobOref1Thread extends Thread {
}
new Thread(() -> {
SystemClock.sleep(1000);
- RxBus.INSTANCE.send(new EventAutosensCalculationFinished(cause));
+ RxBus.Companion.getINSTANCE().send(new EventAutosensCalculationFinished(cause));
}).start();
} finally {
if (mWakeLock != null)
mWakeLock.release();
- RxBus.INSTANCE.send(new EventIobCalculationProgress(""));
+ RxBus.Companion.getINSTANCE().send(new EventIobCalculationProgress(""));
if (L.isEnabled(L.AUTOSENS)) {
log.debug("AUTOSENSDATA thread ended: " + from);
log.debug("Midnights: " + MidnightTime.log());
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobThread.java b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobThread.java
index 7389e39b8d..8397e05ed2 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobThread.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobThread.java
@@ -118,7 +118,7 @@ public class IobCobThread extends Thread {
// start from oldest to be able sub cob
for (int i = bucketed_data.size() - 4; i >= 0; i--) {
String progress = i + (MainApp.isDev() ? " (" + from + ")" : "");
- RxBus.INSTANCE.send(new EventIobCalculationProgress(progress));
+ RxBus.Companion.getINSTANCE().send(new EventIobCalculationProgress(progress));
if (iobCobCalculatorPlugin.stopCalculationTrigger) {
iobCobCalculatorPlugin.stopCalculationTrigger = false;
@@ -200,7 +200,7 @@ public class IobCobThread extends Thread {
log.debug(bucketed_data.toString());
log.debug(IobCobCalculatorPlugin.getPlugin().getBgReadings().toString());
Notification notification = new Notification(Notification.SENDLOGFILES, MainApp.gs(R.string.sendlogfiles), Notification.LOW);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
SP.putBoolean("log_AUTOSENS", true);
break;
}
@@ -226,7 +226,7 @@ public class IobCobThread extends Thread {
log.debug(bucketed_data.toString());
log.debug(IobCobCalculatorPlugin.getPlugin().getBgReadings().toString());
Notification notification = new Notification(Notification.SENDLOGFILES, MainApp.gs(R.string.sendlogfiles), Notification.LOW);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
SP.putBoolean("log_AUTOSENS", true);
break;
}
@@ -313,12 +313,12 @@ public class IobCobThread extends Thread {
}
new Thread(() -> {
SystemClock.sleep(1000);
- RxBus.INSTANCE.send(new EventAutosensCalculationFinished(cause));
+ RxBus.Companion.getINSTANCE().send(new EventAutosensCalculationFinished(cause));
}).start();
} finally {
if (mWakeLock != null)
mWakeLock.release();
- RxBus.INSTANCE.send(new EventIobCalculationProgress(""));
+ RxBus.Companion.getINSTANCE().send(new EventIobCalculationProgress(""));
if (L.isEnabled(L.AUTOSENS)) {
log.debug("AUTOSENSDATA thread ended: " + from);
log.debug("Midnights: " + MidnightTime.log());
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt
index fd25e0e43f..ad660713c5 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.kt
@@ -8,23 +8,29 @@ import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ArrayAdapter
-import androidx.fragment.app.Fragment
+import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.Constants
-import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.dialogs.ProfileSwitchDialog
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.insulin.InsulinOrefBasePlugin.Companion.MIN_DIA
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
import info.nightscout.androidaps.utils.*
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.localprofile_fragment.*
import java.text.DecimalFormat
+import javax.inject.Inject
+
+class LocalProfileFragment : DaggerFragment() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
+ @Inject lateinit var localProfilePlugin: LocalProfilePlugin
-class LocalProfileFragment : Fragment() {
private var disposable: CompositeDisposable = CompositeDisposable()
private var basalView: TimeListEdit? = null
@@ -32,23 +38,23 @@ class LocalProfileFragment : Fragment() {
private val save = Runnable {
doEdit()
- basalView?.updateLabel(MainApp.gs(R.string.nsprofileview_basal_label) + ": " + sumLabel())
+ basalView?.updateLabel(resourceHelper.gs(R.string.nsprofileview_basal_label) + ": " + sumLabel())
}
private val textWatch = object : TextWatcher {
override fun afterTextChanged(s: Editable) {}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
- LocalProfilePlugin.currentProfile().dia = SafeParse.stringToDouble(localprofile_dia.text.toString())
- LocalProfilePlugin.currentProfile().name = localprofile_name.text.toString()
+ localProfilePlugin.currentProfile().dia = SafeParse.stringToDouble(localprofile_dia.text.toString())
+ localProfilePlugin.currentProfile().name = localprofile_name.text.toString()
doEdit()
}
}
private fun sumLabel(): String {
- val profile = LocalProfilePlugin.createProfileStore().getDefaultProfile()
+ val profile = localProfilePlugin.createProfileStore().getDefaultProfile()
val sum = profile?.baseBasalSum() ?: 0.0
- return " ∑" + DecimalFormatter.to2Decimal(sum) + MainApp.gs(R.string.insulin_unit_shortname)
+ return " ∑" + DecimalFormatter.to2Decimal(sum) + resourceHelper.gs(R.string.insulin_unit_shortname)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
@@ -85,76 +91,76 @@ class LocalProfileFragment : Fragment() {
}
fun build() {
- val pumpDescription = ConfigBuilderPlugin.getPlugin().activePump?.pumpDescription ?: return
- val units = if (LocalProfilePlugin.currentProfile().mgdl) Constants.MGDL else Constants.MMOL
+ val pumpDescription = configBuilderPlugin.activePump?.pumpDescription ?: return
+ val units = if (localProfilePlugin.currentProfile().mgdl) Constants.MGDL else Constants.MMOL
localprofile_name.removeTextChangedListener(textWatch)
- localprofile_name.setText(LocalProfilePlugin.currentProfile().name)
+ localprofile_name.setText(localProfilePlugin.currentProfile().name)
localprofile_name.addTextChangedListener(textWatch)
- localprofile_dia.setParams(LocalProfilePlugin.currentProfile().dia, HardLimits.MINDIA, HardLimits.MAXDIA, 0.1, DecimalFormat("0.0"), false, localprofile_save, textWatch)
- localprofile_dia.setTag("LP_DIA")
- TimeListEdit(context, view, R.id.localprofile_ic, "IC", MainApp.gs(R.string.nsprofileview_ic_label), LocalProfilePlugin.currentProfile().ic, null, HardLimits.MINIC, HardLimits.MAXIC, 0.1, DecimalFormat("0.0"), save)
- basalView = TimeListEdit(context, view, R.id.localprofile_basal, "BASAL", MainApp.gs(R.string.nsprofileview_basal_label) + ": " + sumLabel(), LocalProfilePlugin.currentProfile().basal, null, pumpDescription.basalMinimumRate, 10.0, 0.01, DecimalFormat("0.00"), save)
+ localprofile_dia.setParams(localProfilePlugin.currentProfile().dia, HardLimits.MINDIA, HardLimits.MAXDIA, 0.1, DecimalFormat("0.0"), false, localprofile_save, textWatch)
+ localprofile_dia.tag = "LP_DIA"
+ TimeListEdit(context, view, R.id.localprofile_ic, "IC", resourceHelper.gs(R.string.nsprofileview_ic_label), localProfilePlugin.currentProfile().ic, null, HardLimits.MINIC, HardLimits.MAXIC, 0.1, DecimalFormat("0.0"), save)
+ basalView = TimeListEdit(context, view, R.id.localprofile_basal, "BASAL", resourceHelper.gs(R.string.nsprofileview_basal_label) + ": " + sumLabel(), localProfilePlugin.currentProfile().basal, null, pumpDescription.basalMinimumRate, 10.0, 0.01, DecimalFormat("0.00"), save)
if (units == Constants.MGDL) {
- TimeListEdit(context, view, R.id.localprofile_isf, "ISF", MainApp.gs(R.string.nsprofileview_isf_label), LocalProfilePlugin.currentProfile().isf, null, HardLimits.MINISF, HardLimits.MAXISF, 1.0, DecimalFormat("0"), save)
- TimeListEdit(context, view, R.id.localprofile_target, "TARGET", MainApp.gs(R.string.nsprofileview_target_label), LocalProfilePlugin.currentProfile().targetLow, LocalProfilePlugin.currentProfile().targetHigh, HardLimits.VERY_HARD_LIMIT_TARGET_BG[0].toDouble(), HardLimits.VERY_HARD_LIMIT_TARGET_BG[1].toDouble(), 1.0, DecimalFormat("0"), save)
+ TimeListEdit(context, view, R.id.localprofile_isf, "ISF", resourceHelper.gs(R.string.nsprofileview_isf_label), localProfilePlugin.currentProfile().isf, null, HardLimits.MINISF, HardLimits.MAXISF, 1.0, DecimalFormat("0"), save)
+ TimeListEdit(context, view, R.id.localprofile_target, "TARGET", resourceHelper.gs(R.string.nsprofileview_target_label), localProfilePlugin.currentProfile().targetLow, localProfilePlugin.currentProfile().targetHigh, HardLimits.VERY_HARD_LIMIT_TARGET_BG[0].toDouble(), HardLimits.VERY_HARD_LIMIT_TARGET_BG[1].toDouble(), 1.0, DecimalFormat("0"), save)
} else {
- TimeListEdit(context, view, R.id.localprofile_isf, "ISF", MainApp.gs(R.string.nsprofileview_isf_label), LocalProfilePlugin.currentProfile().isf, null, Profile.fromMgdlToUnits(HardLimits.MINISF, Constants.MMOL), Profile.fromMgdlToUnits(HardLimits.MAXISF, Constants.MMOL), 0.1, DecimalFormat("0.0"), save)
- TimeListEdit(context, view, R.id.localprofile_target, "TARGET", MainApp.gs(R.string.nsprofileview_target_label), LocalProfilePlugin.currentProfile().targetLow, LocalProfilePlugin.currentProfile().targetHigh, Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_TARGET_BG[0].toDouble(), Constants.MMOL), Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_TARGET_BG[1].toDouble(), Constants.MMOL), 0.1, DecimalFormat("0.0"), save)
+ TimeListEdit(context, view, R.id.localprofile_isf, "ISF", resourceHelper.gs(R.string.nsprofileview_isf_label), localProfilePlugin.currentProfile().isf, null, Profile.fromMgdlToUnits(HardLimits.MINISF, Constants.MMOL), Profile.fromMgdlToUnits(HardLimits.MAXISF, Constants.MMOL), 0.1, DecimalFormat("0.0"), save)
+ TimeListEdit(context, view, R.id.localprofile_target, "TARGET", resourceHelper.gs(R.string.nsprofileview_target_label), localProfilePlugin.currentProfile().targetLow, localProfilePlugin.currentProfile().targetHigh, Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_TARGET_BG[0].toDouble(), Constants.MMOL), Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_TARGET_BG[1].toDouble(), Constants.MMOL), 0.1, DecimalFormat("0.0"), save)
}
// Spinner
spinner = SpinnerHelper(view?.findViewById(R.id.localprofile_spinner))
- val profileList: ArrayList = LocalProfilePlugin.profile?.getProfileList()
+ val profileList: ArrayList = localProfilePlugin.profile?.getProfileList()
?: ArrayList()
context?.let { context ->
val adapter = ArrayAdapter(context, R.layout.spinner_centered, profileList)
spinner?.adapter = adapter
- spinner?.setSelection(LocalProfilePlugin.currentProfileIndex)
+ spinner?.setSelection(localProfilePlugin.currentProfileIndex)
} ?: return
spinner?.setOnItemSelectedListener(object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
}
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
- if (LocalProfilePlugin.isEdited) {
+ if (localProfilePlugin.isEdited) {
activity?.let { activity ->
- OKDialog.showConfirmation(activity, MainApp.gs(R.string.doyouwantswitchprofile), Runnable {
- LocalProfilePlugin.currentProfileIndex = position
+ OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.doyouwantswitchprofile), Runnable {
+ localProfilePlugin.currentProfileIndex = position
build()
}, Runnable {
- spinner?.setSelection(LocalProfilePlugin.currentProfileIndex)
+ spinner?.setSelection(localProfilePlugin.currentProfileIndex)
})
}
} else {
- LocalProfilePlugin.currentProfileIndex = position
+ localProfilePlugin.currentProfileIndex = position
build()
}
}
})
localprofile_profile_add.setOnClickListener {
- if (LocalProfilePlugin.isEdited) {
- activity?.let { OKDialog.show(it, "", MainApp.gs(R.string.saveorresetchangesfirst)) }
+ if (localProfilePlugin.isEdited) {
+ activity?.let { OKDialog.show(it, "", resourceHelper.gs(R.string.saveorresetchangesfirst)) }
} else {
- LocalProfilePlugin.addNewProfile()
+ localProfilePlugin.addNewProfile()
build()
}
}
localprofile_profile_clone.setOnClickListener {
- if (LocalProfilePlugin.isEdited) {
- activity?.let { OKDialog.show(it, "", MainApp.gs(R.string.saveorresetchangesfirst)) }
+ if (localProfilePlugin.isEdited) {
+ activity?.let { OKDialog.show(it, "", resourceHelper.gs(R.string.saveorresetchangesfirst)) }
} else {
- LocalProfilePlugin.cloneProfile()
+ localProfilePlugin.cloneProfile()
build()
}
}
localprofile_profile_remove.setOnClickListener {
activity?.let { activity ->
- OKDialog.showConfirmation(activity, MainApp.gs(R.string.deletecurrentprofile), Runnable {
- LocalProfilePlugin.removeCurrentProfile()
+ OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.deletecurrentprofile), Runnable {
+ localProfilePlugin.removeCurrentProfile()
build()
}, null)
}
@@ -163,32 +169,32 @@ class LocalProfileFragment : Fragment() {
// this is probably not possible because it leads to invalid profile
// if (!pumpDescription.isTempBasalCapable) localprofile_basal.visibility = View.GONE
- @Suppress("SETTEXTL18N")
- localprofile_units.text = MainApp.gs(R.string.units_colon) + " " + (if (LocalProfilePlugin.currentProfile().mgdl) MainApp.gs(R.string.mgdl) else MainApp.gs(R.string.mmol))
+ @Suppress("SetTextI18n")
+ localprofile_units.text = resourceHelper.gs(R.string.units_colon) + " " + (if (localProfilePlugin.currentProfile().mgdl) resourceHelper.gs(R.string.mgdl) else resourceHelper.gs(R.string.mmol))
localprofile_profileswitch.setOnClickListener {
- // TODO: select in dialog LocalProfilePlugin.currentProfileIndex
+ // TODO: select in dialog localProfilePlugin.currentProfileIndex
fragmentManager?.let { ProfileSwitchDialog().show(it, "NewNSTreatmentDialog") }
}
localprofile_reset.setOnClickListener {
- LocalProfilePlugin.loadSettings()
- @Suppress("SETTEXTL18N")
- localprofile_units.text = MainApp.gs(R.string.units_colon) + " " + (if (LocalProfilePlugin.currentProfile().mgdl) MainApp.gs(R.string.mgdl) else MainApp.gs(R.string.mmol))
- localprofile_dia.setParams(LocalProfilePlugin.currentProfile().dia, MIN_DIA, 12.0, 0.1, DecimalFormat("0.0"), false, localprofile_save, textWatch)
- localprofile_dia.setTag("LP_DIA")
- TimeListEdit(context, view, R.id.localprofile_ic, "IC", MainApp.gs(R.string.nsprofileview_ic_label) + ":", LocalProfilePlugin.currentProfile().ic, null, 0.5, 50.0, 0.1, DecimalFormat("0.0"), save)
- TimeListEdit(context, view, R.id.localprofile_isf, "ISF", MainApp.gs(R.string.nsprofileview_isf_label) + ":", LocalProfilePlugin.currentProfile().isf, null, 0.5, 500.0, 0.1, DecimalFormat("0.0"), save)
- basalView = TimeListEdit(context, view, R.id.localprofile_basal, "BASAL", MainApp.gs(R.string.nsprofileview_basal_label) + ": " + sumLabel(), LocalProfilePlugin.currentProfile().basal, null, pumpDescription.basalMinimumRate, 10.0, 0.01, DecimalFormat("0.00"), save)
- TimeListEdit(context, view, R.id.localprofile_target, "TARGET", MainApp.gs(R.string.nsprofileview_target_label) + ":", LocalProfilePlugin.currentProfile().targetLow, LocalProfilePlugin.currentProfile().targetHigh, 3.0, 200.0, 0.1, DecimalFormat("0.0"), save)
+ localProfilePlugin.loadSettings()
+ @Suppress("SetTextI18n")
+ localprofile_units.text = resourceHelper.gs(R.string.units_colon) + " " + (if (localProfilePlugin.currentProfile().mgdl) resourceHelper.gs(R.string.mgdl) else resourceHelper.gs(R.string.mmol))
+ localprofile_dia.setParams(localProfilePlugin.currentProfile().dia, MIN_DIA, 12.0, 0.1, DecimalFormat("0.0"), false, localprofile_save, textWatch)
+ localprofile_dia.tag = "LP_DIA"
+ TimeListEdit(context, view, R.id.localprofile_ic, "IC", resourceHelper.gs(R.string.nsprofileview_ic_label) + ":", localProfilePlugin.currentProfile().ic, null, 0.5, 50.0, 0.1, DecimalFormat("0.0"), save)
+ TimeListEdit(context, view, R.id.localprofile_isf, "ISF", resourceHelper.gs(R.string.nsprofileview_isf_label) + ":", localProfilePlugin.currentProfile().isf, null, 0.5, 500.0, 0.1, DecimalFormat("0.0"), save)
+ basalView = TimeListEdit(context, view, R.id.localprofile_basal, "BASAL", resourceHelper.gs(R.string.nsprofileview_basal_label) + ": " + sumLabel(), localProfilePlugin.currentProfile().basal, null, pumpDescription.basalMinimumRate, 10.0, 0.01, DecimalFormat("0.00"), save)
+ TimeListEdit(context, view, R.id.localprofile_target, "TARGET", resourceHelper.gs(R.string.nsprofileview_target_label) + ":", localProfilePlugin.currentProfile().targetLow, localProfilePlugin.currentProfile().targetHigh, 3.0, 200.0, 0.1, DecimalFormat("0.0"), save)
updateGUI()
}
localprofile_save.setOnClickListener {
- if (!LocalProfilePlugin.isValidEditState()) {
+ if (!localProfilePlugin.isValidEditState()) {
return@setOnClickListener //Should not happen as saveButton should not be visible if not valid
}
- LocalProfilePlugin.storeSettings(activity)
+ localProfilePlugin.storeSettings(activity)
build()
}
updateGUI()
@@ -197,11 +203,11 @@ class LocalProfileFragment : Fragment() {
@Synchronized
override fun onResume() {
super.onResume()
- disposable.add(RxBus
+ disposable += rxBus
.toObservable(EventLocalProfileChanged::class.java)
.observeOn(AndroidSchedulers.mainThread())
- .subscribe({ build() }, { FabricPrivacy.logException(it) })
- )
+ .subscribe({ build() }, { FabricPrivacy.logException(it) }
+ )
build()
}
@@ -212,16 +218,16 @@ class LocalProfileFragment : Fragment() {
}
fun doEdit() {
- LocalProfilePlugin.isEdited = true
+ localProfilePlugin.isEdited = true
updateGUI()
}
fun updateGUI() {
if (localprofile_profileswitch == null) return
- val isValid = LocalProfilePlugin.isValidEditState()
- val isEdited = LocalProfilePlugin.isEdited
+ val isValid = localProfilePlugin.isValidEditState()
+ val isEdited = localProfilePlugin.isEdited
if (isValid) {
- this.view?.setBackgroundColor(MainApp.gc(R.color.ok_background))
+ this.view?.setBackgroundColor(resourceHelper.gc(R.color.ok_background))
if (isEdited) {
//edited profile -> save first
@@ -232,7 +238,7 @@ class LocalProfileFragment : Fragment() {
localprofile_save.visibility = View.GONE
}
} else {
- this.view?.setBackgroundColor(MainApp.gc(R.color.error_background))
+ this.view?.setBackgroundColor(resourceHelper.gc(R.color.error_background))
localprofile_profileswitch.visibility = View.GONE
localprofile_save.visibility = View.GONE //don't save an invalid profile
}
@@ -246,12 +252,12 @@ class LocalProfileFragment : Fragment() {
}
private fun processVisibilityOnClick(selected: View) {
- dia_tab.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- ic_tab.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- isf_tab.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- basal_tab.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- target_tab.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- selected.setBackgroundColor(MainApp.gc(R.color.tabBgColorSelected))
+ dia_tab.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ ic_tab.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ isf_tab.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ basal_tab.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ target_tab.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ selected.setBackgroundColor(resourceHelper.gc(R.color.tabBgColorSelected))
localprofile_dia_placeholder.visibility = View.GONE
localprofile_ic.visibility = View.GONE
localprofile_isf.visibility = View.GONE
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfilePlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfilePlugin.kt
index a3e3819b51..5d27fe007b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfilePlugin.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfilePlugin.kt
@@ -2,7 +2,6 @@ package info.nightscout.androidaps.plugins.profile.local
import android.app.Activity
import info.nightscout.androidaps.Constants
-import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.data.ProfileStore
@@ -11,41 +10,51 @@ import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.interfaces.ProfileInterface
-import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.DecimalFormatter
import info.nightscout.androidaps.utils.OKDialog
-import info.nightscout.androidaps.utils.SP
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
-import org.slf4j.LoggerFactory
import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
import kotlin.collections.ArrayList
-object LocalProfilePlugin : PluginBase(PluginDescription()
+@Singleton
+class LocalProfilePlugin @Inject constructor(
+ private val aapsLogger: AAPSLogger,
+ private val rxBus: RxBusWrapper,
+ private val resourceHelper: ResourceHelper,
+ private val sp: SP
+) : PluginBase(PluginDescription()
.mainType(PluginType.PROFILE)
.fragmentClass(LocalProfileFragment::class.java.name)
.pluginName(R.string.localprofile)
.shortName(R.string.localprofile_shortname)
.description(R.string.description_profile_local)), ProfileInterface {
+ var rawProfile: ProfileStore? = null
+
+ private val defaultArray = "[{\"time\":\"00:00\",\"timeAsSeconds\":0,\"value\":0}]"
+
+ companion object {
+ @JvmStatic
+ val LOCAL_PROFILE = "LocalProfile"
+ }
+
override fun onStart() {
super.onStart()
loadSettings()
}
- private val log = LoggerFactory.getLogger(L.PROFILE)
-
- private var rawProfile: ProfileStore? = null
-
- const val LOCAL_PROFILE = "LocalProfile"
-
- private const val DEFAULTARRAY = "[{\"time\":\"00:00\",\"timeAsSeconds\":0,\"value\":0}]"
-
class SingleProfile {
internal var name: String? = null
internal var mgdl: Boolean = false
@@ -69,7 +78,7 @@ object LocalProfilePlugin : PluginBase(PluginDescription()
return sp
}
- fun copyFrom(profile: Profile, newName: String): SingleProfile {
+ fun copyFrom(rawProfile: ProfileStore?, profile: Profile, newName: String): SingleProfile {
var verifiedName = newName
if (rawProfile?.getSpecificProfile(newName) != null) {
verifiedName += " " + DateUtil.now().toString()
@@ -90,14 +99,14 @@ object LocalProfilePlugin : PluginBase(PluginDescription()
var isEdited: Boolean = false
var profiles: ArrayList = ArrayList()
- internal var numOfProfiles = 0
+ private var numOfProfiles = 0
internal var currentProfileIndex = 0
fun currentProfile() = profiles[currentProfileIndex]
@Synchronized
fun isValidEditState(): Boolean {
- return createProfileStore().getDefaultProfile()?.isValid(MainApp.gs(R.string.localprofile), false)
+ return createProfileStore().getDefaultProfile()?.isValid(resourceHelper.gs(R.string.localprofile), false)
?: false
}
@@ -106,23 +115,22 @@ object LocalProfilePlugin : PluginBase(PluginDescription()
for (i in 0 until numOfProfiles) {
profiles[i].run {
val LOCAL_PROFILE_NUMBERED = LOCAL_PROFILE + "_" + i + "_"
- SP.putString(LOCAL_PROFILE_NUMBERED + "name", name)
- SP.putBoolean(LOCAL_PROFILE_NUMBERED + "mgdl", mgdl)
- SP.putDouble(LOCAL_PROFILE_NUMBERED + "dia", dia)
- SP.putString(LOCAL_PROFILE_NUMBERED + "ic", ic.toString())
- SP.putString(LOCAL_PROFILE_NUMBERED + "isf", isf.toString())
- SP.putString(LOCAL_PROFILE_NUMBERED + "basal", basal.toString())
- SP.putString(LOCAL_PROFILE_NUMBERED + "targetlow", targetLow.toString())
- SP.putString(LOCAL_PROFILE_NUMBERED + "targethigh", targetHigh.toString())
+ sp.putString(LOCAL_PROFILE_NUMBERED + "name", name!!)
+ sp.putBoolean(LOCAL_PROFILE_NUMBERED + "mgdl", mgdl)
+ sp.putDouble(LOCAL_PROFILE_NUMBERED + "dia", dia)
+ sp.putString(LOCAL_PROFILE_NUMBERED + "ic", ic.toString())
+ sp.putString(LOCAL_PROFILE_NUMBERED + "isf", isf.toString())
+ sp.putString(LOCAL_PROFILE_NUMBERED + "basal", basal.toString())
+ sp.putString(LOCAL_PROFILE_NUMBERED + "targetlow", targetLow.toString())
+ sp.putString(LOCAL_PROFILE_NUMBERED + "targethigh", targetHigh.toString())
}
}
- SP.putInt(LOCAL_PROFILE + "_profiles", numOfProfiles)
+ sp.putInt(LOCAL_PROFILE + "_profiles", numOfProfiles)
createAndStoreConvertedProfile()
isEdited = false
- if (L.isEnabled(L.PROFILE))
- log.debug("Storing settings: " + rawProfile?.data.toString())
- RxBus.send(EventProfileStoreChanged())
+ aapsLogger.debug(LTag.PROFILE, "Storing settings: " + rawProfile?.data.toString())
+ rxBus.send(EventProfileStoreChanged())
var namesOK = true
profiles.forEach {
val name = it.name ?: "."
@@ -132,18 +140,18 @@ object LocalProfilePlugin : PluginBase(PluginDescription()
rawProfile?.let { NSUpload.uploadProfileStore(it.data) }
else
activity?.let {
- OKDialog.show(it, "", MainApp.gs(R.string.profilenamecontainsdot))
+ OKDialog.show(it, "", resourceHelper.gs(R.string.profilenamecontainsdot))
}
}
@Synchronized
fun loadSettings() {
- if (SP.contains(LOCAL_PROFILE + "mgdl")) {
+ if (sp.contains(LOCAL_PROFILE + "mgdl")) {
doConversion()
return
}
- numOfProfiles = SP.getInt(LOCAL_PROFILE + "_profiles", 0)
+ numOfProfiles = sp.getInt(LOCAL_PROFILE + "_profiles", 0)
profiles.clear()
numOfProfiles = Math.max(numOfProfiles, 1) // create at least one default profile if none exists
@@ -151,58 +159,58 @@ object LocalProfilePlugin : PluginBase(PluginDescription()
val p = SingleProfile()
val LOCAL_PROFILE_NUMBERED = LOCAL_PROFILE + "_" + i + "_"
- p.name = SP.getString(LOCAL_PROFILE_NUMBERED + "name", LOCAL_PROFILE + i)
+ p.name = sp.getString(LOCAL_PROFILE_NUMBERED + "name", LOCAL_PROFILE + i)
if (isExistingName(p.name)) continue
- p.mgdl = SP.getBoolean(LOCAL_PROFILE_NUMBERED + "mgdl", false)
- p.dia = SP.getDouble(LOCAL_PROFILE_NUMBERED + "dia", Constants.defaultDIA)
+ p.mgdl = sp.getBoolean(LOCAL_PROFILE_NUMBERED + "mgdl", false)
+ p.dia = sp.getDouble(LOCAL_PROFILE_NUMBERED + "dia", Constants.defaultDIA)
try {
- p.ic = JSONArray(SP.getString(LOCAL_PROFILE_NUMBERED + "ic", DEFAULTARRAY))
+ p.ic = JSONArray(sp.getString(LOCAL_PROFILE_NUMBERED + "ic", defaultArray))
} catch (e1: JSONException) {
try {
- p.ic = JSONArray(DEFAULTARRAY)
+ p.ic = JSONArray(defaultArray)
} catch (ignored: JSONException) {
}
- log.error("Exception", e1)
+ aapsLogger.error("Exception", e1)
}
try {
- p.isf = JSONArray(SP.getString(LOCAL_PROFILE_NUMBERED + "isf", DEFAULTARRAY))
+ p.isf = JSONArray(sp.getString(LOCAL_PROFILE_NUMBERED + "isf", defaultArray))
} catch (e1: JSONException) {
try {
- p.isf = JSONArray(DEFAULTARRAY)
+ p.isf = JSONArray(defaultArray)
} catch (ignored: JSONException) {
}
- log.error("Exception", e1)
+ aapsLogger.error("Exception", e1)
}
try {
- p.basal = JSONArray(SP.getString(LOCAL_PROFILE_NUMBERED + "basal", DEFAULTARRAY))
+ p.basal = JSONArray(sp.getString(LOCAL_PROFILE_NUMBERED + "basal", defaultArray))
} catch (e1: JSONException) {
try {
- p.basal = JSONArray(DEFAULTARRAY)
+ p.basal = JSONArray(defaultArray)
} catch (ignored: JSONException) {
}
- log.error("Exception", e1)
+ aapsLogger.error("Exception", e1)
}
try {
- p.targetLow = JSONArray(SP.getString(LOCAL_PROFILE_NUMBERED + "targetlow", DEFAULTARRAY))
+ p.targetLow = JSONArray(sp.getString(LOCAL_PROFILE_NUMBERED + "targetlow", defaultArray))
} catch (e1: JSONException) {
try {
- p.targetLow = JSONArray(DEFAULTARRAY)
+ p.targetLow = JSONArray(defaultArray)
} catch (ignored: JSONException) {
}
- log.error("Exception", e1)
+ aapsLogger.error("Exception", e1)
}
try {
- p.targetHigh = JSONArray(SP.getString(LOCAL_PROFILE_NUMBERED + "targethigh", DEFAULTARRAY))
+ p.targetHigh = JSONArray(sp.getString(LOCAL_PROFILE_NUMBERED + "targethigh", defaultArray))
} catch (e1: JSONException) {
try {
- p.targetHigh = JSONArray(DEFAULTARRAY)
+ p.targetHigh = JSONArray(defaultArray)
} catch (ignored: JSONException) {
}
- log.error("Exception", e1)
+ aapsLogger.error("Exception", e1)
}
profiles.add(p)
@@ -221,66 +229,65 @@ object LocalProfilePlugin : PluginBase(PluginDescription()
@Synchronized
private fun doConversion() { // conversion from 2.3 to 2.4 format
- if (L.isEnabled(L.PROFILE))
- log.debug("Loading stored settings")
+ aapsLogger.debug(LTag.PROFILE, "Loading stored settings")
val p = SingleProfile()
- p.mgdl = SP.getBoolean(LOCAL_PROFILE + "mgdl", ProfileFunctions.getSystemUnits() == Constants.MGDL)
- p.dia = SP.getDouble(LOCAL_PROFILE + "dia", Constants.defaultDIA)
+ p.mgdl = sp.getBoolean(LOCAL_PROFILE + "mgdl", ProfileFunctions.getSystemUnits() == Constants.MGDL)
+ p.dia = sp.getDouble(LOCAL_PROFILE + "dia", Constants.defaultDIA)
try {
- p.ic = JSONArray(SP.getString(LOCAL_PROFILE + "ic", DEFAULTARRAY))
+ p.ic = JSONArray(sp.getString(LOCAL_PROFILE + "ic", defaultArray))
} catch (e1: JSONException) {
try {
- p.ic = JSONArray(DEFAULTARRAY)
+ p.ic = JSONArray(defaultArray)
} catch (ignored: JSONException) {
}
}
try {
- p.isf = JSONArray(SP.getString(LOCAL_PROFILE + "isf", DEFAULTARRAY))
+ p.isf = JSONArray(sp.getString(LOCAL_PROFILE + "isf", defaultArray))
} catch (e1: JSONException) {
try {
- p.isf = JSONArray(DEFAULTARRAY)
+ p.isf = JSONArray(defaultArray)
} catch (ignored: JSONException) {
}
}
try {
- p.basal = JSONArray(SP.getString(LOCAL_PROFILE + "basal", DEFAULTARRAY))
+ p.basal = JSONArray(sp.getString(LOCAL_PROFILE + "basal", defaultArray))
} catch (e1: JSONException) {
try {
- p.basal = JSONArray(DEFAULTARRAY)
+ p.basal = JSONArray(defaultArray)
} catch (ignored: JSONException) {
}
}
try {
- p.targetLow = JSONArray(SP.getString(LOCAL_PROFILE + "targetlow", DEFAULTARRAY))
+ p.targetLow = JSONArray(sp.getString(LOCAL_PROFILE + "targetlow", defaultArray))
} catch (e1: JSONException) {
try {
- p.targetLow = JSONArray(DEFAULTARRAY)
+ p.targetLow = JSONArray(defaultArray)
} catch (ignored: JSONException) {
}
}
try {
- p.targetHigh = JSONArray(SP.getString(LOCAL_PROFILE + "targethigh", DEFAULTARRAY))
+ p.targetHigh = JSONArray(sp.getString(LOCAL_PROFILE + "targethigh", defaultArray))
} catch (e1: JSONException) {
try {
- p.targetHigh = JSONArray(DEFAULTARRAY)
+ p.targetHigh = JSONArray(defaultArray)
} catch (ignored: JSONException) {
}
}
p.name = LOCAL_PROFILE
- SP.remove(LOCAL_PROFILE + "mgdl")
- SP.remove(LOCAL_PROFILE + "mmol")
- SP.remove(LOCAL_PROFILE + "dia")
- SP.remove(LOCAL_PROFILE + "ic")
- SP.remove(LOCAL_PROFILE + "isf")
- SP.remove(LOCAL_PROFILE + "basal")
- SP.remove(LOCAL_PROFILE + "targetlow")
- SP.remove(LOCAL_PROFILE + "targethigh")
+ sp.remove(LOCAL_PROFILE + "mgdl")
+ sp.remove(LOCAL_PROFILE + "mmol")
+ sp.remove(LOCAL_PROFILE + "dia")
+ sp.remove(LOCAL_PROFILE + "ic")
+ sp.remove(LOCAL_PROFILE + "isf")
+ sp.remove(LOCAL_PROFILE + "basal")
+ sp.remove(LOCAL_PROFILE + "targetlow")
+ sp.remove(LOCAL_PROFILE + "targethigh")
currentProfileIndex = 0
numOfProfiles = 1
@@ -338,7 +345,7 @@ object LocalProfilePlugin : PluginBase(PluginDescription()
var free = 0
for (i in 1..10000) {
if (rawProfile?.getSpecificProfile(LOCAL_PROFILE + i) == null) {
- free = i;
+ free = i
break
}
}
@@ -346,11 +353,11 @@ object LocalProfilePlugin : PluginBase(PluginDescription()
p.name = LOCAL_PROFILE + free
p.mgdl = ProfileFunctions.getSystemUnits() == Constants.MGDL
p.dia = Constants.defaultDIA
- p.ic = JSONArray(DEFAULTARRAY)
- p.isf = JSONArray(DEFAULTARRAY)
- p.basal = JSONArray(DEFAULTARRAY)
- p.targetLow = JSONArray(DEFAULTARRAY)
- p.targetHigh = JSONArray(DEFAULTARRAY)
+ p.ic = JSONArray(defaultArray)
+ p.isf = JSONArray(defaultArray)
+ p.basal = JSONArray(defaultArray)
+ p.targetLow = JSONArray(defaultArray)
+ p.targetHigh = JSONArray(defaultArray)
profiles.add(p)
currentProfileIndex = profiles.size - 1
numOfProfiles++
@@ -411,7 +418,7 @@ object LocalProfilePlugin : PluginBase(PluginDescription()
json.put("startDate", DateUtil.toISOAsUTC(DateUtil.now()))
json.put("store", store)
} catch (e: JSONException) {
- log.error("Unhandled exception", e)
+ aapsLogger.error("Unhandled exception", e)
}
return ProfileStore(json)
@@ -425,5 +432,4 @@ object LocalProfilePlugin : PluginBase(PluginDescription()
return DecimalFormatter.to2Decimal(rawProfile?.getDefaultProfile()?.percentageBasalSum()
?: 0.0) + "U "
}
-
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt
index c688e332fb..e72c87061c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfileFragment.kt
@@ -7,9 +7,8 @@ import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ArrayAdapter
import dagger.android.support.DaggerFragment
-import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions
import info.nightscout.androidaps.plugins.profile.ns.events.EventNSProfileUpdateGUI
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
@@ -17,6 +16,8 @@ import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.DecimalFormatter
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.OKDialog
+import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.close.*
@@ -26,8 +27,9 @@ import javax.inject.Inject
class NSProfileFragment : DaggerFragment() {
- @Inject
- lateinit var treatmentsPlugin: TreatmentsPlugin
+ @Inject lateinit var treatmentsPlugin: TreatmentsPlugin
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
private var disposable: CompositeDisposable = CompositeDisposable()
@@ -46,8 +48,8 @@ class NSProfileFragment : DaggerFragment() {
NSProfilePlugin.getPlugin().profile?.let { store ->
store.getSpecificProfile(name)?.let {
activity?.let { activity ->
- OKDialog.showConfirmation(activity, MainApp.gs(R.string.nsprofile),
- MainApp.gs(R.string.activate_profile) + ": " + name + " ?", Runnable {
+ OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.nsprofile),
+ resourceHelper.gs(R.string.activate_profile) + ": " + name + " ?", Runnable {
treatmentsPlugin.doProfileSwitch(store, name, 0, 100, 0, DateUtil.now())
})
}
@@ -78,12 +80,12 @@ class NSProfileFragment : DaggerFragment() {
NSProfilePlugin.getPlugin().profile?.let { store ->
store.getSpecificProfile(name)?.let { profile ->
profileview_units.text = profile.units
- profileview_dia.text = MainApp.gs(R.string.format_hours, profile.dia)
+ profileview_dia.text = resourceHelper.gs(R.string.format_hours, profile.dia)
profileview_activeprofile.text = name
profileview_ic.text = profile.icList
profileview_isf.text = profile.isfList
profileview_basal.text = profile.basalList
- profileview_basaltotal.text = String.format(MainApp.gs(R.string.profile_total), DecimalFormatter.to2Decimal(profile.baseBasalSum()))
+ profileview_basaltotal.text = String.format(resourceHelper.gs(R.string.profile_total), DecimalFormatter.to2Decimal(profile.baseBasalSum()))
profileview_target.text = profile.targetList
basal_graph.show(profile)
if (profile.isValid("NSProfileFragment")) {
@@ -102,11 +104,10 @@ class NSProfileFragment : DaggerFragment() {
@Synchronized
override fun onResume() {
super.onResume()
- disposable.add(RxBus
+ disposable += rxBus
.toObservable(EventNSProfileUpdateGUI::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
- )
updateGUI()
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfilePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfilePlugin.java
index 41711b47bd..e9fa64484b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfilePlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/ns/NSProfilePlugin.java
@@ -75,8 +75,8 @@ public class NSProfilePlugin extends PluginBase implements ProfileInterface {
profile = new ProfileStore(new JSONObject(profileString));
storeNSProfile();
if (isEnabled(PluginType.PROFILE)) {
- RxBus.INSTANCE.send(new EventProfileStoreChanged());
- RxBus.INSTANCE.send(new EventNSProfileUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventProfileStoreChanged());
+ RxBus.Companion.getINSTANCE().send(new EventNSProfileUpdateGUI());
}
if (L.isEnabled(L.PROFILE))
log.debug("Received profileStore: " + activeProfile + " " + profile);
@@ -108,7 +108,7 @@ public class NSProfilePlugin extends PluginBase implements ProfileInterface {
if (L.isEnabled(L.PROFILE))
log.debug("Stored profile not found");
// force restart of nsclient to fetch profile
- RxBus.INSTANCE.send(new EventNSClientRestart());
+ RxBus.Companion.getINSTANCE().send(new EventNSClientRestart());
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboFragment.java
index bfd5c6104e..9a0236822a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboFragment.java
@@ -69,12 +69,12 @@ public class ComboFragment extends Fragment implements View.OnClickListener {
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventComboPumpUpdateGUI.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventQueueChanged.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboPlugin.java
index 32a17f8a89..6a3b219fee 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboPlugin.java
@@ -78,6 +78,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
private static ComboPlugin plugin = null;
+ @Deprecated
public static ComboPlugin getPlugin() {
if (plugin == null)
plugin = new ComboPlugin();
@@ -233,15 +234,15 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
// issues a READSTATE when starting to issue commands which initializes the pump
log.error("setNewBasalProfile not initialized");
Notification notification = new Notification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED, MainApp.gs(R.string.pumpNotInitializedProfileNotSet), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
return new PumpEnactResult().success(false).enacted(false).comment(MainApp.gs(R.string.pumpNotInitializedProfileNotSet));
}
BasalProfile requestedBasalProfile = convertProfileToComboProfile(profile);
if (pump.basalProfile.equals(requestedBasalProfile)) {
//dismiss previously "FAILED" overview notifications
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.FAILED_UDPATE_PROFILE));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.FAILED_UDPATE_PROFILE));
return new PumpEnactResult().success(true).enacted(false);
}
@@ -254,18 +255,18 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
() -> ruffyScripter.setBasalProfile(requestedBasalProfile));
if (!setResult.success) {
Notification notification = new Notification(Notification.FAILED_UDPATE_PROFILE, MainApp.gs(R.string.failedupdatebasalprofile), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
return new PumpEnactResult().success(false).enacted(false).comment(MainApp.gs(R.string.failedupdatebasalprofile));
}
pump.basalProfile = requestedBasalProfile;
//dismiss previously "FAILED" overview notifications
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.FAILED_UDPATE_PROFILE));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.FAILED_UDPATE_PROFILE));
//issue success notification
Notification notification = new Notification(Notification.PROFILE_SET_OK, MainApp.gs(R.string.profile_set_ok), Notification.INFO, 60);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
return new PumpEnactResult().success(true).enacted(true);
}
@@ -341,7 +342,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
// trigger a connect, which will update state and check history
CommandResult stateResult = runCommand(null, 1, ruffyScripter::readPumpState);
if (stateResult.invalidSetup) {
- RxBus.INSTANCE.send(new EventNewNotification(
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(
new Notification(Notification.COMBO_PUMP_ALARM, MainApp.gs(R.string.combo_invalid_setup), Notification.URGENT)));
return;
}
@@ -362,7 +363,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
MainApp.gs(R.string.combo_force_disabled_notification),
Notification.URGENT);
n.soundId = R.raw.alarm;
- RxBus.INSTANCE.send(new EventNewNotification(n));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(n));
return;
}
@@ -375,7 +376,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
setValidBasalRateProfileSelectedOnPump(true);
pump.initialized = true;
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
// show notification to check pump date if last bolus is older than 24 hours
// or is in the future
@@ -384,13 +385,13 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
long now = System.currentTimeMillis();
if (lastBolusTimestamp < now - 24 * 60 * 60 * 1000 || lastBolusTimestamp > now + 5 * 60 * 1000) {
Notification notification = new Notification(Notification.COMBO_PUMP_ALARM, MainApp.gs(R.string.combo_check_date), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
}
// ComboFragment updates state fully only after the pump has initialized,
// so force an update after initialization completed
- RxBus.INSTANCE.send(new EventComboPumpUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventComboPumpUpdateGUI());
}
/**
@@ -406,7 +407,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
if (result.state.menu != null) {
pump.state = result.state;
}
- RxBus.INSTANCE.send(new EventComboPumpUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventComboPumpUpdateGUI());
}
@Override
@@ -452,7 +453,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
break;
}
event.setPercent(percent);
- RxBus.INSTANCE.send(event);
+ RxBus.Companion.getINSTANCE().send(event);
};
/**
@@ -478,14 +479,14 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
bolusingEvent.setT(new Treatment());
bolusingEvent.getT().isSMB = detailedBolusInfo.isSMB;
bolusingEvent.setPercent(100);
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
return new PumpEnactResult().success(true).enacted(true)
.bolusDelivered(0d).carbsDelivered(detailedBolusInfo.carbs)
.comment(MainApp.gs(R.string.virtualpump_resultok));
}
} finally {
- RxBus.INSTANCE.send(new EventComboPumpUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventComboPumpUpdateGUI());
}
}
@@ -493,7 +494,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
private PumpEnactResult deliverBolus(final DetailedBolusInfo detailedBolusInfo) {
try {
pump.activity = MainApp.gs(R.string.combo_pump_action_bolusing, detailedBolusInfo.insulin);
- RxBus.INSTANCE.send(new EventComboPumpUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventComboPumpUpdateGUI());
// check pump is ready and all pump bolus records are known
CommandResult stateResult = runCommand(null, 2, () -> ruffyScripter.readQuickInfo(1));
@@ -602,7 +603,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
long now = System.currentTimeMillis();
if (lastPumpBolus.timestamp < now - 10 * 60 * 1000 || lastPumpBolus.timestamp > now + 10 * 60 * 1000) {
Notification notification = new Notification(Notification.COMBO_PUMP_ALARM, MainApp.gs(R.string.combo_suspious_bolus_time), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
// update `recentBoluses` so the bolus was just delivered won't be detected as a new
@@ -628,8 +629,8 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
.carbsDelivered(detailedBolusInfo.carbs);
} finally {
pump.activity = null;
- RxBus.INSTANCE.send(new EventComboPumpUpdateGUI());
- RxBus.INSTANCE.send(new EventRefreshOverview("Bolus"));
+ RxBus.Companion.getINSTANCE().send(new EventComboPumpUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventRefreshOverview("Bolus"));
cancelBolus = false;
}
}
@@ -665,7 +666,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
log.error("Adding treatment record failed", e);
if (dbi.isSMB) {
Notification notification = new Notification(Notification.COMBO_PUMP_ALARM, MainApp.gs(R.string.combo_error_updating_treatment_record), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
return false;
}
@@ -760,7 +761,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
.source(Source.USER);
TreatmentsPlugin.getPlugin().addToHistoryTempBasal(tempStart);
- RxBus.INSTANCE.send(new EventComboPumpUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventComboPumpUpdateGUI());
}
incrementTbrCount();
@@ -848,7 +849,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
if (!ruffyScripter.isConnected()) {
String originalActivity = pump.activity;
pump.activity = MainApp.gs(R.string.combo_activity_checking_pump_state);
- RxBus.INSTANCE.send(new EventComboPumpUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventComboPumpUpdateGUI());
CommandResult preCheckError = runOnConnectChecks();
pump.activity = originalActivity;
if (preCheckError != null) {
@@ -859,7 +860,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
if (activity != null) {
pump.activity = activity;
- RxBus.INSTANCE.send(new EventComboPumpUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventComboPumpUpdateGUI());
}
commandResult = commandExecution.execute();
@@ -884,7 +885,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
MainApp.gs(R.string.combo_force_disabled_notification),
Notification.URGENT);
n.soundId = R.raw.alarm;
- RxBus.INSTANCE.send(new EventNewNotification(n));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(n));
ConfigBuilderPlugin.getPlugin().getCommandQueue().cancelTempBasal(true, null);
}
updateLocalData(commandResult);
@@ -892,7 +893,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
} finally {
if (activity != null) {
pump.activity = null;
- RxBus.INSTANCE.send(new EventComboPumpUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventComboPumpUpdateGUI());
}
}
@@ -930,7 +931,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
notification.id = Notification.COMBO_PUMP_ALARM;
notification.level = Notification.URGENT;
notification.text = MainApp.gs(R.string.combo_is_in_error_state, activeAlert.errorCode, activeAlert.message);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
return preCheckResult.success(false);
}
}
@@ -993,10 +994,10 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
if (readBasalResult.success) {
pump.basalProfile = readBasalResult.basalProfile;
Notification notification = new Notification(Notification.COMBO_PUMP_ALARM, MainApp.gs(R.string.combo_warning_pump_basal_rate_changed), Notification.NORMAL);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
Notification notification = new Notification(Notification.COMBO_PUMP_ALARM, MainApp.gs(R.string.combo_error_failure_reading_changed_basal_rate), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
}
}
@@ -1012,12 +1013,12 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
if (L.isEnabled(L.PUMP))
log.debug("Pump clock needs update, pump time: " + state.pumpTime + " (" + new Date(state.pumpTime) + ")");
Notification notification = new Notification(Notification.COMBO_PUMP_ALARM, MainApp.gs(R.string.combo_notification_check_time_date), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else if (Math.abs(state.pumpTime - System.currentTimeMillis()) >= 3 * 60 * 1000) {
if (L.isEnabled(L.PUMP))
log.debug("Pump clock needs update, pump time: " + state.pumpTime + " (" + new Date(state.pumpTime) + ")");
Notification notification = new Notification(Notification.COMBO_PUMP_ALARM, MainApp.gs(R.string.combo_notification_check_time_date), Notification.NORMAL);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
}
@@ -1039,7 +1040,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
} else if (activeAlert.warningCode == PumpWarningCodes.TBR_CANCELLED) {
notification.text = MainApp.gs(R.string.combo_pump_tbr_cancelled_warrning);
}
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
private void checkForUnsafeUsage(CommandResult commandResult) {
@@ -1062,7 +1063,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
MainApp.gs(R.string.combo_low_suspend_forced_notification),
Notification.URGENT);
n.soundId = R.raw.alarm;
- RxBus.INSTANCE.send(new EventNewNotification(n));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(n));
violationWarningRaisedForBolusAt = lowSuspendOnlyLoopEnforcedUntil;
ConfigBuilderPlugin.getPlugin().getCommandQueue().cancelTempBasal(true, null);
}
@@ -1222,7 +1223,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
log.debug("Bolus with same amount within the same minute imported. Only one will make it to the DB.");
Notification notification = new Notification(Notification.COMBO_PUMP_ALARM, MainApp.gs(R.string.
combo_error_multiple_boluses_with_identical_timestamp), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
pumpHistoryChanged = updateDbFromPumpHistory(historyResult.history);
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java
index b1d5db0e2a..4d25de09c3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java
@@ -53,12 +53,12 @@ public abstract class PumpPluginAbstract extends PluginBase implements PumpInter
private CompositeDisposable disposable = new CompositeDisposable();
private static final Logger LOG = LoggerFactory.getLogger(L.PUMP);
-
+/*
protected static final PumpEnactResult OPERATION_NOT_SUPPORTED = new PumpEnactResult().success(false)
.enacted(false).comment(MainApp.gs(R.string.pump_operation_not_supported_by_pump_driver));
protected static final PumpEnactResult OPERATION_NOT_YET_SUPPORTED = new PumpEnactResult().success(false)
.enacted(false).comment(MainApp.gs(R.string.pump_operation_not_yet_supported_by_pump));
-
+*/
protected PumpDescription pumpDescription = new PumpDescription();
protected PumpStatus pumpStatus;
protected ServiceConnection serviceConnection = null;
@@ -74,8 +74,6 @@ public abstract class PumpPluginAbstract extends PluginBase implements PumpInter
pumpDescription.setPumpDescription(pumpType);
- initPumpStatusData();
-
}
@@ -85,13 +83,16 @@ public abstract class PumpPluginAbstract extends PluginBase implements PumpInter
@Override
protected void onStart() {
super.onStart();
+ // TODO: moved from constructor .... test if it works
+ initPumpStatusData();
+
Context context = MainApp.instance().getApplicationContext();
Intent intent = new Intent(context, getServiceClass());
context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
serviceRunning = true;
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -426,7 +427,7 @@ public abstract class PumpPluginAbstract extends PluginBase implements PumpInter
bolusingEvent.setT(new Treatment());
bolusingEvent.getT().isSMB = detailedBolusInfo.isSMB;
bolusingEvent.setPercent(100);
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
if (isLoggingEnabled())
LOG.debug("deliverTreatment: Carb only treatment.");
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java
index ae0a0d34f7..2d5c0dde7d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java
@@ -110,7 +110,7 @@ public class RileyLinkBLEScanActivity extends NoSplashAppCompatActivity {
MedtronicPumpStatus pumpStatus = MedtronicUtil.getPumpStatus();
pumpStatus.verifyConfiguration(); // force reloading of address
- RxBus.INSTANCE.send(new EventMedtronicPumpConfigurationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventMedtronicPumpConfigurationChanged());
finish();
});
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java
index 3c7ba730a7..ac5bbd12a0 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java
@@ -124,7 +124,7 @@ public class RileyLinkUtil {
RileyLinkUtil.historyRileyLink.add(new RLHistoryItem(RileyLinkUtil.rileyLinkServiceData.serviceState,
RileyLinkUtil.rileyLinkServiceData.errorCode, targetDevice));
- RxBus.INSTANCE.send(new EventMedtronicDeviceStatusChange(newState, errorCode));
+ RxBus.Companion.getINSTANCE().send(new EventMedtronicDeviceStatusChange(newState, errorCode));
return null;
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java
index cce127ffdf..cc17f81b45 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java
@@ -25,11 +25,11 @@ public class ResetRileyLinkConfigurationTask extends PumpTask {
@Override
public void run() {
- RxBus.INSTANCE.send(new EventRefreshButtonState(false));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshButtonState(false));
MedtronicPumpPlugin.isBusy = true;
RileyLinkMedtronicService.getInstance().resetRileyLinkConfiguration();
MedtronicPumpPlugin.isBusy = false;
- RxBus.INSTANCE.send(new EventRefreshButtonState(true));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshButtonState(true));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java
index 5feb5ab405..1035d7d2d8 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java
@@ -25,10 +25,10 @@ public class WakeAndTuneTask extends PumpTask {
@Override
public void run() {
- RxBus.INSTANCE.send(new EventRefreshButtonState(false));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshButtonState(false));
MedtronicPumpPlugin.isBusy = true;
RileyLinkMedtronicService.getInstance().doTuneUpDevice();
MedtronicPumpPlugin.isBusy = false;
- RxBus.INSTANCE.send(new EventRefreshButtonState(true));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshButtonState(true));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java
index b243635e45..78bfb1b520 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java
@@ -48,7 +48,7 @@ import info.nightscout.androidaps.utils.SP;
*/
public abstract class AbstractDanaRPlugin extends PluginBase implements PumpInterface, DanaRInterface, ConstraintsInterface {
- protected Logger log = LoggerFactory.getLogger(L.PUMP);
+ private Logger log = LoggerFactory.getLogger(L.PUMP);
protected AbstractDanaRExecutionService sExecutionService;
@@ -96,22 +96,22 @@ public abstract class AbstractDanaRPlugin extends PluginBase implements PumpInte
if (!isInitialized()) {
log.error("setNewBasalProfile not initialized");
Notification notification = new Notification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED, MainApp.gs(R.string.pumpNotInitializedProfileNotSet), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
result.comment = MainApp.gs(R.string.pumpNotInitializedProfileNotSet);
return result;
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
}
if (!sExecutionService.updateBasalsInPump(profile)) {
Notification notification = new Notification(Notification.FAILED_UDPATE_PROFILE, MainApp.gs(R.string.failedupdatebasalprofile), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
result.comment = MainApp.gs(R.string.failedupdatebasalprofile);
return result;
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.FAILED_UDPATE_PROFILE));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.FAILED_UDPATE_PROFILE));
Notification notification = new Notification(Notification.PROFILE_SET_OK, MainApp.gs(R.string.profile_set_ok), Notification.INFO, 60);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
result.success = true;
result.enacted = true;
result.comment = "OK";
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRFragment.kt
index af1e80602e..10cef14db0 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRFragment.kt
@@ -6,8 +6,7 @@ import android.os.Handler
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-import info.nightscout.androidaps.MainApp
+import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.TDDStatsActivity
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
@@ -16,8 +15,9 @@ import info.nightscout.androidaps.events.EventPumpStatusChanged
import info.nightscout.androidaps.events.EventTempBasalChange
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.interfaces.PumpInterface
-import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRHistoryActivity
import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRUserOptionsActivity
@@ -30,13 +30,20 @@ import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.SetWarnColor
import info.nightscout.androidaps.utils.T
import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.danar_fragment.*
-import org.slf4j.LoggerFactory
+import javax.inject.Inject
+
+class DanaRFragment : DaggerFragment() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
+ @Inject lateinit var treatmentsPlugin: TreatmentsPlugin
+ @Inject lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
+ @Inject lateinit var resourceHelper: ResourceHelper
-class DanaRFragment : Fragment() {
- private val log = LoggerFactory.getLogger(L.PUMP)
private var disposable: CompositeDisposable = CompositeDisposable()
private val loopHandler = Handler()
@@ -57,7 +64,7 @@ class DanaRFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- dana_pumpstatus.setBackgroundColor(MainApp.gc(R.color.colorInitializingBorder))
+ dana_pumpstatus.setBackgroundColor(resourceHelper.gc(R.color.colorInitializingBorder))
danar_history.setOnClickListener { startActivity(Intent(context, DanaRHistoryActivity::class.java)) }
danar_viewprofile.setOnClickListener {
@@ -80,10 +87,9 @@ class DanaRFragment : Fragment() {
danar_stats.setOnClickListener { startActivity(Intent(context, TDDStatsActivity::class.java)) }
danar_user_options.setOnClickListener { startActivity(Intent(context, DanaRUserOptionsActivity::class.java)) }
danar_btconnection.setOnClickListener {
- if (L.isEnabled(L.PUMP))
- log.debug("Clicked connect to pump")
+ aapsLogger.debug(LTag.PUMP, "Clicked connect to pump")
DanaRPump.getInstance().lastConnection = 0
- ConfigBuilderPlugin.getPlugin().commandQueue.readStatus("Clicked connect to pump", null)
+ configBuilderPlugin.commandQueue.readStatus("Clicked connect to pump", null)
}
}
@@ -91,30 +97,36 @@ class DanaRFragment : Fragment() {
override fun onResume() {
super.onResume()
loopHandler.postDelayed(refreshLoop, T.mins(1).msecs())
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventDanaRNewStatus::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventExtendedBolusChange::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventTempBasalChange::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventQueueChanged::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
+ disposable += rxBus
.toObservable(EventPumpStatusChanged::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
when {
- it.sStatus == EventPumpStatusChanged.Status.CONNECTING -> danar_btconnection?.text = "{fa-bluetooth-b spin} " + it.sSecondsElapsed + "s"
- it.sStatus == EventPumpStatusChanged.Status.CONNECTED -> danar_btconnection?.text = "{fa-bluetooth}"
- it.sStatus == EventPumpStatusChanged.Status.DISCONNECTED -> danar_btconnection?.text = "{fa-bluetooth-b}"
+ it.sStatus == EventPumpStatusChanged.Status.CONNECTING ->
+ @Suppress("SetTextI18n")
+ danar_btconnection?.text = "{fa-bluetooth-b spin} ${it.sSecondsElapsed}s"
+ it.sStatus == EventPumpStatusChanged.Status.CONNECTED ->
+ @Suppress("SetTextI18n")
+ danar_btconnection?.text = "{fa-bluetooth}"
+ it.sStatus == EventPumpStatusChanged.Status.DISCONNECTED ->
+ @Suppress("SetTextI18n")
+ danar_btconnection?.text = "{fa-bluetooth-b}"
}
if (it.getStatus() != "") {
dana_pumpstatus?.text = it.getStatus()
@@ -138,11 +150,11 @@ class DanaRFragment : Fragment() {
internal fun updateGUI() {
if (danar_dailyunits == null) return
val pump = DanaRPump.getInstance()
- val plugin: PumpInterface = ConfigBuilderPlugin.getPlugin().activePump ?: return
+ val plugin: PumpInterface = configBuilderPlugin.activePump ?: return
if (pump.lastConnection != 0L) {
val agoMsec = System.currentTimeMillis() - pump.lastConnection
val agoMin = (agoMsec.toDouble() / 60.0 / 1000.0).toInt()
- danar_lastconnection.text = DateUtil.timeString(pump.lastConnection) + " (" + String.format(MainApp.gs(R.string.minago), agoMin) + ")"
+ danar_lastconnection.text = DateUtil.timeString(pump.lastConnection) + " (" + resourceHelper.gs(R.string.minago, agoMin) + ")"
SetWarnColor.setColor(danar_lastconnection, agoMin.toDouble(), 16.0, 31.0)
}
if (pump.lastBolusTime != 0L) {
@@ -150,39 +162,40 @@ class DanaRFragment : Fragment() {
val agoHours = agoMsec.toDouble() / 60.0 / 60.0 / 1000.0
if (agoHours < 6)
// max 6h back
- danar_lastbolus.text = DateUtil.timeString(pump.lastBolusTime) + " " + DateUtil.sinceString(pump.lastBolusTime) + " " + MainApp.gs(R.string.formatinsulinunits, pump.lastBolusAmount)
+ danar_lastbolus.text = DateUtil.timeString(pump.lastBolusTime) + " " + DateUtil.sinceString(pump.lastBolusTime) + " " + resourceHelper.gs(R.string.formatinsulinunits, pump.lastBolusAmount)
else
danar_lastbolus.text = ""
}
- danar_dailyunits.text = MainApp.gs(R.string.reservoirvalue, pump.dailyTotalUnits, pump.maxDailyTotalUnits)
+ danar_dailyunits.text = resourceHelper.gs(R.string.reservoirvalue, pump.dailyTotalUnits, pump.maxDailyTotalUnits)
SetWarnColor.setColor(danar_dailyunits, pump.dailyTotalUnits, pump.maxDailyTotalUnits * 0.75, pump.maxDailyTotalUnits * 0.9)
- danar_basabasalrate.text = "( " + (pump.activeProfile + 1) + " ) " + MainApp.gs(R.string.pump_basebasalrate, plugin.baseBasalRate)
+ danar_basabasalrate.text = "( " + (pump.activeProfile + 1) + " ) " + resourceHelper.gs(R.string.pump_basebasalrate, plugin.baseBasalRate)
// DanaRPlugin, DanaRKoreanPlugin
- if (ConfigBuilderPlugin.getPlugin().activePump!!.isFakingTempsByExtendedBoluses) {
- danar_tempbasal.text = TreatmentsPlugin.getPlugin()
- .getRealTempBasalFromHistory(System.currentTimeMillis())?.toStringFull() ?: ""
+ if (configBuilderPlugin.activePump?.isFakingTempsByExtendedBoluses == true) {
+ danar_tempbasal.text = treatmentsPlugin.getRealTempBasalFromHistory(System.currentTimeMillis())?.toStringFull()
+ ?: ""
} else {
// v2 plugin
- danar_tempbasal.text = TreatmentsPlugin.getPlugin()
- .getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull() ?: ""
+ danar_tempbasal.text = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull()
+ ?: ""
}
- danar_extendedbolus.text = TreatmentsPlugin.getPlugin()
- .getExtendedBolusFromHistory(System.currentTimeMillis())?.toString() ?: ""
- danar_reservoir.text = MainApp.gs(R.string.reservoirvalue, pump.reservoirRemainingUnits, 300)
+ danar_extendedbolus.text = treatmentsPlugin.getExtendedBolusFromHistory(System.currentTimeMillis())?.toString()
+ ?: ""
+ danar_reservoir.text = resourceHelper.gs(R.string.reservoirvalue, pump.reservoirRemainingUnits, 300)
SetWarnColor.setColorInverse(danar_reservoir, pump.reservoirRemainingUnits, 50.0, 20.0)
danar_battery.text = "{fa-battery-" + pump.batteryRemaining / 25 + "}"
SetWarnColor.setColorInverse(danar_battery, pump.batteryRemaining.toDouble(), 51.0, 26.0)
- danar_iob.text = MainApp.gs(R.string.formatinsulinunits, pump.iob)
+ danar_iob.text = resourceHelper.gs(R.string.formatinsulinunits, pump.iob)
if (pump.model != 0 || pump.protocol != 0 || pump.productCode != 0) {
- danar_firmware.text = String.format(MainApp.gs(R.string.danar_model), pump.model, pump.protocol, pump.productCode)
+ danar_firmware.text = resourceHelper.gs(R.string.danar_model, pump.model, pump.protocol, pump.productCode)
} else {
+ @Suppress("SetTextI18n")
danar_firmware.text = "OLD"
}
danar_basalstep.text = pump.basalStep.toString()
danar_bolusstep.text = pump.bolusStep.toString()
danar_serialnumber.text = pump.serialNumber
- val status = ConfigBuilderPlugin.getPlugin().commandQueue.spannedStatus()
+ val status = configBuilderPlugin.commandQueue.spannedStatus()
if (status.toString() == "") {
danar_queue.visibility = View.GONE
} else {
@@ -191,7 +204,7 @@ class DanaRFragment : Fragment() {
}
//hide user options button if not an RS pump or old firmware
// also excludes pump with model 03 because of untested error
- val isKorean = DanaRKoreanPlugin.getPlugin().isEnabled(PluginType.PUMP)
+ val isKorean = danaRKoreanPlugin.isEnabled(PluginType.PUMP)
if (isKorean || danar_firmware.text === "OLD" || pump.model == 3) {
danar_user_options.visibility = View.GONE
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java
index 0d0205b734..7c2ff3e072 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java
@@ -6,6 +6,11 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
+import androidx.annotation.NonNull;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.DetailedBolusInfo;
@@ -17,8 +22,9 @@ import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.events.EventPreferenceChange;
import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.interfaces.PluginType;
-import info.nightscout.androidaps.logging.L;
-import info.nightscout.androidaps.plugins.bus.RxBus;
+import info.nightscout.androidaps.logging.AAPSLogger;
+import info.nightscout.androidaps.logging.LTag;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStartWithSpeed;
@@ -27,63 +33,85 @@ import info.nightscout.androidaps.plugins.treatments.Treatment;
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.Round;
-import info.nightscout.androidaps.utils.SP;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
-/**
- * Created by mike on 05.08.2016.
- */
+@Singleton
public class DanaRPlugin extends AbstractDanaRPlugin {
private CompositeDisposable disposable = new CompositeDisposable();
+ private final AAPSLogger aapsLogger;
+ private final RxBusWrapper rxBus;
+ private final MainApp mainApp;
+ private final ResourceHelper resourceHelper;
+ private final ConstraintChecker constraintChecker;
+ private final TreatmentsPlugin treatmentsPlugin;
+ private final SP sp;
+
private static DanaRPlugin plugin = null;
+ @Deprecated
public static DanaRPlugin getPlugin() {
if (plugin == null)
- plugin = new DanaRPlugin();
+ throw new IllegalStateException("Accessing DanaRPlugin before first instantiation");
return plugin;
}
- public DanaRPlugin() {
+ @Inject
+ public DanaRPlugin(
+ AAPSLogger aapsLogger,
+ RxBusWrapper rxBus,
+ MainApp maiApp,
+ ResourceHelper resourceHelper,
+ ConstraintChecker constraintChecker,
+ TreatmentsPlugin treatmentsPlugin,
+ SP sp
+ ) {
super();
- useExtendedBoluses = SP.getBoolean(R.string.key_danar_useextended, false);
+ plugin = this;
+ this.aapsLogger = aapsLogger;
+ this.rxBus = rxBus;
+ this.mainApp = maiApp;
+ this.resourceHelper = resourceHelper;
+ this.constraintChecker = constraintChecker;
+ this.treatmentsPlugin = treatmentsPlugin;
+ this.sp = sp;
+
+ useExtendedBoluses = sp.getBoolean(R.string.key_danar_useextended, false);
pumpDescription.setPumpDescription(PumpType.DanaR);
}
@Override
protected void onStart() {
- Context context = MainApp.instance().getApplicationContext();
- Intent intent = new Intent(context, DanaRExecutionService.class);
- context.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
- disposable.add(RxBus.INSTANCE
+ Intent intent = new Intent(mainApp, DanaRExecutionService.class);
+ mainApp.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+ disposable.add(rxBus
.toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
if (isEnabled(PluginType.PUMP)) {
boolean previousValue = useExtendedBoluses;
- useExtendedBoluses = SP.getBoolean(R.string.key_danar_useextended, false);
+ useExtendedBoluses = sp.getBoolean(R.string.key_danar_useextended, false);
- if (useExtendedBoluses != previousValue && TreatmentsPlugin.getPlugin().isInHistoryExtendedBoluslInProgress()) {
+ if (useExtendedBoluses != previousValue && treatmentsPlugin.isInHistoryExtendedBoluslInProgress()) {
sExecutionService.extendedBolusStop();
}
}
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
- .subscribe(event -> {
- MainApp.instance().getApplicationContext().unbindService(mConnection);
- }, FabricPrivacy::logException)
+ .subscribe(event -> mainApp.unbindService(mConnection), FabricPrivacy::logException)
);
super.onStart();
}
@Override
protected void onStop() {
- Context context = MainApp.instance().getApplicationContext();
- context.unbindService(mConnection);
+ mainApp.unbindService(mConnection);
disposable.clear();
super.onStop();
@@ -92,23 +120,22 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
- if (L.isEnabled(L.PUMP))
- log.debug("Service is disconnected");
+ aapsLogger.debug(LTag.PUMP, "Service is disconnected");
sExecutionService = null;
}
public void onServiceConnected(ComponentName name, IBinder service) {
- if (L.isEnabled(L.PUMP))
- log.debug("Service is connected");
+ aapsLogger.debug(LTag.PUMP, "Service is connected");
DanaRExecutionService.LocalBinder mLocalBinder = (DanaRExecutionService.LocalBinder) service;
sExecutionService = mLocalBinder.getServiceInstance();
}
};
// Plugin base interface
+ @NonNull
@Override
public String getName() {
- return MainApp.gs(R.string.danarpump);
+ return resourceHelper.gs(R.string.danarpump);
}
@Override
@@ -140,7 +167,7 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
@Override
public PumpEnactResult deliverTreatment(DetailedBolusInfo detailedBolusInfo) {
- detailedBolusInfo.insulin = ConstraintChecker.getInstance().applyBolusConstraints(new Constraint<>(detailedBolusInfo.insulin)).value();
+ detailedBolusInfo.insulin = constraintChecker.applyBolusConstraints(new Constraint<>(detailedBolusInfo.insulin)).value();
if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) {
Treatment t = new Treatment();
t.isSMB = detailedBolusInfo.isSMB;
@@ -152,22 +179,21 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
result.bolusDelivered = t.insulin;
result.carbsDelivered = detailedBolusInfo.carbs;
if (!result.success)
- result.comment = String.format(MainApp.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, MsgBolusStartWithSpeed.errorCode);
+ result.comment = String.format(resourceHelper.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, MsgBolusStartWithSpeed.errorCode);
else
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (L.isEnabled(L.PUMP))
- log.debug("deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ aapsLogger.debug(LTag.PUMP, "deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
detailedBolusInfo.insulin = t.insulin;
detailedBolusInfo.date = System.currentTimeMillis();
- TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false);
+ treatmentsPlugin.addToHistoryTreatment(detailedBolusInfo, false);
return result;
} else {
PumpEnactResult result = new PumpEnactResult();
result.success = false;
result.bolusDelivered = 0d;
result.carbsDelivered = 0d;
- result.comment = MainApp.gs(R.string.danar_invalidinput);
- log.error("deliverTreatment: Invalid input");
+ result.comment = resourceHelper.gs(R.string.danar_invalidinput);
+ aapsLogger.error("deliverTreatment: Invalid input");
return result;
}
}
@@ -184,7 +210,7 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
PumpEnactResult result = new PumpEnactResult();
- absoluteRate = ConstraintChecker.getInstance().applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
+ absoluteRate = constraintChecker.applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
final boolean doTempOff = getBaseBasalRate() - absoluteRate == 0d;
final boolean doLowTemp = absoluteRate < getBaseBasalRate();
@@ -192,20 +218,18 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
final boolean doExtendedTemp = absoluteRate > getBaseBasalRate() && useExtendedBoluses;
long now = System.currentTimeMillis();
- TemporaryBasal activeTemp = TreatmentsPlugin.getPlugin().getRealTempBasalFromHistory(now);
- ExtendedBolus activeExtended = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(now);
+ TemporaryBasal activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(now);
+ ExtendedBolus activeExtended = treatmentsPlugin.getExtendedBolusFromHistory(now);
if (doTempOff) {
// If extended in progress
if (activeExtended != null && useExtendedBoluses) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Stopping extended bolus (doTempOff)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping extended bolus (doTempOff)");
return cancelExtendedBolus();
}
// If temp in progress
if (activeTemp != null) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Stopping temp basal (doTempOff)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping temp basal (doTempOff)");
return cancelRealTempBasal();
}
result.success = true;
@@ -213,8 +237,7 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
result.percent = 100;
result.isPercent = true;
result.isTempCancel = true;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: doTempOff OK");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: doTempOff OK");
return result;
}
@@ -225,24 +248,21 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
if (percentRate > getPumpDescription().maxTempPercent) {
percentRate = getPumpDescription().maxTempPercent;
}
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Calculated percent rate: " + percentRate);
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Calculated percent rate: " + percentRate);
// If extended in progress
if (activeExtended != null && useExtendedBoluses) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Stopping extended bolus (doLowTemp || doHighTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping extended bolus (doLowTemp || doHighTemp)");
result = cancelExtendedBolus();
if (!result.success) {
- log.error("setTempBasalAbsolute: Failed to stop previous extended bolus (doLowTemp || doHighTemp)");
+ aapsLogger.error("setTempBasalAbsolute: Failed to stop previous extended bolus (doLowTemp || doHighTemp)");
return result;
}
}
// Check if some temp is already in progress
if (activeTemp != null) {
// Correct basal already set ?
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: currently running: " + activeTemp.toString());
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: currently running: " + activeTemp.toString());
if (activeTemp.percentRate == percentRate && activeTemp.getPlannedRemainingMinutes() > 4) {
if (enforceNew) {
cancelTempBasal(true);
@@ -253,43 +273,38 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
result.duration = activeTemp.getPlannedRemainingMinutes();
result.isPercent = true;
result.isTempCancel = false;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Correct temp basal already set (doLowTemp || doHighTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Correct temp basal already set (doLowTemp || doHighTemp)");
return result;
}
}
}
// Convert duration from minutes to hours
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Setting temp basal " + percentRate + "% for " + durationInMinutes + " mins (doLowTemp || doHighTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Setting temp basal " + percentRate + "% for " + durationInMinutes + " mins (doLowTemp || doHighTemp)");
return setTempBasalPercent(percentRate, durationInMinutes, profile, false);
}
if (doExtendedTemp) {
// Check if some temp is already in progress
if (activeTemp != null) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Stopping temp basal (doExtendedTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping temp basal (doExtendedTemp)");
result = cancelRealTempBasal();
// Check for proper result
if (!result.success) {
- log.error("setTempBasalAbsolute: Failed to stop previous temp basal (doExtendedTemp)");
+ aapsLogger.error("setTempBasalAbsolute: Failed to stop previous temp basal (doExtendedTemp)");
return result;
}
}
// Calculate # of halfHours from minutes
- Integer durationInHalfHours = Math.max(durationInMinutes / 30, 1);
+ int durationInHalfHours = Math.max(durationInMinutes / 30, 1);
// We keep current basal running so need to sub current basal
Double extendedRateToSet = absoluteRate - getBaseBasalRate();
- extendedRateToSet = ConstraintChecker.getInstance().applyBasalConstraints(new Constraint<>(extendedRateToSet), profile).value();
+ extendedRateToSet = constraintChecker.applyBasalConstraints(new Constraint<>(extendedRateToSet), profile).value();
// needs to be rounded to 0.1
extendedRateToSet = Round.roundTo(extendedRateToSet, pumpDescription.extendedBolusStep * 2); // *2 because of halfhours
// What is current rate of extended bolusing in u/h?
- if (L.isEnabled(L.PUMP)) {
- log.debug("setTempBasalAbsolute: Extended bolus in progress: " + (activeExtended != null) + " rate: " + pump.extendedBolusAbsoluteRate + "U/h duration remaining: " + pump.extendedBolusRemainingMinutes + "min");
- log.debug("setTempBasalAbsolute: Rate to set: " + extendedRateToSet + "U/h");
- }
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Extended bolus in progress: " + (activeExtended != null) + " rate: " + pump.extendedBolusAbsoluteRate + "U/h duration remaining: " + pump.extendedBolusRemainingMinutes + "min");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Rate to set: " + extendedRateToSet + "U/h");
// Compare with extended rate in progress
if (activeExtended != null && Math.abs(pump.extendedBolusAbsoluteRate - extendedRateToSet) < getPumpDescription().extendedBolusStep) {
@@ -300,27 +315,24 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
result.duration = pump.extendedBolusRemainingMinutes;
result.isPercent = false;
result.isTempCancel = false;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Correct extended already set");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Correct extended already set");
return result;
}
// Now set new extended, no need to to stop previous (if running) because it's replaced
Double extendedAmount = extendedRateToSet / 2 * durationInHalfHours;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Setting extended: " + extendedAmount + "U halfhours: " + durationInHalfHours);
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Setting extended: " + extendedAmount + "U halfhours: " + durationInHalfHours);
result = setExtendedBolus(extendedAmount, durationInMinutes);
if (!result.success) {
- log.error("setTempBasalAbsolute: Failed to set extended bolus");
+ aapsLogger.error("setTempBasalAbsolute: Failed to set extended bolus");
return result;
}
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Extended bolus set ok");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Extended bolus set ok");
result.absolute = result.absolute + getBaseBasalRate();
return result;
}
// We should never end here
- log.error("setTempBasalAbsolute: Internal error");
+ aapsLogger.error("setTempBasalAbsolute: Internal error");
result.success = false;
result.comment = "Internal error";
return result;
@@ -328,15 +340,15 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
@Override
public PumpEnactResult cancelTempBasal(boolean force) {
- if (TreatmentsPlugin.getPlugin().isInHistoryRealTempBasalInProgress())
+ if (treatmentsPlugin.isInHistoryRealTempBasalInProgress())
return cancelRealTempBasal();
- if (TreatmentsPlugin.getPlugin().isInHistoryExtendedBoluslInProgress() && useExtendedBoluses) {
+ if (treatmentsPlugin.isInHistoryExtendedBoluslInProgress() && useExtendedBoluses) {
return cancelExtendedBolus();
}
PumpEnactResult result = new PumpEnactResult();
result.success = true;
result.enacted = false;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
result.isTempCancel = true;
return result;
}
@@ -348,7 +360,7 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
private PumpEnactResult cancelRealTempBasal() {
PumpEnactResult result = new PumpEnactResult();
- TemporaryBasal runningTB = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal runningTB = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis());
if (runningTB != null) {
sExecutionService.tempBasalStop();
result.enacted = true;
@@ -357,15 +369,14 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
if (!DanaRPump.getInstance().isTempBasalInProgress) {
result.success = true;
result.isTempCancel = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (L.isEnabled(L.PUMP))
- log.debug("cancelRealTempBasal: OK");
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ aapsLogger.debug(LTag.PUMP, "cancelRealTempBasal: OK");
return result;
} else {
result.success = false;
- result.comment = MainApp.gs(R.string.danar_valuenotsetproperly);
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly);
result.isTempCancel = true;
- log.error("cancelRealTempBasal: Failed to cancel temp basal");
+ aapsLogger.error("cancelRealTempBasal: Failed to cancel temp basal");
return result;
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.kt
index 361f8e716e..6088cfebb3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.kt
@@ -17,8 +17,9 @@ import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.db.DanaRHistoryRecord
import info.nightscout.androidaps.events.EventPumpStatusChanged
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus.toObservable
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions
import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes
@@ -29,14 +30,22 @@ import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.DecimalFormatter
import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.danar_historyactivity.*
-import org.slf4j.LoggerFactory
import java.util.*
+import javax.inject.Inject
class DanaRHistoryActivity : NoSplashAppCompatActivity() {
- private val log = LoggerFactory.getLogger(L.PUMP)
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
+ @Inject lateinit var danaRSPlugin: DanaRSPlugin
+ @Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
+
private val disposable = CompositeDisposable()
private var showingType = RecordTypes.RECORD_TYPE_ALARM
@@ -48,18 +57,17 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
override fun onResume() {
super.onResume()
- disposable.add(toObservable(EventPumpStatusChanged::class.java)
+ disposable += rxBus
+ .toObservable(EventPumpStatusChanged::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ danar_history_status.text = it.getStatus() }) { FabricPrivacy.logException(it) }
- )
- disposable.add(toObservable(EventDanaRSyncStatus::class.java)
+ disposable += rxBus
+ .toObservable(EventDanaRSyncStatus::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
- if (L.isEnabled(L.PUMP))
- log.debug("EventDanaRSyncStatus: " + it.message)
+ aapsLogger.debug(LTag.PUMP, "EventDanaRSyncStatus: " + it.message)
danar_history_status.text = it.message
}) { FabricPrivacy.logException(it) }
- )
}
override fun onPause() {
@@ -76,24 +84,24 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
danar_history_recyclerview.adapter = RecyclerViewAdapter(historyList)
danar_history_status.visibility = View.GONE
- val isKorean = DanaRKoreanPlugin.getPlugin().isEnabled(PluginType.PUMP)
- val isRS = DanaRSPlugin.getPlugin().isEnabled(PluginType.PUMP)
+ val isKorean = danaRKoreanPlugin.isEnabled(PluginType.PUMP)
+ val isRS = danaRSPlugin.isEnabled(PluginType.PUMP)
// Types
val typeList = ArrayList()
- typeList.add(TypeList(RecordTypes.RECORD_TYPE_ALARM, MainApp.gs(R.string.danar_history_alarm)))
- typeList.add(TypeList(RecordTypes.RECORD_TYPE_BASALHOUR, MainApp.gs(R.string.danar_history_basalhours)))
- typeList.add(TypeList(RecordTypes.RECORD_TYPE_BOLUS, MainApp.gs(R.string.danar_history_bolus)))
- typeList.add(TypeList(RecordTypes.RECORD_TYPE_CARBO, MainApp.gs(R.string.danar_history_carbohydrates)))
- typeList.add(TypeList(RecordTypes.RECORD_TYPE_DAILY, MainApp.gs(R.string.danar_history_dailyinsulin)))
- typeList.add(TypeList(RecordTypes.RECORD_TYPE_GLUCOSE, MainApp.gs(R.string.danar_history_glucose)))
+ typeList.add(TypeList(RecordTypes.RECORD_TYPE_ALARM, resourceHelper.gs(R.string.danar_history_alarm)))
+ typeList.add(TypeList(RecordTypes.RECORD_TYPE_BASALHOUR, resourceHelper.gs(R.string.danar_history_basalhours)))
+ typeList.add(TypeList(RecordTypes.RECORD_TYPE_BOLUS, resourceHelper.gs(R.string.danar_history_bolus)))
+ typeList.add(TypeList(RecordTypes.RECORD_TYPE_CARBO, resourceHelper.gs(R.string.danar_history_carbohydrates)))
+ typeList.add(TypeList(RecordTypes.RECORD_TYPE_DAILY, resourceHelper.gs(R.string.danar_history_dailyinsulin)))
+ typeList.add(TypeList(RecordTypes.RECORD_TYPE_GLUCOSE, resourceHelper.gs(R.string.danar_history_glucose)))
if (!isKorean && !isRS) {
- typeList.add(TypeList(RecordTypes.RECORD_TYPE_ERROR, MainApp.gs(R.string.danar_history_errors)))
+ typeList.add(TypeList(RecordTypes.RECORD_TYPE_ERROR, resourceHelper.gs(R.string.danar_history_errors)))
}
- if (isRS) typeList.add(TypeList(RecordTypes.RECORD_TYPE_PRIME, MainApp.gs(R.string.danar_history_prime)))
+ if (isRS) typeList.add(TypeList(RecordTypes.RECORD_TYPE_PRIME, resourceHelper.gs(R.string.danar_history_prime)))
if (!isKorean) {
- typeList.add(TypeList(RecordTypes.RECORD_TYPE_REFILL, MainApp.gs(R.string.danar_history_refill)))
- typeList.add(TypeList(RecordTypes.RECORD_TYPE_SUSPEND, MainApp.gs(R.string.danar_history_syspend)))
+ typeList.add(TypeList(RecordTypes.RECORD_TYPE_REFILL, resourceHelper.gs(R.string.danar_history_refill)))
+ typeList.add(TypeList(RecordTypes.RECORD_TYPE_SUSPEND, resourceHelper.gs(R.string.danar_history_syspend)))
}
danar_history_spinner.adapter = ArrayAdapter(this, R.layout.spinner_centered, typeList)
@@ -104,7 +112,7 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
danar_history_status.visibility = View.VISIBLE
}
clearCardView()
- ConfigBuilderPlugin.getPlugin().commandQueue.loadHistory(selected.type, object : Callback() {
+ configBuilderPlugin.commandQueue.loadHistory(selected.type, object : Callback() {
override fun run() {
loadDataFromDB(selected.type)
runOnUiThread {
@@ -165,9 +173,9 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
}
RecordTypes.RECORD_TYPE_DAILY -> {
- holder.dailyBasal.text = MainApp.gs(R.string.formatinsulinunits, record.recordDailyBasal)
- holder.dailyBolus.text = MainApp.gs(R.string.formatinsulinunits, record.recordDailyBolus)
- holder.dailyTotal.text = MainApp.gs(R.string.formatinsulinunits, record.recordDailyBolus + record.recordDailyBasal)
+ holder.dailyBasal.text = resourceHelper.gs(R.string.formatinsulinunits, record.recordDailyBasal)
+ holder.dailyBolus.text = resourceHelper.gs(R.string.formatinsulinunits, record.recordDailyBolus)
+ holder.dailyTotal.text = resourceHelper.gs(R.string.formatinsulinunits, record.recordDailyBolus + record.recordDailyBasal)
holder.time.text = DateUtil.dateString(record.recordDate)
holder.time.visibility = View.VISIBLE
holder.value.visibility = View.GONE
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRNSHistorySync.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRNSHistorySync.java
index bf6f80af0b..c6a8cf72c3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRNSHistorySync.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRNSHistorySync.java
@@ -227,10 +227,10 @@ public class DanaRNSHistorySync {
log.error("Unknown record type");
break;
}
- RxBus.INSTANCE.send(ev);
+ RxBus.Companion.getINSTANCE().send(ev);
}
ev.setMessage(String.format(MainApp.gs(R.string.danar_totaluploaded), uploaded));
- RxBus.INSTANCE.send(ev);
+ RxBus.Companion.getINSTANCE().send(ev);
} catch (JSONException e) {
log.error("Unhandled exception", e);
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.kt
index a3a6c3c083..8b68be0a33 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.kt
@@ -9,8 +9,10 @@ import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
import info.nightscout.androidaps.events.EventInitializationChanged
import info.nightscout.androidaps.interfaces.PluginType
+import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus.toObservable
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
@@ -18,32 +20,41 @@ import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.danar_user_options_activity.*
-import org.slf4j.LoggerFactory
import java.text.DecimalFormat
+import javax.inject.Inject
import kotlin.math.max
import kotlin.math.min
class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
-
- private val log = LoggerFactory.getLogger(L.PUMP)
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var mainApp: MainApp
+ @Inject lateinit var danaRSPlugin: DanaRSPlugin
+ @Inject lateinit var danaRPlugin: DanaRPlugin
+ @Inject lateinit var danaRv2Plugin: DanaRv2Plugin
+ @Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
private val disposable = CompositeDisposable()
// This is for Dana pumps only
- private var isRS = DanaRSPlugin.getPlugin().isEnabled(PluginType.PUMP)
- private var isDanaR = DanaRPlugin.getPlugin().isEnabled(PluginType.PUMP)
- private var isDanaRv2 = DanaRv2Plugin.getPlugin().isEnabled(PluginType.PUMP)
+ private fun isRS() = danaRSPlugin.isEnabled(PluginType.PUMP)
+
+ private fun isDanaR() = danaRPlugin.isEnabled(PluginType.PUMP)
+ private fun isDanaRv2() = danaRv2Plugin.isEnabled(PluginType.PUMP)
@Synchronized
override fun onResume() {
super.onResume()
- disposable.add(toObservable(EventInitializationChanged::class.java)
+ disposable += rxBus
+ .toObservable(EventInitializationChanged::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ setData() }) { FabricPrivacy.logException(it) }
- )
}
@Synchronized
@@ -60,14 +71,15 @@ class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
val pump = DanaRPump.getInstance()
if (L.isEnabled(L.PUMP))
- log.debug("UserOptionsLoaded:" + (System.currentTimeMillis() - pump.lastConnection) / 1000 + " s ago"
- + "\ntimeDisplayType:" + pump.timeDisplayType
- + "\nbuttonScroll:" + pump.buttonScrollOnOff
- + "\ntimeDisplayType:" + pump.timeDisplayType
- + "\nlcdOnTimeSec:" + pump.lcdOnTimeSec
- + "\nbackLight:" + pump.backlightOnTimeSec
- + "\npumpUnits:" + pump.units
- + "\nlowReservoir:" + pump.lowReservoirRate)
+ aapsLogger.debug(LTag.PUMP,
+ "UserOptionsLoaded:" + (System.currentTimeMillis() - pump.lastConnection) / 1000 + " s ago"
+ + "\ntimeDisplayType:" + pump.timeDisplayType
+ + "\nbuttonScroll:" + pump.buttonScrollOnOff
+ + "\ntimeDisplayType:" + pump.timeDisplayType
+ + "\nlcdOnTimeSec:" + pump.lcdOnTimeSec
+ + "\nbackLight:" + pump.backlightOnTimeSec
+ + "\npumpUnits:" + pump.units
+ + "\nlowReservoir:" + pump.lowReservoirRate)
danar_screentimeout.setParams(pump.lcdOnTimeSec.toDouble(), 5.0, 240.0, 5.0, DecimalFormat("1"), false, save_user_options)
danar_backlight.setParams(pump.backlightOnTimeSec.toDouble(), 1.0, 60.0, 1.0, DecimalFormat("1"), false, save_user_options)
@@ -94,13 +106,13 @@ class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
}
}
if (pump.lastSettingsRead == 0L)
- log.error("No settings loaded from pump!") else setData()
+ aapsLogger.error(LTag.PUMP, "No settings loaded from pump!") else setData()
}
fun setData() {
val pump = DanaRPump.getInstance()
// in DanaRS timeDisplay values are reversed
- danar_timeformat.isChecked = !isRS && pump.timeDisplayType != 0 || isRS && pump.timeDisplayType == 0
+ danar_timeformat.isChecked = !isRS() && pump.timeDisplayType != 0 || isRS() && pump.timeDisplayType == 0
danar_buttonscroll.isChecked = pump.buttonScrollOnOff != 0
danar_beep.isChecked = pump.beepAndAlarm > 4
danar_screentimeout.value = pump.lcdOnTimeSec.toDouble()
@@ -112,11 +124,11 @@ class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
private fun onSaveClick() {
//exit if pump is not DanaRS, DanaR, or DanaR with upgraded firmware
- if (!isRS && !isDanaR && !isDanaRv2) return
+ if (!isRS() && !isDanaR() && !isDanaRv2()) return
val pump = DanaRPump.getInstance()
- if (isRS) // displayTime on RS is reversed
+ if (isRS()) // displayTime on RS is reversed
pump.timeDisplayType = if (danar_timeformat.isChecked) 0 else 1
else
pump.timeDisplayType = if (danar_timeformat.isChecked) 1 else 0
@@ -137,20 +149,20 @@ class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
pump.units = if (danar_units.isChecked) 1 else 0
- pump.shutdownHour = min(danar_shutdown.value.toInt(),24)
+ pump.shutdownHour = min(danar_shutdown.value.toInt(), 24)
// 10 to 50
pump.lowReservoirRate = min(max(danar_lowreservoir.value.toInt() * 10 / 10, 10), 50)
- ConfigBuilderPlugin.getPlugin().commandQueue.setUserOptions(object : Callback() {
+ configBuilderPlugin.commandQueue.setUserOptions(object : Callback() {
override fun run() {
if (!result.success) {
- val i = Intent(MainApp.instance(), ErrorHelperActivity::class.java)
+ val i = Intent(mainApp, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
- i.putExtra("title", MainApp.gs(R.string.pumperror))
+ i.putExtra("title", resourceHelper.gs(R.string.pumperror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- MainApp.instance().startActivity(i)
+ mainApp.startActivity(i)
}
}
})
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusProgress.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusProgress.java
index 362b72c929..235197721d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusProgress.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusProgress.java
@@ -47,6 +47,6 @@ public class MsgBolusProgress extends MessageBase {
log.debug("Bolus remaining: " + progress + " delivered: " + done);
}
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStop.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStop.java
index 2ea50297fb..5108729196 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStop.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStop.java
@@ -45,6 +45,6 @@ public class MsgBolusStop extends MessageBase {
} else {
bolusingEvent.setStatus(MainApp.gs(R.string.overview_bolusprogress_stoped));
}
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgError.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgError.java
index a6fdaa8d0d..64fffc7bb3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgError.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgError.java
@@ -48,7 +48,7 @@ public class MsgError extends MessageBase {
EventOverviewBolusProgress bolusingEvent = EventOverviewBolusProgress.INSTANCE;
MsgBolusStop.stopped = true;
bolusingEvent.setStatus(errorString);
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
failed=true;
}
if (L.isEnabled(L.PUMPCOMM))
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAll.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAll.java
index 955d7fc090..3f28fd230c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAll.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAll.java
@@ -144,6 +144,6 @@ public class MsgHistoryAll extends MessageBase {
}
MainApp.getDbHelper().createOrUpdate(danaRHistoryRecord);
- RxBus.INSTANCE.send(new EventDanaRSyncStatus(DateUtil.dateAndTimeString(danaRHistoryRecord.recordDate) + " " + messageType));
+ RxBus.Companion.getINSTANCE().send(new EventDanaRSyncStatus(DateUtil.dateAndTimeString(danaRHistoryRecord.recordDate) + " " + messageType));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolus.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolus.java
index 79fac775a5..f0df6ace34 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolus.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolus.java
@@ -46,9 +46,9 @@ public class MsgInitConnStatusBolus extends MessageBase {
if (!pump.isExtendedBolusEnabled) {
Notification notification = new Notification(Notification.EXTENDED_BOLUS_DISABLED, MainApp.gs(R.string.danar_enableextendedbolus), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.EXTENDED_BOLUS_DISABLED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.EXTENDED_BOLUS_DISABLED));
}
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOption.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOption.java
index f615b4d559..5795bce903 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOption.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOption.java
@@ -46,9 +46,9 @@ public class MsgInitConnStatusOption extends MessageBase {
if (!DanaRPump.getInstance().isPasswordOK()) {
Notification notification = new Notification(Notification.WRONG_PUMP_PASSWORD, MainApp.gs(R.string.wrongpumppassword), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.WRONG_PUMP_PASSWORD));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.WRONG_PUMP_PASSWORD));
}
// This is last message of initial sequence
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTime.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTime.java
index 974e63fe80..e12555ee5c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTime.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTime.java
@@ -30,7 +30,7 @@ public class MsgInitConnStatusTime extends MessageBase {
public void handleMessage(byte[] bytes) {
if (bytes.length - 10 > 7) {
Notification notification = new Notification(Notification.WRONG_DRIVER, MainApp.gs(R.string.pumpdrivercorrected), Notification.NORMAL);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
DanaRPlugin.getPlugin().disconnect("Wrong Model");
log.error("Wrong model selected. Switching to Korean DanaR");
DanaRKoreanPlugin.getPlugin().setPluginEnabled(PluginType.PUMP, true);
@@ -47,7 +47,7 @@ public class MsgInitConnStatusTime extends MessageBase {
}
ConfigBuilderPlugin.getPlugin().storeSettings("ChangingDanaDriver");
- RxBus.INSTANCE.send(new EventRebuildTabs());
+ RxBus.Companion.getINSTANCE().send(new EventRebuildTabs());
ConfigBuilderPlugin.getPlugin().getCommandQueue().readStatus("PumpDriverChange", null); // force new connection
failed = false;
return;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfile.java
index 89cd1c95f4..14f95f826e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfile.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfile.java
@@ -38,12 +38,12 @@ public class MsgSetBasalProfile extends MessageBase {
if (L.isEnabled(L.PUMPCOMM))
log.debug("Set basal profile result: " + result + " FAILED!!!");
Notification reportFail = new Notification(Notification.PROFILE_SET_FAILED, MainApp.gs(R.string.profile_set_failed), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(reportFail));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(reportFail));
} else {
if (L.isEnabled(L.PUMPCOMM))
log.debug("Set basal profile result: " + result);
Notification reportOK = new Notification(Notification.PROFILE_SET_OK, MainApp.gs(R.string.profile_set_ok), Notification.INFO, 60);
- RxBus.INSTANCE.send(new EventNewNotification(reportOK));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(reportOK));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfile.java
index 8888f17b1c..db83e160f1 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfile.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfile.java
@@ -35,12 +35,12 @@ public class MsgSetSingleBasalProfile extends MessageBase {
if (L.isEnabled(L.PUMPCOMM))
log.debug("Set basal profile result: " + result + " FAILED!!!");
Notification reportFail = new Notification(Notification.PROFILE_SET_FAILED, MainApp.gs(R.string.profile_set_failed), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(reportFail));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(reportFail));
} else {
if (L.isEnabled(L.PUMPCOMM))
log.debug("Set basal profile result: " + result);
Notification reportOK = new Notification(Notification.PROFILE_SET_OK, MainApp.gs(R.string.profile_set_ok), Notification.INFO, 60);
- RxBus.INSTANCE.send(new EventNewNotification(reportOK));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(reportOK));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMeal.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMeal.java
index 6756d9d504..69262a5f25 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMeal.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMeal.java
@@ -52,16 +52,16 @@ public class MsgSettingMeal extends MessageBase {
if (pump.basalStep != 0.01d) {
Notification notification = new Notification(Notification.WRONGBASALSTEP, MainApp.gs(R.string.danar_setbasalstep001), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.WRONGBASALSTEP));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.WRONGBASALSTEP));
}
if (pump.isConfigUD) {
Notification notification = new Notification(Notification.UD_MODE_ENABLED, MainApp.gs(R.string.danar_switchtouhmode), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.UD_MODE_ENABLED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.UD_MODE_ENABLED));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/AbstractDanaRExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/AbstractDanaRExecutionService.java
index 839debe9be..25c9f82c80 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/AbstractDanaRExecutionService.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/AbstractDanaRExecutionService.java
@@ -106,7 +106,7 @@ public abstract class AbstractDanaRExecutionService extends Service {
if (mSerialIOThread != null) {
mSerialIOThread.disconnect("BT disconnection broadcast");
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED));
}
}
}
@@ -136,7 +136,7 @@ public abstract class AbstractDanaRExecutionService extends Service {
public void finishHandshaking() {
mHandshakeInProgress = false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTED, 0));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTED, 0));
}
public void disconnect(String from) {
@@ -244,7 +244,7 @@ public abstract class AbstractDanaRExecutionService extends Service {
long timeToWholeMinute = (60000 - time % 60000);
if (timeToWholeMinute > 59800 || timeToWholeMinute < 3000)
break;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.waitingfortimesynchronization, (int) (timeToWholeMinute / 1000))));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.waitingfortimesynchronization, (int) (timeToWholeMinute / 1000))));
SystemClock.sleep(Math.min(timeToWholeMinute, 100));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/DanaRExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/DanaRExecutionService.java
index 848abd9b52..3db4c33e73 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/DanaRExecutionService.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/DanaRExecutionService.java
@@ -82,7 +82,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
@Override
public void onCreate() {
super.onCreate();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -90,7 +90,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
mSerialIOThread.disconnect("EventPreferenceChange");
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -145,7 +145,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
}
mSerialIOThread = new SerialIOThread(mRfcommSocket, MessageHashTableR.INSTANCE);
mHandshakeInProgress = true;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, 0));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, 0));
}
mConnectionInProgress = false;
@@ -155,7 +155,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
public void getPumpStatus() {
DanaRPump danaRPump = DanaRPump.getInstance();
try {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpstatus)));
MsgStatus statusMsg = new MsgStatus();
MsgStatusBasic statusBasicMsg = new MsgStatusBasic();
MsgStatusTempBasal tempStatusMsg = new MsgStatusTempBasal();
@@ -171,11 +171,11 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
mSerialIOThread.sendMessage(statusMsg);
mSerialIOThread.sendMessage(statusBasicMsg);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingtempbasalstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingtempbasalstatus)));
mSerialIOThread.sendMessage(tempStatusMsg);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingextendedbolusstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingextendedbolusstatus)));
mSerialIOThread.sendMessage(exStatusMsg);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
long now = System.currentTimeMillis();
danaRPump.lastConnection = now;
@@ -183,15 +183,15 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
Profile profile = ProfileFunctions.getInstance().getProfile();
PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
if (profile != null && Math.abs(danaRPump.currentBasal - profile.getBasal()) >= pump.getPumpDescription().basalStep) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
mSerialIOThread.sendMessage(new MsgSettingBasal());
if (!pump.isThisProfileSet(profile) && !ConfigBuilderPlugin.getPlugin().getCommandQueue().isRunning(Command.CommandType.BASALPROFILE)) {
- RxBus.INSTANCE.send(new EventProfileNeedsUpdate());
+ RxBus.Companion.getINSTANCE().send(new EventProfileNeedsUpdate());
}
}
if (danaRPump.lastSettingsRead + 60 * 60 * 1000L < now || !pump.isInitialized()) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
mSerialIOThread.sendMessage(new MsgSettingShippingInfo());
mSerialIOThread.sendMessage(new MsgSettingActiveProfile());
mSerialIOThread.sendMessage(new MsgSettingMeal());
@@ -203,15 +203,15 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
mSerialIOThread.sendMessage(new MsgSettingProfileRatios());
mSerialIOThread.sendMessage(new MsgSettingProfileRatiosAll());
mSerialIOThread.sendMessage(new MsgSettingUserOptions());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
mSerialIOThread.sendMessage(new MsgSettingPumpTime());
if (danaRPump.pumpTime == 0) {
// initial handshake was not successfull
// deinitialize pump
danaRPump.lastConnection = 0;
danaRPump.lastSettingsRead = 0;
- RxBus.INSTANCE.send(new EventDanaRNewStatus());
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRNewStatus());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
return;
}
long timeDiff = (danaRPump.pumpTime - System.currentTimeMillis()) / 1000L;
@@ -227,15 +227,15 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
danaRPump.lastSettingsRead = now;
}
- RxBus.INSTANCE.send(new EventDanaRNewStatus());
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRNewStatus());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
NSUpload.uploadDeviceStatus();
if (danaRPump.dailyTotalUnits > danaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
if (L.isEnabled(L.PUMP))
log.debug("Approaching daily limit: " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits);
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(reportFail));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
@@ -249,41 +249,41 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
DanaRPump danaRPump = DanaRPump.getInstance();
if (!isConnected()) return false;
if (danaRPump.isTempBasalInProgress) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStop());
SystemClock.sleep(500);
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStart(percent, durationInHours));
mSerialIOThread.sendMessage(new MsgStatusTempBasal());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean tempBasalStop() {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStop());
mSerialIOThread.sendMessage(new MsgStatusTempBasal());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean extendedBolus(double insulin, int durationInHalfHours) {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingextendedbolus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingextendedbolus)));
mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(insulin, (byte) (durationInHalfHours & 0xFF)));
mSerialIOThread.sendMessage(new MsgStatusBolusExtended());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean extendedBolusStop() {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingextendedbolus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingextendedbolus)));
mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop());
mSerialIOThread.sendMessage(new MsgStatusBolusExtended());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -358,7 +358,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
while (System.currentTimeMillis() < expectedEnd) {
long waitTime = expectedEnd - System.currentTimeMillis();
bolusingEvent.setStatus(String.format(MainApp.gs(R.string.waitingforestimatedbolusend), waitTime / 1000));
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
SystemClock.sleep(1000);
}
@@ -413,7 +413,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
public boolean updateBasalsInPump(final Profile profile) {
DanaRPump danaRPump = DanaRPump.getInstance();
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.updatingbasalrates)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.updatingbasalrates)));
double[] basal = DanaRPump.getInstance().buildDanaRProfileRecord(profile);
MsgSetBasalProfile msgSet = new MsgSetBasalProfile((byte) 0, basal);
mSerialIOThread.sendMessage(msgSet);
@@ -421,7 +421,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
mSerialIOThread.sendMessage(msgActivate);
danaRPump.lastSettingsRead = 0; // force read full settings
getPumpStatus();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java
index ba39c52d9b..242a5c5be4 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java
@@ -6,6 +6,11 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
+import androidx.annotation.NonNull;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.DetailedBolusInfo;
@@ -17,8 +22,9 @@ import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.events.EventPreferenceChange;
import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.interfaces.PluginType;
-import info.nightscout.androidaps.logging.L;
-import info.nightscout.androidaps.plugins.bus.RxBus;
+import info.nightscout.androidaps.logging.AAPSLogger;
+import info.nightscout.androidaps.logging.LTag;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.plugins.pump.danaR.AbstractDanaRPlugin;
@@ -29,65 +35,86 @@ import info.nightscout.androidaps.plugins.treatments.Treatment;
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.Round;
-import info.nightscout.androidaps.utils.SP;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
-/**
- * Created by mike on 05.08.2016.
- */
+@Singleton
public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
private CompositeDisposable disposable = new CompositeDisposable();
+ private final AAPSLogger aapsLogger;
+ private final RxBusWrapper rxBus;
+ private final MainApp mainApp;
+ private final ResourceHelper resourceHelper;
+ private final ConstraintChecker constraintChecker;
+ private final TreatmentsPlugin treatmentsPlugin;
+ private final SP sp;
+
private static DanaRKoreanPlugin plugin = null;
+ @Deprecated
public static DanaRKoreanPlugin getPlugin() {
if (plugin == null)
- plugin = new DanaRKoreanPlugin();
+ throw new IllegalStateException("Accessing DanaRKoreanPlugin before first instantiation");
return plugin;
}
- public DanaRKoreanPlugin() {
+ @Inject
+ public DanaRKoreanPlugin(
+ AAPSLogger aapsLogger,
+ RxBusWrapper rxBus,
+ MainApp maiApp,
+ ResourceHelper resourceHelper,
+ ConstraintChecker constraintChecker,
+ TreatmentsPlugin treatmentsPlugin,
+ SP sp
+ ) {
+ super();
+ plugin = this;
+ this.aapsLogger = aapsLogger;
+ this.rxBus = rxBus;
+ this.mainApp = maiApp;
+ this.resourceHelper = resourceHelper;
+ this.constraintChecker = constraintChecker;
+ this.treatmentsPlugin = treatmentsPlugin;
+ this.sp = sp;
pluginDescription.description(R.string.description_pump_dana_r_korean);
- useExtendedBoluses = SP.getBoolean(R.string.key_danar_useextended, false);
+ useExtendedBoluses = sp.getBoolean(R.string.key_danar_useextended, false);
pumpDescription.setPumpDescription(PumpType.DanaRKorean);
}
@Override
protected void onStart() {
- Context context = MainApp.instance().getApplicationContext();
- Intent intent = new Intent(context, DanaRKoreanExecutionService.class);
- context.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
- disposable.add(RxBus.INSTANCE
+ Intent intent = new Intent(mainApp, DanaRKoreanExecutionService.class);
+ mainApp.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+ disposable.add(rxBus
.toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
if (isEnabled(PluginType.PUMP)) {
boolean previousValue = useExtendedBoluses;
- useExtendedBoluses = SP.getBoolean(R.string.key_danar_useextended, false);
+ useExtendedBoluses = sp.getBoolean(R.string.key_danar_useextended, false);
- if (useExtendedBoluses != previousValue && TreatmentsPlugin.getPlugin().isInHistoryExtendedBoluslInProgress()) {
+ if (useExtendedBoluses != previousValue && treatmentsPlugin.isInHistoryExtendedBoluslInProgress()) {
sExecutionService.extendedBolusStop();
}
}
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
- .subscribe(event -> {
- MainApp.instance().getApplicationContext().unbindService(mConnection);
- }, FabricPrivacy::logException)
+ .subscribe(event -> mainApp.unbindService(mConnection), FabricPrivacy::logException)
);
super.onStart();
}
@Override
protected void onStop() {
- Context context = MainApp.instance().getApplicationContext();
- context.unbindService(mConnection);
-
+ mainApp.unbindService(mConnection);
disposable.clear();
super.onStop();
}
@@ -95,23 +122,22 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
- if (L.isEnabled(L.PUMP))
- log.debug("Service is disconnected");
+ aapsLogger.debug(LTag.PUMP, "Service is disconnected");
sExecutionService = null;
}
public void onServiceConnected(ComponentName name, IBinder service) {
- if (L.isEnabled(L.PUMP))
- log.debug("Service is connected");
+ aapsLogger.debug(LTag.PUMP, "Service is connected");
DanaRKoreanExecutionService.LocalBinder mLocalBinder = (DanaRKoreanExecutionService.LocalBinder) service;
sExecutionService = mLocalBinder.getServiceInstance();
}
};
// Plugin base interface
+ @NonNull
@Override
public String getName() {
- return MainApp.gs(R.string.danarkoreanpump);
+ return resourceHelper.gs(R.string.danarkoreanpump);
}
@Override
@@ -143,7 +169,7 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
@Override
public PumpEnactResult deliverTreatment(DetailedBolusInfo detailedBolusInfo) {
- detailedBolusInfo.insulin = ConstraintChecker.getInstance().applyBolusConstraints(new Constraint<>(detailedBolusInfo.insulin)).value();
+ detailedBolusInfo.insulin = constraintChecker.applyBolusConstraints(new Constraint<>(detailedBolusInfo.insulin)).value();
if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) {
Treatment t = new Treatment();
t.isSMB = detailedBolusInfo.isSMB;
@@ -155,22 +181,21 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
result.bolusDelivered = t.insulin;
result.carbsDelivered = detailedBolusInfo.carbs;
if (!result.success)
- result.comment = String.format(MainApp.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, MsgBolusStart.errorCode);
+ result.comment = resourceHelper.gs(R.string.boluserrorcode, detailedBolusInfo.insulin, t.insulin, MsgBolusStart.errorCode);
else
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (L.isEnabled(L.PUMP))
- log.debug("deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ aapsLogger.debug(LTag.PUMP, "deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
detailedBolusInfo.insulin = t.insulin;
detailedBolusInfo.date = System.currentTimeMillis();
- TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false);
+ treatmentsPlugin.addToHistoryTreatment(detailedBolusInfo, false);
return result;
} else {
PumpEnactResult result = new PumpEnactResult();
result.success = false;
result.bolusDelivered = 0d;
result.carbsDelivered = 0d;
- result.comment = MainApp.gs(R.string.danar_invalidinput);
- log.error("deliverTreatment: Invalid input");
+ result.comment = resourceHelper.gs(R.string.danar_invalidinput);
+ aapsLogger.error("deliverTreatment: Invalid input");
return result;
}
}
@@ -187,7 +212,7 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
PumpEnactResult result = new PumpEnactResult();
- absoluteRate = ConstraintChecker.getInstance().applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
+ absoluteRate = constraintChecker.applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
final boolean doTempOff = getBaseBasalRate() - absoluteRate == 0d;
final boolean doLowTemp = absoluteRate < getBaseBasalRate();
@@ -195,20 +220,18 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
final boolean doExtendedTemp = absoluteRate > getBaseBasalRate() && useExtendedBoluses;
long now = System.currentTimeMillis();
- TemporaryBasal activeTemp = TreatmentsPlugin.getPlugin().getRealTempBasalFromHistory(now);
- ExtendedBolus activeExtended = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(now);
+ TemporaryBasal activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(now);
+ ExtendedBolus activeExtended = treatmentsPlugin.getExtendedBolusFromHistory(now);
if (doTempOff) {
// If extended in progress
if (activeExtended != null && useExtendedBoluses) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Stopping extended bolus (doTempOff)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping extended bolus (doTempOff)");
return cancelExtendedBolus();
}
// If temp in progress
if (activeTemp != null) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Stopping temp basal (doTempOff)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping temp basal (doTempOff)");
return cancelRealTempBasal();
}
result.success = true;
@@ -216,8 +239,7 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
result.percent = 100;
result.isPercent = true;
result.isTempCancel = true;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: doTempOff OK");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: doTempOff OK");
return result;
}
@@ -228,24 +250,21 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
if (percentRate > getPumpDescription().maxTempPercent) {
percentRate = getPumpDescription().maxTempPercent;
}
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Calculated percent rate: " + percentRate);
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Calculated percent rate: " + percentRate);
// If extended in progress
if (activeExtended != null && useExtendedBoluses) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Stopping extended bolus (doLowTemp || doHighTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping extended bolus (doLowTemp || doHighTemp)");
result = cancelExtendedBolus();
if (!result.success) {
- log.error("setTempBasalAbsolute: Failed to stop previous extended bolus (doLowTemp || doHighTemp)");
+ aapsLogger.error("setTempBasalAbsolute: Failed to stop previous extended bolus (doLowTemp || doHighTemp)");
return result;
}
}
// Check if some temp is already in progress
if (activeTemp != null) {
// Correct basal already set ?
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: currently running: " + activeTemp.toString());
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: currently running: " + activeTemp.toString());
if (activeTemp.percentRate == percentRate && activeTemp.getPlannedRemainingMinutes() > 4) {
if (enforceNew) {
cancelTempBasal(true);
@@ -256,43 +275,38 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
result.duration = activeTemp.getPlannedRemainingMinutes();
result.isPercent = true;
result.isTempCancel = false;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Correct temp basal already set (doLowTemp || doHighTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Correct temp basal already set (doLowTemp || doHighTemp)");
return result;
}
}
}
// Convert duration from minutes to hours
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Setting temp basal " + percentRate + "% for " + durationInMinutes + " mins (doLowTemp || doHighTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Setting temp basal " + percentRate + "% for " + durationInMinutes + " mins (doLowTemp || doHighTemp)");
return setTempBasalPercent(percentRate, durationInMinutes, profile, false);
}
if (doExtendedTemp) {
// Check if some temp is already in progress
if (activeTemp != null) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Stopping temp basal (doExtendedTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping temp basal (doExtendedTemp)");
result = cancelRealTempBasal();
// Check for proper result
if (!result.success) {
- log.error("setTempBasalAbsolute: Failed to stop previous temp basal (doExtendedTemp)");
+ aapsLogger.error("setTempBasalAbsolute: Failed to stop previous temp basal (doExtendedTemp)");
return result;
}
}
// Calculate # of halfHours from minutes
- Integer durationInHalfHours = Math.max(durationInMinutes / 30, 1);
+ int durationInHalfHours = Math.max(durationInMinutes / 30, 1);
// We keep current basal running so need to sub current basal
Double extendedRateToSet = absoluteRate - getBaseBasalRate();
- extendedRateToSet = ConstraintChecker.getInstance().applyBasalConstraints(new Constraint<>(extendedRateToSet), profile).value();
+ extendedRateToSet = constraintChecker.applyBasalConstraints(new Constraint<>(extendedRateToSet), profile).value();
// needs to be rounded to 0.1
extendedRateToSet = Round.roundTo(extendedRateToSet, pumpDescription.extendedBolusStep * 2); // *2 because of halfhours
// What is current rate of extended bolusing in u/h?
- if (L.isEnabled(L.PUMP)) {
- log.debug("setTempBasalAbsolute: Extended bolus in progress: " + (activeExtended != null) + " rate: " + pump.extendedBolusAbsoluteRate + "U/h duration remaining: " + pump.extendedBolusRemainingMinutes + "min");
- log.debug("setTempBasalAbsolute: Rate to set: " + extendedRateToSet + "U/h");
- }
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Extended bolus in progress: " + (activeExtended != null) + " rate: " + pump.extendedBolusAbsoluteRate + "U/h duration remaining: " + pump.extendedBolusRemainingMinutes + "min");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Rate to set: " + extendedRateToSet + "U/h");
// Compare with extended rate in progress
if (activeExtended != null && Math.abs(pump.extendedBolusAbsoluteRate - extendedRateToSet) < getPumpDescription().extendedBolusStep) {
@@ -303,27 +317,24 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
result.duration = pump.extendedBolusRemainingMinutes;
result.isPercent = false;
result.isTempCancel = false;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Correct extended already set");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Correct extended already set");
return result;
}
// Now set new extended, no need to to stop previous (if running) because it's replaced
Double extendedAmount = extendedRateToSet / 2 * durationInHalfHours;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Setting extended: " + extendedAmount + "U halfhours: " + durationInHalfHours);
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Setting extended: " + extendedAmount + "U halfhours: " + durationInHalfHours);
result = setExtendedBolus(extendedAmount, durationInMinutes);
if (!result.success) {
- log.error("setTempBasalAbsolute: Failed to set extended bolus");
+ aapsLogger.error("setTempBasalAbsolute: Failed to set extended bolus");
return result;
}
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Extended bolus set ok");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Extended bolus set ok");
result.absolute = result.absolute + getBaseBasalRate();
return result;
}
// We should never end here
- log.error("setTempBasalAbsolute: Internal error");
+ aapsLogger.error("setTempBasalAbsolute: Internal error");
result.success = false;
result.comment = "Internal error";
return result;
@@ -331,15 +342,15 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
@Override
public PumpEnactResult cancelTempBasal(boolean force) {
- if (TreatmentsPlugin.getPlugin().isInHistoryRealTempBasalInProgress())
+ if (treatmentsPlugin.isInHistoryRealTempBasalInProgress())
return cancelRealTempBasal();
- if (TreatmentsPlugin.getPlugin().isInHistoryExtendedBoluslInProgress() && useExtendedBoluses) {
+ if (treatmentsPlugin.isInHistoryExtendedBoluslInProgress() && useExtendedBoluses) {
return cancelExtendedBolus();
}
PumpEnactResult result = new PumpEnactResult();
result.success = true;
result.enacted = false;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
result.isTempCancel = true;
return result;
}
@@ -351,7 +362,7 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
private PumpEnactResult cancelRealTempBasal() {
PumpEnactResult result = new PumpEnactResult();
- TemporaryBasal runningTB = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal runningTB = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis());
if (runningTB != null) {
sExecutionService.tempBasalStop();
result.enacted = true;
@@ -360,15 +371,14 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
if (!DanaRPump.getInstance().isTempBasalInProgress) {
result.success = true;
result.isTempCancel = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (L.isEnabled(L.PUMP))
- log.debug("cancelRealTempBasal: OK");
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ aapsLogger.debug(LTag.PUMP, "cancelRealTempBasal: OK");
return result;
} else {
result.success = false;
- result.comment = MainApp.gs(R.string.danar_valuenotsetproperly);
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly);
result.isTempCancel = true;
- log.error("cancelRealTempBasal: Failed to cancel temp basal");
+ aapsLogger.error("cancelRealTempBasal: Failed to cancel temp basal");
return result;
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBasic_k.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBasic_k.java
index 8f62ccd58f..003a792092 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBasic_k.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBasic_k.java
@@ -43,16 +43,16 @@ public class MsgInitConnStatusBasic_k extends MessageBase {
if (pump.isEasyModeEnabled) {
Notification notification = new Notification(Notification.EASYMODE_ENABLED, MainApp.gs(R.string.danar_disableeasymode), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.EASYMODE_ENABLED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.EASYMODE_ENABLED));
}
if (!DanaRPump.getInstance().isPasswordOK()) {
Notification notification = new Notification(Notification.WRONG_PUMP_PASSWORD, MainApp.gs(R.string.wrongpumppassword), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.WRONG_PUMP_PASSWORD));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.WRONG_PUMP_PASSWORD));
}
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBolus_k.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBolus_k.java
index 0df308369f..ed04a213f0 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBolus_k.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBolus_k.java
@@ -49,9 +49,9 @@ public class MsgInitConnStatusBolus_k extends MessageBase {
if (!pump.isExtendedBolusEnabled) {
Notification notification = new Notification(Notification.EXTENDED_BOLUS_DISABLED, MainApp.gs(R.string.danar_enableextendedbolus), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.EXTENDED_BOLUS_DISABLED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.EXTENDED_BOLUS_DISABLED));
}
// This is last message of initial sequence
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusTime_k.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusTime_k.java
index 8a642a89f8..3708dbb42b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusTime_k.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusTime_k.java
@@ -32,7 +32,7 @@ public class MsgInitConnStatusTime_k extends MessageBase {
if (bytes.length - 10 < 10) {
Notification notification = new Notification(Notification.WRONG_DRIVER, MainApp.gs(R.string.pumpdrivercorrected), Notification.NORMAL);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
DanaRKoreanPlugin.getPlugin().disconnect("Wrong Model");
log.error("Wrong model selected. Switching to export DanaR");
DanaRKoreanPlugin.getPlugin().setPluginEnabled(PluginType.PUMP, false);
@@ -49,7 +49,7 @@ public class MsgInitConnStatusTime_k extends MessageBase {
}
ConfigBuilderPlugin.getPlugin().storeSettings("ChangingKoreanDanaDriver");
- RxBus.INSTANCE.send(new EventRebuildTabs());
+ RxBus.Companion.getINSTANCE().send(new EventRebuildTabs());
ConfigBuilderPlugin.getPlugin().getCommandQueue().readStatus("PumpDriverChange", null); // force new connection
return;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/services/DanaRKoreanExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/services/DanaRKoreanExecutionService.java
index 0032a7e5e0..a945563682 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/services/DanaRKoreanExecutionService.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/services/DanaRKoreanExecutionService.java
@@ -74,7 +74,7 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
@Override
public void onCreate() {
super.onCreate();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -82,7 +82,7 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
mSerialIOThread.disconnect("EventPreferenceChange");
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -137,7 +137,7 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
}
mSerialIOThread = new SerialIOThread(mRfcommSocket, MessageHashTableRkorean.INSTANCE);
mHandshakeInProgress = true;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, 0));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, 0));
}
mConnectionInProgress = false;
@@ -147,7 +147,7 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
public void getPumpStatus() {
DanaRPump danaRPump = DanaRPump.getInstance();
try {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpstatus)));
//MsgStatus_k statusMsg = new MsgStatus_k();
MsgStatusBasic_k statusBasicMsg = new MsgStatusBasic_k();
MsgStatusTempBasal tempStatusMsg = new MsgStatusTempBasal();
@@ -163,11 +163,11 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
//mSerialIOThread.sendMessage(statusMsg);
mSerialIOThread.sendMessage(statusBasicMsg);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingtempbasalstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingtempbasalstatus)));
mSerialIOThread.sendMessage(tempStatusMsg);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingextendedbolusstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingextendedbolusstatus)));
mSerialIOThread.sendMessage(exStatusMsg);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
long now = System.currentTimeMillis();
danaRPump.lastConnection = now;
@@ -175,15 +175,15 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
Profile profile = ProfileFunctions.getInstance().getProfile();
PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
if (profile != null && Math.abs(danaRPump.currentBasal - profile.getBasal()) >= pump.getPumpDescription().basalStep) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
mSerialIOThread.sendMessage(new MsgSettingBasal());
if (!pump.isThisProfileSet(profile) && !ConfigBuilderPlugin.getPlugin().getCommandQueue().isRunning(Command.CommandType.BASALPROFILE)) {
- RxBus.INSTANCE.send(new EventProfileNeedsUpdate());
+ RxBus.Companion.getINSTANCE().send(new EventProfileNeedsUpdate());
}
}
if (danaRPump.lastSettingsRead + 60 * 60 * 1000L < now || !pump.isInitialized()) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
mSerialIOThread.sendMessage(new MsgSettingShippingInfo());
mSerialIOThread.sendMessage(new MsgSettingMeal());
mSerialIOThread.sendMessage(new MsgSettingBasal_k());
@@ -191,15 +191,15 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
mSerialIOThread.sendMessage(new MsgSettingMaxValues());
mSerialIOThread.sendMessage(new MsgSettingGlucose());
mSerialIOThread.sendMessage(new MsgSettingProfileRatios());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
mSerialIOThread.sendMessage(new MsgSettingPumpTime());
if (danaRPump.pumpTime == 0) {
// initial handshake was not successfull
// deinitialize pump
danaRPump.lastConnection = 0;
danaRPump.lastSettingsRead = 0;
- RxBus.INSTANCE.send(new EventDanaRNewStatus());
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRNewStatus());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
return;
}
long timeDiff = (danaRPump.pumpTime - System.currentTimeMillis()) / 1000L;
@@ -217,15 +217,15 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
danaRPump.lastSettingsRead = now;
}
- RxBus.INSTANCE.send(new EventDanaRNewStatus());
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRNewStatus());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
NSUpload.uploadDeviceStatus();
if (danaRPump.dailyTotalUnits > danaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
if (L.isEnabled(L.PUMP))
log.debug("Approaching daily limit: " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits);
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(reportFail));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
@@ -239,41 +239,41 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
DanaRPump danaRPump = DanaRPump.getInstance();
if (!isConnected()) return false;
if (danaRPump.isTempBasalInProgress) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStop());
SystemClock.sleep(500);
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStart(percent, durationInHours));
mSerialIOThread.sendMessage(new MsgStatusTempBasal());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean tempBasalStop() {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStop());
mSerialIOThread.sendMessage(new MsgStatusTempBasal());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean extendedBolus(double insulin, int durationInHalfHours) {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingextendedbolus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingextendedbolus)));
mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(insulin, (byte) (durationInHalfHours & 0xFF)));
mSerialIOThread.sendMessage(new MsgStatusBolusExtended());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean extendedBolusStop() {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingextendedbolus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingextendedbolus)));
mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop());
mSerialIOThread.sendMessage(new MsgStatusBolusExtended());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -341,13 +341,13 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
public boolean updateBasalsInPump(final Profile profile) {
DanaRPump danaRPump = DanaRPump.getInstance();
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.updatingbasalrates)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.updatingbasalrates)));
double[] basal = DanaRPump.getInstance().buildDanaRProfileRecord(profile);
MsgSetSingleBasalProfile msgSet = new MsgSetSingleBasalProfile(basal);
mSerialIOThread.sendMessage(msgSet);
danaRPump.lastSettingsRead = 0; // force read full settings
getPumpStatus();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPlugin.java
index 416ec8fba2..6b44da1db7 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPlugin.java
@@ -7,16 +7,18 @@ import android.content.ServiceConnection;
import android.os.IBinder;
import android.preference.Preference;
+import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
import org.jetbrains.annotations.NotNull;
import org.json.JSONException;
import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
import info.nightscout.androidaps.BuildConfig;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
@@ -34,17 +36,18 @@ import info.nightscout.androidaps.interfaces.PluginDescription;
import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.interfaces.PumpDescription;
import info.nightscout.androidaps.interfaces.PumpInterface;
-import info.nightscout.androidaps.logging.L;
+import info.nightscout.androidaps.logging.AAPSLogger;
+import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBus;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.common.ManufacturerType;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
+import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction;
import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType;
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification;
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
-import info.nightscout.androidaps.plugins.profile.ns.NSProfilePlugin;
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.plugins.pump.danaR.DanaRFragment;
@@ -59,24 +62,31 @@ import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.Round;
-import info.nightscout.androidaps.utils.SP;
import info.nightscout.androidaps.utils.T;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
-/**
- * Created by mike on 03.09.2017.
- */
-
+@Singleton
public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInterface, ConstraintsInterface {
- private Logger log = LoggerFactory.getLogger(L.PUMP);
private CompositeDisposable disposable = new CompositeDisposable();
+ private final AAPSLogger aapsLogger;
+ private final RxBusWrapper rxBus;
+ private final MainApp mainApp;
+ private final ResourceHelper resourceHelper;
+ private final ConstraintChecker constraintChecker;
+ private final ProfileFunction profileFunction;
+ private final TreatmentsPlugin treatmentsPlugin;
+ private final SP sp;
+
private static DanaRSPlugin plugin = null;
+ @Deprecated
public static DanaRSPlugin getPlugin() {
if (plugin == null)
- plugin = new DanaRSPlugin();
+ throw new IllegalStateException("Accessing DanaRSPlugin before first instantiation");
return plugin;
}
@@ -87,7 +97,17 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
public static PumpDescription pumpDescription = new PumpDescription();
- private DanaRSPlugin() {
+ @Inject
+ public DanaRSPlugin(
+ AAPSLogger aapsLogger,
+ RxBusWrapper rxBus,
+ MainApp maiApp,
+ ResourceHelper resourceHelper,
+ ConstraintChecker constraintChecker,
+ ProfileFunction profileFunction,
+ TreatmentsPlugin treatmentsPlugin,
+ info.nightscout.androidaps.utils.sharedPreferences.SP sp
+ ) {
super(new PluginDescription()
.mainType(PluginType.PUMP)
.fragmentClass(DanaRFragment.class.getName())
@@ -96,6 +116,15 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
.preferencesId(R.xml.pref_danars)
.description(R.string.description_pump_dana_rs)
);
+ plugin = this;
+ this.aapsLogger = aapsLogger;
+ this.rxBus = rxBus;
+ this.mainApp = maiApp;
+ this.resourceHelper = resourceHelper;
+ this.constraintChecker = constraintChecker;
+ this.profileFunction = profileFunction;
+ this.treatmentsPlugin = treatmentsPlugin;
+ this.sp = sp;
pumpDescription.setPumpDescription(PumpType.DanaRS);
}
@@ -104,29 +133,24 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
public void updatePreferenceSummary(@NotNull Preference pref) {
super.updatePreferenceSummary(pref);
- if (pref.getKey().equals(MainApp.gs(R.string.key_danars_name)))
- pref.setSummary(SP.getString(R.string.key_danars_name, ""));
+ if (pref.getKey().equals(resourceHelper.gs(R.string.key_danars_name)))
+ pref.setSummary(sp.getString(R.string.key_danars_name, ""));
}
@Override
protected void onStart() {
- Context context = MainApp.instance().getApplicationContext();
- Intent intent = new Intent(context, DanaRSService.class);
- context.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+ Intent intent = new Intent(mainApp, DanaRSService.class);
+ mainApp.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
- .subscribe(event -> {
- MainApp.instance().getApplicationContext().unbindService(mConnection);
- }, FabricPrivacy::logException)
+ .subscribe(event -> mainApp.unbindService(mConnection), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventDanaRSDeviceChange.class)
.observeOn(Schedulers.io())
- .subscribe(event -> {
- loadAddress();
- }, FabricPrivacy::logException)
+ .subscribe(event -> loadAddress(), FabricPrivacy::logException)
);
loadAddress(); // load device name
super.onStart();
@@ -134,43 +158,39 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
@Override
protected void onStop() {
- Context context = MainApp.instance().getApplicationContext();
- context.unbindService(mConnection);
+ mainApp.unbindService(mConnection);
disposable.clear();
super.onStop();
}
@Override
- public void switchAllowed(boolean newState, FragmentActivity activity, PluginType type) {
+ public void switchAllowed(boolean newState, FragmentActivity activity, @NonNull PluginType type) {
confirmPumpPluginActivation(newState, activity, type);
}
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
- if (L.isEnabled(L.PUMP))
- log.debug("Service is disconnected");
+ aapsLogger.debug(LTag.PUMP, "Service is disconnected");
danaRSService = null;
}
public void onServiceConnected(ComponentName name, IBinder service) {
- if (L.isEnabled(L.PUMP))
- log.debug("Service is connected");
+ aapsLogger.debug(LTag.PUMP, "Service is connected");
DanaRSService.LocalBinder mLocalBinder = (DanaRSService.LocalBinder) service;
danaRSService = mLocalBinder.getServiceInstance();
}
};
private void loadAddress() {
- mDeviceAddress = SP.getString(R.string.key_danars_address, "");
- mDeviceName = SP.getString(R.string.key_danars_name, "");
+ mDeviceAddress = sp.getString(R.string.key_danars_address, "");
+ mDeviceName = sp.getString(R.string.key_danars_name, "");
}
@Override
public void connect(String from) {
- if (L.isEnabled(L.PUMP))
- log.debug("RS connect from: " + from);
+ aapsLogger.debug(LTag.PUMP, "RS connect from: " + from);
if (danaRSService != null && !mDeviceAddress.equals("") && !mDeviceName.equals("")) {
final Object o = new Object();
@@ -199,8 +219,7 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
@Override
public void disconnect(String from) {
- if (L.isEnabled(L.PUMP))
- log.debug("RS disconnect from: " + from);
+ aapsLogger.debug(LTag.PUMP, "RS disconnect from: " + from);
if (danaRSService != null) danaRSService.disconnect(from);
}
@@ -237,29 +256,33 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
// Constraints interface
+ @NonNull
@Override
- public Constraint applyBasalConstraints(Constraint absoluteRate, Profile profile) {
- absoluteRate.setIfSmaller(DanaRPump.getInstance().maxBasal, String.format(MainApp.gs(R.string.limitingbasalratio), DanaRPump.getInstance().maxBasal, MainApp.gs(R.string.pumplimit)), this);
+ public Constraint applyBasalConstraints(Constraint absoluteRate, @NonNull Profile profile) {
+ absoluteRate.setIfSmaller(DanaRPump.getInstance().maxBasal, resourceHelper.gs(R.string.limitingbasalratio, DanaRPump.getInstance().maxBasal, resourceHelper.gs(R.string.pumplimit)), this);
return absoluteRate;
}
+ @NonNull
@Override
- public Constraint applyBasalPercentConstraints(Constraint percentRate, Profile profile) {
- percentRate.setIfGreater(0, String.format(MainApp.gs(R.string.limitingpercentrate), 0, MainApp.gs(R.string.itmustbepositivevalue)), this);
- percentRate.setIfSmaller(getPumpDescription().maxTempPercent, String.format(MainApp.gs(R.string.limitingpercentrate), getPumpDescription().maxTempPercent, MainApp.gs(R.string.pumplimit)), this);
+ public Constraint applyBasalPercentConstraints(Constraint percentRate, @NonNull Profile profile) {
+ percentRate.setIfGreater(0, resourceHelper.gs(R.string.limitingpercentrate, 0, resourceHelper.gs(R.string.itmustbepositivevalue)), this);
+ percentRate.setIfSmaller(getPumpDescription().maxTempPercent, resourceHelper.gs(R.string.limitingpercentrate, getPumpDescription().maxTempPercent, resourceHelper.gs(R.string.pumplimit)), this);
return percentRate;
}
+ @NonNull
@Override
public Constraint applyBolusConstraints(Constraint insulin) {
- insulin.setIfSmaller(DanaRPump.getInstance().maxBolus, String.format(MainApp.gs(R.string.limitingbolus), DanaRPump.getInstance().maxBolus, MainApp.gs(R.string.pumplimit)), this);
+ insulin.setIfSmaller(DanaRPump.getInstance().maxBolus, resourceHelper.gs(R.string.limitingbolus, DanaRPump.getInstance().maxBolus, resourceHelper.gs(R.string.pumplimit)), this);
return insulin;
}
+ @NonNull
@Override
- public Constraint applyExtendedBolusConstraints(Constraint insulin) {
+ public Constraint applyExtendedBolusConstraints(@NonNull Constraint insulin) {
return applyBolusConstraints(insulin);
}
@@ -286,29 +309,29 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
PumpEnactResult result = new PumpEnactResult();
if (danaRSService == null) {
- log.error("setNewBasalProfile sExecutionService is null");
+ aapsLogger.error("setNewBasalProfile sExecutionService is null");
result.comment = "setNewBasalProfile sExecutionService is null";
return result;
}
if (!isInitialized()) {
- log.error("setNewBasalProfile not initialized");
- Notification notification = new Notification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED, MainApp.gs(R.string.pumpNotInitializedProfileNotSet), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
- result.comment = MainApp.gs(R.string.pumpNotInitializedProfileNotSet);
+ aapsLogger.error("setNewBasalProfile not initialized");
+ Notification notification = new Notification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED, resourceHelper.gs(R.string.pumpNotInitializedProfileNotSet), Notification.URGENT);
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
+ result.comment = resourceHelper.gs(R.string.pumpNotInitializedProfileNotSet);
return result;
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
}
if (!danaRSService.updateBasalsInPump(profile)) {
- Notification notification = new Notification(Notification.FAILED_UDPATE_PROFILE, MainApp.gs(R.string.failedupdatebasalprofile), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
- result.comment = MainApp.gs(R.string.failedupdatebasalprofile);
+ Notification notification = new Notification(Notification.FAILED_UDPATE_PROFILE, resourceHelper.gs(R.string.failedupdatebasalprofile), Notification.URGENT);
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
+ result.comment = resourceHelper.gs(R.string.failedupdatebasalprofile);
return result;
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.FAILED_UDPATE_PROFILE));
- Notification notification = new Notification(Notification.PROFILE_SET_OK, MainApp.gs(R.string.profile_set_ok), Notification.INFO, 60);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.FAILED_UDPATE_PROFILE));
+ Notification notification = new Notification(Notification.PROFILE_SET_OK, resourceHelper.gs(R.string.profile_set_ok), Notification.INFO, 60);
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
result.success = true;
result.enacted = true;
result.comment = "OK";
@@ -329,8 +352,7 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
Double pumpValue = pump.pumpProfiles[pump.activeProfile][h];
Double profileValue = profile.getBasalTimeFromMidnight(h * basalIncrement);
if (Math.abs(pumpValue - profileValue) > getPumpDescription().basalStep) {
- if (L.isEnabled(L.PUMP))
- log.debug("Diff found. Hour: " + h + " Pump: " + pumpValue + " Profile: " + profileValue);
+ aapsLogger.debug(LTag.PUMP, "Diff found. Hour: " + h + " Pump: " + pumpValue + " Profile: " + profileValue);
return false;
}
}
@@ -359,9 +381,9 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
@Override
public synchronized PumpEnactResult deliverTreatment(DetailedBolusInfo detailedBolusInfo) {
- detailedBolusInfo.insulin = ConstraintChecker.getInstance().applyBolusConstraints(new Constraint<>(detailedBolusInfo.insulin)).value();
+ detailedBolusInfo.insulin = constraintChecker.applyBolusConstraints(new Constraint<>(detailedBolusInfo.insulin)).value();
if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) {
- int preferencesSpeed = SP.getInt(R.string.key_danars_bolusspeed, 0);
+ int preferencesSpeed = sp.getInt(R.string.key_danars_bolusspeed, 0);
int speed = 12;
switch (preferencesSpeed) {
case 0:
@@ -401,31 +423,30 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
switch (DanaRS_Packet_Bolus_Set_Step_Bolus_Start.errorCode) {
// 4 reported as max bolus violation. Check later
case 0x10:
- error = MainApp.gs(R.string.maxbolusviolation);
+ error = resourceHelper.gs(R.string.maxbolusviolation);
break;
case 0x20:
- error = MainApp.gs(R.string.commanderror);
+ error = resourceHelper.gs(R.string.commanderror);
break;
case 0x40:
- error = MainApp.gs(R.string.speederror);
+ error = resourceHelper.gs(R.string.speederror);
break;
case 0x80:
- error = MainApp.gs(R.string.insulinlimitviolation);
+ error = resourceHelper.gs(R.string.insulinlimitviolation);
break;
}
- result.comment = String.format(MainApp.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, error);
+ result.comment = String.format(resourceHelper.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, error);
} else
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (L.isEnabled(L.PUMP))
- log.debug("deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ aapsLogger.debug(LTag.PUMP, "deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
return result;
} else {
PumpEnactResult result = new PumpEnactResult();
result.success = false;
result.bolusDelivered = 0d;
result.carbsDelivered = 0d;
- result.comment = MainApp.gs(R.string.danar_invalidinput);
- log.error("deliverTreatment: Invalid input");
+ result.comment = resourceHelper.gs(R.string.danar_invalidinput);
+ aapsLogger.error("deliverTreatment: Invalid input");
return result;
}
}
@@ -433,7 +454,7 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
@Override
public void stopBolusDelivering() {
if (danaRSService == null) {
- log.error("stopBolusDelivering sExecutionService is null");
+ aapsLogger.error("stopBolusDelivering sExecutionService is null");
return;
}
danaRSService.bolusStop();
@@ -451,7 +472,7 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
PumpEnactResult result = new PumpEnactResult();
- absoluteRate = ConstraintChecker.getInstance().applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
+ absoluteRate = constraintChecker.applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
final boolean doTempOff = getBaseBasalRate() - absoluteRate == 0d;
final boolean doLowTemp = absoluteRate < getBaseBasalRate();
@@ -459,9 +480,8 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
if (doTempOff) {
// If temp in progress
- if (TreatmentsPlugin.getPlugin().isTempBasalInProgress()) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Stopping temp basal (doTempOff)");
+ if (treatmentsPlugin.isTempBasalInProgress()) {
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping temp basal (doTempOff)");
return cancelTempBasal(false);
}
result.success = true;
@@ -469,8 +489,7 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
result.percent = 100;
result.isPercent = true;
result.isTempCancel = true;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: doTempOff OK");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: doTempOff OK");
return result;
}
@@ -481,10 +500,9 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
if (percentRate > 500) // Special high temp 500/15min
percentRate = 500;
// Check if some temp is already in progress
- TemporaryBasal activeTemp = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal activeTemp = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis());
if (activeTemp != null) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: currently running: " + activeTemp.toString());
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: currently running: " + activeTemp.toString());
// Correct basal already set ?
if (activeTemp.percentRate == percentRate && activeTemp.getPlannedRemainingMinutes() > 4) {
if (!enforceNew) {
@@ -494,15 +512,13 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
result.duration = activeTemp.getPlannedRemainingMinutes();
result.isPercent = true;
result.isTempCancel = false;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Correct temp basal already set (doLowTemp || doHighTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Correct temp basal already set (doLowTemp || doHighTemp)");
return result;
}
}
}
// Convert duration from minutes to hours
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Setting temp basal " + percentRate + "% for " + durationInMinutes + " mins (doLowTemp || doHighTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Setting temp basal " + percentRate + "% for " + durationInMinutes + " mins (doLowTemp || doHighTemp)");
if (percentRate == 0 && durationInMinutes > 30) {
result = setTempBasalPercent(percentRate, durationInMinutes, profile, enforceNew);
} else {
@@ -510,15 +526,14 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
result = setHighTempBasalPercent(percentRate);
}
if (!result.success) {
- log.error("setTempBasalAbsolute: Failed to set hightemp basal");
+ aapsLogger.error("setTempBasalAbsolute: Failed to set hightemp basal");
return result;
}
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: hightemp basal set ok");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: hightemp basal set ok");
return result;
}
// We should never end here
- log.error("setTempBasalAbsolute: Internal error");
+ aapsLogger.error("setTempBasalAbsolute: Internal error");
result.success = false;
result.comment = "Internal error";
return result;
@@ -528,29 +543,28 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
public synchronized PumpEnactResult setTempBasalPercent(Integer percent, Integer durationInMinutes, Profile profile, boolean enforceNew) {
DanaRPump pump = DanaRPump.getInstance();
PumpEnactResult result = new PumpEnactResult();
- percent = ConstraintChecker.getInstance().applyBasalPercentConstraints(new Constraint<>(percent), profile).value();
+ percent = constraintChecker.applyBasalPercentConstraints(new Constraint<>(percent), profile).value();
if (percent < 0) {
result.isTempCancel = false;
result.enacted = false;
result.success = false;
- result.comment = MainApp.gs(R.string.danar_invalidinput);
- log.error("setTempBasalPercent: Invalid input");
+ result.comment = resourceHelper.gs(R.string.danar_invalidinput);
+ aapsLogger.error("setTempBasalPercent: Invalid input");
return result;
}
if (percent > getPumpDescription().maxTempPercent)
percent = getPumpDescription().maxTempPercent;
long now = System.currentTimeMillis();
- TemporaryBasal activeTemp = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(now);
+ TemporaryBasal activeTemp = treatmentsPlugin.getTempBasalFromHistory(now);
if (activeTemp != null && activeTemp.percentRate == percent && activeTemp.getPlannedRemainingMinutes() > 4 && !enforceNew) {
result.enacted = false;
result.success = true;
result.isTempCancel = false;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
result.duration = pump.tempBasalRemainingMin;
result.percent = pump.tempBasalPercent;
result.isPercent = true;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalPercent: Correct value already set");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalPercent: Correct value already set");
return result;
}
boolean connectionOK;
@@ -563,19 +577,18 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
if (connectionOK && pump.isTempBasalInProgress && pump.tempBasalPercent == percent) {
result.enacted = true;
result.success = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
result.isTempCancel = false;
result.duration = pump.tempBasalRemainingMin;
result.percent = pump.tempBasalPercent;
result.isPercent = true;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalPercent: OK");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalPercent: OK");
return result;
}
result.enacted = false;
result.success = false;
- result.comment = MainApp.gs(R.string.tempbasaldeliveryerror);
- log.error("setTempBasalPercent: Failed to set temp basal");
+ result.comment = resourceHelper.gs(R.string.tempbasaldeliveryerror);
+ aapsLogger.error("setTempBasalPercent: Failed to set temp basal");
return result;
}
@@ -586,68 +599,65 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
if (connectionOK && pump.isTempBasalInProgress && pump.tempBasalPercent == percent) {
result.enacted = true;
result.success = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
result.isTempCancel = false;
result.duration = pump.tempBasalRemainingMin;
result.percent = pump.tempBasalPercent;
result.isPercent = true;
- if (L.isEnabled(L.PUMP))
- log.debug("setHighTempBasalPercent: OK");
+ aapsLogger.debug(LTag.PUMP, "setHighTempBasalPercent: OK");
return result;
}
result.enacted = false;
result.success = false;
- result.comment = MainApp.gs(R.string.danar_valuenotsetproperly);
- log.error("setHighTempBasalPercent: Failed to set temp basal");
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly);
+ aapsLogger.error("setHighTempBasalPercent: Failed to set temp basal");
return result;
}
@Override
public synchronized PumpEnactResult setExtendedBolus(Double insulin, Integer durationInMinutes) {
DanaRPump pump = DanaRPump.getInstance();
- insulin = ConstraintChecker.getInstance().applyExtendedBolusConstraints(new Constraint<>(insulin)).value();
+ insulin = constraintChecker.applyExtendedBolusConstraints(new Constraint<>(insulin)).value();
// needs to be rounded
int durationInHalfHours = Math.max(durationInMinutes / 30, 1);
insulin = Round.roundTo(insulin, getPumpDescription().extendedBolusStep);
PumpEnactResult result = new PumpEnactResult();
- ExtendedBolus runningEB = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(System.currentTimeMillis());
+ ExtendedBolus runningEB = treatmentsPlugin.getExtendedBolusFromHistory(System.currentTimeMillis());
if (runningEB != null && Math.abs(runningEB.insulin - insulin) < getPumpDescription().extendedBolusStep) {
result.enacted = false;
result.success = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
result.duration = pump.extendedBolusRemainingMinutes;
result.absolute = pump.extendedBolusAbsoluteRate;
result.isPercent = false;
result.isTempCancel = false;
- if (L.isEnabled(L.PUMP))
- log.debug("setExtendedBolus: Correct extended bolus already set. Current: " + pump.extendedBolusAmount + " Asked: " + insulin);
+ aapsLogger.debug(LTag.PUMP, "setExtendedBolus: Correct extended bolus already set. Current: " + pump.extendedBolusAmount + " Asked: " + insulin);
return result;
}
boolean connectionOK = danaRSService.extendedBolus(insulin, durationInHalfHours);
if (connectionOK && pump.isExtendedInProgress && Math.abs(pump.extendedBolusAbsoluteRate - insulin) < getPumpDescription().extendedBolusStep) {
result.enacted = true;
result.success = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
result.isTempCancel = false;
result.duration = pump.extendedBolusRemainingMinutes;
result.absolute = pump.extendedBolusAbsoluteRate;
result.bolusDelivered = pump.extendedBolusAmount;
result.isPercent = false;
- if (L.isEnabled(L.PUMP))
- log.debug("setExtendedBolus: OK");
+ aapsLogger.debug(LTag.PUMP, "setExtendedBolus: OK");
return result;
}
result.enacted = false;
result.success = false;
- result.comment = MainApp.gs(R.string.danar_valuenotsetproperly);
- log.error("setExtendedBolus: Failed to extended bolus");
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly);
+ aapsLogger.error("setExtendedBolus: Failed to extended bolus");
return result;
}
@Override
public synchronized PumpEnactResult cancelTempBasal(boolean force) {
PumpEnactResult result = new PumpEnactResult();
- TemporaryBasal runningTB = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal runningTB = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis());
if (runningTB != null) {
danaRSService.tempBasalStop();
result.enacted = true;
@@ -656,15 +666,14 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
if (!DanaRPump.getInstance().isTempBasalInProgress) {
result.success = true;
result.isTempCancel = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (L.isEnabled(L.PUMP))
- log.debug("cancelRealTempBasal: OK");
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ aapsLogger.debug(LTag.PUMP, "cancelRealTempBasal: OK");
return result;
} else {
result.success = false;
- result.comment = MainApp.gs(R.string.danar_valuenotsetproperly);
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly);
result.isTempCancel = true;
- log.error("cancelRealTempBasal: Failed to cancel temp basal");
+ aapsLogger.error("cancelRealTempBasal: Failed to cancel temp basal");
return result;
}
}
@@ -672,7 +681,7 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
@Override
public synchronized PumpEnactResult cancelExtendedBolus() {
PumpEnactResult result = new PumpEnactResult();
- ExtendedBolus runningEB = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(System.currentTimeMillis());
+ ExtendedBolus runningEB = treatmentsPlugin.getExtendedBolusFromHistory(System.currentTimeMillis());
if (runningEB != null) {
danaRSService.extendedBolusStop();
result.enacted = true;
@@ -680,14 +689,13 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
}
if (!DanaRPump.getInstance().isExtendedInProgress) {
result.success = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (L.isEnabled(L.PUMP))
- log.debug("cancelExtendedBolus: OK");
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ aapsLogger.debug(LTag.PUMP, "cancelExtendedBolus: OK");
return result;
} else {
result.success = false;
- result.comment = MainApp.gs(R.string.danar_valuenotsetproperly);
- log.error("cancelExtendedBolus: Failed to cancel extended bolus");
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly);
+ aapsLogger.error("cancelExtendedBolus: Failed to cancel extended bolus");
return result;
}
}
@@ -713,13 +721,13 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
extended.put("LastBolus", DateUtil.dateAndTimeFullString(pump.lastBolusTime));
extended.put("LastBolusAmount", pump.lastBolusAmount);
}
- TemporaryBasal tb = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(now);
+ TemporaryBasal tb = treatmentsPlugin.getTempBasalFromHistory(now);
if (tb != null) {
extended.put("TempBasalAbsoluteRate", tb.tempBasalConvertedToAbsolute(now, profile));
extended.put("TempBasalStart", DateUtil.dateAndTimeString(tb.date));
extended.put("TempBasalRemaining", tb.getPlannedRemainingMinutes());
}
- ExtendedBolus eb = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(now);
+ ExtendedBolus eb = treatmentsPlugin.getExtendedBolusFromHistory(now);
if (eb != null) {
extended.put("ExtendedBolusAbsoluteRate", eb.absoluteRate());
extended.put("ExtendedBolusStart", DateUtil.dateAndTimeString(eb.date));
@@ -727,8 +735,9 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
}
extended.put("BaseBasalRate", getBaseBasalRate());
try {
- extended.put("ActiveProfile", ProfileFunctions.getInstance().getProfileName());
+ extended.put("ActiveProfile", profileFunction.getProfileName());
} catch (Exception e) {
+ aapsLogger.error("Unhandled exception", e);
}
pumpjson.put("battery", battery);
@@ -737,7 +746,7 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
pumpjson.put("reservoir", (int) pump.reservoirRemainingUnits);
pumpjson.put("clock", DateUtil.toISOString(now));
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return pumpjson;
}
@@ -767,18 +776,18 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
DanaRPump pump = DanaRPump.getInstance();
String ret = "";
if (pump.lastConnection != 0) {
- Long agoMsec = System.currentTimeMillis() - pump.lastConnection;
+ long agoMsec = System.currentTimeMillis() - pump.lastConnection;
int agoMin = (int) (agoMsec / 60d / 1000d);
ret += "LastConn: " + agoMin + " minago\n";
}
if (pump.lastBolusTime != 0) {
ret += "LastBolus: " + DecimalFormatter.to2Decimal(pump.lastBolusAmount) + "U @" + android.text.format.DateFormat.format("HH:mm", pump.lastBolusTime) + "\n";
}
- TemporaryBasal activeTemp = TreatmentsPlugin.getPlugin().getRealTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(System.currentTimeMillis());
if (activeTemp != null) {
ret += "Temp: " + activeTemp.toStringFull() + "\n";
}
- ExtendedBolus activeExtendedBolus = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(System.currentTimeMillis());
+ ExtendedBolus activeExtendedBolus = treatmentsPlugin.getExtendedBolusFromHistory(System.currentTimeMillis());
if (activeExtendedBolus != null) {
ret += "Extended: " + activeExtendedBolus.toString() + "\n";
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/activities/BLEScanActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/activities/BLEScanActivity.java
index 87c904212c..89f794259e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/activities/BLEScanActivity.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/activities/BLEScanActivity.java
@@ -152,7 +152,7 @@ public class BLEScanActivity extends NoSplashAppCompatActivity {
SP.putString(R.string.key_danars_address, item.device.getAddress());
SP.putString(R.string.key_danars_name, mName.getText().toString());
item.device.createBond();
- RxBus.INSTANCE.send(new EventDanaRSDeviceChange());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRSDeviceChange());
finish();
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_APS_History_Events.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_APS_History_Events.java
index fde34c58e0..d741905146 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_APS_History_Events.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_APS_History_Events.java
@@ -224,7 +224,7 @@ public class DanaRS_Packet_APS_History_Events extends DanaRS_Packet {
if (datetime > lastEventTimeLoaded)
lastEventTimeLoaded = datetime;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.processinghistory) + ": " + status));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.processinghistory) + ": " + status));
}
@Override
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Basal_Rate.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Basal_Rate.java
index 830aca2d02..869857de8f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Basal_Rate.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Basal_Rate.java
@@ -58,9 +58,9 @@ public class DanaRS_Packet_Basal_Get_Basal_Rate extends DanaRS_Packet {
if (pump.basalStep != 0.01d) {
failed = true;
Notification notification = new Notification(Notification.WRONGBASALSTEP, MainApp.gs(R.string.danar_setbasalstep001), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.WRONGBASALSTEP));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.WRONGBASALSTEP));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Bolus_Option.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Bolus_Option.java
index c656de11cf..fbd527b763 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Bolus_Option.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Bolus_Option.java
@@ -106,10 +106,10 @@ public class DanaRS_Packet_Bolus_Get_Bolus_Option extends DanaRS_Packet {
if (!pump.isExtendedBolusEnabled) {
Notification notification = new Notification(Notification.EXTENDED_BOLUS_DISABLED, MainApp.gs(R.string.danar_enableextendedbolus), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
failed = true;
} else {
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.EXTENDED_BOLUS_DISABLED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.EXTENDED_BOLUS_DISABLED));
}
if (L.isEnabled(L.PUMPCOMM)) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Stop.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Stop.java
index 7cb0a11f9b..9aa02f39db 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Stop.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Stop.java
@@ -57,7 +57,7 @@ public class DanaRS_Packet_Bolus_Set_Step_Bolus_Stop extends DanaRS_Packet {
} else {
bolusingEvent.setStatus(MainApp.gs(R.string.overview_bolusprogress_stoped));
}
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
}
@Override
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Pump_Check.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Pump_Check.java
index f9bda3dfe5..3e11431fb3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Pump_Check.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Pump_Check.java
@@ -50,7 +50,7 @@ public class DanaRS_Packet_General_Get_Pump_Check extends DanaRS_Packet {
}
if (pump.productCode < 2) {
- RxBus.INSTANCE.send(new EventNewNotification(new Notification(Notification.UNSUPPORTED_FIRMWARE, MainApp.gs(R.string.unsupportedfirmware), Notification.URGENT)));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(new Notification(Notification.UNSUPPORTED_FIRMWARE, MainApp.gs(R.string.unsupportedfirmware), Notification.URGENT)));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_.java
index 07893346d7..8f932e8c03 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_.java
@@ -224,7 +224,7 @@ public abstract class DanaRS_Packet_History_ extends DanaRS_Packet {
MainApp.getDbHelper().createOrUpdate(danaRHistoryRecord);
- RxBus.INSTANCE.send(new EventDanaRSyncStatus(DateUtil.dateAndTimeString(danaRHistoryRecord.recordDate) + " " + messageType));
+ RxBus.Companion.getINSTANCE().send(new EventDanaRSyncStatus(DateUtil.dateAndTimeString(danaRHistoryRecord.recordDate) + " " + messageType));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Complete.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Complete.java
index 00b6483fbb..cfe7bde8d3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Complete.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Complete.java
@@ -45,7 +45,7 @@ public class DanaRS_Packet_Notify_Delivery_Complete extends DanaRS_Packet {
bolusingEvent.setT(t);
bolusingEvent.setPercent(Math.min((int) (deliveredInsulin / amount * 100), 100));
done = true;
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
}
if (L.isEnabled(L.PUMPCOMM))
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Rate_Display.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Rate_Display.java
index 1d650cb779..a13a5e4b6f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Rate_Display.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Rate_Display.java
@@ -46,7 +46,7 @@ public class DanaRS_Packet_Notify_Delivery_Rate_Display extends DanaRS_Packet {
bolusingEvent.setT(t);
bolusingEvent.setPercent(Math.min((int) (deliveredInsulin / amount * 100), 100));
failed = bolusingEvent.getPercent() < 100? true: false;
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
}
if (L.isEnabled(L.PUMPCOMM))
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/dialogs/PairingProgressDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/dialogs/PairingProgressDialog.java
index bad9e98112..0cc4e63419 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/dialogs/PairingProgressDialog.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/dialogs/PairingProgressDialog.java
@@ -109,7 +109,7 @@ public class PairingProgressDialog extends DialogFragment {
@Override
public void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventDanaRSPairingSuccess.class)
.observeOn(Schedulers.io())
.subscribe(event -> pairingEnded = true, FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/services/BLEComm.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/services/BLEComm.java
index 253b861811..a1615306c0 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/services/BLEComm.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/services/BLEComm.java
@@ -338,7 +338,7 @@ public class BLEComm {
close();
isConnected = false;
isConnecting = false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED));
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("Device was disconnected " + gatt.getDevice().getName());//Device was disconnected
}
@@ -451,24 +451,24 @@ public class BLEComm {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("<<<<< " + "ENCRYPTION__PUMP_CHECK (PUMP)" + " " + DanaRS_Packet.toHexString(inputBuffer));
mSendQueue.clear();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, MainApp.gs(R.string.pumperror)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, MainApp.gs(R.string.pumperror)));
NSUpload.uploadError(MainApp.gs(R.string.pumperror));
Notification n = new Notification(Notification.PUMPERROR, MainApp.gs(R.string.pumperror), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(n));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(n));
} else if (inputBuffer.length == 6 && inputBuffer[2] == 'B' && inputBuffer[3] == 'U' && inputBuffer[4] == 'S' && inputBuffer[5] == 'Y') {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("<<<<< " + "ENCRYPTION__PUMP_CHECK (BUSY)" + " " + DanaRS_Packet.toHexString(inputBuffer));
mSendQueue.clear();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, MainApp.gs(R.string.pumpbusy)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, MainApp.gs(R.string.pumpbusy)));
} else {
// ERROR in response, wrong serial number
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("<<<<< " + "ENCRYPTION__PUMP_CHECK (ERROR)" + " " + DanaRS_Packet.toHexString(inputBuffer));
mSendQueue.clear();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, MainApp.gs(R.string.connectionerror)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, MainApp.gs(R.string.connectionerror)));
SP.remove(MainApp.gs(R.string.key_danars_pairingkey) + DanaRSPlugin.mDeviceName);
Notification n = new Notification(Notification.WRONGSERIALNUMBER, MainApp.gs(R.string.wrongpassword), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(n));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(n));
}
break;
// 2nd packet, pairing key
@@ -495,7 +495,7 @@ public class BLEComm {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("<<<<< " + "ENCRYPTION__PASSKEY_RETURN " + DanaRS_Packet.toHexString(inputBuffer));
// Paring is successfull, sending time info
- RxBus.INSTANCE.send(new EventDanaRSPairingSuccess());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRSPairingSuccess());
SendTimeInfo();
byte[] pairingKey = {inputBuffer[2], inputBuffer[3]};
// store pairing key to preferences
@@ -514,7 +514,7 @@ public class BLEComm {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("Pump user password: " + Integer.toHexString(pass));
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTED));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTED));
isConnected = true;
isConnecting = false;
if (L.isEnabled(L.PUMPBTCOMM))
@@ -665,7 +665,7 @@ public class BLEComm {
String devicename = getConnectDeviceName();
if (devicename == null || devicename.equals("")) {
Notification n = new Notification(Notification.DEVICENOTPAIRED, MainApp.gs(R.string.pairfirst), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(n));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(n));
return;
}
byte[] bytes = BleCommandUtil.getInstance().getEncryptedPacket(BleCommandUtil.DANAR_PACKET__OPCODE_ENCRYPTION__PUMP_CHECK, null, devicename);
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/services/DanaRSService.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/services/DanaRSService.java
index 4e56133222..ee2b0ef36e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/services/DanaRSService.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/services/DanaRSService.java
@@ -104,7 +104,7 @@ public class DanaRSService extends Service {
@Override
public void onCreate() {
super.onCreate();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -147,14 +147,14 @@ public class DanaRSService extends Service {
public void getPumpStatus() {
DanaRPump danaRPump = DanaRPump.getInstance();
try {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpstatus)));
bleComm.sendMessage(new DanaRS_Packet_General_Initial_Screen_Information());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingextendedbolusstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingextendedbolusstatus)));
bleComm.sendMessage(new DanaRS_Packet_Bolus_Get_Extended_Bolus_State());
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
bleComm.sendMessage(new DanaRS_Packet_Bolus_Get_Step_Bolus_Information()); // last bolus, bolusStep, maxBolus
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingtempbasalstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingtempbasalstatus)));
bleComm.sendMessage(new DanaRS_Packet_Basal_Get_Temporary_Basal_State());
danaRPump.lastConnection = System.currentTimeMillis();
@@ -162,14 +162,14 @@ public class DanaRSService extends Service {
Profile profile = ProfileFunctions.getInstance().getProfile();
PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
if (profile != null && Math.abs(danaRPump.currentBasal - profile.getBasal()) >= pump.getPumpDescription().basalStep) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
bleComm.sendMessage(new DanaRS_Packet_Basal_Get_Basal_Rate()); // basal profile, basalStep, maxBasal
if (!pump.isThisProfileSet(profile) && !ConfigBuilderPlugin.getPlugin().getCommandQueue().isRunning(Command.CommandType.BASALPROFILE)) {
- RxBus.INSTANCE.send(new EventProfileNeedsUpdate());
+ RxBus.Companion.getINSTANCE().send(new EventProfileNeedsUpdate());
}
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
bleComm.sendMessage(new DanaRS_Packet_Option_Get_Pump_Time());
long timeDiff = (danaRPump.pumpTime - System.currentTimeMillis()) / 1000L;
@@ -177,13 +177,13 @@ public class DanaRSService extends Service {
// initial handshake was not successfull
// deinitialize pump
danaRPump.lastConnection = 0;
- RxBus.INSTANCE.send(new EventDanaRNewStatus());
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRNewStatus());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
return;
}
long now = System.currentTimeMillis();
if (danaRPump.lastSettingsRead + 60 * 60 * 1000L < now || !pump.isInitialized()) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
bleComm.sendMessage(new DanaRS_Packet_General_Get_Shipping_Information()); // serial no
bleComm.sendMessage(new DanaRS_Packet_General_Get_Pump_Check()); // firmware
bleComm.sendMessage(new DanaRS_Packet_Basal_Get_Profile_Number());
@@ -211,8 +211,8 @@ public class DanaRSService extends Service {
//deinitialize pump
danaRPump.lastConnection = 0;
- RxBus.INSTANCE.send(new EventDanaRNewStatus());
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRNewStatus());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
return;
} else {
if (danaRPump.protocol >= 6) {
@@ -231,15 +231,15 @@ public class DanaRSService extends Service {
loadEvents();
- RxBus.INSTANCE.send(new EventDanaRNewStatus());
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRNewStatus());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
NSUpload.uploadDeviceStatus();
if (danaRPump.dailyTotalUnits > danaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
if (L.isEnabled(L.PUMPCOMM))
log.debug("Approaching daily limit: " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits);
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(reportFail));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
@@ -297,7 +297,7 @@ public class DanaRSService extends Service {
if (!isConnected()) return false;
if (BolusProgressDialog.stopPressed) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.startingbolus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.startingbolus)));
bolusingTreatment = t;
final int preferencesSpeed = SP.getInt(R.string.key_danars_bolusspeed, 0);
DanaRS_Packet_Bolus_Set_Step_Bolus_Start start = new DanaRS_Packet_Bolus_Set_Step_Bolus_Start(insulin, preferencesSpeed);
@@ -355,7 +355,7 @@ public class DanaRSService extends Service {
while (System.currentTimeMillis() < expectedEnd) {
long waitTime = expectedEnd - System.currentTimeMillis();
bolusingEvent.setStatus(String.format(MainApp.gs(R.string.waitingforestimatedbolusend), waitTime / 1000));
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
SystemClock.sleep(1000);
}
// do not call loadEvents() directly, reconnection may be needed
@@ -363,10 +363,10 @@ public class DanaRSService extends Service {
@Override
public void run() {
// reread bolus status
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
bleComm.sendMessage(new DanaRS_Packet_Bolus_Get_Step_Bolus_Information()); // last bolus
bolusingEvent.setPercent(100);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.disconnecting)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.disconnecting)));
}
});
return !start.failed;
@@ -391,30 +391,30 @@ public class DanaRSService extends Service {
public boolean tempBasal(Integer percent, int durationInHours) {
if (!isConnected()) return false;
if (DanaRPump.getInstance().isTempBasalInProgress) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
bleComm.sendMessage(new DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal());
SystemClock.sleep(500);
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
bleComm.sendMessage(new DanaRS_Packet_Basal_Set_Temporary_Basal(percent, durationInHours));
SystemClock.sleep(200);
bleComm.sendMessage(new DanaRS_Packet_Basal_Get_Temporary_Basal_State());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean highTempBasal(Integer percent) {
if (DanaRPump.getInstance().isTempBasalInProgress) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
bleComm.sendMessage(new DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal());
SystemClock.sleep(500);
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
bleComm.sendMessage(new DanaRS_Packet_APS_Basal_Set_Temporary_Basal(percent));
bleComm.sendMessage(new DanaRS_Packet_Basal_Get_Temporary_Basal_State());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -425,52 +425,52 @@ public class DanaRSService extends Service {
}
if (DanaRPump.getInstance().isTempBasalInProgress) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
bleComm.sendMessage(new DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal());
SystemClock.sleep(500);
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
bleComm.sendMessage(new DanaRS_Packet_APS_Basal_Set_Temporary_Basal(percent, durationInMinutes == 15, durationInMinutes == 30));
bleComm.sendMessage(new DanaRS_Packet_Basal_Get_Temporary_Basal_State());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean tempBasalStop() {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
bleComm.sendMessage(new DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal());
bleComm.sendMessage(new DanaRS_Packet_Basal_Get_Temporary_Basal_State());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean extendedBolus(Double insulin, int durationInHalfHours) {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingextendedbolus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingextendedbolus)));
bleComm.sendMessage(new DanaRS_Packet_Bolus_Set_Extended_Bolus(insulin, durationInHalfHours));
SystemClock.sleep(200);
bleComm.sendMessage(new DanaRS_Packet_Bolus_Get_Extended_Bolus_State());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean extendedBolusStop() {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingextendedbolus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingextendedbolus)));
bleComm.sendMessage(new DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel());
bleComm.sendMessage(new DanaRS_Packet_Bolus_Get_Extended_Bolus_State());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean updateBasalsInPump(Profile profile) {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.updatingbasalrates)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.updatingbasalrates)));
double[] basal = DanaRPump.getInstance().buildDanaRProfileRecord(profile);
DanaRS_Packet_Basal_Set_Profile_Basal_Rate msgSet = new DanaRS_Packet_Basal_Set_Profile_Basal_Rate(0, basal);
bleComm.sendMessage(msgSet);
@@ -478,7 +478,7 @@ public class DanaRSService extends Service {
bleComm.sendMessage(msgActivate);
DanaRPump.getInstance().lastSettingsRead = 0; // force read full settings
getPumpStatus();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -554,7 +554,7 @@ public class DanaRSService extends Service {
long timeToWholeMinute = (60000 - time % 60000);
if (timeToWholeMinute > 59800 || timeToWholeMinute < 300)
break;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.waitingfortimesynchronization, (int) (timeToWholeMinute / 1000))));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.waitingfortimesynchronization, (int) (timeToWholeMinute / 1000))));
SystemClock.sleep(Math.min(timeToWholeMinute, 100));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java
index e6fac58b9a..07223205b4 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java
@@ -6,6 +6,11 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
+import androidx.annotation.NonNull;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.DetailedBolusInfo;
@@ -14,8 +19,9 @@ import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.interfaces.Constraint;
-import info.nightscout.androidaps.logging.L;
-import info.nightscout.androidaps.plugins.bus.RxBus;
+import info.nightscout.androidaps.logging.AAPSLogger;
+import info.nightscout.androidaps.logging.LTag;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
@@ -28,26 +34,52 @@ import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.Round;
-import info.nightscout.androidaps.utils.SP;
import info.nightscout.androidaps.utils.T;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
-/**
- * Created by mike on 05.08.2016.
- */
+@Singleton
public class DanaRv2Plugin extends AbstractDanaRPlugin {
private CompositeDisposable disposable = new CompositeDisposable();
+ private final AAPSLogger aapsLogger;
+ private final RxBusWrapper rxBus;
+ private final MainApp mainApp;
+ private final ResourceHelper resourceHelper;
+ private final ConstraintChecker constraintChecker;
+ private final TreatmentsPlugin treatmentsPlugin;
+ private final SP sp;
+
private static DanaRv2Plugin plugin = null;
+ @Deprecated
public static DanaRv2Plugin getPlugin() {
if (plugin == null)
- plugin = new DanaRv2Plugin();
- return plugin;
+ throw new IllegalStateException("Accessing DanaRv2Plugin before first instantiation");
+ return plugin;
}
- private DanaRv2Plugin() {
+ @Inject
+ public DanaRv2Plugin(
+ AAPSLogger aapsLogger,
+ RxBusWrapper rxBus,
+ MainApp maiApp,
+ ResourceHelper resourceHelper,
+ ConstraintChecker constraintChecker,
+ TreatmentsPlugin treatmentsPlugin,
+ SP sp
+ ) {
+ super();
+ plugin = this;
+ this.aapsLogger = aapsLogger;
+ this.rxBus = rxBus;
+ this.mainApp = maiApp;
+ this.resourceHelper = resourceHelper;
+ this.constraintChecker = constraintChecker;
+ this.treatmentsPlugin = treatmentsPlugin;
+ this.sp = sp;
pluginDescription.description(R.string.description_pump_dana_r_v2);
useExtendedBoluses = false;
@@ -56,24 +88,20 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
@Override
protected void onStart() {
- Context context = MainApp.instance().getApplicationContext();
- Intent intent = new Intent(context, DanaRv2ExecutionService.class);
- context.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+ Intent intent = new Intent(mainApp, DanaRv2ExecutionService.class);
+ mainApp.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
- .subscribe(event -> {
- MainApp.instance().getApplicationContext().unbindService(mConnection);
- }, FabricPrivacy::logException)
+ .subscribe(event -> mainApp.unbindService(mConnection), FabricPrivacy::logException)
);
super.onStart();
}
@Override
protected void onStop() {
- Context context = MainApp.instance().getApplicationContext();
- context.unbindService(mConnection);
+ mainApp.unbindService(mConnection);
disposable.clear();
super.onStop();
@@ -82,23 +110,22 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
- if (L.isEnabled(L.PUMP))
- log.debug("Service is disconnected");
+ aapsLogger.debug(LTag.PUMP, "Service is disconnected");
sExecutionService = null;
}
public void onServiceConnected(ComponentName name, IBinder service) {
- if (L.isEnabled(L.PUMP))
- log.debug("Service is connected");
+ aapsLogger.debug(LTag.PUMP, "Service is connected");
DanaRv2ExecutionService.LocalBinder mLocalBinder = (DanaRv2ExecutionService.LocalBinder) service;
sExecutionService = mLocalBinder.getServiceInstance();
}
};
// Plugin base interface
+ @NonNull
@Override
public String getName() {
- return MainApp.gs(R.string.danarv2pump);
+ return resourceHelper.gs(R.string.danarv2pump);
}
@Override
@@ -129,11 +156,11 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
// Pump interface
@Override
public PumpEnactResult deliverTreatment(DetailedBolusInfo detailedBolusInfo) {
- detailedBolusInfo.insulin = ConstraintChecker.getInstance().applyBolusConstraints(new Constraint<>(detailedBolusInfo.insulin)).value();
+ detailedBolusInfo.insulin = constraintChecker.applyBolusConstraints(new Constraint<>(detailedBolusInfo.insulin)).value();
if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) {
// v2 stores end time for bolus, we need to adjust time
// default delivery speed is 12 sec/U
- int preferencesSpeed = SP.getInt(R.string.key_danars_bolusspeed, 0);
+ int preferencesSpeed = sp.getInt(R.string.key_danars_bolusspeed, 0);
int speed = 12;
switch (preferencesSpeed) {
case 0:
@@ -167,20 +194,19 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
result.bolusDelivered = t.insulin;
result.carbsDelivered = detailedBolusInfo.carbs;
if (!result.success)
- result.comment = String.format(MainApp.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, MsgBolusStartWithSpeed.errorCode);
+ result.comment = String.format(resourceHelper.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, MsgBolusStartWithSpeed.errorCode);
else
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (L.isEnabled(L.PUMP))
- log.debug("deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
- // remove carbs because it's get from history seprately
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ aapsLogger.debug(LTag.PUMP, "deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
+ // remove carbs because it's get from history separately
return result;
} else {
PumpEnactResult result = new PumpEnactResult();
result.success = false;
result.bolusDelivered = 0d;
result.carbsDelivered = 0d;
- result.comment = MainApp.gs(R.string.danar_invalidinput);
- log.error("deliverTreatment: Invalid input");
+ result.comment = resourceHelper.gs(R.string.danar_invalidinput);
+ aapsLogger.error("deliverTreatment: Invalid input");
return result;
}
}
@@ -188,7 +214,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
@Override
public void stopBolusDelivering() {
if (sExecutionService == null) {
- log.error("stopBolusDelivering sExecutionService is null");
+ aapsLogger.error("stopBolusDelivering sExecutionService is null");
return;
}
sExecutionService.bolusStop();
@@ -205,7 +231,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
PumpEnactResult result = new PumpEnactResult();
- absoluteRate = ConstraintChecker.getInstance().applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
+ absoluteRate = constraintChecker.applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
final boolean doTempOff = getBaseBasalRate() - absoluteRate == 0d;
final boolean doLowTemp = absoluteRate < getBaseBasalRate();
@@ -213,9 +239,8 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
if (doTempOff) {
// If temp in progress
- if (TreatmentsPlugin.getPlugin().isTempBasalInProgress()) {
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Stopping temp basal (doTempOff)");
+ if (treatmentsPlugin.isTempBasalInProgress()) {
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping temp basal (doTempOff)");
return cancelTempBasal(false);
}
result.success = true;
@@ -223,8 +248,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
result.percent = 100;
result.isPercent = true;
result.isTempCancel = true;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: doTempOff OK");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: doTempOff OK");
return result;
}
@@ -235,7 +259,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
if (percentRate > 500) // Special high temp 500/15min
percentRate = 500;
// Check if some temp is already in progress
- TemporaryBasal activeTemp = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal activeTemp = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis());
if (activeTemp != null) {
// Correct basal already set ?
if (activeTemp.percentRate == percentRate && activeTemp.getPlannedRemainingMinutes() > 4) {
@@ -246,15 +270,13 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
result.duration = activeTemp.getPlannedRemainingMinutes();
result.isPercent = true;
result.isTempCancel = false;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Correct temp basal already set (doLowTemp || doHighTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Correct temp basal already set (doLowTemp || doHighTemp)");
return result;
}
}
}
// Convert duration from minutes to hours
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: Setting temp basal " + percentRate + "% for " + durationInMinutes + " mins (doLowTemp || doHighTemp)");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Setting temp basal " + percentRate + "% for " + durationInMinutes + " mins (doLowTemp || doHighTemp)");
if (percentRate == 0 && durationInMinutes > 30) {
result = setTempBasalPercent(percentRate, durationInMinutes, profile, enforceNew);
} else {
@@ -262,15 +284,14 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
result = setHighTempBasalPercent(percentRate);
}
if (!result.success) {
- log.error("setTempBasalAbsolute: Failed to set hightemp basal");
+ aapsLogger.error("setTempBasalAbsolute: Failed to set hightemp basal");
return result;
}
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalAbsolute: hightemp basal set ok");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: hightemp basal set ok");
return result;
}
// We should never end here
- log.error("setTempBasalAbsolute: Internal error");
+ aapsLogger.error("setTempBasalAbsolute: Internal error");
result.success = false;
result.comment = "Internal error";
return result;
@@ -280,29 +301,28 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
public PumpEnactResult setTempBasalPercent(Integer percent, Integer durationInMinutes, Profile profile, boolean enforceNew) {
DanaRPump pump = DanaRPump.getInstance();
PumpEnactResult result = new PumpEnactResult();
- percent = ConstraintChecker.getInstance().applyBasalPercentConstraints(new Constraint<>(percent), profile).value();
+ percent = constraintChecker.applyBasalPercentConstraints(new Constraint<>(percent), profile).value();
if (percent < 0) {
result.isTempCancel = false;
result.enacted = false;
result.success = false;
- result.comment = MainApp.gs(R.string.danar_invalidinput);
- log.error("setTempBasalPercent: Invalid input");
+ result.comment = resourceHelper.gs(R.string.danar_invalidinput);
+ aapsLogger.error("setTempBasalPercent: Invalid input");
return result;
}
if (percent > getPumpDescription().maxTempPercent)
percent = getPumpDescription().maxTempPercent;
long now = System.currentTimeMillis();
- TemporaryBasal activeTemp = TreatmentsPlugin.getPlugin().getRealTempBasalFromHistory(now);
+ TemporaryBasal activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(now);
if (activeTemp != null && activeTemp.percentRate == percent && activeTemp.getPlannedRemainingMinutes() > 4 && !enforceNew) {
result.enacted = false;
result.success = true;
result.isTempCancel = false;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
result.duration = pump.tempBasalRemainingMin;
result.percent = pump.tempBasalPercent;
result.isPercent = true;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalPercent: Correct value already set");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalPercent: Correct value already set");
return result;
}
boolean connectionOK;
@@ -315,19 +335,18 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
if (connectionOK && pump.isTempBasalInProgress && pump.tempBasalPercent == percent) {
result.enacted = true;
result.success = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
result.isTempCancel = false;
result.duration = pump.tempBasalRemainingMin;
result.percent = pump.tempBasalPercent;
result.isPercent = true;
- if (L.isEnabled(L.PUMP))
- log.debug("setTempBasalPercent: OK");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalPercent: OK");
return result;
}
result.enacted = false;
result.success = false;
- result.comment = MainApp.gs(R.string.tempbasaldeliveryerror);
- log.error("setTempBasalPercent: Failed to set temp basal");
+ result.comment = resourceHelper.gs(R.string.tempbasaldeliveryerror);
+ aapsLogger.error("setTempBasalPercent: Failed to set temp basal");
return result;
}
@@ -338,26 +357,25 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
if (connectionOK && pump.isTempBasalInProgress && pump.tempBasalPercent == percent) {
result.enacted = true;
result.success = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
result.isTempCancel = false;
result.duration = pump.tempBasalRemainingMin;
result.percent = pump.tempBasalPercent;
result.isPercent = true;
- if (L.isEnabled(L.PUMP))
- log.debug("setHighTempBasalPercent: OK");
+ aapsLogger.debug(LTag.PUMP, "setHighTempBasalPercent: OK");
return result;
}
result.enacted = false;
result.success = false;
- result.comment = MainApp.gs(R.string.danar_valuenotsetproperly);
- log.error("setHighTempBasalPercent: Failed to set temp basal");
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly);
+ aapsLogger.error("setHighTempBasalPercent: Failed to set temp basal");
return result;
}
@Override
public PumpEnactResult cancelTempBasal(boolean force) {
PumpEnactResult result = new PumpEnactResult();
- TemporaryBasal runningTB = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal runningTB = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis());
if (runningTB != null) {
sExecutionService.tempBasalStop();
result.enacted = true;
@@ -366,15 +384,14 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
if (!DanaRPump.getInstance().isTempBasalInProgress) {
result.success = true;
result.isTempCancel = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (L.isEnabled(L.PUMP))
- log.debug("cancelRealTempBasal: OK");
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ aapsLogger.debug(LTag.PUMP, "cancelRealTempBasal: OK");
return result;
} else {
result.success = false;
- result.comment = MainApp.gs(R.string.danar_valuenotsetproperly);
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly);
result.isTempCancel = true;
- log.error("cancelRealTempBasal: Failed to cancel temp basal");
+ aapsLogger.error("cancelRealTempBasal: Failed to cancel temp basal");
return result;
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2.java
index 3070c52b64..9f8a765467 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2.java
@@ -44,7 +44,7 @@ public class MsgCheckValue_v2 extends MessageBase {
if (pump.model != DanaRPump.EXPORT_MODEL) {
pump.lastConnection = 0;
Notification notification = new Notification(Notification.WRONG_DRIVER, MainApp.gs(R.string.pumpdrivercorrected), Notification.NORMAL);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
DanaRPlugin.getPlugin().disconnect("Wrong Model");
log.error("Wrong model selected. Switching to Korean DanaR");
DanaRKoreanPlugin.getPlugin().setPluginEnabled(PluginType.PUMP, true);
@@ -61,7 +61,7 @@ public class MsgCheckValue_v2 extends MessageBase {
}
ConfigBuilderPlugin.getPlugin().storeSettings("ChangingDanaRv2Driver");
- RxBus.INSTANCE.send(new EventRebuildTabs());
+ RxBus.Companion.getINSTANCE().send(new EventRebuildTabs());
ConfigBuilderPlugin.getPlugin().getCommandQueue().readStatus("PumpDriverChange", null); // force new connection
return;
}
@@ -69,7 +69,7 @@ public class MsgCheckValue_v2 extends MessageBase {
if (pump.protocol != 2) {
pump.lastConnection = 0;
Notification notification = new Notification(Notification.WRONG_DRIVER, MainApp.gs(R.string.pumpdrivercorrected), Notification.NORMAL);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
DanaRKoreanPlugin.getPlugin().disconnect("Wrong Model");
log.error("Wrong model selected. Switching to non APS DanaR");
(DanaRv2Plugin.getPlugin()).setPluginEnabled(PluginType.PUMP, false);
@@ -84,7 +84,7 @@ public class MsgCheckValue_v2 extends MessageBase {
}
ConfigBuilderPlugin.getPlugin().storeSettings("ChangingDanaRv2Driver");
- RxBus.INSTANCE.send(new EventRebuildTabs());
+ RxBus.Companion.getINSTANCE().send(new EventRebuildTabs());
ConfigBuilderPlugin.getPlugin().getCommandQueue().readStatus("PumpDriverChange", null); // force new connection
return;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2.java
index 3ef43cad86..5ed08577fa 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2.java
@@ -200,6 +200,6 @@ public class MsgHistoryEvents_v2 extends MessageBase {
if (datetime > lastEventTimeLoaded)
lastEventTimeLoaded = datetime;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.processinghistory) + ": " + status));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.processinghistory) + ": " + status));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/services/DanaRv2ExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/services/DanaRv2ExecutionService.java
index ef254580f9..6eb53da52a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/services/DanaRv2ExecutionService.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/services/DanaRv2ExecutionService.java
@@ -98,7 +98,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
@Override
public void onCreate() {
super.onCreate();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -106,7 +106,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
mSerialIOThread.disconnect("EventPreferenceChange");
}, FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -155,7 +155,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
}
mSerialIOThread = new SerialIOThread(mRfcommSocket, MessageHashTableRv2.INSTANCE);
mHandshakeInProgress = true;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, 0));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, 0));
}
mConnectionInProgress = false;
@@ -165,7 +165,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public void getPumpStatus() {
DanaRPump danaRPump = DanaRPump.getInstance();
try {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpstatus)));
MsgStatus statusMsg = new MsgStatus();
MsgStatusBasic statusBasicMsg = new MsgStatusBasic();
MsgStatusTempBasal_v2 tempStatusMsg = new MsgStatusTempBasal_v2();
@@ -179,12 +179,12 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
}
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
mSerialIOThread.sendMessage(statusMsg);
mSerialIOThread.sendMessage(statusBasicMsg);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingtempbasalstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingtempbasalstatus)));
mSerialIOThread.sendMessage(tempStatusMsg);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingextendedbolusstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingextendedbolusstatus)));
mSerialIOThread.sendMessage(exStatusMsg);
danaRPump.lastConnection = System.currentTimeMillis();
@@ -192,22 +192,22 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
Profile profile = ProfileFunctions.getInstance().getProfile();
PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
if (profile != null && Math.abs(danaRPump.currentBasal - profile.getBasal()) >= pump.getPumpDescription().basalStep) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
mSerialIOThread.sendMessage(new MsgSettingBasal());
if (!pump.isThisProfileSet(profile) && !ConfigBuilderPlugin.getPlugin().getCommandQueue().isRunning(Command.CommandType.BASALPROFILE)) {
- RxBus.INSTANCE.send(new EventProfileNeedsUpdate());
+ RxBus.Companion.getINSTANCE().send(new EventProfileNeedsUpdate());
}
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
mSerialIOThread.sendMessage(new MsgSettingPumpTime());
if (danaRPump.pumpTime == 0) {
// initial handshake was not successfull
// deinitialize pump
danaRPump.lastConnection = 0;
danaRPump.lastSettingsRead = 0;
- RxBus.INSTANCE.send(new EventDanaRNewStatus());
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRNewStatus());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
return;
}
long timeDiff = (danaRPump.pumpTime - System.currentTimeMillis()) / 1000L;
@@ -227,8 +227,8 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
//deinitialize pump
danaRPump.lastConnection = 0;
- RxBus.INSTANCE.send(new EventDanaRNewStatus());
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRNewStatus());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
return;
} else {
waitForWholeMinute(); // Dana can set only whole minute
@@ -243,7 +243,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
long now = System.currentTimeMillis();
if (danaRPump.lastSettingsRead + 60 * 60 * 1000L < now || !pump.isInitialized()) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumpsettings)));
mSerialIOThread.sendMessage(new MsgSettingShippingInfo());
mSerialIOThread.sendMessage(new MsgSettingActiveProfile());
mSerialIOThread.sendMessage(new MsgSettingMeal());
@@ -260,15 +260,15 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
loadEvents();
- RxBus.INSTANCE.send(new EventDanaRNewStatus());
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventDanaRNewStatus());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
NSUpload.uploadDeviceStatus();
if (danaRPump.dailyTotalUnits > danaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
if (L.isEnabled(L.PUMP))
log.debug("Approaching daily limit: " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits);
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.gs(R.string.approachingdailylimit), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(reportFail));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(reportFail));
NSUpload.uploadError(MainApp.gs(R.string.approachingdailylimit) + ": " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
@@ -282,15 +282,15 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
DanaRPump danaRPump = DanaRPump.getInstance();
if (!isConnected()) return false;
if (danaRPump.isTempBasalInProgress) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStop());
SystemClock.sleep(500);
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStart(percent, durationInHours));
mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -298,15 +298,15 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
DanaRPump danaRPump = DanaRPump.getInstance();
if (!isConnected()) return false;
if (danaRPump.isTempBasalInProgress) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStop());
SystemClock.sleep(500);
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetAPSTempBasalStart_v2(percent));
mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -319,45 +319,45 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
if (!isConnected()) return false;
if (danaRPump.isTempBasalInProgress) {
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStop());
SystemClock.sleep(500);
}
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetAPSTempBasalStart_v2(percent, durationInMinutes == 15, durationInMinutes == 30));
mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean tempBasalStop() {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingtempbasal)));
mSerialIOThread.sendMessage(new MsgSetTempBasalStop());
mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean extendedBolus(double insulin, int durationInHalfHours) {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.settingextendedbolus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.settingextendedbolus)));
mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(insulin, (byte) (durationInHalfHours & 0xFF)));
mSerialIOThread.sendMessage(new MsgStatusBolusExtended_v2());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
public boolean extendedBolusStop() {
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingextendedbolus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.stoppingextendedbolus)));
mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop());
mSerialIOThread.sendMessage(new MsgStatusBolusExtended_v2());
loadEvents();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -365,7 +365,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
if (!isConnected()) return false;
if (BolusProgressDialog.stopPressed) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.startingbolus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.startingbolus)));
mBolusingTreatment = t;
final int preferencesSpeed = SP.getInt(R.string.key_danars_bolusspeed, 0);
MessageBase start;
@@ -425,7 +425,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
while (System.currentTimeMillis() < expectedEnd) {
long waitTime = expectedEnd - System.currentTimeMillis();
bolusingEvent.setStatus(String.format(MainApp.gs(R.string.waitingforestimatedbolusend), waitTime / 1000));
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
SystemClock.sleep(1000);
}
// do not call loadEvents() directly, reconnection may be needed
@@ -433,10 +433,10 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
@Override
public void run() {
// load last bolus status
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.gettingbolusstatus)));
mSerialIOThread.sendMessage(new MsgStatus());
bolusingEvent.setPercent(100);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.disconnecting)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.disconnecting)));
}
});
return !start.failed;
@@ -501,7 +501,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public boolean updateBasalsInPump(final Profile profile) {
DanaRPump danaRPump = DanaRPump.getInstance();
if (!isConnected()) return false;
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.updatingbasalrates)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.updatingbasalrates)));
double[] basal = DanaRPump.getInstance().buildDanaRProfileRecord(profile);
MsgSetBasalProfile msgSet = new MsgSetBasalProfile((byte) 0, basal);
mSerialIOThread.sendMessage(msgSet);
@@ -509,7 +509,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
mSerialIOThread.sendMessage(msgActivate);
danaRPump.lastSettingsRead = 0; // force read full settings
getPumpStatus();
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightFragment.java
index 3464a1803a..12f7f6eb57 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightFragment.java
@@ -69,7 +69,7 @@ public class LocalInsightFragment extends Fragment implements View.OnClickListen
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventLocalInsightUpdateGUI.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGUI(), FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java
index 5104e70fe8..5cdb682b5e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java
@@ -150,7 +150,7 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
alertService = ((InsightAlertService.LocalBinder) binder).getService();
}
if (connectionService != null && alertService != null) {
- RxBus.INSTANCE.send(new EventInitializationChanged());
+ RxBus.Companion.getINSTANCE().send(new EventInitializationChanged());
}
}
@@ -181,6 +181,7 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
private boolean statusLoaded;
private TBROverNotificationBlock tbrOverNotificationBlock;
+ @Deprecated
public static LocalInsightPlugin getPlugin() {
if (instance == null) instance = new LocalInsightPlugin();
return instance;
@@ -358,7 +359,7 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
setDateTimeMessage.setPumpTime(pumpTime);
connectionService.requestMessage(setDateTimeMessage).await();
Notification notification = new Notification(Notification.INSIGHT_DATE_TIME_UPDATED, MainApp.gs(R.string.pump_time_updated), Notification.INFO, 60);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
}
@@ -426,8 +427,8 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
}
lastUpdated = System.currentTimeMillis();
new Handler(Looper.getMainLooper()).post(() -> {
- RxBus.INSTANCE.send(new EventLocalInsightUpdateGUI());
- RxBus.INSTANCE.send(new EventRefreshOverview("LocalInsightPlugin::fetchStatus"));
+ RxBus.Companion.getINSTANCE().send(new EventLocalInsightUpdateGUI());
+ RxBus.Companion.getINSTANCE().send(new EventRefreshOverview("LocalInsightPlugin::fetchStatus"));
});
}
@@ -444,7 +445,7 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
@Override
public PumpEnactResult setNewBasalProfile(Profile profile) {
PumpEnactResult result = new PumpEnactResult();
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED));
List profileBlocks = new ArrayList<>();
for (int i = 0; i < profile.getBasalValues().length; i++) {
Profile.ProfileValue basalValue = profile.getBasalValues()[i];
@@ -464,9 +465,9 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
BRProfileBlock profileBlock = new BRProfile1Block();
profileBlock.setProfileBlocks(profileBlocks);
ParameterBlockUtil.writeConfigurationBlock(connectionService, profileBlock);
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.FAILED_UDPATE_PROFILE));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.FAILED_UDPATE_PROFILE));
Notification notification = new Notification(Notification.PROFILE_SET_OK, MainApp.gs(R.string.profile_set_ok), Notification.INFO, 60);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
result.success = true;
result.enacted = true;
result.comment = MainApp.gs(R.string.virtualpump_resultok);
@@ -478,17 +479,17 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
} catch (AppLayerErrorException e) {
log.info("Exception while setting profile: " + e.getClass().getCanonicalName() + " (" + e.getErrorCode() + ")");
Notification notification = new Notification(Notification.FAILED_UDPATE_PROFILE, MainApp.gs(R.string.failedupdatebasalprofile), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
result.comment = ExceptionTranslator.getString(e);
} catch (InsightException e) {
log.info("Exception while setting profile: " + e.getClass().getCanonicalName());
Notification notification = new Notification(Notification.FAILED_UDPATE_PROFILE, MainApp.gs(R.string.failedupdatebasalprofile), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
result.comment = ExceptionTranslator.getString(e);
} catch (Exception e) {
log.error("Exception while setting profile", e);
Notification notification = new Notification(Notification.FAILED_UDPATE_PROFILE, MainApp.gs(R.string.failedupdatebasalprofile), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
result.comment = ExceptionTranslator.getString(e);
}
return result;
@@ -561,7 +562,7 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
bolusingEvent.setT(t);
bolusingEvent.setStatus(MainApp.gs(R.string.insight_delivered, 0d, insulin));
bolusingEvent.setPercent(0);
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
int trials = 0;
InsightBolusID insightBolusID = new InsightBolusID();
insightBolusID.bolusID = bolusID;
@@ -592,14 +593,14 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
bolusingEvent.setPercent((int) (100D / activeBolus.getInitialAmount() * (activeBolus.getInitialAmount() - activeBolus.getRemainingAmount())));
bolusingEvent.setStatus(MainApp.gs(R.string.insight_delivered, activeBolus.getInitialAmount() - activeBolus.getRemainingAmount(), activeBolus.getInitialAmount()));
if (percentBefore != bolusingEvent.getPercent())
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
} else {
synchronized ($bolusLock) {
if (bolusCancelled || trials == -1 || trials++ >= 5) {
if (!bolusCancelled) {
bolusingEvent.setStatus(MainApp.gs(R.string.insight_delivered, insulin, insulin));
bolusingEvent.setPercent(100);
- RxBus.INSTANCE.send(bolusingEvent);
+ RxBus.Companion.getINSTANCE().send(bolusingEvent);
}
break;
}
@@ -1167,7 +1168,7 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
} catch (Exception e) {
log.error("Exception while reading history", e);
}
- new Handler(Looper.getMainLooper()).post(() -> RxBus.INSTANCE.send(new EventRefreshOverview("LocalInsightPlugin::readHistory")));
+ new Handler(Looper.getMainLooper()).post(() -> RxBus.Companion.getINSTANCE().send(new EventRefreshOverview("LocalInsightPlugin::readHistory")));
}
private void processHistoryEvents(String serial, List historyEvents) {
@@ -1589,7 +1590,7 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
public void onStateChanged(InsightState state) {
if (state == InsightState.CONNECTED) {
statusLoaded = false;
- new Handler(Looper.getMainLooper()).post(() -> RxBus.INSTANCE.send(new EventDismissNotification(Notification.INSIGHT_TIMEOUT_DURING_HANDSHAKE)));
+ new Handler(Looper.getMainLooper()).post(() -> RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.INSIGHT_TIMEOUT_DURING_HANDSHAKE)));
} else if (state == InsightState.NOT_PAIRED) {
connectionService.withdrawConnectionRequest(this);
statusLoaded = false;
@@ -1602,9 +1603,9 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
activeTBR = null;
activeBoluses = null;
tbrOverNotificationBlock = null;
- new Handler(Looper.getMainLooper()).post(() -> RxBus.INSTANCE.send(new EventRefreshOverview("LocalInsightPlugin::onStateChanged")));
+ new Handler(Looper.getMainLooper()).post(() -> RxBus.Companion.getINSTANCE().send(new EventRefreshOverview("LocalInsightPlugin::onStateChanged")));
}
- new Handler(Looper.getMainLooper()).post(() -> RxBus.INSTANCE.send(new EventLocalInsightUpdateGUI()));
+ new Handler(Looper.getMainLooper()).post(() -> RxBus.Companion.getINSTANCE().send(new EventLocalInsightUpdateGUI()));
}
@Override
@@ -1615,7 +1616,7 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con
@Override
public void onTimeoutDuringHandshake() {
Notification notification = new Notification(Notification.INSIGHT_TIMEOUT_DURING_HANDSHAKE, MainApp.gs(R.string.timeout_during_handshake), Notification.URGENT);
- new Handler(Looper.getMainLooper()).post(() -> RxBus.INSTANCE.send(new EventNewNotification(notification)));
+ new Handler(Looper.getMainLooper()).post(() -> RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification)));
}
@Override
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/mdi/MDIPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/mdi/MDIPlugin.java
index 21cac73d5d..868beef7b4 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/mdi/MDIPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/mdi/MDIPlugin.java
@@ -36,6 +36,7 @@ public class MDIPlugin extends PluginBase implements PumpInterface {
private static MDIPlugin plugin = null;
+ @Deprecated
public static MDIPlugin getPlugin() {
if (plugin == null)
plugin = new MDIPlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt
index 69e0e0bbe8..6c960c0a67 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt
@@ -7,14 +7,15 @@ import android.os.Handler
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.fragment.app.Fragment
+import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.events.EventExtendedBolusChange
import info.nightscout.androidaps.events.EventPumpStatusChanged
import info.nightscout.androidaps.events.EventTempBasalChange
-import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError
@@ -34,15 +35,25 @@ import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.queue.events.EventQueueChanged
-import info.nightscout.androidaps.utils.*
+import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.SetWarnColor
+import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.medtronic_fragment.*
-import org.slf4j.LoggerFactory
+import javax.inject.Inject
+class MedtronicFragment : DaggerFragment() {
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var mainApp: MainApp
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
+ @Inject lateinit var treatmnetsPlugin: TreatmentsPlugin
-class MedtronicFragment : Fragment() {
- private val log = LoggerFactory.getLogger(L.PUMP)
private var disposable: CompositeDisposable = CompositeDisposable()
private val loopHandler = Handler()
@@ -62,9 +73,9 @@ class MedtronicFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- medtronic_pumpstatus.setBackgroundColor(MainApp.gc(R.color.colorInitializingBorder))
+ medtronic_pumpstatus.setBackgroundColor(resourceHelper.gc(R.color.colorInitializingBorder))
- medtronic_rl_status.text = MainApp.gs(RileyLinkServiceState.NotStarted.getResourceId(RileyLinkTargetDevice.MedtronicPump))
+ medtronic_rl_status.text = resourceHelper.gs(RileyLinkServiceState.NotStarted.getResourceId(RileyLinkTargetDevice.MedtronicPump))
medtronic_pump_status.setTextColor(Color.WHITE)
medtronic_pump_status.text = "{fa-bed}"
@@ -83,7 +94,7 @@ class MedtronicFragment : Fragment() {
} else {
medtronic_refresh.isEnabled = false
MedtronicPumpPlugin.getPlugin().resetStatusState()
- ConfigBuilderPlugin.getPlugin().commandQueue.readStatus("Clicked refresh", object : Callback() {
+ configBuilderPlugin.commandQueue.readStatus("Clicked refresh", object : Callback() {
override fun run() {
activity?.runOnUiThread { medtronic_refresh?.isEnabled = true }
}
@@ -104,47 +115,45 @@ class MedtronicFragment : Fragment() {
override fun onResume() {
super.onResume()
loopHandler.postDelayed(refreshLoop, T.mins(1).msecs())
- disposable += RxBus
- .toObservable(EventRefreshButtonState::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ medtronic_refresh.isEnabled = it.newState }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventMedtronicDeviceStatusChange::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- if (L.isEnabled(L.PUMP))
- log.info("onStatusEvent(EventMedtronicDeviceStatusChange): {}", it)
- setDeviceStatus()
- }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventMedtronicPumpValuesChanged::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventExtendedBolusChange::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventTempBasalChange::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventMedtronicPumpConfigurationChanged::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- if (L.isEnabled(L.PUMP))
- log.debug("EventMedtronicPumpConfigurationChanged triggered")
- MedtronicUtil.getPumpStatus().verifyConfiguration()
- updateGUI()
- }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventPumpStatusChanged::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
- disposable += RxBus
- .toObservable(EventQueueChanged::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventRefreshButtonState::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ medtronic_refresh.isEnabled = it.newState }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventMedtronicDeviceStatusChange::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ aapsLogger.debug(LTag.PUMP, "onStatusEvent(EventMedtronicDeviceStatusChange): $it")
+ setDeviceStatus()
+ }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventMedtronicPumpValuesChanged::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventExtendedBolusChange::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventTempBasalChange::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventMedtronicPumpConfigurationChanged::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ aapsLogger.debug(LTag.PUMP, "EventMedtronicPumpConfigurationChanged triggered")
+ MedtronicUtil.getPumpStatus().verifyConfiguration()
+ updateGUI()
+ }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventPumpStatusChanged::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventQueueChanged::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
updateGUI()
}
@@ -160,61 +169,63 @@ class MedtronicFragment : Fragment() {
private fun setDeviceStatus() {
val pumpStatus: MedtronicPumpStatus = MedtronicUtil.getPumpStatus()
pumpStatus.rileyLinkServiceState = checkStatusSet(pumpStatus.rileyLinkServiceState,
- RileyLinkUtil.getServiceState()) as RileyLinkServiceState?
+ RileyLinkUtil.getServiceState()) as RileyLinkServiceState?
val resourceId = pumpStatus.rileyLinkServiceState.getResourceId(RileyLinkTargetDevice.MedtronicPump)
val rileyLinkError = RileyLinkUtil.getError()
medtronic_rl_status.text =
- when {
- pumpStatus.rileyLinkServiceState == RileyLinkServiceState.NotStarted -> MainApp.gs(resourceId)
- pumpStatus.rileyLinkServiceState.isConnecting -> "{fa-bluetooth-b spin} " + MainApp.gs(resourceId)
- pumpStatus.rileyLinkServiceState.isError && rileyLinkError == null -> "{fa-bluetooth-b} " + MainApp.gs(resourceId)
- pumpStatus.rileyLinkServiceState.isError && rileyLinkError != null -> "{fa-bluetooth-b} " + MainApp.gs(rileyLinkError.getResourceId(RileyLinkTargetDevice.MedtronicPump))
- else -> "{fa-bluetooth-b} " + MainApp.gs(resourceId)
- }
+ when {
+ pumpStatus.rileyLinkServiceState == RileyLinkServiceState.NotStarted -> resourceHelper.gs(resourceId)
+ pumpStatus.rileyLinkServiceState.isConnecting -> "{fa-bluetooth-b spin} " + resourceHelper.gs(resourceId)
+ pumpStatus.rileyLinkServiceState.isError && rileyLinkError == null -> "{fa-bluetooth-b} " + resourceHelper.gs(resourceId)
+ pumpStatus.rileyLinkServiceState.isError && rileyLinkError != null -> "{fa-bluetooth-b} " + resourceHelper.gs(rileyLinkError.getResourceId(RileyLinkTargetDevice.MedtronicPump))
+ else -> "{fa-bluetooth-b} " + resourceHelper.gs(resourceId)
+ }
medtronic_rl_status.setTextColor(if (rileyLinkError != null) Color.RED else Color.WHITE)
pumpStatus.rileyLinkError = checkStatusSet(pumpStatus.rileyLinkError, RileyLinkUtil.getError()) as RileyLinkError?
medtronic_errors.text =
- pumpStatus.rileyLinkError?.let {
- MainApp.gs(it.getResourceId(RileyLinkTargetDevice.MedtronicPump))
- } ?: "-"
+ pumpStatus.rileyLinkError?.let {
+ resourceHelper.gs(it.getResourceId(RileyLinkTargetDevice.MedtronicPump))
+ } ?: "-"
pumpStatus.pumpDeviceState = checkStatusSet(pumpStatus.pumpDeviceState,
- MedtronicUtil.getPumpDeviceState()) as PumpDeviceState?
+ MedtronicUtil.getPumpDeviceState()) as PumpDeviceState?
when (pumpStatus.pumpDeviceState) {
null,
- PumpDeviceState.Sleeping -> medtronic_pump_status.text = "{fa-bed} " // + pumpStatus.pumpDeviceState.name());
+ PumpDeviceState.Sleeping -> medtronic_pump_status.text = "{fa-bed} " // + pumpStatus.pumpDeviceState.name());
PumpDeviceState.NeverContacted,
PumpDeviceState.WakingUp,
PumpDeviceState.PumpUnreachable,
PumpDeviceState.ErrorWhenCommunicating,
PumpDeviceState.TimeoutWhenCommunicating,
- PumpDeviceState.InvalidConfiguration -> medtronic_pump_status.text = " " + MainApp.gs(pumpStatus.pumpDeviceState.resourceId)
- PumpDeviceState.Active -> {
+ PumpDeviceState.InvalidConfiguration -> medtronic_pump_status.text = " " + resourceHelper.gs(pumpStatus.pumpDeviceState.resourceId)
+
+ PumpDeviceState.Active -> {
val cmd = MedtronicUtil.getCurrentCommand()
if (cmd == null)
- medtronic_pump_status.text = " " + MainApp.gs(pumpStatus.pumpDeviceState.resourceId)
+ medtronic_pump_status.text = " " + resourceHelper.gs(pumpStatus.pumpDeviceState.resourceId)
else {
- log.debug("Command: " + cmd)
+ aapsLogger.debug(LTag.PUMP, "Command: " + cmd)
val cmdResourceId = cmd.resourceId
if (cmd == MedtronicCommandType.GetHistoryData) {
medtronic_pump_status.text = MedtronicUtil.frameNumber?.let {
- MainApp.gs(cmdResourceId, MedtronicUtil.pageNumber, MedtronicUtil.frameNumber)
+ resourceHelper.gs(cmdResourceId, MedtronicUtil.pageNumber, MedtronicUtil.frameNumber)
}
- ?: MainApp.gs(R.string.medtronic_cmd_desc_get_history_request, MedtronicUtil.pageNumber)
+ ?: resourceHelper.gs(R.string.medtronic_cmd_desc_get_history_request, MedtronicUtil.pageNumber)
} else {
- medtronic_pump_status.text = " " + (cmdResourceId?.let { MainApp.gs(it) }
- ?: cmd.getCommandDescription())
+ medtronic_pump_status.text = " " + (cmdResourceId?.let { resourceHelper.gs(it) }
+ ?: cmd.getCommandDescription())
}
}
}
- else -> log.warn("Unknown pump state: " + pumpStatus.pumpDeviceState)
+
+ else -> aapsLogger.warn(LTag.PUMP, "Unknown pump state: " + pumpStatus.pumpDeviceState)
}
- val status = ConfigBuilderPlugin.getPlugin().commandQueue.spannedStatus()
+ val status = configBuilderPlugin.commandQueue.spannedStatus()
if (status.toString() == "") {
medtronic_queue.visibility = View.GONE
} else {
@@ -223,7 +234,6 @@ class MedtronicFragment : Fragment() {
}
}
-
private fun checkStatusSet(object1: Any?, object2: Any?): Any? {
return if (object1 == null) {
object2
@@ -254,17 +264,17 @@ class MedtronicFragment : Fragment() {
} else if (pumpStatus.lastConnection + 30 * 60 * 1000 < System.currentTimeMillis()) {
if (min < 60) {
- medtronic_lastconnection.text = MainApp.gs(R.string.minago, min)
+ medtronic_lastconnection.text = resourceHelper.gs(R.string.minago, min)
} else if (min < 1440) {
val h = (min / 60).toInt()
- medtronic_lastconnection.text = (MainApp.gq(R.plurals.objective_hours, h, h) + " "
- + MainApp.gs(R.string.ago))
+ medtronic_lastconnection.text = (resourceHelper.gq(R.plurals.objective_hours, h, h) + " "
+ + resourceHelper.gs(R.string.ago))
} else {
val h = (min / 60).toInt()
val d = h / 24
// h = h - (d * 24);
- medtronic_lastconnection.text = (MainApp.gq(R.plurals.objective_days, d, d) + " "
- + MainApp.gs(R.string.ago))
+ medtronic_lastconnection.text = (resourceHelper.gq(R.plurals.objective_days, d, d) + " "
+ + resourceHelper.gs(R.string.ago))
}
medtronic_lastconnection.setTextColor(Color.RED)
} else {
@@ -279,26 +289,26 @@ class MedtronicFragment : Fragment() {
if (bolus != null && bolusTime != null) {
val agoMsc = System.currentTimeMillis() - pumpStatus.lastBolusTime.time
val bolusMinAgo = agoMsc.toDouble() / 60.0 / 1000.0
- val unit = MainApp.gs(R.string.insulin_unit_shortname)
+ val unit = resourceHelper.gs(R.string.insulin_unit_shortname)
val ago: String
if (agoMsc < 60 * 1000) {
- ago = MainApp.gs(R.string.combo_pump_connected_now)
+ ago = resourceHelper.gs(R.string.combo_pump_connected_now)
} else if (bolusMinAgo < 60) {
ago = DateUtil.minAgo(pumpStatus.lastBolusTime.time)
} else {
ago = DateUtil.hourAgo(pumpStatus.lastBolusTime.time)
}
- medtronic_lastbolus.text = MainApp.gs(R.string.combo_last_bolus, bolus, unit, ago)
+ medtronic_lastbolus.text = resourceHelper.gs(R.string.combo_last_bolus, bolus, unit, ago)
} else {
medtronic_lastbolus.text = ""
}
// base basal rate
medtronic_basabasalrate.text = ("(" + pumpStatus.activeProfileName + ") "
- + MainApp.gs(R.string.pump_basebasalrate, plugin.baseBasalRate))
+ + resourceHelper.gs(R.string.pump_basebasalrate, plugin.baseBasalRate))
- medtronic_tempbasal.text = TreatmentsPlugin.getPlugin()
- .getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull() ?: ""
+ medtronic_tempbasal.text = treatmnetsPlugin.getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull()
+ ?: ""
// battery
if (MedtronicUtil.getBatteryType() == BatteryType.None || pumpStatus.batteryVoltage == null) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
index 48780e2343..43448ce51b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
@@ -372,7 +372,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
refreshAnyStatusThatNeedsToBeRefreshed();
}
- RxBus.INSTANCE.send(new EventMedtronicPumpValuesChanged());
+ RxBus.Companion.getINSTANCE().send(new EventMedtronicPumpValuesChanged());
}
@@ -496,7 +496,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
private void setRefreshButtonEnabled(boolean enabled) {
- RxBus.INSTANCE.send(new EventRefreshButtonState(enabled));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshButtonState(enabled));
}
@@ -712,7 +712,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
protected void triggerUIChange() {
- RxBus.INSTANCE.send(new EventMedtronicPumpValuesChanged());
+ RxBus.Companion.getINSTANCE().send(new EventMedtronicPumpValuesChanged());
}
private BolusDeliveryType bolusDeliveryType = BolusDeliveryType.Idle;
@@ -766,7 +766,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
if (clock.timeDifference == 0) {
Notification notification = new Notification(Notification.INSIGHT_DATE_TIME_UPDATED, MainApp.gs(R.string.pump_time_updated), Notification.INFO, 60);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
} else {
if ((clock.localDeviceTime.getYear() > 2015)) {
@@ -1085,7 +1085,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
private void finishAction(String overviewKey) {
if (overviewKey != null)
- RxBus.INSTANCE.send(new EventRefreshOverview(overviewKey));
+ RxBus.Companion.getINSTANCE().send(new EventRefreshOverview(overviewKey));
triggerUIChange();
@@ -1608,7 +1608,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
}
private void refreshCustomActionsList() {
- RxBus.INSTANCE.send(new EventCustomActionsChanged());
+ RxBus.Companion.getINSTANCE().send(new EventCustomActionsChanged());
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java
index d6df56bb57..9080f5b564 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java
@@ -192,13 +192,13 @@ public class MedtronicUITask {
}
if (responseType == MedtronicUIResponseType.Invalid) {
- RxBus.INSTANCE.send(new EventMedtronicDeviceStatusChange(PumpDeviceState.ErrorWhenCommunicating,
+ RxBus.Companion.getINSTANCE().send(new EventMedtronicDeviceStatusChange(PumpDeviceState.ErrorWhenCommunicating,
"Unsupported command in MedtronicUITask"));
} else if (responseType == MedtronicUIResponseType.Error) {
- RxBus.INSTANCE.send(new EventMedtronicDeviceStatusChange(PumpDeviceState.ErrorWhenCommunicating,
+ RxBus.Companion.getINSTANCE().send(new EventMedtronicDeviceStatusChange(PumpDeviceState.ErrorWhenCommunicating,
errorDescription));
} else {
- RxBus.INSTANCE.send(new EventMedtronicPumpValuesChanged());
+ RxBus.Companion.getINSTANCE().send(new EventMedtronicPumpValuesChanged());
MedtronicUtil.getPumpStatus().setLastCommunicationToNow();
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java
index 2c7ee69c2f..1e1fe0abb8 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java
@@ -231,7 +231,7 @@ public class MedtronicUtil extends RileyLinkUtil {
notificationType.getNotificationType(), //
MainApp.gs(notificationType.getResourceId()), //
notificationType.getNotificationUrgency());
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
@@ -240,12 +240,12 @@ public class MedtronicUtil extends RileyLinkUtil {
notificationType.getNotificationType(), //
MainApp.gs(notificationType.getResourceId(), parameters), //
notificationType.getNotificationUrgency());
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
public static void dismissNotification(MedtronicNotificationType notificationType) {
- RxBus.INSTANCE.send(new EventDismissNotification(notificationType.getNotificationType()));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(notificationType.getNotificationType()));
}
@@ -420,7 +420,7 @@ public class MedtronicUtil extends RileyLinkUtil {
historyRileyLink.add(new RLHistoryItem(pumpDeviceState, RileyLinkTargetDevice.MedtronicPump));
- RxBus.INSTANCE.send(new EventMedtronicDeviceStatusChange(pumpDeviceState));
+ RxBus.Companion.getINSTANCE().send(new EventMedtronicDeviceStatusChange(pumpDeviceState));
}
@@ -489,7 +489,7 @@ public class MedtronicUtil extends RileyLinkUtil {
setCurrentCommand(currentCommand);
}
- RxBus.INSTANCE.send(new EventMedtronicDeviceStatusChange(pumpDeviceState));
+ RxBus.Companion.getINSTANCE().send(new EventMedtronicDeviceStatusChange(pumpDeviceState));
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpFragment.kt
index 08402520c2..540ae53c7f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpFragment.kt
@@ -5,22 +5,28 @@ import android.os.Handler
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-import info.nightscout.androidaps.MainApp
+import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.R
import info.nightscout.androidaps.events.EventExtendedBolusChange
import info.nightscout.androidaps.events.EventTempBasalChange
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.pump.virtual.events.EventVirtualPumpUpdateGui
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.virtualpump_fragment.*
-import org.slf4j.LoggerFactory
+import javax.inject.Inject
+
+class VirtualPumpFragment : DaggerFragment() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var virtualPumpPlugin: VirtualPumpPlugin
+ @Inject lateinit var treatmentsPlugin: TreatmentsPlugin
-class VirtualPumpFragment : Fragment() {
private val disposable = CompositeDisposable()
private val loopHandler = Handler()
@@ -40,21 +46,18 @@ class VirtualPumpFragment : Fragment() {
@Synchronized
override fun onResume() {
super.onResume()
- disposable.add(RxBus
- .toObservable(EventVirtualPumpUpdateGui::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
- )
- disposable.add(RxBus
- .toObservable(EventTempBasalChange::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
- )
- disposable.add(RxBus
- .toObservable(EventExtendedBolusChange::class.java)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
- )
+ disposable += rxBus
+ .toObservable(EventVirtualPumpUpdateGui::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventTempBasalChange::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(EventExtendedBolusChange::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
loopHandler.postDelayed(refreshLoop, T.mins(1).msecs())
updateGui()
}
@@ -68,18 +71,18 @@ class VirtualPumpFragment : Fragment() {
@Synchronized
private fun updateGui() {
- val virtualPump = VirtualPumpPlugin.getPlugin()
- virtualpump_basabasalrate?.text = MainApp.gs(R.string.pump_basebasalrate, virtualPump.baseBasalRate)
- virtualpump_tempbasal?.text = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull()
- ?: ""
- virtualpump_extendedbolus?.text = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(System.currentTimeMillis())?.toString() ?: ""
- virtualpump_battery?.text = MainApp.gs(R.string.format_percent, virtualPump.batteryPercent)
- virtualpump_reservoir?.text = MainApp.gs(R.string.formatinsulinunits, virtualPump.reservoirInUnits.toDouble())
+ virtualpump_basabasalrate?.text = resourceHelper.gs(R.string.pump_basebasalrate, virtualPumpPlugin.baseBasalRate)
+ virtualpump_tempbasal?.text = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull()
+ ?: ""
+ virtualpump_extendedbolus?.text = treatmentsPlugin.getExtendedBolusFromHistory(System.currentTimeMillis())?.toString()
+ ?: ""
+ virtualpump_battery?.text = resourceHelper.gs(R.string.format_percent, virtualPumpPlugin.batteryPercent)
+ virtualpump_reservoir?.text = resourceHelper.gs(R.string.formatinsulinunits, virtualPumpPlugin.reservoirInUnits.toDouble())
- virtualPump.refreshConfiguration()
- val pumpType = virtualPump.pumpType
+ virtualPumpPlugin.refreshConfiguration()
+ val pumpType = virtualPumpPlugin.pumpType
- virtualpump_type?.text = pumpType.description
- virtualpump_type_def?.text = pumpType.getFullDescription(MainApp.gs(R.string.virtualpump_pump_def), pumpType.hasExtendedBasals())
+ virtualpump_type?.text = pumpType?.description
+ virtualpump_type_def?.text = pumpType?.getFullDescription(resourceHelper.gs(R.string.virtualpump_pump_def), pumpType.hasExtendedBasals())
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.java
deleted file mode 100644
index 447367c510..0000000000
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.java
+++ /dev/null
@@ -1,512 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.virtual;
-
-import android.os.SystemClock;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-import info.nightscout.androidaps.BuildConfig;
-import info.nightscout.androidaps.Config;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
-import info.nightscout.androidaps.data.DetailedBolusInfo;
-import info.nightscout.androidaps.data.Profile;
-import info.nightscout.androidaps.data.PumpEnactResult;
-import info.nightscout.androidaps.db.ExtendedBolus;
-import info.nightscout.androidaps.db.Source;
-import info.nightscout.androidaps.db.TemporaryBasal;
-import info.nightscout.androidaps.events.EventPreferenceChange;
-import info.nightscout.androidaps.interfaces.PluginBase;
-import info.nightscout.androidaps.interfaces.PluginDescription;
-import info.nightscout.androidaps.interfaces.PluginType;
-import info.nightscout.androidaps.interfaces.PumpDescription;
-import info.nightscout.androidaps.interfaces.PumpInterface;
-import info.nightscout.androidaps.logging.L;
-import info.nightscout.androidaps.plugins.bus.RxBus;
-import info.nightscout.androidaps.plugins.common.ManufacturerType;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
-import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction;
-import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType;
-import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
-import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
-import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress;
-import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
-import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
-import info.nightscout.androidaps.plugins.pump.virtual.events.EventVirtualPumpUpdateGui;
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
-import info.nightscout.androidaps.utils.DateUtil;
-import info.nightscout.androidaps.utils.FabricPrivacy;
-import info.nightscout.androidaps.utils.InstanceId;
-import info.nightscout.androidaps.utils.SP;
-import io.reactivex.disposables.CompositeDisposable;
-import io.reactivex.schedulers.Schedulers;
-
-
-/**
- * Created by mike on 05.08.2016.
- */
-public class VirtualPumpPlugin extends PluginBase implements PumpInterface {
- private Logger log = LoggerFactory.getLogger(L.PUMP);
- private CompositeDisposable disposable = new CompositeDisposable();
-
- Integer batteryPercent = 50;
- Integer reservoirInUnits = 50;
- private static VirtualPumpPlugin plugin = null;
- private boolean fromNSAreCommingFakedExtendedBoluses = false;
- private PumpType pumpType = null;
- private long lastDataTime = 0;
- private PumpDescription pumpDescription = new PumpDescription();
-
- public VirtualPumpPlugin() {
- super(new PluginDescription()
- .mainType(PluginType.PUMP)
- .fragmentClass(VirtualPumpFragment.class.getName())
- .pluginName(R.string.virtualpump)
- .shortName(R.string.virtualpump_shortname)
- .preferencesId(R.xml.pref_virtualpump)
- .neverVisible(Config.NSCLIENT)
- .description(R.string.description_pump_virtual)
- );
- pumpDescription.isBolusCapable = true;
- pumpDescription.bolusStep = 0.1d;
-
- pumpDescription.isExtendedBolusCapable = true;
- pumpDescription.extendedBolusStep = 0.05d;
- pumpDescription.extendedBolusDurationStep = 30;
- pumpDescription.extendedBolusMaxDuration = 8 * 60;
-
- pumpDescription.isTempBasalCapable = true;
- pumpDescription.tempBasalStyle = PumpDescription.PERCENT | PumpDescription.ABSOLUTE;
-
- pumpDescription.maxTempPercent = 500;
- pumpDescription.tempPercentStep = 10;
-
- pumpDescription.tempDurationStep = 30;
- pumpDescription.tempDurationStep15mAllowed = true;
- pumpDescription.tempDurationStep30mAllowed = true;
- pumpDescription.tempMaxDuration = 24 * 60;
-
-
- pumpDescription.isSetBasalProfileCapable = true;
- pumpDescription.basalStep = 0.01d;
- pumpDescription.basalMinimumRate = 0.01d;
-
- pumpDescription.isRefillingCapable = true;
-
- pumpDescription.storesCarbInfo = false;
- pumpDescription.is30minBasalRatesCapable = true;
- }
-
- public static VirtualPumpPlugin getPlugin() {
- if (plugin == null)
- plugin = new VirtualPumpPlugin();
- plugin.loadFakingStatus();
- return plugin;
- }
-
- private void loadFakingStatus() {
- fromNSAreCommingFakedExtendedBoluses = SP.getBoolean(R.string.key_fromNSAreCommingFakedExtendedBoluses, false);
- }
-
- public boolean getFakingStatus() {
- return fromNSAreCommingFakedExtendedBoluses;
- }
-
- public void setFakingStatus(boolean newStatus) {
- fromNSAreCommingFakedExtendedBoluses = newStatus;
- SP.putBoolean(R.string.key_fromNSAreCommingFakedExtendedBoluses, fromNSAreCommingFakedExtendedBoluses);
- }
-
- @Override
- protected void onStart() {
- super.onStart();
- disposable.add(RxBus.INSTANCE
- .toObservable(EventPreferenceChange.class)
- .observeOn(Schedulers.io())
- .subscribe(event -> {
- if (event.isChanged(R.string.key_virtualpump_type))
- refreshConfiguration();
- }, FabricPrivacy::logException)
- );
- refreshConfiguration();
- }
-
- @Override
- protected void onStop() {
- disposable.clear();
- super.onStop();
- }
-
- @Override
- public boolean isFakingTempsByExtendedBoluses() {
- return (Config.NSCLIENT) && fromNSAreCommingFakedExtendedBoluses;
- }
-
- @Override
- public PumpEnactResult loadTDDs() {
- //no result, could read DB in the future?
- return new PumpEnactResult();
- }
-
- @Override
- public List getCustomActions() {
- return null;
- }
-
- @Override
- public void executeCustomAction(CustomActionType customActionType) {
-
- }
-
- @Override
- public boolean isInitialized() {
- return true;
- }
-
- @Override
- public boolean isSuspended() {
- return false;
- }
-
- @Override
- public boolean isBusy() {
- return false;
- }
-
- @Override
- public boolean isConnected() {
- return true;
- }
-
- @Override
- public boolean isConnecting() {
- return false;
- }
-
- @Override
- public boolean isHandshakeInProgress() {
- return false;
- }
-
- @Override
- public void finishHandshaking() {
- }
-
- @Override
- public void connect(String reason) {
- if (!Config.NSCLIENT)
- NSUpload.uploadDeviceStatus();
- lastDataTime = System.currentTimeMillis();
- }
-
- @Override
- public void disconnect(String reason) {
- }
-
- @Override
- public void stopConnecting() {
- }
-
- @Override
- public void getPumpStatus() {
- lastDataTime = System.currentTimeMillis();
- }
-
- @Override
- public PumpEnactResult setNewBasalProfile(Profile profile) {
- lastDataTime = System.currentTimeMillis();
- // Do nothing here. we are using ConfigBuilderPlugin.getPlugin().getActiveProfile().getProfile();
- PumpEnactResult result = new PumpEnactResult();
- result.success = true;
- Notification notification = new Notification(Notification.PROFILE_SET_OK, MainApp.gs(R.string.profile_set_ok), Notification.INFO, 60);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
- return result;
- }
-
- @Override
- public boolean isThisProfileSet(Profile profile) {
- return true;
- }
-
- @Override
- public long lastDataTime() {
- return lastDataTime;
- }
-
- @Override
- public double getBaseBasalRate() {
- Profile profile = ProfileFunctions.getInstance().getProfile();
- if (profile != null)
- return profile.getBasal();
- else
- return 0d;
- }
-
-
- @Override
- public double getReservoirLevel() {
- return reservoirInUnits;
- }
-
- @Override
- public int getBatteryLevel() {
- return batteryPercent;
- }
-
- @Override
- public PumpEnactResult deliverTreatment(DetailedBolusInfo detailedBolusInfo) {
-
- PumpEnactResult result = new PumpEnactResult();
- result.success = true;
- result.bolusDelivered = detailedBolusInfo.insulin;
- result.carbsDelivered = detailedBolusInfo.carbs;
- result.enacted = result.bolusDelivered > 0 || result.carbsDelivered > 0;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
-
- Double delivering = 0d;
-
- while (delivering < detailedBolusInfo.insulin) {
- SystemClock.sleep(200);
- EventOverviewBolusProgress bolusingEvent = EventOverviewBolusProgress.INSTANCE;
- bolusingEvent.setStatus(String.format(MainApp.gs(R.string.bolusdelivering), delivering));
- bolusingEvent.setPercent(Math.min((int) (delivering / detailedBolusInfo.insulin * 100), 100));
- RxBus.INSTANCE.send(bolusingEvent);
- delivering += 0.1d;
- }
- SystemClock.sleep(200);
- EventOverviewBolusProgress bolusingEvent = EventOverviewBolusProgress.INSTANCE;
- bolusingEvent.setStatus(String.format(MainApp.gs(R.string.bolusdelivered), detailedBolusInfo.insulin));
- bolusingEvent.setPercent(100);
- RxBus.INSTANCE.send(bolusingEvent);
- SystemClock.sleep(1000);
- if (L.isEnabled(L.PUMPCOMM))
- log.debug("Delivering treatment insulin: " + detailedBolusInfo.insulin + "U carbs: " + detailedBolusInfo.carbs + "g " + result);
- RxBus.INSTANCE.send(new EventVirtualPumpUpdateGui());
- lastDataTime = System.currentTimeMillis();
- TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false);
- return result;
- }
-
- @Override
- public void stopBolusDelivering() {
- }
-
- @Override
- public PumpEnactResult setTempBasalAbsolute(Double absoluteRate, Integer durationInMinutes, Profile profile, boolean enforceNew) {
-
- TemporaryBasal tempBasal = new TemporaryBasal()
- .date(System.currentTimeMillis())
- .absolute(absoluteRate)
- .duration(durationInMinutes)
- .source(Source.USER);
- PumpEnactResult result = new PumpEnactResult();
- result.success = true;
- result.enacted = true;
- result.isTempCancel = false;
- result.absolute = absoluteRate;
- result.duration = durationInMinutes;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- TreatmentsPlugin.getPlugin().addToHistoryTempBasal(tempBasal);
- if (L.isEnabled(L.PUMPCOMM))
- log.debug("Setting temp basal absolute: " + result);
- RxBus.INSTANCE.send(new EventVirtualPumpUpdateGui());
- lastDataTime = System.currentTimeMillis();
- return result;
- }
-
- @Override
- public PumpEnactResult setTempBasalPercent(Integer percent, Integer durationInMinutes, Profile profile, boolean enforceNew) {
- TemporaryBasal tempBasal = new TemporaryBasal()
- .date(System.currentTimeMillis())
- .percent(percent)
- .duration(durationInMinutes)
- .source(Source.USER);
- PumpEnactResult result = new PumpEnactResult();
- result.success = true;
- result.enacted = true;
- result.percent = percent;
- result.isPercent = true;
- result.isTempCancel = false;
- result.duration = durationInMinutes;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- TreatmentsPlugin.getPlugin().addToHistoryTempBasal(tempBasal);
- if (L.isEnabled(L.PUMPCOMM))
- log.debug("Settings temp basal percent: " + result);
- RxBus.INSTANCE.send(new EventVirtualPumpUpdateGui());
- lastDataTime = System.currentTimeMillis();
- return result;
- }
-
- @Override
- public PumpEnactResult setExtendedBolus(Double insulin, Integer durationInMinutes) {
- PumpEnactResult result = cancelExtendedBolus();
- if (!result.success)
- return result;
-
- ExtendedBolus extendedBolus = new ExtendedBolus()
- .date(System.currentTimeMillis())
- .insulin(insulin)
- .durationInMinutes(durationInMinutes)
- .source(Source.USER);
- result.success = true;
- result.enacted = true;
- result.bolusDelivered = insulin;
- result.isTempCancel = false;
- result.duration = durationInMinutes;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus);
- if (L.isEnabled(L.PUMPCOMM))
- log.debug("Setting extended bolus: " + result);
- RxBus.INSTANCE.send(new EventVirtualPumpUpdateGui());
- lastDataTime = System.currentTimeMillis();
- return result;
- }
-
- @Override
- public PumpEnactResult cancelTempBasal(boolean force) {
- PumpEnactResult result = new PumpEnactResult();
- result.success = true;
- result.isTempCancel = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (TreatmentsPlugin.getPlugin().isTempBasalInProgress()) {
- result.enacted = true;
- TemporaryBasal tempStop = new TemporaryBasal().date(System.currentTimeMillis()).source(Source.USER);
- TreatmentsPlugin.getPlugin().addToHistoryTempBasal(tempStop);
- //tempBasal = null;
- if (L.isEnabled(L.PUMPCOMM))
- log.debug("Canceling temp basal: " + result);
- RxBus.INSTANCE.send(new EventVirtualPumpUpdateGui());
- }
- lastDataTime = System.currentTimeMillis();
- return result;
- }
-
- @Override
- public PumpEnactResult cancelExtendedBolus() {
- PumpEnactResult result = new PumpEnactResult();
- if (TreatmentsPlugin.getPlugin().isInHistoryExtendedBoluslInProgress()) {
- ExtendedBolus exStop = new ExtendedBolus(System.currentTimeMillis());
- exStop.source = Source.USER;
- TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(exStop);
- }
- result.success = true;
- result.enacted = true;
- result.isTempCancel = true;
- result.comment = MainApp.gs(R.string.virtualpump_resultok);
- if (L.isEnabled(L.PUMPCOMM))
- log.debug("Canceling extended bolus: " + result);
- RxBus.INSTANCE.send(new EventVirtualPumpUpdateGui());
- lastDataTime = System.currentTimeMillis();
- return result;
- }
-
- @Override
- public JSONObject getJSONStatus(Profile profile, String profileName) {
- long now = System.currentTimeMillis();
- if (!SP.getBoolean("virtualpump_uploadstatus", false)) {
- return null;
- }
- JSONObject pump = new JSONObject();
- JSONObject battery = new JSONObject();
- JSONObject status = new JSONObject();
- JSONObject extended = new JSONObject();
- try {
- battery.put("percent", batteryPercent);
- status.put("status", "normal");
- extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION);
- try {
- extended.put("ActiveProfile", profileName);
- } catch (Exception ignored) {
- }
- TemporaryBasal tb = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(now);
- if (tb != null) {
- extended.put("TempBasalAbsoluteRate", tb.tempBasalConvertedToAbsolute(now, profile));
- extended.put("TempBasalStart", DateUtil.dateAndTimeString(tb.date));
- extended.put("TempBasalRemaining", tb.getPlannedRemainingMinutes());
- }
- ExtendedBolus eb = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(now);
- if (eb != null) {
- extended.put("ExtendedBolusAbsoluteRate", eb.absoluteRate());
- extended.put("ExtendedBolusStart", DateUtil.dateAndTimeString(eb.date));
- extended.put("ExtendedBolusRemaining", eb.getPlannedRemainingMinutes());
- }
- status.put("timestamp", DateUtil.toISOString(now));
-
- pump.put("battery", battery);
- pump.put("status", status);
- pump.put("extended", extended);
- pump.put("reservoir", reservoirInUnits);
- pump.put("clock", DateUtil.toISOString(now));
- } catch (JSONException e) {
- log.error("Unhandled exception", e);
- }
- return pump;
- }
-
- @Override
- public ManufacturerType manufacturer() {
- return pumpDescription.pumpType.getManufacturer();
- }
-
- @Override
- public PumpType model() {
- return pumpDescription.pumpType;
- }
-
- @Override
- public String serialNumber() {
- return InstanceId.INSTANCE.instanceId();
- }
-
- @Override
- public PumpDescription getPumpDescription() {
- return pumpDescription;
- }
-
- @Override
- public String shortStatus(boolean veryShort) {
- return "Virtual Pump";
- }
-
- public PumpType getPumpType() {
- return pumpType;
- }
-
- @Override
- public boolean canHandleDST() {
- return true;
- }
-
-
- public void refreshConfiguration() {
- String pumptype = SP.getString(R.string.key_virtualpump_type, "Generic AAPS");
-
- PumpType pumpTypeNew = PumpType.getByDescription(pumptype);
-
- if (L.isEnabled(L.PUMP))
- log.debug("Pump in configuration: {}, PumpType object: {}", pumptype, pumpTypeNew);
-
- if (pumpType == pumpTypeNew)
- return;
-
- if (L.isEnabled(L.PUMP))
- log.debug("New pump configuration found ({}), changing from previous ({})", pumpTypeNew, pumpType);
-
- pumpDescription.setPumpDescription(pumpTypeNew);
-
- this.pumpType = pumpTypeNew;
-
- }
-
-
- @Override
- public void timeDateOrTimeZoneChanged() {
-
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.kt
new file mode 100644
index 0000000000..9e4a7c0d2f
--- /dev/null
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.kt
@@ -0,0 +1,410 @@
+package info.nightscout.androidaps.plugins.pump.virtual
+
+import android.os.SystemClock
+import info.nightscout.androidaps.BuildConfig
+import info.nightscout.androidaps.Config
+import info.nightscout.androidaps.R
+import info.nightscout.androidaps.data.DetailedBolusInfo
+import info.nightscout.androidaps.data.Profile
+import info.nightscout.androidaps.data.PumpEnactResult
+import info.nightscout.androidaps.db.ExtendedBolus
+import info.nightscout.androidaps.db.Source
+import info.nightscout.androidaps.db.TemporaryBasal
+import info.nightscout.androidaps.events.EventPreferenceChange
+import info.nightscout.androidaps.interfaces.PluginBase
+import info.nightscout.androidaps.interfaces.PluginDescription
+import info.nightscout.androidaps.interfaces.PluginType
+import info.nightscout.androidaps.interfaces.PumpDescription
+import info.nightscout.androidaps.interfaces.PumpInterface
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.plugins.common.ManufacturerType
+import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction
+import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
+import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
+import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress
+import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
+import info.nightscout.androidaps.plugins.pump.virtual.events.EventVirtualPumpUpdateGui
+import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
+import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.InstanceId.instanceId
+import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import io.reactivex.disposables.CompositeDisposable
+import io.reactivex.schedulers.Schedulers
+import org.json.JSONException
+import org.json.JSONObject
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class VirtualPumpPlugin @Inject constructor(
+ private val aapsLogger: AAPSLogger,
+ private val rxBus: RxBusWrapper,
+ private val resourceHelper: ResourceHelper,
+ private val sp: SP,
+ private val profileFunction: ProfileFunction,
+ private val treatmentsPlugin: TreatmentsPlugin
+) : PluginBase(PluginDescription()
+ .mainType(PluginType.PUMP)
+ .fragmentClass(VirtualPumpFragment::class.java.name)
+ .pluginName(R.string.virtualpump)
+ .shortName(R.string.virtualpump_shortname)
+ .preferencesId(R.xml.pref_virtualpump)
+ .neverVisible(Config.NSCLIENT)
+ .description(R.string.description_pump_virtual)
+), PumpInterface {
+
+
+ companion object {
+ private lateinit var virtualPumpPlugin: VirtualPumpPlugin
+ @Deprecated("Use dagger to get an instance")
+ fun getPlugin(): VirtualPumpPlugin {
+ checkNotNull(virtualPumpPlugin) { "Accessing VirtualPumpPlugin before first instantiation" }
+ return virtualPumpPlugin
+ }
+ }
+
+ private val disposable = CompositeDisposable()
+ var batteryPercent = 50
+ var reservoirInUnits = 50
+
+ var pumpType: PumpType? = null
+ private set
+ private var lastDataTime: Long = 0
+ private val pumpDescription = PumpDescription()
+
+ init {
+ virtualPumpPlugin = this
+ pumpDescription.isBolusCapable = true
+ pumpDescription.bolusStep = 0.1
+ pumpDescription.isExtendedBolusCapable = true
+ pumpDescription.extendedBolusStep = 0.05
+ pumpDescription.extendedBolusDurationStep = 30.0
+ pumpDescription.extendedBolusMaxDuration = 8 * 60.toDouble()
+ pumpDescription.isTempBasalCapable = true
+ pumpDescription.tempBasalStyle = PumpDescription.PERCENT or PumpDescription.ABSOLUTE
+ pumpDescription.maxTempPercent = 500
+ pumpDescription.tempPercentStep = 10
+ pumpDescription.tempDurationStep = 30
+ pumpDescription.tempDurationStep15mAllowed = true
+ pumpDescription.tempDurationStep30mAllowed = true
+ pumpDescription.tempMaxDuration = 24 * 60
+ pumpDescription.isSetBasalProfileCapable = true
+ pumpDescription.basalStep = 0.01
+ pumpDescription.basalMinimumRate = 0.01
+ pumpDescription.isRefillingCapable = true
+ pumpDescription.storesCarbInfo = false
+ pumpDescription.is30minBasalRatesCapable = true
+ }
+
+ fun getFakingStatus(): Boolean {
+ return sp.getBoolean(R.string.key_fromNSAreCommingFakedExtendedBoluses, false)
+ }
+
+ fun setFakingStatus(newStatus: Boolean) {
+ sp.putBoolean(R.string.key_fromNSAreCommingFakedExtendedBoluses, newStatus)
+ }
+
+ override fun onStart() {
+ super.onStart()
+ disposable += rxBus
+ .toObservable(EventPreferenceChange::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ event: EventPreferenceChange -> if (event.isChanged(R.string.key_virtualpump_type)) refreshConfiguration() }) { throwable: Throwable? -> FabricPrivacy.logException(throwable) }
+ refreshConfiguration()
+ }
+
+ override fun onStop() {
+ disposable.clear()
+ super.onStop()
+ }
+
+ override fun isFakingTempsByExtendedBoluses(): Boolean {
+ return Config.NSCLIENT && getFakingStatus()
+ }
+
+ override fun loadTDDs(): PumpEnactResult { //no result, could read DB in the future?
+ return PumpEnactResult()
+ }
+
+ override fun getCustomActions(): List? {
+ return null
+ }
+
+ override fun executeCustomAction(customActionType: CustomActionType) {}
+ override fun isInitialized(): Boolean {
+ return true
+ }
+
+ override fun isSuspended(): Boolean {
+ return false
+ }
+
+ override fun isBusy(): Boolean {
+ return false
+ }
+
+ override fun isConnected(): Boolean {
+ return true
+ }
+
+ override fun isConnecting(): Boolean {
+ return false
+ }
+
+ override fun isHandshakeInProgress(): Boolean {
+ return false
+ }
+
+ override fun finishHandshaking() {}
+ override fun connect(reason: String) {
+ if (!Config.NSCLIENT) NSUpload.uploadDeviceStatus()
+ lastDataTime = System.currentTimeMillis()
+ }
+
+ override fun disconnect(reason: String) {}
+ override fun stopConnecting() {}
+ override fun getPumpStatus() {
+ lastDataTime = System.currentTimeMillis()
+ }
+
+ override fun setNewBasalProfile(profile: Profile): PumpEnactResult {
+ lastDataTime = System.currentTimeMillis()
+ // Do nothing here. we are using ConfigBuilderPlugin.getPlugin().getActiveProfile().getProfile();
+ val result = PumpEnactResult()
+ result.success = true
+ val notification = Notification(Notification.PROFILE_SET_OK, resourceHelper.gs(R.string.profile_set_ok), Notification.INFO, 60)
+ rxBus.send(EventNewNotification(notification))
+ return result
+ }
+
+ override fun isThisProfileSet(profile: Profile): Boolean {
+ return true
+ }
+
+ override fun lastDataTime(): Long {
+ return lastDataTime
+ }
+
+ override fun getBaseBasalRate(): Double {
+ return profileFunction.getProfile()?.basal ?: 0.0
+ }
+
+ override fun getReservoirLevel(): Double {
+ return reservoirInUnits.toDouble()
+ }
+
+ override fun getBatteryLevel(): Int {
+ return batteryPercent
+ }
+
+ override fun deliverTreatment(detailedBolusInfo: DetailedBolusInfo): PumpEnactResult {
+ val result = PumpEnactResult()
+ result.success = true
+ result.bolusDelivered = detailedBolusInfo.insulin
+ result.carbsDelivered = detailedBolusInfo.carbs
+ result.enacted = result.bolusDelivered > 0 || result.carbsDelivered > 0
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
+ var delivering = 0.0
+ while (delivering < detailedBolusInfo.insulin) {
+ SystemClock.sleep(200)
+ val bolusingEvent = EventOverviewBolusProgress
+ bolusingEvent.status = resourceHelper.gs(R.string.bolusdelivering, delivering)
+ bolusingEvent.percent = Math.min((delivering / detailedBolusInfo.insulin * 100).toInt(), 100)
+ rxBus.send(bolusingEvent)
+ delivering += 0.1
+ }
+ SystemClock.sleep(200)
+ val bolusingEvent = EventOverviewBolusProgress
+ bolusingEvent.status = resourceHelper.gs(R.string.bolusdelivered, detailedBolusInfo.insulin)
+ bolusingEvent.percent = 100
+ rxBus.send(bolusingEvent)
+ SystemClock.sleep(1000)
+ aapsLogger.debug(LTag.PUMP, "Delivering treatment insulin: " + detailedBolusInfo.insulin + "U carbs: " + detailedBolusInfo.carbs + "g " + result)
+ rxBus.send(EventVirtualPumpUpdateGui())
+ lastDataTime = System.currentTimeMillis()
+ treatmentsPlugin.addToHistoryTreatment(detailedBolusInfo, false)
+ return result
+ }
+
+ override fun stopBolusDelivering() {}
+ override fun setTempBasalAbsolute(absoluteRate: Double, durationInMinutes: Int, profile: Profile, enforceNew: Boolean): PumpEnactResult {
+ val tempBasal = TemporaryBasal()
+ .date(System.currentTimeMillis())
+ .absolute(absoluteRate)
+ .duration(durationInMinutes)
+ .source(Source.USER)
+ val result = PumpEnactResult()
+ result.success = true
+ result.enacted = true
+ result.isTempCancel = false
+ result.absolute = absoluteRate
+ result.duration = durationInMinutes
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
+ treatmentsPlugin.addToHistoryTempBasal(tempBasal)
+ aapsLogger.debug(LTag.PUMP, "Setting temp basal absolute: $result")
+ rxBus.send(EventVirtualPumpUpdateGui())
+ lastDataTime = System.currentTimeMillis()
+ return result
+ }
+
+ override fun setTempBasalPercent(percent: Int, durationInMinutes: Int, profile: Profile, enforceNew: Boolean): PumpEnactResult {
+ val tempBasal = TemporaryBasal()
+ .date(System.currentTimeMillis())
+ .percent(percent)
+ .duration(durationInMinutes)
+ .source(Source.USER)
+ val result = PumpEnactResult()
+ result.success = true
+ result.enacted = true
+ result.percent = percent
+ result.isPercent = true
+ result.isTempCancel = false
+ result.duration = durationInMinutes
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
+ treatmentsPlugin.addToHistoryTempBasal(tempBasal)
+ aapsLogger.debug(LTag.PUMP, "Settings temp basal percent: $result")
+ rxBus.send(EventVirtualPumpUpdateGui())
+ lastDataTime = System.currentTimeMillis()
+ return result
+ }
+
+ override fun setExtendedBolus(insulin: Double, durationInMinutes: Int): PumpEnactResult {
+ val result = cancelExtendedBolus()
+ if (!result.success) return result
+ val extendedBolus = ExtendedBolus()
+ .date(System.currentTimeMillis())
+ .insulin(insulin)
+ .durationInMinutes(durationInMinutes)
+ .source(Source.USER)
+ result.success = true
+ result.enacted = true
+ result.bolusDelivered = insulin
+ result.isTempCancel = false
+ result.duration = durationInMinutes
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
+ treatmentsPlugin.addToHistoryExtendedBolus(extendedBolus)
+ aapsLogger.debug(LTag.PUMP, "Setting extended bolus: $result")
+ rxBus.send(EventVirtualPumpUpdateGui())
+ lastDataTime = System.currentTimeMillis()
+ return result
+ }
+
+ override fun cancelTempBasal(force: Boolean): PumpEnactResult {
+ val result = PumpEnactResult()
+ result.success = true
+ result.isTempCancel = true
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
+ if (treatmentsPlugin.isTempBasalInProgress) {
+ result.enacted = true
+ val tempStop = TemporaryBasal().date(System.currentTimeMillis()).source(Source.USER)
+ treatmentsPlugin.addToHistoryTempBasal(tempStop)
+ //tempBasal = null;
+ aapsLogger.debug(LTag.PUMP, "Canceling temp basal: $result")
+ rxBus.send(EventVirtualPumpUpdateGui())
+ }
+ lastDataTime = System.currentTimeMillis()
+ return result
+ }
+
+ override fun cancelExtendedBolus(): PumpEnactResult {
+ val result = PumpEnactResult()
+ if (treatmentsPlugin.isInHistoryExtendedBoluslInProgress) {
+ val exStop = ExtendedBolus(System.currentTimeMillis())
+ exStop.source = Source.USER
+ treatmentsPlugin.addToHistoryExtendedBolus(exStop)
+ }
+ result.success = true
+ result.enacted = true
+ result.isTempCancel = true
+ result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
+ aapsLogger.debug(LTag.PUMP, "Canceling extended bolus: $result")
+ rxBus.send(EventVirtualPumpUpdateGui())
+ lastDataTime = System.currentTimeMillis()
+ return result
+ }
+
+ override fun getJSONStatus(profile: Profile, profileName: String): JSONObject {
+ val now = System.currentTimeMillis()
+ if (!sp.getBoolean("virtualpump_uploadstatus", false)) {
+ return JSONObject()
+ }
+ val pump = JSONObject()
+ val battery = JSONObject()
+ val status = JSONObject()
+ val extended = JSONObject()
+ try {
+ battery.put("percent", batteryPercent)
+ status.put("status", "normal")
+ extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION)
+ try {
+ extended.put("ActiveProfile", profileName)
+ } catch (ignored: Exception) {
+ }
+ val tb = treatmentsPlugin.getTempBasalFromHistory(now)
+ if (tb != null) {
+ extended.put("TempBasalAbsoluteRate", tb.tempBasalConvertedToAbsolute(now, profile))
+ extended.put("TempBasalStart", DateUtil.dateAndTimeString(tb.date))
+ extended.put("TempBasalRemaining", tb.plannedRemainingMinutes)
+ }
+ val eb = treatmentsPlugin.getExtendedBolusFromHistory(now)
+ if (eb != null) {
+ extended.put("ExtendedBolusAbsoluteRate", eb.absoluteRate())
+ extended.put("ExtendedBolusStart", DateUtil.dateAndTimeString(eb.date))
+ extended.put("ExtendedBolusRemaining", eb.plannedRemainingMinutes)
+ }
+ status.put("timestamp", DateUtil.toISOString(now))
+ pump.put("battery", battery)
+ pump.put("status", status)
+ pump.put("extended", extended)
+ pump.put("reservoir", reservoirInUnits)
+ pump.put("clock", DateUtil.toISOString(now))
+ } catch (e: JSONException) {
+ aapsLogger.error("Unhandled exception", e)
+ }
+ return pump
+ }
+
+ override fun manufacturer(): ManufacturerType {
+ return pumpDescription.pumpType.manufacturer
+ }
+
+ override fun model(): PumpType {
+ return pumpDescription.pumpType
+ }
+
+ override fun serialNumber(): String {
+ return instanceId()
+ }
+
+ override fun getPumpDescription(): PumpDescription {
+ return pumpDescription
+ }
+
+ override fun shortStatus(veryShort: Boolean): String {
+ return "Virtual Pump"
+ }
+
+ override fun canHandleDST(): Boolean {
+ return true
+ }
+
+ fun refreshConfiguration() {
+ val pumptype = sp.getString(R.string.key_virtualpump_type, "Generic AAPS")
+ val pumpTypeNew = PumpType.getByDescription(pumptype)
+ aapsLogger.debug(LTag.PUMP, "Pump in configuration: $pumptype, PumpType object: $pumpTypeNew")
+ if (pumpType == pumpTypeNew) return
+ aapsLogger.debug(LTag.PUMP, "New pump configuration found ($pumpTypeNew), changing from previous ($pumpType)")
+ pumpDescription.setPumpDescription(pumpTypeNew)
+ pumpType = pumpTypeNew
+ }
+
+ override fun timeDateOrTimeZoneChanged() {}
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityAAPSPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityAAPSPlugin.java
index 8cfa903fb8..d6f256e10f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityAAPSPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityAAPSPlugin.java
@@ -34,6 +34,7 @@ public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
static SensitivityAAPSPlugin plugin = null;
+ @Deprecated
public static SensitivityAAPSPlugin getPlugin() {
if (plugin == null)
plugin = new SensitivityAAPSPlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref0Plugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref0Plugin.java
index 6298724514..e96825b09a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref0Plugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref0Plugin.java
@@ -33,6 +33,7 @@ public class SensitivityOref0Plugin extends AbstractSensitivityPlugin {
static SensitivityOref0Plugin plugin = null;
+ @Deprecated
public static SensitivityOref0Plugin getPlugin() {
if (plugin == null)
plugin = new SensitivityOref0Plugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref1Plugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref1Plugin.java
index 131cafe89c..fb39859355 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref1Plugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref1Plugin.java
@@ -33,6 +33,7 @@ public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
static SensitivityOref1Plugin plugin = null;
+ @Deprecated
public static SensitivityOref1Plugin getPlugin() {
if (plugin == null)
plugin = new SensitivityOref1Plugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityWeightedAveragePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityWeightedAveragePlugin.java
index 5d0aac4d4c..b954423bb1 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityWeightedAveragePlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityWeightedAveragePlugin.java
@@ -32,6 +32,7 @@ public class SensitivityWeightedAveragePlugin extends AbstractSensitivityPlugin
private static SensitivityWeightedAveragePlugin plugin = null;
+ @Deprecated
public static SensitivityWeightedAveragePlugin getPlugin() {
if (plugin == null)
plugin = new SensitivityWeightedAveragePlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/source/BGSourceFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/source/BGSourceFragment.java
index b67cadfed4..442d9d203f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/source/BGSourceFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/source/BGSourceFragment.java
@@ -8,16 +8,18 @@ import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
-import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
+import javax.inject.Inject;
+
+import dagger.android.support.DaggerFragment;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.db.BgReading;
-import info.nightscout.androidaps.plugins.bus.RxBus;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutosensCalculationFinished;
@@ -25,6 +27,7 @@ import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.OKDialog;
import info.nightscout.androidaps.utils.T;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
@@ -32,7 +35,10 @@ import io.reactivex.disposables.CompositeDisposable;
* Created by mike on 16.10.2017.
*/
-public class BGSourceFragment extends Fragment {
+public class BGSourceFragment extends DaggerFragment {
+ @Inject RxBusWrapper rxBus;
+ @Inject ResourceHelper resourceHelper;
+
private CompositeDisposable disposable = new CompositeDisposable();
private RecyclerView recyclerView;
@@ -64,7 +70,7 @@ public class BGSourceFragment extends Fragment {
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventAutosensCalculationFinished.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGUI(), FabricPrivacy::logException)
@@ -113,7 +119,7 @@ public class BGSourceFragment extends Fragment {
return bgReadings.size();
}
- class BgReadingsViewHolder extends RecyclerView.ViewHolder {
+ class BgReadingsViewHolder extends RecyclerView.ViewHolder {
TextView date;
TextView value;
TextView direction;
@@ -131,7 +137,7 @@ public class BGSourceFragment extends Fragment {
remove = itemView.findViewById(R.id.bgsource_remove);
remove.setOnClickListener(v -> {
final BgReading bgReading = (BgReading) v.getTag();
- OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.removerecord) + "\n" + DateUtil.dateAndTimeString(bgReading.date) + "\n" + bgReading.valueToUnitsToString(ProfileFunctions.getSystemUnits()), () -> {
+ OKDialog.showConfirmation(getContext(), resourceHelper.gs(R.string.removerecord) + "\n" + DateUtil.dateAndTimeString(bgReading.date) + "\n" + bgReading.valueToUnitsToString(ProfileFunctions.getSystemUnits()), () -> {
bgReading.isValid = false;
MainApp.getDbHelper().update(bgReading);
updateGUI();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceEversensePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceEversensePlugin.java
index 6f39e3d762..46030191ea 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceEversensePlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceEversensePlugin.java
@@ -33,6 +33,7 @@ public class SourceEversensePlugin extends PluginBase implements BgSourceInterfa
private static SourceEversensePlugin plugin = null;
+ @Deprecated
public static SourceEversensePlugin getPlugin() {
if (plugin == null)
plugin = new SourceEversensePlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceGlimpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceGlimpPlugin.java
index 243fe60070..fa91342fd9 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceGlimpPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceGlimpPlugin.java
@@ -24,6 +24,7 @@ public class SourceGlimpPlugin extends PluginBase implements BgSourceInterface {
private static SourceGlimpPlugin plugin = null;
+ @Deprecated
public static SourceGlimpPlugin getPlugin() {
if (plugin == null)
plugin = new SourceGlimpPlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceMM640gPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceMM640gPlugin.java
index daccbcedd7..c686d1efc8 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceMM640gPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceMM640gPlugin.java
@@ -26,6 +26,7 @@ public class SourceMM640gPlugin extends PluginBase implements BgSourceInterface
private static SourceMM640gPlugin plugin = null;
+ @Deprecated
public static SourceMM640gPlugin getPlugin() {
if (plugin == null)
plugin = new SourceMM640gPlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceNSClientPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceNSClientPlugin.java
index dd0a2c5e88..ea6a1eb81d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceNSClientPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceNSClientPlugin.java
@@ -28,6 +28,7 @@ public class SourceNSClientPlugin extends PluginBase implements BgSourceInterfac
private static SourceNSClientPlugin plugin = null;
+ @Deprecated
public static SourceNSClientPlugin getPlugin() {
if (plugin == null)
plugin = new SourceNSClientPlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourcePoctechPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourcePoctechPlugin.java
index ceecfb844f..b183ff11d0 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourcePoctechPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourcePoctechPlugin.java
@@ -30,6 +30,7 @@ public class SourcePoctechPlugin extends PluginBase implements BgSourceInterface
private static SourcePoctechPlugin plugin = null;
+ @Deprecated
public static SourcePoctechPlugin getPlugin() {
if (plugin == null)
plugin = new SourcePoctechPlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceTomatoPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceTomatoPlugin.java
index 211ec9a5a2..4990331bb8 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceTomatoPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceTomatoPlugin.java
@@ -25,6 +25,7 @@ public class SourceTomatoPlugin extends PluginBase implements BgSourceInterface
private static SourceTomatoPlugin plugin = null;
+ @Deprecated
public static SourceTomatoPlugin getPlugin() {
if (plugin == null)
plugin = new SourceTomatoPlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceXdripPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceXdripPlugin.java
index 1acefa724e..939c99601f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceXdripPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/source/SourceXdripPlugin.java
@@ -27,6 +27,7 @@ public class SourceXdripPlugin extends PluginBase implements BgSourceInterface {
boolean advancedFiltering;
+ @Deprecated
public static SourceXdripPlugin getPlugin() {
if (plugin == null)
plugin = new SourceXdripPlugin();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentService.java b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentService.java
index 1331c8eedf..9a584037b3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentService.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentService.java
@@ -61,7 +61,7 @@ public class TreatmentService extends OrmLiteBaseService {
public TreatmentService() {
onCreate();
dbInitialize();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventNsTreatment.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -185,11 +185,11 @@ public class TreatmentService extends OrmLiteBaseService {
public void run() {
if (L.isEnabled(L.DATATREATMENTS))
log.debug("Firing EventReloadTreatmentData");
- RxBus.INSTANCE.send(event);
+ RxBus.Companion.getINSTANCE().send(event);
if (DatabaseHelper.earliestDataChange != null) {
if (L.isEnabled(L.DATATREATMENTS))
log.debug("Firing EventNewHistoryData");
- RxBus.INSTANCE.send(new EventNewHistoryData(DatabaseHelper.earliestDataChange));
+ RxBus.Companion.getINSTANCE().send(new EventNewHistoryData(DatabaseHelper.earliestDataChange));
}
DatabaseHelper.earliestDataChange = null;
callback.setPost(null);
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt
index 268b1e1985..28f6ffe57b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsFragment.kt
@@ -7,19 +7,23 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import dagger.android.support.DaggerFragment
-import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.events.EventExtendedBolusChange
-import info.nightscout.androidaps.plugins.bus.RxBus.toObservable
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.treatments.fragments.*
import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.plusAssign
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.treatments_fragment.*
import javax.inject.Inject
class TreatmentsFragment : DaggerFragment() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+
private val disposable = CompositeDisposable()
@Inject
@@ -66,10 +70,10 @@ class TreatmentsFragment : DaggerFragment() {
@Synchronized
override fun onResume() {
super.onResume()
- disposable.add(toObservable(EventExtendedBolusChange::class.java)
+ disposable += rxBus
+ .toObservable(EventExtendedBolusChange::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGui() }) { FabricPrivacy.logException(it) }
- )
updateGui()
}
@@ -88,13 +92,13 @@ class TreatmentsFragment : DaggerFragment() {
}
private fun setBackgroundColorOnSelected(selected: View) {
- treatments_treatments.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- treatments_extendedboluses.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- treatments_tempbasals.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- treatments_temptargets.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- treatments_profileswitches.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- treatments_careportal.setBackgroundColor(MainApp.gc(R.color.defaultbackground))
- selected.setBackgroundColor(MainApp.gc(R.color.tabBgColorSelected))
+ treatments_treatments.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ treatments_extendedboluses.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ treatments_tempbasals.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ treatments_temptargets.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ treatments_profileswitches.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ treatments_careportal.setBackgroundColor(resourceHelper.gc(R.color.defaultbackground))
+ selected.setBackgroundColor(resourceHelper.gc(R.color.tabBgColorSelected))
}
private fun updateGui() {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPlugin.java
index 2ed602e275..555a53959d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPlugin.java
@@ -129,7 +129,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
this.service = new TreatmentService();
initializeData(range());
super.onStart();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventReloadTreatmentData.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -137,23 +137,23 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
initializeTreatmentData(range());
initializeExtendedBolusData(range());
updateTotalIOBTreatments();
- RxBus.INSTANCE.send(event.getNext());
+ RxBus.Companion.getINSTANCE().send(event.getNext());
},
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventReloadProfileSwitchData.class)
.observeOn(Schedulers.io())
.subscribe(event -> initializeProfileSwitchData(range()),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTempTargetChange.class)
.observeOn(Schedulers.io())
.subscribe(event -> initializeTempTargetData(range()),
FabricPrivacy::logException
));
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventReloadTempBasalData.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
@@ -779,7 +779,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
@Override
public void addToHistoryProfileSwitch(ProfileSwitch profileSwitch) {
//log.debug("Adding new TemporaryBasal record" + profileSwitch.log());
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PROFILE_SWITCH_MISSING));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PROFILE_SWITCH_MISSING));
MainApp.getDbHelper().createOrUpdate(profileSwitch);
NSUpload.uploadProfileSwitch(profileSwitch);
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsBolusFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsBolusFragment.java
index 27e35ed456..30b432c33c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsBolusFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsBolusFragment.java
@@ -200,7 +200,7 @@ public class TreatmentsBolusFragment extends Fragment {
Button refreshFromNS = view.findViewById(R.id.treatments_reshreshfromnightscout);
refreshFromNS.setOnClickListener(v -> OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.refresheventsfromnightscout) + "?", () -> {
TreatmentsPlugin.getPlugin().getService().resetTreatments();
- RxBus.INSTANCE.send(new EventNSClientRestart());
+ RxBus.Companion.getINSTANCE().send(new EventNSClientRestart());
}));
deleteFutureTreatments = view.findViewById(R.id.treatments_delete_future_treatments);
@@ -231,12 +231,12 @@ public class TreatmentsBolusFragment extends Fragment {
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTreatmentChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAutosensCalculationFinished.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsCareportalFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsCareportalFragment.java
index 5aa4f091d8..c593e2f87f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsCareportalFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsCareportalFragment.java
@@ -130,7 +130,7 @@ public class TreatmentsCareportalFragment extends Fragment {
refreshFromNS.setOnClickListener(v ->
OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.careportal), MainApp.gs(R.string.refresheventsfromnightscout) + " ?", () -> {
MainApp.getDbHelper().resetCareportalEvents();
- RxBus.INSTANCE.send(new EventNSClientRestart());
+ RxBus.Companion.getINSTANCE().send(new EventNSClientRestart());
}));
view.findViewById(R.id.careportal_removeandroidapsstartedevents).setOnClickListener(v ->
@@ -146,7 +146,7 @@ public class TreatmentsCareportalFragment extends Fragment {
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventCareportalEventChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsExtendedBolusesFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsExtendedBolusesFragment.java
index 928e2d30aa..72fd46aec5 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsExtendedBolusesFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsExtendedBolusesFragment.java
@@ -166,12 +166,12 @@ public class TreatmentsExtendedBolusesFragment extends Fragment {
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventExtendedBolusChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAutosensCalculationFinished.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsProfileSwitchFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsProfileSwitchFragment.kt
index 45d25124de..f0d6ae7346 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsProfileSwitchFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsProfileSwitchFragment.kt
@@ -7,31 +7,42 @@ import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.cardview.widget.CardView
-import androidx.core.content.ContextCompat
-import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.db.ProfileSwitch
import info.nightscout.androidaps.db.Source
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
import info.nightscout.androidaps.events.EventProfileNeedsUpdate
-import info.nightscout.androidaps.plugins.bus.RxBus
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue
import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientRestart
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
import info.nightscout.androidaps.plugins.treatments.fragments.TreatmentsProfileSwitchFragment.RecyclerProfileViewAdapter.ProfileSwitchViewHolder
-import info.nightscout.androidaps.utils.*
+import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.OKDialog
+import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import info.nightscout.androidaps.utils.toVisibility
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.treatments_profileswitch_fragment.*
+import javax.inject.Inject
-class TreatmentsProfileSwitchFragment : Fragment() {
+class TreatmentsProfileSwitchFragment : DaggerFragment() {
private val disposable = CompositeDisposable()
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var sp: SP
+ @Inject lateinit var localProfilePlugin: LocalProfilePlugin
+ @Inject lateinit var resourceHelper: ResourceHelper
+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.treatments_profileswitch_fragment, container, false)
@@ -45,20 +56,20 @@ class TreatmentsProfileSwitchFragment : Fragment() {
profileswitch_refreshfromnightscout.setOnClickListener {
activity?.let { activity ->
- OKDialog.showConfirmation(activity, MainApp.gs(R.string.refresheventsfromnightscout) + "?", Runnable {
+ OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.refresheventsfromnightscout) + "?", Runnable {
MainApp.getDbHelper().resetProfileSwitch()
- RxBus.send(EventNSClientRestart())
+ rxBus.send(EventNSClientRestart())
})
}
}
- if (SP.getBoolean(R.string.key_ns_upload_only, false)) profileswitch_refreshfromnightscout.visibility = View.GONE
+ if (sp.getBoolean(R.string.key_ns_upload_only, false)) profileswitch_refreshfromnightscout.visibility = View.GONE
}
@Synchronized
override fun onResume() {
super.onResume()
- disposable.add(RxBus
+ disposable.add(rxBus
.toObservable(EventProfileNeedsUpdate::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGUI() }) { FabricPrivacy.logException(it) }
@@ -86,12 +97,12 @@ class TreatmentsProfileSwitchFragment : Fragment() {
holder.ns.visibility = NSUpload.isIdValid(profileSwitch._id).toVisibility()
holder.date.text = DateUtil.dateAndTimeString(profileSwitch.date)
if (!profileSwitch.isEndingEvent) {
- holder.duration.text = DecimalFormatter.to0Decimal(profileSwitch.durationInMinutes.toDouble()) + " " + MainApp.gs(R.string.unit_minute_short)
+ holder.duration.text = resourceHelper.gs(R.string.format_mins, profileSwitch.durationInMinutes)
} else {
holder.duration.text = ""
}
holder.name.text = profileSwitch.customizedName
- if (profileSwitch.isInProgress) holder.date.setTextColor(ContextCompat.getColor(MainApp.instance(), R.color.colorActive)) else holder.date.setTextColor(holder.duration.currentTextColor)
+ if (profileSwitch.isInProgress) holder.date.setTextColor(resourceHelper.gc(R.color.colorActive)) else holder.date.setTextColor(holder.duration.currentTextColor)
holder.remove.tag = profileSwitch
holder.clone.tag = profileSwitch
holder.name.tag = profileSwitch
@@ -119,9 +130,9 @@ class TreatmentsProfileSwitchFragment : Fragment() {
when (v.id) {
R.id.profileswitch_remove ->
activity?.let { activity ->
- OKDialog.showConfirmation(activity, MainApp.gs(R.string.removerecord),
- MainApp.gs(R.string.careportal_profileswitch) + ": " + profileSwitch.profileName +
- "\n" + MainApp.gs(R.string.date) + ": " + DateUtil.dateAndTimeString(profileSwitch.date), Runnable {
+ OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.removerecord),
+ resourceHelper.gs(R.string.careportal_profileswitch) + ": " + profileSwitch.profileName +
+ "\n" + resourceHelper.gs(R.string.date) + ": " + DateUtil.dateAndTimeString(profileSwitch.date), Runnable {
val id = profileSwitch._id
if (NSUpload.isIdValid(id)) NSUpload.removeCareportalEntryFromNS(id)
else UploadQueue.removeID("dbAdd", id)
@@ -130,11 +141,11 @@ class TreatmentsProfileSwitchFragment : Fragment() {
}
R.id.profileswitch_clone ->
activity?.let { activity ->
- OKDialog.showConfirmation(activity, MainApp.gs(R.string.careportal_profileswitch), MainApp.gs(R.string.copytolocalprofile) + "\n" + profileSwitch.customizedName + "\n" + DateUtil.dateAndTimeString(profileSwitch.date), Runnable {
+ OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_profileswitch), resourceHelper.gs(R.string.copytolocalprofile) + "\n" + profileSwitch.customizedName + "\n" + DateUtil.dateAndTimeString(profileSwitch.date), Runnable {
profileSwitch.profileObject?.let {
val nonCustomized = it.convertToNonCustomizedProfile()
- LocalProfilePlugin.addProfile(LocalProfilePlugin.SingleProfile().copyFrom(nonCustomized, profileSwitch.customizedName + " " + DateUtil.dateAndTimeString(profileSwitch.date).replace(".", "_")))
- RxBus.send(EventLocalProfileChanged())
+ localProfilePlugin.addProfile(LocalProfilePlugin.SingleProfile().copyFrom(localProfilePlugin.rawProfile, nonCustomized, profileSwitch.customizedName + " " + DateUtil.dateAndTimeString(profileSwitch.date).replace(".", "_")))
+ rxBus.send(EventLocalProfileChanged())
}
})
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTempTargetFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTempTargetFragment.java
index 8b73ec8ed2..71ee951eaa 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTempTargetFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTempTargetFragment.java
@@ -165,7 +165,7 @@ public class TreatmentsTempTargetFragment extends Fragment {
refreshFromNS.setOnClickListener(v ->
OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.refresheventsfromnightscout) + " ?", () -> {
MainApp.getDbHelper().resetTempTargets();
- RxBus.INSTANCE.send(new EventNSClientRestart());
+ RxBus.Companion.getINSTANCE().send(new EventNSClientRestart());
}));
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false);
@@ -178,7 +178,7 @@ public class TreatmentsTempTargetFragment extends Fragment {
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTempTargetChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTemporaryBasalsFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTemporaryBasalsFragment.java
index 22dd86e381..c2613cfdde 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTemporaryBasalsFragment.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/TreatmentsTemporaryBasalsFragment.java
@@ -196,12 +196,12 @@ public class TreatmentsTemporaryBasalsFragment extends Fragment {
@Override
public synchronized void onResume() {
super.onResume();
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventTempBasalChange.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAutosensCalculationFinished.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateGui(), FabricPrivacy::logException)
diff --git a/app/src/main/java/info/nightscout/androidaps/queue/CommandQueue.java b/app/src/main/java/info/nightscout/androidaps/queue/CommandQueue.java
index 489163eb5a..d6babb4033 100644
--- a/app/src/main/java/info/nightscout/androidaps/queue/CommandQueue.java
+++ b/app/src/main/java/info/nightscout/androidaps/queue/CommandQueue.java
@@ -252,7 +252,7 @@ public class CommandQueue {
// not when the Bolus command is starting. The command closes the dialog upon completion).
showBolusProgressDialog(detailedBolusInfo.insulin, detailedBolusInfo.context);
// Notify Wear about upcoming bolus
- RxBus.INSTANCE.send(new EventBolusRequested(detailedBolusInfo.insulin));
+ RxBus.Companion.getINSTANCE().send(new EventBolusRequested(detailedBolusInfo.insulin));
}
}
@@ -278,7 +278,7 @@ public class CommandQueue {
public synchronized void cancelAllBoluses() {
if (!isRunning(Command.CommandType.BOLUS)) {
- RxBus.INSTANCE.send(new EventDismissBolusProgressIfRunning(new PumpEnactResult().success(true).enacted(false)));
+ RxBus.Companion.getINSTANCE().send(new EventDismissBolusProgressIfRunning(new PumpEnactResult().success(true).enacted(false)));
}
removeAll(Command.CommandType.BOLUS);
removeAll(Command.CommandType.SMB_BOLUS);
@@ -398,7 +398,7 @@ public class CommandQueue {
if (!MainApp.isEngineeringModeOrRelease()) {
Notification notification = new Notification(Notification.NOT_ENG_MODE_OR_RELEASE, MainApp.gs(R.string.not_eng_mode_or_release), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
if (callback != null)
callback.result(new PumpEnactResult().success(false).enacted(false).comment(MainApp.gs(R.string.not_eng_mode_or_release))).run();
return false;
@@ -411,14 +411,14 @@ public class CommandQueue {
for (Profile.ProfileValue basalValue : basalValues) {
if (basalValue.value < pump.getPumpDescription().basalMinimumRate) {
Notification notification = new Notification(Notification.BASAL_VALUE_BELOW_MINIMUM, MainApp.gs(R.string.basalvaluebelowminimum), Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
if (callback != null)
callback.result(new PumpEnactResult().success(false).enacted(false).comment(MainApp.gs(R.string.basalvaluebelowminimum))).run();
return false;
}
}
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.BASAL_VALUE_BELOW_MINIMUM));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.BASAL_VALUE_BELOW_MINIMUM));
// remove all unfinished
removeAll(Command.CommandType.BASALPROFILE);
diff --git a/app/src/main/java/info/nightscout/androidaps/queue/QueueThread.java b/app/src/main/java/info/nightscout/androidaps/queue/QueueThread.java
index 85823c2c30..d77635713b 100644
--- a/app/src/main/java/info/nightscout/androidaps/queue/QueueThread.java
+++ b/app/src/main/java/info/nightscout/androidaps/queue/QueueThread.java
@@ -51,7 +51,7 @@ public class QueueThread extends Thread {
public final void run() {
if (mWakeLock != null)
mWakeLock.acquire(T.mins(10).msecs());
- RxBus.INSTANCE.send(new EventQueueChanged());
+ RxBus.Companion.getINSTANCE().send(new EventQueueChanged());
long lastCommandTime;
long connectionStartTime = lastCommandTime = System.currentTimeMillis();
@@ -61,15 +61,15 @@ public class QueueThread extends Thread {
if (pump == null) {
if (L.isEnabled(L.PUMPQUEUE))
log.debug("pump == null");
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.pumpNotInitialized)));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.pumpNotInitialized)));
SystemClock.sleep(1000);
continue;
}
long secondsElapsed = (System.currentTimeMillis() - connectionStartTime) / 1000;
if (!pump.isConnected() && secondsElapsed > Constants.PUMP_MAX_CONNECTION_TIME_IN_SECONDS) {
- RxBus.INSTANCE.send(new EventDismissBolusProgressIfRunning(null));
- RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.connectiontimedout)));
+ RxBus.Companion.getINSTANCE().send(new EventDismissBolusProgressIfRunning(null));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(MainApp.gs(R.string.connectiontimedout)));
if (L.isEnabled(L.PUMPQUEUE))
log.debug("timed out");
pump.stopConnecting();
@@ -94,16 +94,16 @@ public class QueueThread extends Thread {
SystemClock.sleep(1000);
//start over again once after watchdog barked
//Notification notification = new Notification(Notification.OLD_NSCLIENT, "Watchdog", Notification.URGENT);
- //RxBus.INSTANCE.send(new EventNewNotification(notification));
+ //RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
connectionStartTime = lastCommandTime = System.currentTimeMillis();
pump.connect("watchdog");
} else {
queue.clear();
if (L.isEnabled(L.PUMPQUEUE))
log.debug("no connection possible");
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
pump.disconnect("Queue empty");
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED));
return;
}
}
@@ -111,7 +111,7 @@ public class QueueThread extends Thread {
if (pump.isHandshakeInProgress()) {
if (L.isEnabled(L.PUMPQUEUE))
log.debug("handshaking " + secondsElapsed);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, (int) secondsElapsed));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, (int) secondsElapsed));
SystemClock.sleep(100);
continue;
}
@@ -119,7 +119,7 @@ public class QueueThread extends Thread {
if (pump.isConnecting()) {
if (L.isEnabled(L.PUMPQUEUE))
log.debug("connecting " + secondsElapsed);
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTING, (int) secondsElapsed));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTING, (int) secondsElapsed));
SystemClock.sleep(1000);
continue;
}
@@ -127,7 +127,7 @@ public class QueueThread extends Thread {
if (!pump.isConnected()) {
if (L.isEnabled(L.PUMPQUEUE))
log.debug("connect");
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTING, (int) secondsElapsed));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTING, (int) secondsElapsed));
pump.connect("Connection needed");
SystemClock.sleep(1000);
continue;
@@ -145,10 +145,10 @@ public class QueueThread extends Thread {
if (queue.performing() != null) {
if (L.isEnabled(L.PUMPQUEUE))
log.debug("performing " + queue.performing().status());
- RxBus.INSTANCE.send(new EventQueueChanged());
+ RxBus.Companion.getINSTANCE().send(new EventQueueChanged());
queue.performing().execute();
queue.resetPerforming();
- RxBus.INSTANCE.send(new EventQueueChanged());
+ RxBus.Companion.getINSTANCE().send(new EventQueueChanged());
lastCommandTime = System.currentTimeMillis();
SystemClock.sleep(100);
continue;
@@ -162,9 +162,9 @@ public class QueueThread extends Thread {
waitingForDisconnect = true;
if (L.isEnabled(L.PUMPQUEUE))
log.debug("queue empty. disconnect");
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
pump.disconnect("Queue empty");
- RxBus.INSTANCE.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED));
+ RxBus.Companion.getINSTANCE().send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED));
if (L.isEnabled(L.PUMPQUEUE))
log.debug("disconnected");
return;
diff --git a/app/src/main/java/info/nightscout/androidaps/queue/commands/CommandBolus.java b/app/src/main/java/info/nightscout/androidaps/queue/commands/CommandBolus.java
index 5a67759594..55642f6e7b 100644
--- a/app/src/main/java/info/nightscout/androidaps/queue/commands/CommandBolus.java
+++ b/app/src/main/java/info/nightscout/androidaps/queue/commands/CommandBolus.java
@@ -33,7 +33,7 @@ public class CommandBolus extends Command {
PumpEnactResult r = ConfigBuilderPlugin.getPlugin().getActivePump().deliverTreatment(detailedBolusInfo);
BolusProgressDialog.bolusEnded = true;
- RxBus.INSTANCE.send(new EventDismissBolusProgressIfRunning(r));
+ RxBus.Companion.getINSTANCE().send(new EventDismissBolusProgressIfRunning(r));
if (L.isEnabled(L.PUMPQUEUE))
log.debug("Result success: " + r.success + " enacted: " + r.enacted);
diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/ChargingStateReceiver.java b/app/src/main/java/info/nightscout/androidaps/receivers/ChargingStateReceiver.java
index cb49d8cf4e..bf8e199c58 100644
--- a/app/src/main/java/info/nightscout/androidaps/receivers/ChargingStateReceiver.java
+++ b/app/src/main/java/info/nightscout/androidaps/receivers/ChargingStateReceiver.java
@@ -17,7 +17,7 @@ public class ChargingStateReceiver extends BroadcastReceiver {
EventChargingState event = grabChargingState(context);
if (event != null)
- RxBus.INSTANCE.send(event);
+ RxBus.Companion.getINSTANCE().send(event);
lastEvent = event;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.kt b/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.kt
index e338b02f2b..5c1007e450 100644
--- a/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.kt
+++ b/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.kt
@@ -3,16 +3,17 @@ package info.nightscout.androidaps.receivers
import android.app.AlarmManager
import android.app.PendingIntent
import android.app.PendingIntent.CanceledException
-import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.os.PowerManager
import android.os.SystemClock
+import dagger.android.DaggerBroadcastReceiver
import info.nightscout.androidaps.events.EventProfileNeedsUpdate
+import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.bus.RxBus.send
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions
+import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.queue.commands.Command
import info.nightscout.androidaps.utils.DateUtil
@@ -20,14 +21,21 @@ import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.LocalAlertUtils
import info.nightscout.androidaps.utils.T
import org.slf4j.LoggerFactory
+import javax.inject.Inject
import kotlin.math.abs
-class KeepAliveReceiver : BroadcastReceiver() {
+class KeepAliveReceiver : DaggerBroadcastReceiver() {
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
+ @Inject lateinit var profileFunction: ProfileFunction
+
private var lastReadStatus: Long = 0
private var lastRun: Long = 0
private var lastIobUpload: Long = 0
- override fun onReceive(context: Context, rIntent: Intent) {
+ override fun onReceive(context: Context, intent: Intent) {
+ super.onReceive(context, intent)
if (L.isEnabled(L.CORE))
log.debug("KeepAlive received")
val pm = context.getSystemService(Context.POWER_SERVICE) as PowerManager
@@ -78,7 +86,7 @@ class KeepAliveReceiver : BroadcastReceiver() {
}
private fun checkAPS() {
- val usedAPS = ConfigBuilderPlugin.getPlugin().activeAPS
+ val usedAPS = configBuilderPlugin.activeAPS
var shouldUploadStatus = false
if (usedAPS == null) shouldUploadStatus = true
else if (DateUtil.isOlderThan(usedAPS.lastAPSRun, 5)) shouldUploadStatus = true
@@ -89,28 +97,26 @@ class KeepAliveReceiver : BroadcastReceiver() {
}
private fun checkPump() {
- val pump = ConfigBuilderPlugin.getPlugin().activePump
- val profile = ProfileFunctions.getInstance().getProfile()
- if (pump != null && profile != null) {
- val lastConnection = pump.lastDataTime()
- val isStatusOutdated = lastConnection + STATUS_UPDATE_FREQUENCY < System.currentTimeMillis()
- val isBasalOutdated = abs(profile.basal - pump.baseBasalRate) > pump.pumpDescription.basalStep
- if (L.isEnabled(L.CORE))
- log.debug("Last connection: " + DateUtil.dateAndTimeString(lastConnection))
- // sometimes keep alive broadcast stops
- // as as workaround test if readStatus was requested before an alarm is generated
- if (lastReadStatus != 0L && lastReadStatus > System.currentTimeMillis() - T.mins(5).msecs()) {
- LocalAlertUtils.checkPumpUnreachableAlarm(lastConnection, isStatusOutdated)
- }
- if (!pump.isThisProfileSet(profile) && !ConfigBuilderPlugin.getPlugin().commandQueue.isRunning(Command.CommandType.BASALPROFILE)) {
- send(EventProfileNeedsUpdate())
- } else if (isStatusOutdated && !pump.isBusy) {
- lastReadStatus = System.currentTimeMillis()
- ConfigBuilderPlugin.getPlugin().commandQueue.readStatus("KeepAlive. Status outdated.", null)
- } else if (isBasalOutdated && !pump.isBusy) {
- lastReadStatus = System.currentTimeMillis()
- ConfigBuilderPlugin.getPlugin().commandQueue.readStatus("KeepAlive. Basal outdated.", null)
- }
+ val pump = configBuilderPlugin.activePump ?: return
+ val profile = profileFunction.getProfile() ?: return
+ val lastConnection = pump.lastDataTime()
+ val isStatusOutdated = lastConnection + STATUS_UPDATE_FREQUENCY < System.currentTimeMillis()
+ val isBasalOutdated = abs(profile.basal - pump.baseBasalRate) > pump.pumpDescription.basalStep
+ if (L.isEnabled(L.CORE))
+ log.debug("Last connection: " + DateUtil.dateAndTimeString(lastConnection))
+ // sometimes keep alive broadcast stops
+ // as as workaround test if readStatus was requested before an alarm is generated
+ if (lastReadStatus != 0L && lastReadStatus > System.currentTimeMillis() - T.mins(5).msecs()) {
+ LocalAlertUtils.checkPumpUnreachableAlarm(lastConnection, isStatusOutdated)
+ }
+ if (!pump.isThisProfileSet(profile) && !configBuilderPlugin.commandQueue.isRunning(Command.CommandType.BASALPROFILE)) {
+ rxBus.send(EventProfileNeedsUpdate())
+ } else if (isStatusOutdated && !pump.isBusy) {
+ lastReadStatus = System.currentTimeMillis()
+ configBuilderPlugin.commandQueue.readStatus("KeepAlive. Status outdated.", null)
+ } else if (isBasalOutdated && !pump.isBusy) {
+ lastReadStatus = System.currentTimeMillis()
+ configBuilderPlugin.commandQueue.readStatus("KeepAlive. Basal outdated.", null)
}
if (lastRun != 0L && System.currentTimeMillis() - lastRun > T.mins(10).msecs()) {
log.error("KeepAlive fail")
diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/NSAlarmReceiver.java b/app/src/main/java/info/nightscout/androidaps/receivers/NSAlarmReceiver.java
index 3449bf2943..3bcad4b401 100644
--- a/app/src/main/java/info/nightscout/androidaps/receivers/NSAlarmReceiver.java
+++ b/app/src/main/java/info/nightscout/androidaps/receivers/NSAlarmReceiver.java
@@ -41,11 +41,11 @@ public class NSAlarmReceiver extends BroadcastReceiver {
case Intents.ACTION_URGENT_ALARM:
Notification notification = new Notification(nsAlarm);
if (notification.isEnabled())
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
break;
case Intents.ACTION_CLEAR_ALARM:
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.NSALARM));
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.NSURGENTALARM));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.NSALARM));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.NSURGENTALARM));
break;
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/NetworkChangeReceiver.java b/app/src/main/java/info/nightscout/androidaps/receivers/NetworkChangeReceiver.java
index 19cf12bc8a..e4fd05d174 100644
--- a/app/src/main/java/info/nightscout/androidaps/receivers/NetworkChangeReceiver.java
+++ b/app/src/main/java/info/nightscout/androidaps/receivers/NetworkChangeReceiver.java
@@ -30,7 +30,7 @@ public class NetworkChangeReceiver extends BroadcastReceiver {
public void onReceive(final Context context, final Intent intent) {
EventNetworkChange event = grabNetworkStatus(context);
if (event != null)
- RxBus.INSTANCE.send(event);
+ RxBus.Companion.getINSTANCE().send(event);
}
@Nullable
diff --git a/app/src/main/java/info/nightscout/androidaps/services/DataService.java b/app/src/main/java/info/nightscout/androidaps/services/DataService.java
index 3153b2c4bd..259f0df955 100644
--- a/app/src/main/java/info/nightscout/androidaps/services/DataService.java
+++ b/app/src/main/java/info/nightscout/androidaps/services/DataService.java
@@ -7,8 +7,6 @@ import android.provider.Telephony;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import javax.inject.Inject;
@@ -20,9 +18,8 @@ import info.nightscout.androidaps.events.EventNsFood;
import info.nightscout.androidaps.events.EventNsTreatment;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.BundleLogger;
-import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.logging.LTag;
-import info.nightscout.androidaps.plugins.bus.RxBus;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSDeviceStatus;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSMbg;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus;
@@ -45,19 +42,15 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP;
public class DataService extends DaggerIntentService {
+ @Inject AAPSLogger aapsLogger;
+ @Inject SP sp;
+ @Inject RxBusWrapper rxBus;
+ @Inject SmsCommunicatorPlugin smsCommunicatorPlugin;
public DataService() {
super("DataService");
}
- @Inject
- SmsCommunicatorPlugin smsCommunicatorPlugin;
-
- @Inject
- AAPSLogger aapsLogger;
-
- @Inject
- SP sp;
@Override
protected void onHandleIntent(final Intent intent) {
@@ -94,13 +87,13 @@ public class DataService extends DaggerIntentService {
NSSettingsStatus.getInstance().handleNewData(intent);
} else if (Intents.ACTION_NEW_FOOD.equals(action)) {
EventNsFood evt = new EventNsFood(EventNsFood.Companion.getADD(), bundles);
- RxBus.INSTANCE.send(evt);
+ rxBus.send(evt);
} else if (Intents.ACTION_CHANGED_FOOD.equals(action)) {
EventNsFood evt = new EventNsFood(EventNsFood.Companion.getUPDATE(), bundles);
- RxBus.INSTANCE.send(evt);
+ rxBus.send(evt);
} else if (Intents.ACTION_REMOVED_FOOD.equals(action)) {
EventNsFood evt = new EventNsFood(EventNsFood.Companion.getREMOVE(), bundles);
- RxBus.INSTANCE.send(evt);
+ rxBus.send(evt);
} else if (acceptNSData &&
(Intents.ACTION_NEW_TREATMENT.equals(action) ||
Intents.ACTION_CHANGED_TREATMENT.equals(action) ||
@@ -193,7 +186,7 @@ public class DataService extends DaggerIntentService {
private void handleRemovedTreatmentFromNS(JSONObject json) {
// new DB model
EventNsTreatment evtTreatment = new EventNsTreatment(EventNsTreatment.Companion.getREMOVE(), json);
- RxBus.INSTANCE.send(evtTreatment);
+ rxBus.send(evtTreatment);
// old DB model
String _id = JsonHelper.safeGetString(json, "_id");
MainApp.getDbHelper().deleteTempTargetById(_id);
@@ -215,7 +208,7 @@ public class DataService extends DaggerIntentService {
}
if (insulin > 0 || carbs > 0) {
EventNsTreatment evtTreatment = new EventNsTreatment(mode, json);
- RxBus.INSTANCE.send(evtTreatment);
+ rxBus.send(evtTreatment);
} else if (json.has(DanaRNSHistorySync.DANARSIGNATURE)) {
// old DB model
MainApp.getDbHelper().updateDanaRHistoryRecordId(json);
@@ -249,7 +242,7 @@ public class DataService extends DaggerIntentService {
if (date > now - 15 * 60 * 1000L && !notes.isEmpty()
&& !enteredBy.equals(sp.getString("careportal_enteredby", "AndroidAPS"))) {
Notification announcement = new Notification(Notification.NSANNOUNCEMENT, notes, Notification.ANNOUNCEMENT, 60);
- RxBus.INSTANCE.send(new EventNewNotification(announcement));
+ rxBus.send(new EventNewNotification(announcement));
}
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/services/LocationService.java b/app/src/main/java/info/nightscout/androidaps/services/LocationService.java
index 9600515d6f..cd543db678 100644
--- a/app/src/main/java/info/nightscout/androidaps/services/LocationService.java
+++ b/app/src/main/java/info/nightscout/androidaps/services/LocationService.java
@@ -51,7 +51,7 @@ public class LocationService extends Service {
if (L.isEnabled(L.LOCATION))
log.debug("onLocationChanged: " + location);
mLastLocation.set(location);
- RxBus.INSTANCE.send(new EventLocationChange(location));
+ RxBus.Companion.getINSTANCE().send(new EventLocationChange(location));
}
@Override
@@ -126,7 +126,7 @@ public class LocationService extends Service {
} catch (IllegalArgumentException ex) {
log.error("network provider does not exist, " + ex.getMessage());
}
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
.subscribe(event -> {
diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java
deleted file mode 100644
index a0dff38104..0000000000
--- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java
+++ /dev/null
@@ -1,495 +0,0 @@
-package info.nightscout.androidaps.setupwizard;
-
-import android.Manifest;
-import android.content.Intent;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import info.nightscout.androidaps.Config;
-import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
-import info.nightscout.androidaps.activities.PreferencesActivity;
-import info.nightscout.androidaps.events.EventConfigBuilderChange;
-import info.nightscout.androidaps.events.EventPumpStatusChanged;
-import info.nightscout.androidaps.interfaces.PluginBase;
-import info.nightscout.androidaps.interfaces.PluginType;
-import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin;
-import info.nightscout.androidaps.plugins.bus.RxBus;
-import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
-import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesFragment;
-import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
-import info.nightscout.androidaps.plugins.general.maintenance.ImportExportPrefs;
-import info.nightscout.androidaps.plugins.general.nsclient.NSClientPlugin;
-import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientStatus;
-import info.nightscout.androidaps.plugins.general.nsclient.services.NSClientService;
-import info.nightscout.androidaps.dialogs.ProfileSwitchDialog;
-import info.nightscout.androidaps.plugins.profile.local.LocalProfileFragment;
-import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin;
-import info.nightscout.androidaps.plugins.profile.ns.NSProfileFragment;
-import info.nightscout.androidaps.plugins.profile.ns.NSProfilePlugin;
-import info.nightscout.androidaps.setupwizard.elements.SWBreak;
-import info.nightscout.androidaps.setupwizard.elements.SWButton;
-import info.nightscout.androidaps.setupwizard.elements.SWEditNumberWithUnits;
-import info.nightscout.androidaps.setupwizard.elements.SWEditString;
-import info.nightscout.androidaps.setupwizard.elements.SWEditUrl;
-import info.nightscout.androidaps.setupwizard.elements.SWFragment;
-import info.nightscout.androidaps.setupwizard.elements.SWHtmlLink;
-import info.nightscout.androidaps.setupwizard.elements.SWInfotext;
-import info.nightscout.androidaps.setupwizard.elements.SWPlugin;
-import info.nightscout.androidaps.setupwizard.elements.SWRadioButton;
-import info.nightscout.androidaps.setupwizard.events.EventSWUpdate;
-import info.nightscout.androidaps.utils.AndroidPermission;
-import info.nightscout.androidaps.utils.LocaleHelper;
-import info.nightscout.androidaps.utils.PasswordProtection;
-import info.nightscout.androidaps.utils.SP;
-
-import static info.nightscout.androidaps.utils.EspressoTestHelperKt.isRunningTest;
-
-public class SWDefinition {
- private AppCompatActivity activity;
- private List screens = new ArrayList<>();
-
- public void setActivity(AppCompatActivity activity) {
- this.activity = activity;
- }
-
- public AppCompatActivity getActivity() {
- return activity;
- }
-
- List getScreens() {
- return screens;
- }
-
- private SWDefinition add(SWScreen newScreen) {
- if (newScreen != null) screens.add(newScreen);
- return this;
- }
-
- SWDefinition() {
- if (Config.APS)
- SWDefinitionFull();
- else if (Config.PUMPCONTROL)
- SWDefinitionPumpControl();
- else if (Config.NSCLIENT)
- SWDefinitionNSClient();
- }
-
- private SWScreen screenSetupWizard = new SWScreen(R.string.nav_setupwizard)
- .add(new SWInfotext()
- .label(R.string.welcometosetupwizard));
-
- private SWScreen screenLanguage = new SWScreen(R.string.language)
- .skippable(false)
- .add(new SWRadioButton()
- .option(R.array.languagesArray, R.array.languagesValues)
- .preferenceId(R.string.key_language).label(R.string.language)
- .comment(R.string.setupwizard_language_prompt))
- .validator(() -> {
- LocaleHelper.INSTANCE.update(MainApp.instance().getApplicationContext());
- return SP.contains(R.string.key_language);
- });
-
- private SWScreen screenEula = new SWScreen(R.string.end_user_license_agreement)
- .skippable(false)
- .add(new SWInfotext()
- .label(R.string.end_user_license_agreement_text))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.end_user_license_agreement_i_understand)
- .visibility(() -> !SP.getBoolean(R.string.key_i_understand, false))
- .action(() -> {
- SP.putBoolean(R.string.key_i_understand, true);
- RxBus.INSTANCE.send(new EventSWUpdate(false));
- }))
- .visibility(() -> !SP.getBoolean(R.string.key_i_understand, false))
- .validator(() -> SP.getBoolean(R.string.key_i_understand, false));
-
- private SWScreen screenUnits = new SWScreen(R.string.units)
- .skippable(false)
- .add(new SWRadioButton()
- .option(R.array.unitsArray, R.array.unitsValues)
- .preferenceId(R.string.key_units).label(R.string.units)
- .comment(R.string.setupwizard_units_prompt))
- .validator(() -> SP.contains(R.string.key_units));
-
- private SWScreen displaySettings = new SWScreen(R.string.wear_display_settings)
- .skippable(false)
- .add(new SWEditNumberWithUnits(Constants.LOWMARK * Constants.MGDL_TO_MMOLL, 3d, 8d)
- .preferenceId(R.string.key_low_mark)
- .updateDelay(5)
- .label(R.string.low_mark)
- .comment(R.string.low_mark_comment))
- .add(new SWBreak())
- .add(new SWEditNumberWithUnits(Constants.HIGHMARK * Constants.MGDL_TO_MMOLL, 5d, 20d)
- .preferenceId(R.string.key_high_mark)
- .updateDelay(5)
- .label(R.string.high_mark)
- .comment(R.string.high_mark_comment));
-
- private SWScreen screenPermissionBattery = new SWScreen(R.string.permission)
- .skippable(false)
- .add(new SWInfotext()
- .label(String.format(MainApp.gs(R.string.needwhitelisting), MainApp.gs(R.string.app_name))))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.askforpermission)
- .visibility(() -> AndroidPermission.permissionNotGranted(getActivity(), Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS))
- .action(() -> AndroidPermission.askForPermission(getActivity(), Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, AndroidPermission.CASE_BATTERY)))
- .visibility(() -> AndroidPermission.permissionNotGranted(getActivity(), Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS))
- .validator(() -> !(AndroidPermission.permissionNotGranted(getActivity(), Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)));
-
- private SWScreen screenPermissionBt = new SWScreen(R.string.permission)
- .skippable(false)
- .add(new SWInfotext()
- .label(MainApp.gs(R.string.needlocationpermission)))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.askforpermission)
- .visibility(() -> AndroidPermission.permissionNotGranted(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION))
- .action(() -> AndroidPermission.askForPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION, AndroidPermission.CASE_LOCATION)))
- .visibility(() -> AndroidPermission.permissionNotGranted(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION))
- .validator(() -> !(AndroidPermission.permissionNotGranted(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)));
-
- private SWScreen screenPermissionStore = new SWScreen(R.string.permission)
- .skippable(false)
- .add(new SWInfotext()
- .label(MainApp.gs(R.string.needstoragepermission)))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.askforpermission)
- .visibility(() -> AndroidPermission.permissionNotGranted(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE))
- .action(() -> AndroidPermission.askForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE, AndroidPermission.CASE_STORAGE)))
- .visibility(() -> AndroidPermission.permissionNotGranted(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE))
- .validator(() -> !(AndroidPermission.permissionNotGranted(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)));
-
- private SWScreen screenImport = new SWScreen(R.string.nav_import)
- .add(new SWInfotext()
- .label(R.string.storedsettingsfound))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.nav_import)
- .action(() -> ImportExportPrefs.importSharedPreferences(getActivity())))
- .visibility(() -> ImportExportPrefs.file.exists() && !(AndroidPermission.permissionNotGranted(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)));
-
- private SWScreen screenNsClient = new SWScreen(R.string.nsclientinternal_title)
- .skippable(true)
- .add(new SWInfotext()
- .label(R.string.nsclientinfotext))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.enable_nsclient)
- .action(() -> {
- NSClientPlugin.getPlugin().setPluginEnabled(PluginType.GENERAL, true);
- NSClientPlugin.getPlugin().setFragmentVisible(PluginType.GENERAL, true);
- ConfigBuilderPlugin.getPlugin().processOnEnabledCategoryChanged(NSClientPlugin.getPlugin(), PluginType.GENERAL);
- ConfigBuilderPlugin.getPlugin().storeSettings("SetupWizard");
- RxBus.INSTANCE.send(new EventConfigBuilderChange());
- RxBus.INSTANCE.send(new EventSWUpdate(true));
- })
- .visibility(() -> !NSClientPlugin.getPlugin().isEnabled(PluginType.GENERAL)))
- .add(new SWEditUrl()
- .preferenceId(R.string.key_nsclientinternal_url)
- .updateDelay(5)
- .label(R.string.nsclientinternal_url_title)
- .comment(R.string.nsclientinternal_url_dialogmessage))
- .add(new SWEditString()
- .validator(text -> text.length() >= 12)
- .preferenceId(R.string.key_nsclientinternal_api_secret)
- .updateDelay(5)
- .label(R.string.nsclientinternal_secret_dialogtitle)
- .comment(R.string.nsclientinternal_secret_dialogmessage))
- .add(new SWBreak())
- .add(new SWEventListener(this, EventNSClientStatus.class)
- .label(R.string.status)
- .initialStatus(NSClientPlugin.getPlugin().status)
- )
- .add(new SWBreak())
- .validator(() -> NSClientPlugin.getPlugin().nsClientService != null && NSClientService.isConnected && NSClientService.hasWriteAuth)
- .visibility(() -> !(NSClientPlugin.getPlugin().nsClientService != null && NSClientService.isConnected && NSClientService.hasWriteAuth));
-
- private SWScreen screenAge = new SWScreen(R.string.patientage)
- .skippable(false)
- .add(new SWBreak())
- .add(new SWRadioButton()
- .option(R.array.ageArray, R.array.ageValues)
- .preferenceId(R.string.key_age)
- .label(R.string.patientage)
- .comment(R.string.patientage_summary))
- .validator(() -> SP.contains(R.string.key_age));
-
- private SWScreen screenInsulin = new SWScreen(R.string.configbuilder_insulin)
- .skippable(false)
- .add(new SWPlugin()
- .option(PluginType.INSULIN, R.string.configbuilder_insulin_description)
- .makeVisible(false)
- .label(R.string.configbuilder_insulin))
- .add(new SWBreak())
- .add(new SWInfotext()
- .label(R.string.diawarning))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.insulinsourcesetup)
- .action(() -> {
- final PluginBase plugin = (PluginBase) ConfigBuilderPlugin.getPlugin().getActiveInsulin();
- if (plugin != null) {
- PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> {
- Intent i = new Intent(activity, PreferencesActivity.class);
- i.putExtra("id", plugin.getPreferencesId());
- activity.startActivity(i);
- }, null);
- }
- })
- .visibility(() -> ConfigBuilderPlugin.getPlugin().getActiveInsulin() != null && ((PluginBase) ConfigBuilderPlugin.getPlugin().getActiveInsulin()).getPreferencesId() > 0))
- .validator(() -> ConfigBuilderPlugin.getPlugin().getActiveInsulin() != null);
-
- private SWScreen screenBgSource = new SWScreen(R.string.configbuilder_bgsource)
- .skippable(false)
- .add(new SWPlugin()
- .option(PluginType.BGSOURCE, R.string.configbuilder_bgsource_description)
- .label(R.string.configbuilder_bgsource))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.bgsourcesetup)
- .action(() -> {
- final PluginBase plugin = (PluginBase) ConfigBuilderPlugin.getPlugin().getActiveBgSource();
- if (plugin != null) {
- PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> {
- Intent i = new Intent(activity, PreferencesActivity.class);
- i.putExtra("id", plugin.getPreferencesId());
- activity.startActivity(i);
- }, null);
- }
- })
- .visibility(() -> ConfigBuilderPlugin.getPlugin().getActiveBgSource() != null && ((PluginBase) ConfigBuilderPlugin.getPlugin().getActiveBgSource()).getPreferencesId() > 0))
- .validator(() -> ConfigBuilderPlugin.getPlugin().getActiveBgSource() != null);
-
- private SWScreen screenProfile = new SWScreen(R.string.configbuilder_profile)
- .skippable(false)
- .add(new SWInfotext()
- .label(R.string.setupwizard_profile_description))
- .add(new SWBreak())
- .add(new SWPlugin()
- .option(PluginType.PROFILE, R.string.configbuilder_profile_description)
- .label(R.string.configbuilder_profile))
- .validator(() -> ConfigBuilderPlugin.getPlugin().getActiveProfileInterface() != null);
-
- private SWScreen screenNsProfile = new SWScreen(R.string.nsprofile)
- .skippable(false)
- .add(new SWInfotext()
- .label(R.string.adjustprofileinns))
- .add(new SWFragment(this)
- .add(new NSProfileFragment()))
- .validator(() -> NSProfilePlugin.getPlugin().getProfile() != null && NSProfilePlugin.getPlugin().getProfile().getDefaultProfile() != null && NSProfilePlugin.getPlugin().getProfile().getDefaultProfile().isValid("StartupWizard"))
- .visibility(() -> NSProfilePlugin.getPlugin().isEnabled(PluginType.PROFILE));
-
- private SWScreen screenLocalProfile = new SWScreen(R.string.localprofile)
- .skippable(false)
- .add(new SWFragment(this)
- .add(new LocalProfileFragment()))
- .validator(() -> LocalProfilePlugin.INSTANCE.getProfile() != null && LocalProfilePlugin.INSTANCE.getProfile().getDefaultProfile() != null && LocalProfilePlugin.INSTANCE.getProfile().getDefaultProfile().isValid("StartupWizard"))
- .visibility(() -> LocalProfilePlugin.INSTANCE.isEnabled(PluginType.PROFILE));
-
- private SWScreen screenProfileSwitch = new SWScreen(R.string.careportal_profileswitch)
- .skippable(false)
- .add(new SWInfotext()
- .label(R.string.profileswitch_ismissing))
- .add(new SWButton()
- .text(R.string.doprofileswitch)
- .action(() -> {
- new ProfileSwitchDialog().show(getActivity().getSupportFragmentManager(), "SetupWizard");
- }))
- .validator(() -> ProfileFunctions.getInstance().getProfile() != null)
- .visibility(() -> ProfileFunctions.getInstance().getProfile() == null);
-
- private SWScreen screenPump = new SWScreen(R.string.configbuilder_pump)
- .skippable(false)
- .add(new SWPlugin()
- .option(PluginType.PUMP, R.string.configbuilder_pump_description)
- .label(R.string.configbuilder_pump))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.pumpsetup)
- .action(() -> {
- final PluginBase plugin = (PluginBase) ConfigBuilderPlugin.getPlugin().getActivePump();
- if (plugin != null) {
- PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> {
- Intent i = new Intent(activity, PreferencesActivity.class);
- i.putExtra("id", plugin.getPreferencesId());
- activity.startActivity(i);
- }, null);
- }
- })
- .visibility(() -> (ConfigBuilderPlugin.getPlugin().getActivePump() != null && ((PluginBase) ConfigBuilderPlugin.getPlugin().getActivePump()).getPreferencesId() > 0)))
- .add(new SWButton()
- .text(R.string.readstatus)
- .action(() -> ConfigBuilderPlugin.getPlugin().getCommandQueue().readStatus("Clicked connect to pump", null))
- .visibility(() -> ConfigBuilderPlugin.getPlugin().getActivePump() != null))
- .add(new SWEventListener(this, EventPumpStatusChanged.class))
- .validator(() -> ConfigBuilderPlugin.getPlugin().getActivePump() != null && ConfigBuilderPlugin.getPlugin().getActivePump().isInitialized());
-
- private SWScreen screenAps = new SWScreen(R.string.configbuilder_aps)
- .skippable(false)
- .add(new SWInfotext()
- .label(R.string.setupwizard_aps_description))
- .add(new SWBreak())
- .add(new SWHtmlLink()
- .label("https://openaps.readthedocs.io/en/latest/"))
- .add(new SWBreak())
- .add(new SWPlugin()
- .option(PluginType.APS, R.string.configbuilder_aps_description)
- .label(R.string.configbuilder_aps))
- .add(new SWButton()
- .text(R.string.apssetup)
- .action(() -> {
- final PluginBase plugin = (PluginBase) ConfigBuilderPlugin.getPlugin().getActiveAPS();
- if (plugin != null) {
- PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> {
- Intent i = new Intent(activity, PreferencesActivity.class);
- i.putExtra("id", plugin.getPreferencesId());
- activity.startActivity(i);
- }, null);
- }
- })
- .visibility(() -> ConfigBuilderPlugin.getPlugin().getActiveAPS() != null && ((PluginBase) ConfigBuilderPlugin.getPlugin().getActiveAPS()).getPreferencesId() > 0))
- .validator(() -> ConfigBuilderPlugin.getPlugin().getActiveAPS() != null)
- .visibility(() -> Config.APS);
-
- private SWScreen screenApsMode = new SWScreen(R.string.apsmode_title)
- .skippable(false)
- .add(new SWRadioButton()
- .option(R.array.aps_modeArray, R.array.aps_modeValues)
- .preferenceId(R.string.key_aps_mode).label(R.string.apsmode_title)
- .comment(R.string.setupwizard_preferred_aps_mode))
- .validator(() -> SP.contains(R.string.key_aps_mode));
-
- private SWScreen screenLoop = new SWScreen(R.string.configbuilder_loop)
- .skippable(false)
- .add(new SWInfotext()
- .label(R.string.setupwizard_loop_description))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.enableloop)
- .action(() -> {
- LoopPlugin.getPlugin().setPluginEnabled(PluginType.LOOP, true);
- LoopPlugin.getPlugin().setFragmentVisible(PluginType.LOOP, true);
- ConfigBuilderPlugin.getPlugin().processOnEnabledCategoryChanged(LoopPlugin.getPlugin(), PluginType.LOOP);
- ConfigBuilderPlugin.getPlugin().storeSettings("SetupWizard");
- RxBus.INSTANCE.send(new EventConfigBuilderChange());
- RxBus.INSTANCE.send(new EventSWUpdate(true));
- })
- .visibility(() -> !LoopPlugin.getPlugin().isEnabled(PluginType.LOOP)))
- .validator(() -> LoopPlugin.getPlugin().isEnabled(PluginType.LOOP))
- .visibility(() -> !LoopPlugin.getPlugin().isEnabled(PluginType.LOOP) && Config.APS);
-
- private SWScreen screenSensitivity = new SWScreen(R.string.configbuilder_sensitivity)
- .skippable(false)
- .add(new SWInfotext()
- .label(R.string.setupwizard_sensitivity_description))
- .add(new SWHtmlLink()
- .label(R.string.setupwizard_sensitivity_url))
- .add(new SWBreak())
- .add(new SWPlugin()
- .option(PluginType.SENSITIVITY, R.string.configbuilder_sensitivity_description)
- .label(R.string.configbuilder_sensitivity))
- .add(new SWBreak())
- .add(new SWButton()
- .text(R.string.sensitivitysetup)
- .action(() -> {
- final PluginBase plugin = (PluginBase) ConfigBuilderPlugin.getPlugin().getActiveSensitivity();
- if (plugin != null) {
- PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> {
- Intent i = new Intent(activity, PreferencesActivity.class);
- i.putExtra("id", plugin.getPreferencesId());
- activity.startActivity(i);
- }, null);
- }
- })
- .visibility(() -> ConfigBuilderPlugin.getPlugin().getActiveSensitivity() != null && ((PluginBase) ConfigBuilderPlugin.getPlugin().getActiveSensitivity()).getPreferencesId() > 0))
- .validator(() -> ConfigBuilderPlugin.getPlugin().getActiveSensitivity() != null);
-
- private SWScreen getScreenObjectives = new SWScreen(R.string.objectives)
- .skippable(false)
- .add(new SWInfotext()
- .label(R.string.startobjective))
- .add(new SWBreak())
- .add(new SWFragment(this)
- .add(new ObjectivesFragment()))
- .validator(() -> ObjectivesPlugin.INSTANCE.getObjectives().get(ObjectivesPlugin.INSTANCE.getFIRST_OBJECTIVE()).isStarted())
- .visibility(() -> !ObjectivesPlugin.INSTANCE.getObjectives().get(ObjectivesPlugin.INSTANCE.getFIRST_OBJECTIVE()).isStarted() && Config.APS);
-
- private void SWDefinitionFull() {
- // List all the screens here
- add(screenSetupWizard)
- .add(screenLanguage)
- .add(screenEula)
- .add(isRunningTest() ? null : screenPermissionBattery) // cannot mock ask battery optimalization
- .add(screenPermissionBt)
- .add(screenPermissionStore)
- .add(screenImport)
- .add(screenUnits)
- .add(displaySettings)
- .add(screenNsClient)
- .add(screenAge)
- .add(screenInsulin)
- .add(screenBgSource)
- .add(screenProfile)
- .add(screenNsProfile)
- .add(screenLocalProfile)
- .add(screenProfileSwitch)
- .add(screenPump)
- .add(screenAps)
- .add(screenApsMode)
- .add(screenLoop)
- .add(screenSensitivity)
- .add(getScreenObjectives)
- ;
- }
-
- private void SWDefinitionPumpControl() {
- // List all the screens here
- add(screenSetupWizard)
- .add(screenLanguage)
- .add(screenEula)
- .add(isRunningTest() ? null : screenPermissionBattery) // cannot mock ask battery optimalization
- .add(screenPermissionBt)
- .add(screenPermissionStore)
- .add(screenImport)
- .add(screenUnits)
- .add(displaySettings)
- .add(screenNsClient)
- .add(screenAge)
- .add(screenInsulin)
- .add(screenBgSource)
- .add(screenProfile)
- .add(screenNsProfile)
- .add(screenLocalProfile)
- .add(screenProfileSwitch)
- .add(screenPump)
- .add(screenSensitivity)
- ;
- }
-
- private void SWDefinitionNSClient() {
- // List all the screens here
- add(screenSetupWizard)
- .add(screenLanguage)
- .add(screenEula)
- .add(isRunningTest() ? null : screenPermissionBattery) // cannot mock ask battery optimalization
- .add(screenPermissionStore)
- .add(screenImport)
- .add(screenUnits)
- .add(displaySettings)
- .add(screenNsClient)
- .add(screenBgSource)
- .add(screenAge)
- .add(screenInsulin)
- .add(screenSensitivity)
- ;
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt
new file mode 100644
index 0000000000..3b6652b873
--- /dev/null
+++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.kt
@@ -0,0 +1,452 @@
+package info.nightscout.androidaps.setupwizard
+
+import android.Manifest
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import info.nightscout.androidaps.Config
+import info.nightscout.androidaps.Constants
+import info.nightscout.androidaps.MainApp
+import info.nightscout.androidaps.R
+import info.nightscout.androidaps.activities.PreferencesActivity
+import info.nightscout.androidaps.dialogs.ProfileSwitchDialog
+import info.nightscout.androidaps.events.EventConfigBuilderChange
+import info.nightscout.androidaps.events.EventPumpStatusChanged
+import info.nightscout.androidaps.interfaces.PluginBase
+import info.nightscout.androidaps.interfaces.PluginType
+import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
+import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesFragment
+import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin
+import info.nightscout.androidaps.plugins.general.maintenance.ImportExportPrefs
+import info.nightscout.androidaps.plugins.general.nsclient.NSClientPlugin
+import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientStatus
+import info.nightscout.androidaps.plugins.general.nsclient.services.NSClientService
+import info.nightscout.androidaps.plugins.profile.local.LocalProfileFragment
+import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
+import info.nightscout.androidaps.plugins.profile.ns.NSProfileFragment
+import info.nightscout.androidaps.plugins.profile.ns.NSProfilePlugin
+import info.nightscout.androidaps.setupwizard.elements.*
+import info.nightscout.androidaps.setupwizard.events.EventSWUpdate
+import info.nightscout.androidaps.utils.AndroidPermission
+import info.nightscout.androidaps.utils.LocaleHelper.update
+import info.nightscout.androidaps.utils.PasswordProtection
+import info.nightscout.androidaps.utils.isRunningTest
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class SWDefinition @Inject constructor(
+ private val rxBus: RxBusWrapper,
+ private val mainApp: MainApp,
+ private val resourceHelper: ResourceHelper,
+ private val sp: SP,
+ private val profileFunction: ProfileFunction,
+ private val localProfilePlugin: LocalProfilePlugin,
+ private val configBuilderPlugin: ConfigBuilderPlugin,
+ private val objectivesPlugin: ObjectivesPlugin
+) {
+
+ var activity: AppCompatActivity? = null
+ private val screens: MutableList = ArrayList()
+
+ fun getScreens(): List {
+ return screens
+ }
+
+ private fun add(newScreen: SWScreen?): SWDefinition {
+ if (newScreen != null) screens.add(newScreen)
+ return this
+ }
+
+ private val screenSetupWizard = SWScreen(R.string.nav_setupwizard)
+ .add(SWInfotext()
+ .label(R.string.welcometosetupwizard))
+ private val screenLanguage = SWScreen(R.string.language)
+ .skippable(false)
+ .add(SWRadioButton()
+ .option(R.array.languagesArray, R.array.languagesValues)
+ .preferenceId(R.string.key_language).label(R.string.language)
+ .comment(R.string.setupwizard_language_prompt))
+ .validator {
+ update(mainApp)
+ sp.contains(R.string.key_language)
+ }
+ private val screenEula = SWScreen(R.string.end_user_license_agreement)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(R.string.end_user_license_agreement_text))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.end_user_license_agreement_i_understand)
+ .visibility { !sp.getBoolean(R.string.key_i_understand, false) }
+ .action {
+ sp.putBoolean(R.string.key_i_understand, true)
+ rxBus.send(EventSWUpdate(false))
+ })
+ .visibility { !sp.getBoolean(R.string.key_i_understand, false) }
+ .validator { sp.getBoolean(R.string.key_i_understand, false) }
+ private val screenUnits = SWScreen(R.string.units)
+ .skippable(false)
+ .add(SWRadioButton()
+ .option(R.array.unitsArray, R.array.unitsValues)
+ .preferenceId(R.string.key_units).label(R.string.units)
+ .comment(R.string.setupwizard_units_prompt))
+ .validator { sp.contains(R.string.key_units) }
+ private val displaySettings = SWScreen(R.string.wear_display_settings)
+ .skippable(false)
+ .add(SWEditNumberWithUnits(Constants.LOWMARK * Constants.MGDL_TO_MMOLL, 3.0, 8.0)
+ .preferenceId(R.string.key_low_mark)
+ .updateDelay(5)
+ .label(R.string.low_mark)
+ .comment(R.string.low_mark_comment))
+ .add(SWBreak())
+ .add(SWEditNumberWithUnits(Constants.HIGHMARK * Constants.MGDL_TO_MMOLL, 5.0, 20.0)
+ .preferenceId(R.string.key_high_mark)
+ .updateDelay(5)
+ .label(R.string.high_mark)
+ .comment(R.string.high_mark_comment))
+ private val screenPermissionBattery = SWScreen(R.string.permission)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(resourceHelper.gs(R.string.needwhitelisting, resourceHelper.gs(R.string.app_name))))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.askforpermission)
+ .visibility { AndroidPermission.permissionNotGranted(activity, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) }
+ .action { AndroidPermission.askForPermission(activity, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, AndroidPermission.CASE_BATTERY) })
+ .visibility { AndroidPermission.permissionNotGranted(activity, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) }
+ .validator { !AndroidPermission.permissionNotGranted(activity, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) }
+ private val screenPermissionBt = SWScreen(R.string.permission)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(resourceHelper.gs(R.string.needlocationpermission)))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.askforpermission)
+ .visibility { AndroidPermission.permissionNotGranted(activity, Manifest.permission.ACCESS_FINE_LOCATION) }
+ .action { AndroidPermission.askForPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION, AndroidPermission.CASE_LOCATION) })
+ .visibility { AndroidPermission.permissionNotGranted(activity, Manifest.permission.ACCESS_FINE_LOCATION) }
+ .validator { !AndroidPermission.permissionNotGranted(activity, Manifest.permission.ACCESS_FINE_LOCATION) }
+ private val screenPermissionStore = SWScreen(R.string.permission)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(resourceHelper.gs(R.string.needstoragepermission)))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.askforpermission)
+ .visibility { AndroidPermission.permissionNotGranted(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) }
+ .action { AndroidPermission.askForPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE, AndroidPermission.CASE_STORAGE) })
+ .visibility { AndroidPermission.permissionNotGranted(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) }
+ .validator { !AndroidPermission.permissionNotGranted(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) }
+ private val screenImport = SWScreen(R.string.nav_import)
+ .add(SWInfotext()
+ .label(R.string.storedsettingsfound))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.nav_import)
+ .action { ImportExportPrefs.importSharedPreferences(activity) })
+ .visibility { ImportExportPrefs.file.exists() && !AndroidPermission.permissionNotGranted(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) }
+ private val screenNsClient = SWScreen(R.string.nsclientinternal_title)
+ .skippable(true)
+ .add(SWInfotext()
+ .label(R.string.nsclientinfotext))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.enable_nsclient)
+ .action {
+ NSClientPlugin.getPlugin().setPluginEnabled(PluginType.GENERAL, true)
+ NSClientPlugin.getPlugin().setFragmentVisible(PluginType.GENERAL, true)
+ configBuilderPlugin.processOnEnabledCategoryChanged(NSClientPlugin.getPlugin(), PluginType.GENERAL)
+ configBuilderPlugin.storeSettings("SetupWizard")
+ rxBus.send(EventConfigBuilderChange())
+ rxBus.send(EventSWUpdate(true))
+ }
+ .visibility { !NSClientPlugin.getPlugin().isEnabled(PluginType.GENERAL) })
+ .add(SWEditUrl()
+ .preferenceId(R.string.key_nsclientinternal_url)
+ .updateDelay(5)
+ .label(R.string.nsclientinternal_url_title)
+ .comment(R.string.nsclientinternal_url_dialogmessage))
+ .add(SWEditString()
+ .validator { text: String -> text.length >= 12 }
+ .preferenceId(R.string.key_nsclientinternal_api_secret)
+ .updateDelay(5)
+ .label(R.string.nsclientinternal_secret_dialogtitle)
+ .comment(R.string.nsclientinternal_secret_dialogmessage))
+ .add(SWBreak())
+ .add(SWEventListener(this, EventNSClientStatus::class.java)
+ .label(R.string.status)
+ .initialStatus(NSClientPlugin.getPlugin().status)
+ )
+ .add(SWBreak())
+ .validator { NSClientPlugin.getPlugin().nsClientService != null && NSClientService.isConnected && NSClientService.hasWriteAuth }
+ .visibility { !(NSClientPlugin.getPlugin().nsClientService != null && NSClientService.isConnected && NSClientService.hasWriteAuth) }
+ private val screenAge = SWScreen(R.string.patientage)
+ .skippable(false)
+ .add(SWBreak())
+ .add(SWRadioButton()
+ .option(R.array.ageArray, R.array.ageValues)
+ .preferenceId(R.string.key_age)
+ .label(R.string.patientage)
+ .comment(R.string.patientage_summary))
+ .validator { sp.contains(R.string.key_age) }
+ private val screenInsulin = SWScreen(R.string.configbuilder_insulin)
+ .skippable(false)
+ .add(SWPlugin()
+ .option(PluginType.INSULIN, R.string.configbuilder_insulin_description)
+ .makeVisible(false)
+ .label(R.string.configbuilder_insulin))
+ .add(SWBreak())
+ .add(SWInfotext()
+ .label(R.string.diawarning))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.insulinsourcesetup)
+ .action {
+ val plugin = configBuilderPlugin.activeInsulin as PluginBase?
+ if (plugin != null) {
+ PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", Runnable {
+ val i = Intent(activity, PreferencesActivity::class.java)
+ i.putExtra("id", plugin.preferencesId)
+ activity?.startActivity(i)
+ }, null)
+ }
+ }
+ .visibility { configBuilderPlugin.activeInsulin != null && (configBuilderPlugin.activeInsulin as PluginBase?)!!.preferencesId > 0 })
+ .validator { configBuilderPlugin.activeInsulin != null }
+ private val screenBgSource = SWScreen(R.string.configbuilder_bgsource)
+ .skippable(false)
+ .add(SWPlugin()
+ .option(PluginType.BGSOURCE, R.string.configbuilder_bgsource_description)
+ .label(R.string.configbuilder_bgsource))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.bgsourcesetup)
+ .action {
+ val plugin = configBuilderPlugin.activeBgSource as PluginBase?
+ if (plugin != null) {
+ PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", Runnable {
+ val i = Intent(activity, PreferencesActivity::class.java)
+ i.putExtra("id", plugin.preferencesId)
+ activity!!.startActivity(i)
+ }, null)
+ }
+ }
+ .visibility { configBuilderPlugin.activeBgSource != null && (configBuilderPlugin.activeBgSource as PluginBase?)!!.preferencesId > 0 })
+ .validator { configBuilderPlugin.activeBgSource != null }
+ private val screenProfile = SWScreen(R.string.configbuilder_profile)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(R.string.setupwizard_profile_description))
+ .add(SWBreak())
+ .add(SWPlugin()
+ .option(PluginType.PROFILE, R.string.configbuilder_profile_description)
+ .label(R.string.configbuilder_profile))
+ .validator { configBuilderPlugin.activeProfileInterface != null }
+ private val screenNsProfile = SWScreen(R.string.nsprofile)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(R.string.adjustprofileinns))
+ .add(SWFragment(this)
+ .add(NSProfileFragment()))
+ .validator { NSProfilePlugin.getPlugin().profile != null && NSProfilePlugin.getPlugin().profile!!.getDefaultProfile() != null && NSProfilePlugin.getPlugin().profile!!.getDefaultProfile()!!.isValid("StartupWizard") }
+ .visibility { NSProfilePlugin.getPlugin().isEnabled(PluginType.PROFILE) }
+ private val screenLocalProfile = SWScreen(R.string.localprofile)
+ .skippable(false)
+ .add(SWFragment(this)
+ .add(LocalProfileFragment()))
+ .validator { localProfilePlugin.getProfile()?.getDefaultProfile()?.isValid("StartupWizard") == true }
+ .visibility { localProfilePlugin.isEnabled(PluginType.PROFILE) }
+ private val screenProfileSwitch = SWScreen(R.string.careportal_profileswitch)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(R.string.profileswitch_ismissing))
+ .add(SWButton()
+ .text(R.string.doprofileswitch)
+ .action { ProfileSwitchDialog().show(activity!!.supportFragmentManager, "SetupWizard") })
+ .validator { profileFunction.getProfile() != null }
+ .visibility { profileFunction.getProfile() == null }
+ private val screenPump = SWScreen(R.string.configbuilder_pump)
+ .skippable(false)
+ .add(SWPlugin()
+ .option(PluginType.PUMP, R.string.configbuilder_pump_description)
+ .label(R.string.configbuilder_pump))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.pumpsetup)
+ .action {
+ val plugin = configBuilderPlugin.activePump as PluginBase?
+ if (plugin != null) {
+ PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", Runnable {
+ val i = Intent(activity, PreferencesActivity::class.java)
+ i.putExtra("id", plugin.preferencesId)
+ activity!!.startActivity(i)
+ }, null)
+ }
+ }
+ .visibility { configBuilderPlugin.activePump != null && (configBuilderPlugin.activePump as PluginBase?)!!.preferencesId > 0 })
+ .add(SWButton()
+ .text(R.string.readstatus)
+ .action { configBuilderPlugin.commandQueue.readStatus("Clicked connect to pump", null) }
+ .visibility { configBuilderPlugin.activePump != null })
+ .add(SWEventListener(this, EventPumpStatusChanged::class.java))
+ .validator { configBuilderPlugin.activePump != null && configBuilderPlugin.activePump!!.isInitialized }
+ private val screenAps = SWScreen(R.string.configbuilder_aps)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(R.string.setupwizard_aps_description))
+ .add(SWBreak())
+ .add(SWHtmlLink()
+ .label("https://openaps.readthedocs.io/en/latest/"))
+ .add(SWBreak())
+ .add(SWPlugin()
+ .option(PluginType.APS, R.string.configbuilder_aps_description)
+ .label(R.string.configbuilder_aps))
+ .add(SWButton()
+ .text(R.string.apssetup)
+ .action {
+ val plugin = configBuilderPlugin.activeAPS as PluginBase?
+ if (plugin != null) {
+ PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", Runnable {
+ val i = Intent(activity, PreferencesActivity::class.java)
+ i.putExtra("id", plugin.preferencesId)
+ activity!!.startActivity(i)
+ }, null)
+ }
+ }
+ .visibility { configBuilderPlugin.activeAPS != null && (configBuilderPlugin.activeAPS as PluginBase?)!!.preferencesId > 0 })
+ .validator { configBuilderPlugin.activeAPS != null }
+ .visibility { Config.APS }
+ private val screenApsMode = SWScreen(R.string.apsmode_title)
+ .skippable(false)
+ .add(SWRadioButton()
+ .option(R.array.aps_modeArray, R.array.aps_modeValues)
+ .preferenceId(R.string.key_aps_mode).label(R.string.apsmode_title)
+ .comment(R.string.setupwizard_preferred_aps_mode))
+ .validator { sp.contains(R.string.key_aps_mode) }
+ private val screenLoop = SWScreen(R.string.configbuilder_loop)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(R.string.setupwizard_loop_description))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.enableloop)
+ .action {
+ LoopPlugin.getPlugin().setPluginEnabled(PluginType.LOOP, true)
+ LoopPlugin.getPlugin().setFragmentVisible(PluginType.LOOP, true)
+ configBuilderPlugin.processOnEnabledCategoryChanged(LoopPlugin.getPlugin(), PluginType.LOOP)
+ configBuilderPlugin.storeSettings("SetupWizard")
+ rxBus.send(EventConfigBuilderChange())
+ rxBus.send(EventSWUpdate(true))
+ }
+ .visibility { !LoopPlugin.getPlugin().isEnabled(PluginType.LOOP) })
+ .validator { LoopPlugin.getPlugin().isEnabled(PluginType.LOOP) }
+ .visibility { !LoopPlugin.getPlugin().isEnabled(PluginType.LOOP) && Config.APS }
+ private val screenSensitivity = SWScreen(R.string.configbuilder_sensitivity)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(R.string.setupwizard_sensitivity_description))
+ .add(SWHtmlLink()
+ .label(R.string.setupwizard_sensitivity_url))
+ .add(SWBreak())
+ .add(SWPlugin()
+ .option(PluginType.SENSITIVITY, R.string.configbuilder_sensitivity_description)
+ .label(R.string.configbuilder_sensitivity))
+ .add(SWBreak())
+ .add(SWButton()
+ .text(R.string.sensitivitysetup)
+ .action {
+ val plugin = configBuilderPlugin.activeSensitivity as PluginBase?
+ if (plugin != null) {
+ PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", Runnable {
+ val i = Intent(activity, PreferencesActivity::class.java)
+ i.putExtra("id", plugin.preferencesId)
+ activity!!.startActivity(i)
+ }, null)
+ }
+ }
+ .visibility { configBuilderPlugin.activeSensitivity != null && (configBuilderPlugin.activeSensitivity as PluginBase?)!!.preferencesId > 0 })
+ .validator { configBuilderPlugin.activeSensitivity != null }
+ private val getScreenObjectives = SWScreen(R.string.objectives)
+ .skippable(false)
+ .add(SWInfotext()
+ .label(R.string.startobjective))
+ .add(SWBreak())
+ .add(SWFragment(this)
+ .add(ObjectivesFragment()))
+ .validator { objectivesPlugin.objectives[objectivesPlugin.FIRST_OBJECTIVE].isStarted }
+ .visibility { !objectivesPlugin.objectives[objectivesPlugin.FIRST_OBJECTIVE].isStarted && Config.APS }
+
+ private fun SWDefinitionFull() { // List all the screens here
+ add(screenSetupWizard)
+ .add(screenLanguage)
+ .add(screenEula)
+ .add(if (isRunningTest()) null else screenPermissionBattery) // cannot mock ask battery optimalization
+ .add(screenPermissionBt)
+ .add(screenPermissionStore)
+ .add(screenImport)
+ .add(screenUnits)
+ .add(displaySettings)
+ .add(screenNsClient)
+ .add(screenAge)
+ .add(screenInsulin)
+ .add(screenBgSource)
+ .add(screenProfile)
+ .add(screenNsProfile)
+ .add(screenLocalProfile)
+ .add(screenProfileSwitch)
+ .add(screenPump)
+ .add(screenAps)
+ .add(screenApsMode)
+ .add(screenLoop)
+ .add(screenSensitivity)
+ .add(getScreenObjectives)
+ }
+
+ private fun SWDefinitionPumpControl() { // List all the screens here
+ add(screenSetupWizard)
+ .add(screenLanguage)
+ .add(screenEula)
+ .add(if (isRunningTest()) null else screenPermissionBattery) // cannot mock ask battery optimalization
+ .add(screenPermissionBt)
+ .add(screenPermissionStore)
+ .add(screenImport)
+ .add(screenUnits)
+ .add(displaySettings)
+ .add(screenNsClient)
+ .add(screenAge)
+ .add(screenInsulin)
+ .add(screenBgSource)
+ .add(screenProfile)
+ .add(screenNsProfile)
+ .add(screenLocalProfile)
+ .add(screenProfileSwitch)
+ .add(screenPump)
+ .add(screenSensitivity)
+ }
+
+ private fun SWDefinitionNSClient() { // List all the screens here
+ add(screenSetupWizard)
+ .add(screenLanguage)
+ .add(screenEula)
+ .add(if (isRunningTest()) null else screenPermissionBattery) // cannot mock ask battery optimalization
+ .add(screenPermissionStore)
+ .add(screenImport)
+ .add(screenUnits)
+ .add(displaySettings)
+ .add(screenNsClient)
+ .add(screenBgSource)
+ .add(screenAge)
+ .add(screenInsulin)
+ .add(screenSensitivity)
+ }
+
+ init {
+ if (Config.APS) SWDefinitionFull() else if (Config.PUMPCONTROL) SWDefinitionPumpControl() else if (Config.NSCLIENT) SWDefinitionNSClient()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWEventListener.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWEventListener.java
index 26944effbf..a791452d5c 100644
--- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWEventListener.java
+++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWEventListener.java
@@ -27,7 +27,7 @@ public class SWEventListener extends SWItem {
SWEventListener(SWDefinition definition, Class clazz) {
super(Type.LISTENER);
this.definition = definition;
- disposable.add(RxBus.INSTANCE
+ disposable.add(RxBus.Companion.getINSTANCE()
.toObservable(clazz)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> {
diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.java
index b74567d027..7a103857a9 100644
--- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.java
+++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.java
@@ -14,32 +14,41 @@ import androidx.core.app.ActivityCompat;
import java.util.List;
+import javax.inject.Inject;
+
import info.nightscout.androidaps.MainActivity;
-import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity;
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
import info.nightscout.androidaps.events.EventProfileStoreChanged;
import info.nightscout.androidaps.events.EventPumpStatusChanged;
-import info.nightscout.androidaps.plugins.bus.RxBus;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientStatus;
+import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin;
import info.nightscout.androidaps.setupwizard.elements.SWItem;
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate;
import info.nightscout.androidaps.utils.AndroidPermission;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.LocaleHelper;
import info.nightscout.androidaps.utils.OKDialog;
-import info.nightscout.androidaps.utils.SP;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
public class SetupWizardActivity extends NoSplashAppCompatActivity {
+
+ @Inject LocalProfilePlugin localProfilePlugin;
+ @Inject SWDefinition swDefinition;
+ @Inject RxBusWrapper rxBus;
+ @Inject ResourceHelper resourceHelper;
+ @Inject SP sp;
+
private CompositeDisposable disposable = new CompositeDisposable();
ScrollView scrollView;
- private SWDefinition swDefinition = new SWDefinition();
- private List screens = swDefinition.getScreens();
+ private List screens;
private int currentWizardPage = 0;
public static final String INTENT_MESSAGE = "WIZZARDPAGE";
@@ -50,6 +59,7 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity {
setContentView(R.layout.activity_setupwizard);
scrollView = findViewById(R.id.sw_scrollview);
+ screens = swDefinition.getScreens();
Intent intent = getIntent();
currentWizardPage = intent.getIntExtra(SetupWizardActivity.INTENT_MESSAGE, 0);
@@ -77,27 +87,27 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity {
protected void onResume() {
super.onResume();
swDefinition.setActivity(this);
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventPumpStatusChanged.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateButtons(), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventNSClientStatus.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateButtons(), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventProfileNeedsUpdate.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateButtons(), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventProfileStoreChanged.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> updateButtons(), FabricPrivacy::logException)
);
- disposable.add(RxBus.INSTANCE
+ disposable.add(rxBus
.toObservable(EventSWUpdate.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(event -> {
@@ -143,13 +153,13 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity {
@Override
public void onBackPressed() {
if (currentWizardPage == 0)
- OKDialog.showConfirmation(this, MainApp.gs(R.string.exitwizard), this::finish);
+ OKDialog.showConfirmation(this, resourceHelper.gs(R.string.exitwizard), this::finish);
else showPreviousPage(null);
}
public void exitPressed(View view) {
- SP.putBoolean(R.string.key_setupwizard_processed, true);
- OKDialog.showConfirmation(this, MainApp.gs(R.string.exitwizard), this::finish);
+ sp.putBoolean(R.string.key_setupwizard_processed, true);
+ OKDialog.showConfirmation(this, resourceHelper.gs(R.string.exitwizard), this::finish);
}
public void showNextPage(View view) {
@@ -168,7 +178,7 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity {
// Go back to overview
public void finishSetupWizard(View view) {
- SP.putBoolean(R.string.key_setupwizard_processed, true);
+ sp.putBoolean(R.string.key_setupwizard_processed, true);
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
@@ -203,7 +213,7 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity {
switch (requestCode) {
case AndroidPermission.CASE_STORAGE:
//show dialog after permission is granted
- OKDialog.show(this, MainApp.gs(R.string.permission), MainApp.gs(R.string.alert_dialog_storage_permission_text));
+ OKDialog.show(this, resourceHelper.gs(R.string.permission), resourceHelper.gs(R.string.alert_dialog_storage_permission_text));
break;
case AndroidPermission.CASE_LOCATION:
case AndroidPermission.CASE_SMS:
diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditUrl.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditUrl.java
index f35decbf53..9589304374 100644
--- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditUrl.java
+++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditUrl.java
@@ -63,7 +63,7 @@ public class SWEditUrl extends SWItem {
if (Patterns.WEB_URL.matcher(s).matches())
save(s.toString(), updateDelay);
else
- RxBus.INSTANCE.send(new EventSWLabel(MainApp.gs(R.string.error_url_not_valid)));
+ RxBus.Companion.getINSTANCE().send(new EventSWLabel(MainApp.gs(R.string.error_url_not_valid)));
}
@Override
diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWFragment.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWFragment.java
deleted file mode 100644
index 29149e5b81..0000000000
--- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWFragment.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package info.nightscout.androidaps.setupwizard.elements;
-
-import androidx.fragment.app.Fragment;
-
-import android.widget.LinearLayout;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import info.nightscout.androidaps.setupwizard.SWDefinition;
-
-
-public class SWFragment extends SWItem {
- private static Logger log = LoggerFactory.getLogger(SWFragment.class);
-
- SWDefinition definition;
- Fragment fragment;
-
- public SWFragment(SWDefinition definition) {
- super(Type.FRAGMENT);
- this.definition = definition;
- }
-
- public SWFragment add(Fragment fragment) {
- this.fragment = fragment;
- return this;
- }
-
- @Override
- public void generateDialog(LinearLayout layout) {
- definition.getActivity().getSupportFragmentManager().beginTransaction().add(layout.getId(), fragment, fragment.getTag()).commit();
- }
-
-}
diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWFragment.kt b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWFragment.kt
new file mode 100644
index 0000000000..ab8d20a6dd
--- /dev/null
+++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWFragment.kt
@@ -0,0 +1,18 @@
+package info.nightscout.androidaps.setupwizard.elements
+
+import android.widget.LinearLayout
+import androidx.fragment.app.Fragment
+import info.nightscout.androidaps.setupwizard.SWDefinition
+
+class SWFragment(private var definition: SWDefinition) : SWItem(Type.FRAGMENT) {
+ lateinit var fragment: Fragment
+
+ fun add(fragment: Fragment): SWFragment {
+ this.fragment = fragment
+ return this
+ }
+
+ override fun generateDialog(layout: LinearLayout) {
+ definition.activity?.supportFragmentManager?.beginTransaction()?.add(layout.id, fragment, fragment.tag)?.commit()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWItem.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWItem.java
index 734b204ff3..668d33dc73 100644
--- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWItem.java
+++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWItem.java
@@ -101,8 +101,8 @@ public class SWItem {
public void run() {
if (L.isEnabled(L.CORE))
log.debug("Firing EventPreferenceChange");
- RxBus.INSTANCE.send(new EventPreferenceChange(preferenceId));
- RxBus.INSTANCE.send(new EventSWUpdate(false));
+ RxBus.Companion.getINSTANCE().send(new EventPreferenceChange(preferenceId));
+ RxBus.Companion.getINSTANCE().send(new EventSWUpdate(false));
scheduledEventPost = null;
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java
index e5dde501bc..9243955f75 100644
--- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java
+++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java
@@ -88,8 +88,8 @@ public class SWPlugin extends SWItem {
plugin.setFragmentVisible(pType, rb.isChecked() && makeVisible);
ConfigBuilderPlugin.getPlugin().processOnEnabledCategoryChanged(plugin, pType);
ConfigBuilderPlugin.getPlugin().storeSettings("SetupWizard");
- RxBus.INSTANCE.send(new EventConfigBuilderChange());
- RxBus.INSTANCE.send(new EventSWUpdate(false));
+ RxBus.Companion.getINSTANCE().send(new EventConfigBuilderChange());
+ RxBus.Companion.getINSTANCE().send(new EventSWUpdate(false));
});
layout.addView(radioGroup);
super.generateDialog(layout);
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.java b/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.java
index 488ef314f0..c6ffd273ef 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.java
+++ b/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.java
@@ -87,18 +87,18 @@ public class AndroidPermission {
notification.action(R.string.request, () -> AndroidPermission.askForPermission(activity, new String[]{Manifest.permission.RECEIVE_SMS,
Manifest.permission.SEND_SMS,
Manifest.permission.RECEIVE_MMS}, AndroidPermission.CASE_SMS));
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PERMISSION_SMS));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PERMISSION_SMS));
// Following is a bug in Android 8
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O) {
if (permissionNotGranted(activity, Manifest.permission.READ_PHONE_STATE)) {
NotificationWithAction notification = new NotificationWithAction(Notification.PERMISSION_PHONESTATE, MainApp.gs(R.string.smscommunicator_missingphonestatepermission), Notification.URGENT);
notification.action(R.string.request, () ->
AndroidPermission.askForPermission(activity, new String[]{Manifest.permission.READ_PHONE_STATE}, AndroidPermission.CASE_PHONE_STATE));
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PERMISSION_PHONESTATE));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PERMISSION_PHONESTATE));
}
}
}
@@ -107,9 +107,9 @@ public class AndroidPermission {
if (permissionNotGranted(activity, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)) {
NotificationWithAction notification = new NotificationWithAction(Notification.PERMISSION_BATTERY, String.format(MainApp.gs(R.string.needwhitelisting), MainApp.gs(R.string.app_name)), Notification.URGENT);
notification.action(R.string.request, () -> AndroidPermission.askForPermission(activity, new String[]{Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS}, AndroidPermission.CASE_BATTERY));
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PERMISSION_BATTERY));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PERMISSION_BATTERY));
}
public static synchronized void notifyForStoragePermission(Activity activity) {
@@ -117,17 +117,17 @@ public class AndroidPermission {
NotificationWithAction notification = new NotificationWithAction(Notification.PERMISSION_STORAGE, MainApp.gs(R.string.needstoragepermission), Notification.URGENT);
notification.action(R.string.request, () -> AndroidPermission.askForPermission(activity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, AndroidPermission.CASE_STORAGE));
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PERMISSION_STORAGE));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PERMISSION_STORAGE));
}
public static synchronized void notifyForLocationPermissions(Activity activity) {
if (permissionNotGranted(activity, Manifest.permission.ACCESS_FINE_LOCATION)) {
NotificationWithAction notification = new NotificationWithAction(Notification.PERMISSION_LOCATION, MainApp.gs(R.string.needlocationpermission), Notification.URGENT);
notification.action(R.string.request, () -> AndroidPermission.askForPermission(activity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, AndroidPermission.CASE_LOCATION));
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
} else
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PERMISSION_LOCATION));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PERMISSION_LOCATION));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/BolusWizard.kt b/app/src/main/java/info/nightscout/androidaps/utils/BolusWizard.kt
index dc5c6b3fc8..c73a02a4b6 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/BolusWizard.kt
+++ b/app/src/main/java/info/nightscout/androidaps/utils/BolusWizard.kt
@@ -281,7 +281,7 @@ class BolusWizard @JvmOverloads constructor(val profile: Profile,
val loopPlugin = LoopPlugin.getPlugin()
if (loopPlugin.isEnabled(PluginType.LOOP)) {
loopPlugin.superBolusTo(System.currentTimeMillis() + 2 * 60L * 60 * 1000)
- RxBus.send(EventRefreshOverview("WizardDialog"))
+ RxBus.INSTANCE.send(EventRefreshOverview("WizardDialog"))
}
val pump1 = ConfigBuilderPlugin.getPlugin().activePump
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/LocalAlertUtils.java b/app/src/main/java/info/nightscout/androidaps/utils/LocalAlertUtils.java
index 282ad1aa55..a8781729a4 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/LocalAlertUtils.java
+++ b/app/src/main/java/info/nightscout/androidaps/utils/LocalAlertUtils.java
@@ -44,13 +44,13 @@ public class LocalAlertUtils {
Notification n = new Notification(Notification.PUMP_UNREACHABLE, MainApp.gs(R.string.pump_unreachable), Notification.URGENT);
n.soundId = R.raw.alarm;
SP.putLong("nextPumpDisconnectedAlarm", System.currentTimeMillis() + pumpUnreachableThreshold());
- RxBus.INSTANCE.send(new EventNewNotification(n));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(n));
if (SP.getBoolean(R.string.key_ns_create_announcements_from_errors, true)) {
NSUpload.uploadError(n.text);
}
}
if (!isStatusOutdated && !alarmTimeoutExpired)
- RxBus.INSTANCE.send(new EventDismissNotification(Notification.PUMP_UNREACHABLE));
+ RxBus.Companion.getINSTANCE().send(new EventDismissNotification(Notification.PUMP_UNREACHABLE));
}
/*Presnoozes the alarms with 5 minutes if no snooze exists.
@@ -98,7 +98,7 @@ public class LocalAlertUtils {
Notification n = new Notification(Notification.BG_READINGS_MISSED, MainApp.gs(R.string.missed_bg_readings), Notification.URGENT);
n.soundId = R.raw.alarm;
SP.putLong("nextMissedReadingsAlarm", System.currentTimeMillis() + missedReadingsThreshold());
- RxBus.INSTANCE.send(new EventNewNotification(n));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(n));
if (SP.getBoolean(R.string.key_ns_create_announcements_from_errors, true)) {
NSUpload.uploadError(n.text);
}
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/SP.java b/app/src/main/java/info/nightscout/androidaps/utils/SP.java
index 191fd9421b..b3c581fee1 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/SP.java
+++ b/app/src/main/java/info/nightscout/androidaps/utils/SP.java
@@ -14,30 +14,37 @@ import info.nightscout.androidaps.MainApp;
public class SP {
private static SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext());
+ @Deprecated
static public Map getAll() {
return sharedPreferences.getAll();
}
+ @Deprecated
static public void clear() {
sharedPreferences.edit().clear().apply();
}
+ @Deprecated
static public boolean contains(String key) {
return sharedPreferences.contains(key);
}
+ @Deprecated
static public boolean contains(int resourceId) {
return sharedPreferences.contains(MainApp.gs(resourceId));
}
+ @Deprecated
static public String getString(int resourceID, String defaultValue) {
return sharedPreferences.getString(MainApp.gs(resourceID), defaultValue);
}
+ @Deprecated
static public String getString(String key, String defaultValue) {
return sharedPreferences.getString(key, defaultValue);
}
+ @Deprecated
static public boolean getBoolean(int resourceID, Boolean defaultValue) {
try {
return sharedPreferences.getBoolean(MainApp.gs(resourceID), defaultValue);
@@ -46,6 +53,7 @@ public class SP {
}
}
+ @Deprecated
static public boolean getBoolean(String key, Boolean defaultValue) {
try {
return sharedPreferences.getBoolean(key, defaultValue);
@@ -54,14 +62,17 @@ public class SP {
}
}
+ @Deprecated
static public Double getDouble(int resourceID, Double defaultValue) {
return SafeParse.stringToDouble(sharedPreferences.getString(MainApp.gs(resourceID), defaultValue.toString()));
}
+ @Deprecated
static public Double getDouble(String key, Double defaultValue) {
return SafeParse.stringToDouble(sharedPreferences.getString(key, defaultValue.toString()));
}
+ @Deprecated
static public int getInt(int resourceID, Integer defaultValue) {
try {
return sharedPreferences.getInt(MainApp.gs(resourceID), defaultValue);
@@ -70,6 +81,7 @@ public class SP {
}
}
+ @Deprecated
static public int getInt(String key, Integer defaultValue) {
try {
return sharedPreferences.getInt(key, defaultValue);
@@ -78,6 +90,7 @@ public class SP {
}
}
+ @Deprecated
static public long getLong(int resourceID, Long defaultValue) {
try {
return sharedPreferences.getLong(MainApp.gs(resourceID), defaultValue);
@@ -86,6 +99,7 @@ public class SP {
}
}
+ @Deprecated
static public long getLong(String key, Long defaultValue) {
try {
return sharedPreferences.getLong(key, defaultValue);
@@ -94,51 +108,63 @@ public class SP {
}
}
+ @Deprecated
static public void putBoolean(String key, boolean value) {
sharedPreferences.edit().putBoolean(key, value).apply();
}
+ @Deprecated
static public void putBoolean(int resourceID, boolean value) {
sharedPreferences.edit().putBoolean(MainApp.gs(resourceID), value).apply();
}
+ @Deprecated
static public void putDouble(String key, double value) {
sharedPreferences.edit().putString(key, Double.toString(value)).apply();
}
+ @Deprecated
static public void putLong(String key, long value) {
sharedPreferences.edit().putLong(key, value).apply();
}
+ @Deprecated
static public void putLong(int resourceID, long value) {
sharedPreferences.edit().putLong(MainApp.gs(resourceID), value).apply();
}
+ @Deprecated
static public void putInt(String key, int value) {
sharedPreferences.edit().putInt(key, value).apply();
}
+ @Deprecated
static public void putInt(int resourceID, int value) {
sharedPreferences.edit().putInt(MainApp.gs(resourceID), value).apply();
}
+ @Deprecated
static public void incInt(int resourceID) {
int value = SP.getInt(resourceID, 0) + 1;
sharedPreferences.edit().putInt(MainApp.gs(resourceID), value).apply();
}
+ @Deprecated
static public void putString(int resourceID, String value) {
sharedPreferences.edit().putString(MainApp.gs(resourceID), value).apply();
}
+ @Deprecated
static public void putString(String key, String value) {
sharedPreferences.edit().putString(key, value).apply();
}
+ @Deprecated
static public void remove(int resourceID) {
sharedPreferences.edit().remove(MainApp.gs(resourceID)).apply();
}
+ @Deprecated
static public void remove(String key) {
sharedPreferences.edit().remove(key).apply();
}
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/ToastUtils.java b/app/src/main/java/info/nightscout/androidaps/utils/ToastUtils.java
index fe596d8f08..0bb422f5d0 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/ToastUtils.java
+++ b/app/src/main/java/info/nightscout/androidaps/utils/ToastUtils.java
@@ -28,7 +28,7 @@ public class ToastUtils {
showToastInUiThread(ctx, string);
playSound(ctx, soundID);
Notification notification = new Notification(Notification.TOAST_ALARM, string, Notification.URGENT);
- RxBus.INSTANCE.send(new EventNewNotification(notification));
+ RxBus.Companion.getINSTANCE().send(new EventNewNotification(notification));
}
private static void playSound(final Context ctx, final int soundID) {
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/resources/ResourceHelper.kt b/app/src/main/java/info/nightscout/androidaps/utils/resources/ResourceHelper.kt
index 05ccefa885..03e648173f 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/resources/ResourceHelper.kt
+++ b/app/src/main/java/info/nightscout/androidaps/utils/resources/ResourceHelper.kt
@@ -8,5 +8,5 @@ interface ResourceHelper {
fun gs(@StringRes id: Int): String
fun gs(@StringRes id: Int, vararg args: Any?): String
fun gq(@PluralsRes id: Int, quantity: Int, vararg args: Any?): String
- fun gc(@ColorRes id: Int): Int?
+ fun gc(@ColorRes id: Int): Int
}
\ No newline at end of file