diff --git a/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java b/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java index 3884954f3b..359c14cd6f 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java @@ -25,7 +25,6 @@ import info.nightscout.androidaps.events.EventPreferenceChange; import info.nightscout.androidaps.events.EventRebuildTabs; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.plugins.bus.RxBus; -import info.nightscout.androidaps.plugins.insulin.InsulinOrefFreePeakPlugin; import info.nightscout.androidaps.utils.LocaleHelper; import info.nightscout.androidaps.utils.OKDialog; import info.nightscout.androidaps.utils.SP; diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt index 367f228ed3..2b266afc22 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt @@ -6,6 +6,8 @@ import dagger.Binds import dagger.Module import dagger.Provides import info.nightscout.androidaps.MainApp +import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction +import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctionImplementation import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.resources.ResourceHelperImplementation import info.nightscout.androidaps.utils.sharedPreferences.SP @@ -21,6 +23,12 @@ class AppModule { return SPImplementation(PreferenceManager.getDefaultSharedPreferences(context)) } + @Provides + @Singleton + fun provideProfileFunction(sp : SP): ProfileFunction { + return ProfileFunctionImplementation(sp) + } + @Provides @Singleton fun provideResources(mainApp: MainApp): ResourceHelper { diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt index 5df248593c..172cd24195 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt @@ -97,7 +97,7 @@ class ProfileSwitchDialog : DialogFragmentWithDate() { activity?.let { activity -> OKDialog.showConfirmation(activity, MainApp.gs(R.string.careportal_profileswitch), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), Runnable { - ProfileFunctions.doProfileSwitch(profileStore, profile, duration.toInt(), percent, timeShift, eventTime) + ProfileFunctions.getInstance().doProfileSwitch(profileStore, profile, duration.toInt(), percent, timeShift, eventTime) }) } return true diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt index dc31349650..77c7df319f 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt @@ -43,7 +43,7 @@ class TempBasalDialog : DialogFragmentWithDate() { super.onViewCreated(view, savedInstanceState) val pumpDescription = ConfigBuilderPlugin.getPlugin().activePump?.pumpDescription ?: return - val profile = ProfileFunctions.getInstance().profile ?: return + val profile = ProfileFunctions.getInstance().getProfile() ?: return val maxTempPercent = pumpDescription.maxTempPercent.toDouble() val tempPercentStep = pumpDescription.tempPercentStep.toDouble() @@ -73,7 +73,7 @@ class TempBasalDialog : DialogFragmentWithDate() { var percent = 0 var absolute = 0.0 val durationInMinutes = SafeParse.stringToInt(actions_tempbasal_duration.text) - val profile = ProfileFunctions.getInstance().profile ?: return false + val profile = ProfileFunctions.getInstance().getProfile() ?: return false val actions: LinkedList = LinkedList() if (isPercentPump) { val basalPercentInput = SafeParse.stringToInt(actions_tempbasal_basalpercentinput.text) diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/WizardDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/WizardDialog.kt index c84bd4a0b6..d48c28337b 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/WizardDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/WizardDialog.kt @@ -194,7 +194,7 @@ class WizardDialog : DialogFragment() { } private fun initDialog() { - val profile = ProfileFunctions.getInstance().profile + val profile = ProfileFunctions.getInstance().getProfile() val profileStore = ConfigBuilderPlugin.getPlugin().activeProfileInterface?.profile if (profile == null || profileStore == null) { @@ -249,8 +249,8 @@ class WizardDialog : DialogFragment() { var profileName = treatments_wizard_profile.selectedItem.toString() val specificProfile: Profile? if (profileName == MainApp.gs(R.string.active)) { - specificProfile = ProfileFunctions.getInstance().profile - profileName = ProfileFunctions.getInstance().profileName + specificProfile = ProfileFunctions.getInstance().getProfile() + profileName = ProfileFunctions.getInstance().getProfileName() ?: return } else specificProfile = profileStore.getSpecificProfile(profileName) 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 f43513fbf5..14615060d9 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 @@ -2,11 +2,14 @@ package info.nightscout.androidaps.plugins.configBuilder; import androidx.annotation.Nullable; +import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; +import javax.inject.Inject; + import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventAppInitialized; @@ -22,6 +25,7 @@ import info.nightscout.androidaps.interfaces.SensitivityInterface; import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.plugins.bus.RxBus; 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; @@ -53,6 +57,9 @@ public class ConfigBuilderPlugin extends PluginBase { private CommandQueue commandQueue = new CommandQueue(); + @Inject + LocalProfilePlugin localProfilePlugin; + public ConfigBuilderPlugin() { super(new PluginDescription() .mainType(PluginType.GENERAL) @@ -237,9 +244,10 @@ public class ConfigBuilderPlugin extends PluginBase { return activeBgSource; } - @Nullable + @NotNull public ProfileInterface getActiveProfileInterface() { - return activeProfile; + if (activeProfile != null) return activeProfile; + else return localProfilePlugin; } @Nullable diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunction.kt b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunction.kt new file mode 100644 index 0000000000..6faee1c38a --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunction.kt @@ -0,0 +1,19 @@ +package info.nightscout.androidaps.plugins.configBuilder + +import info.nightscout.androidaps.data.Profile +import info.nightscout.androidaps.data.ProfileStore +import info.nightscout.androidaps.db.ProfileSwitch + +interface ProfileFunction { + fun getProfileName(): String? + fun getProfileName(customized: Boolean): String + fun getProfileNameWithDuration(): String + fun getProfileName(time: Long, customized: Boolean, showRemainingTime: Boolean): String + fun isProfileValid(from: String): Boolean + fun getProfile(): Profile? + fun getUnits(): String + fun getProfile(time: Long): Profile? + fun prepareProfileSwitch(profileStore: ProfileStore, profileName: String, duration: Int, percentage: Int, timeShift: Int, date: Long): ProfileSwitch + fun doProfileSwitch(profileStore: ProfileStore, profileName: String, duration: Int, percentage: Int, timeShift: Int, date: Long) + fun doProfileSwitch(duration: Int, percentage: Int, timeShift: Int) +} \ No newline at end of file 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 new file mode 100644 index 0000000000..de43cf5519 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt @@ -0,0 +1,80 @@ +package info.nightscout.androidaps.plugins.configBuilder + +import info.nightscout.androidaps.Constants +import info.nightscout.androidaps.R +import info.nightscout.androidaps.data.Profile +import info.nightscout.androidaps.data.ProfileStore +import info.nightscout.androidaps.db.ProfileSwitch +import info.nightscout.androidaps.db.Source +import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin +import info.nightscout.androidaps.utils.sharedPreferences.SP +import java.security.spec.InvalidParameterSpecException +import javax.inject.Inject +import javax.inject.Singleton + +class ProfileFunctionImplementation constructor(private val sp: SP) : ProfileFunction { + + override fun getProfileName(): String = + getProfileName(System.currentTimeMillis(), customized = true, showRemainingTime = false) + + override fun getProfileName(customized: Boolean): String = + getProfileName(System.currentTimeMillis(), customized, showRemainingTime = false) + + override fun getProfileName(time: Long, customized: Boolean, showRemainingTime: Boolean): String = + ProfileFunctions.getInstance().getProfileName(time, customized, showRemainingTime) + + override fun getProfileNameWithDuration(): String = + getProfileName(System.currentTimeMillis(), customized = true, showRemainingTime = true) + + override fun isProfileValid(from: String): Boolean = + getProfile()?.isValid(from) ?: false + + override fun getProfile(): Profile? { + return ProfileFunctions.getInstance().getProfile() + } + + override fun getProfile(time: Long): Profile? = + getProfile(System.currentTimeMillis()) + + override fun getUnits(): String = + sp.getString(R.string.key_units, Constants.MGDL) + + override fun prepareProfileSwitch(profileStore: ProfileStore, profileName: String, duration: Int, percentage: Int, timeShift: Int, date: Long): ProfileSwitch { + val profile = profileStore.getSpecificProfile(profileName) + ?: throw InvalidParameterSpecException(profileName) + val profileSwitch = ProfileSwitch() + profileSwitch.date = date + profileSwitch.source = Source.USER + profileSwitch.profileName = profileName + profileSwitch.profileJson = profile.data.toString() + profileSwitch.profilePlugin = ConfigBuilderPlugin.getPlugin().activeProfileInterface::class.java.name + profileSwitch.durationInMinutes = duration + profileSwitch.isCPP = percentage != 100 || timeShift != 0 + profileSwitch.timeshift = timeShift + profileSwitch.percentage = percentage + return profileSwitch + } + + override fun doProfileSwitch(profileStore: ProfileStore, profileName: String, duration: Int, percentage: Int, timeShift: Int, date: Long) { + val profileSwitch = prepareProfileSwitch(profileStore, profileName, duration, percentage, timeShift, date) + TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch) + if (percentage == 90 && duration == 10) + sp.putBoolean(R.string.key_objectiveuseprofileswitch, true) + } + + override fun doProfileSwitch(duration: Int, percentage: Int, timeShift: Int) { + getProfile()?.let { + val profileSwitch = ProfileSwitch() + profileSwitch.date = System.currentTimeMillis() + profileSwitch.source = Source.USER + profileSwitch.profileName = ProfileFunctions.getInstance().getProfileName(System.currentTimeMillis(), customized = false, showRemainingTime = false) + profileSwitch.profileJson = it.data.toString() + profileSwitch.profilePlugin = ConfigBuilderPlugin.getPlugin().activeProfileInterface::class.java.name + profileSwitch.durationInMinutes = duration + profileSwitch.isCPP = percentage != 100 || timeShift != 0 + profileSwitch.timeshift = timeShift + profileSwitch.percentage = percentage + TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch) + } + } +} \ No newline at end of file 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 bdde6606bb..126fc6c44d 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 @@ -7,6 +7,7 @@ import androidx.annotation.Nullable; import com.google.firebase.analytics.FirebaseAnalytics; +import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,6 +15,7 @@ import info.nightscout.androidaps.BuildConfig; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.activities.ErrorHelperActivity; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.ProfileStore; import info.nightscout.androidaps.db.ProfileSwitch; @@ -24,7 +26,6 @@ import info.nightscout.androidaps.interfaces.ProfileInterface; import info.nightscout.androidaps.interfaces.TreatmentsInterface; import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.plugins.bus.RxBus; -import info.nightscout.androidaps.activities.ErrorHelperActivity; import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; import info.nightscout.androidaps.queue.Callback; import info.nightscout.androidaps.utils.DateUtil; @@ -33,7 +34,7 @@ import info.nightscout.androidaps.utils.SP; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.schedulers.Schedulers; -public class ProfileFunctions { +public class ProfileFunctions implements ProfileFunction { private static Logger log = LoggerFactory.getLogger(L.PROFILE); private CompositeDisposable disposable = new CompositeDisposable(); @@ -75,18 +76,22 @@ public class ProfileFunctions { ); } + @NotNull public String getProfileName() { return getProfileName(System.currentTimeMillis(), true, false); } + @NotNull public String getProfileName(boolean customized) { return getProfileName(System.currentTimeMillis(), customized, false); } + @NotNull public String getProfileNameWithDuration() { return getProfileName(System.currentTimeMillis(), true, true); } + @NotNull public String getProfileName(long time, boolean customized, boolean showRemainingTime) { String profileName = MainApp.gs(R.string.noprofileselected); @@ -114,7 +119,7 @@ public class ProfileFunctions { return profileName; } - public boolean isProfileValid(String from) { + public boolean isProfileValid(@NotNull String from) { Profile profile = getProfile(); return profile != null && profile.isValid(from); } @@ -124,6 +129,12 @@ public class ProfileFunctions { return getProfile(System.currentTimeMillis()); } + @NotNull + public String getUnits() { + return getSystemUnits(); + } + + @NotNull public static String getSystemUnits() { return SP.getString(R.string.key_units, Constants.MGDL); } @@ -156,7 +167,8 @@ public class ProfileFunctions { return null; } - public static ProfileSwitch prepareProfileSwitch(final ProfileStore profileStore, final String profileName, final int duration, final int percentage, final int timeshift, long date) { + @NotNull + public ProfileSwitch prepareProfileSwitch(@NotNull final ProfileStore profileStore, @NotNull final String profileName, final int duration, final int percentage, final int timeShift, long date) { ProfileSwitch profileSwitch = new ProfileSwitch(); profileSwitch.date = date; profileSwitch.source = Source.USER; @@ -164,20 +176,20 @@ public class ProfileFunctions { profileSwitch.profileJson = profileStore.getSpecificProfile(profileName).getData().toString(); profileSwitch.profilePlugin = ConfigBuilderPlugin.getPlugin().getActiveProfileInterface().getClass().getName(); profileSwitch.durationInMinutes = duration; - profileSwitch.isCPP = percentage != 100 || timeshift != 0; - profileSwitch.timeshift = timeshift; + profileSwitch.isCPP = percentage != 100 || timeShift != 0; + profileSwitch.timeshift = timeShift; profileSwitch.percentage = percentage; return profileSwitch; } - public static void doProfileSwitch(final ProfileStore profileStore, final String profileName, final int duration, final int percentage, final int timeshift, final long date) { - ProfileSwitch profileSwitch = prepareProfileSwitch(profileStore, profileName, duration, percentage, timeshift, date); + public void doProfileSwitch(@NotNull final ProfileStore profileStore, @NotNull final String profileName, final int duration, final int percentage, final int timeShift, final long date) { + ProfileSwitch profileSwitch = prepareProfileSwitch(profileStore, profileName, duration, percentage, timeShift, date); TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch); if (percentage == 90 && duration == 10) SP.putBoolean(R.string.key_objectiveuseprofileswitch, true); } - public static void doProfileSwitch(final int duration, final int percentage, final int timeshift) { + public void doProfileSwitch(final int duration, final int percentage, final int timeShift) { ProfileSwitch profileSwitch = TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(System.currentTimeMillis()); if (profileSwitch != null) { profileSwitch = new ProfileSwitch(); @@ -187,8 +199,8 @@ public class ProfileFunctions { profileSwitch.profileJson = getInstance().getProfile().getData().toString(); profileSwitch.profilePlugin = ConfigBuilderPlugin.getPlugin().getActiveProfileInterface().getClass().getName(); profileSwitch.durationInMinutes = duration; - profileSwitch.isCPP = percentage != 100 || timeshift != 0; - profileSwitch.timeshift = timeshift; + profileSwitch.isCPP = percentage != 100 || timeShift != 0; + profileSwitch.timeshift = timeShift; profileSwitch.percentage = percentage; TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch); } else { 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 5143cdebc5..a6d29c70d2 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 @@ -157,7 +157,7 @@ class ActionsFragment : Fragment() { if (ConfigBuilderPlugin.getPlugin().activeProfileInterface?.profile != null) View.VISIBLE else View.GONE - if (ProfileFunctions.getInstance().profile == null) { + if (ProfileFunctions.getInstance().getProfile() == null) { actions_temptarget?.visibility = View.GONE actions_extendedbolus?.visibility = View.GONE actions_extendedbolus_cancel?.visibility = View.GONE diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitch.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitch.java index 63c923fdcf..b3741b7271 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitch.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitch.java @@ -98,7 +98,7 @@ public class ActionProfileSwitch extends Action { return; } - ProfileFunctions.doProfileSwitch(profileStore, profileName, 0, 100, 0, DateUtil.now()); + ProfileFunctions.getInstance().doProfileSwitch(profileStore, profileName, 0, 100, 0, DateUtil.now()); 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/actions/ActionProfileSwitchPercent.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchPercent.java index 23b54640a5..71cbed7173 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchPercent.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchPercent.java @@ -47,7 +47,7 @@ public class ActionProfileSwitchPercent extends Action { @Override public void doAction(Callback callback) { - ProfileFunctions.doProfileSwitch((int) duration.getValue(), (int) pct.getValue(), 0); + ProfileFunctions.getInstance().doProfileSwitch((int) duration.getValue(), (int) pct.getValue(), 0); 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/EditActionDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditActionDialog.kt index e738b7f94c..63a053f29f 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 @@ -44,11 +44,11 @@ class EditActionDialog : DialogFragmentWithDate() { return true } - override fun onSaveInstanceState(bundle: Bundle) { - super.onSaveInstanceState(bundle) + override fun onSaveInstanceState(savedInstanceState: Bundle) { + super.onSaveInstanceState(savedInstanceState) action?.let { - bundle.putInt("actionPosition", actionPosition) - bundle.putString("action", it.toJSON()) + savedInstanceState.putInt("actionPosition", actionPosition) + savedInstanceState.putString("action", it.toJSON()) } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/Dialogs/NewNSTreatmentDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/Dialogs/NewNSTreatmentDialog.java index 38ad5bb879..c4f70f40bf 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/Dialogs/NewNSTreatmentDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/Dialogs/NewNSTreatmentDialog.java @@ -704,7 +704,7 @@ public class NewNSTreatmentDialog extends AppCompatDialogFragment implements Vie void createNSTreatment(JSONObject data) { if (JsonHelper.safeGetString(data, "eventType", "").equals(CareportalEvent.PROFILESWITCH)) { - ProfileSwitch profileSwitch = ProfileFunctions.prepareProfileSwitch( + ProfileSwitch profileSwitch = ProfileFunctions.getInstance().prepareProfileSwitch( profileStore, JsonHelper.safeGetString(data, "profile"), JsonHelper.safeGetInt(data, "duration"), 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 87f7d832da..7dba406479 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 @@ -428,9 +428,15 @@ object SmsCommunicatorPlugin : PluginBase(PluginDescription() receivedSms.processed = true return } + val profileName = ProfileFunctions.getInstance().getProfileName() + if (profileName == null) { + sendSMS(Sms(receivedSms.phoneNumber, R.string.notconfigured)) + receivedSms.processed = true + return + } val list = store.getProfileList() if (splitted[1].toUpperCase(Locale.getDefault()) == "STATUS") { - sendSMS(Sms(receivedSms.phoneNumber, ProfileFunctions.getInstance().profileName)) + sendSMS(Sms(receivedSms.phoneNumber, profileName)) } else if (splitted[1].toUpperCase(Locale.getDefault()) == "LIST") { if (list.isEmpty()) sendSMS(Sms(receivedSms.phoneNumber, R.string.invalidprofile)) else { @@ -459,7 +465,7 @@ object SmsCommunicatorPlugin : PluginBase(PluginDescription() val finalPercentage = percentage messageToConfirm = AuthRequest(this, receivedSms, reply, passCode, object : SmsAction(list[pindex - 1] as String, finalPercentage) { override fun run() { - ProfileFunctions.doProfileSwitch(store, list[pindex - 1] as String, 0, finalPercentage, 0, DateUtil.now()) + ProfileFunctions.getInstance().doProfileSwitch(store, list[pindex - 1] as String, 0, finalPercentage, 0, DateUtil.now()) sendSMS(Sms(receivedSms.phoneNumber, R.string.profileswitchcreated)) } }) @@ -495,7 +501,7 @@ object SmsCommunicatorPlugin : PluginBase(PluginDescription() var tempBasalPct = SafeParse.stringToInt(StringUtils.removeEnd(splitted[1], "%")) var duration = 30 if (splitted.size > 2) duration = SafeParse.stringToInt(splitted[2]) - val profile = ProfileFunctions.getInstance().profile + val profile = ProfileFunctions.getInstance().getProfile() if (profile == null) sendSMS(Sms(receivedSms.phoneNumber, R.string.noprofile)) else if (tempBasalPct == 0 && splitted[1] != "0%") sendSMS(Sms(receivedSms.phoneNumber, R.string.wrongformat)) else if (duration == 0) sendSMS(Sms(receivedSms.phoneNumber, R.string.wrongformat)) @@ -527,7 +533,7 @@ object SmsCommunicatorPlugin : PluginBase(PluginDescription() var tempBasal = SafeParse.stringToDouble(splitted[1]) var duration = 30 if (splitted.size > 2) duration = SafeParse.stringToInt(splitted[2]) - val profile = ProfileFunctions.getInstance().profile + val profile = ProfileFunctions.getInstance().getProfile() if (profile == null) sendSMS(Sms(receivedSms.phoneNumber, R.string.noprofile)) else if (tempBasal == 0.0 && splitted[1] != "0") sendSMS(Sms(receivedSms.phoneNumber, R.string.wrongformat)) else if (duration == 0) sendSMS(Sms(receivedSms.phoneNumber, R.string.wrongformat)) @@ -644,7 +650,7 @@ object SmsCommunicatorPlugin : PluginBase(PluginDescription() replyText += "\n" + ConfigBuilderPlugin.getPlugin().activePump?.shortStatus(true) lastRemoteBolusTime = DateUtil.now() if (isMeal) { - ProfileFunctions.getInstance().profile?.let { currentProfile -> + ProfileFunctions.getInstance().getProfile()?.let { currentProfile -> var eatingSoonTTDuration = SP.getInt(R.string.key_eatingsoon_duration, Constants.defaultEatingSoonTTDuration) eatingSoonTTDuration = if (eatingSoonTTDuration > 0) eatingSoonTTDuration 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 cae9817a55..d25d42bbe2 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 @@ -679,7 +679,7 @@ public class ActionStringHandler { //send profile to pumpe new NewNSTreatmentDialog(); //init - ProfileFunctions.doProfileSwitch(0, percentage, timeshift); + ProfileFunctions.getInstance().doProfileSwitch(0, percentage, timeshift); } private static void generateTempTarget(int duration, double low, double high) { 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 6c111faf3f..5183007a64 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 @@ -42,7 +42,7 @@ class NSProfileFragment : Fragment() { activity?.let { activity -> OKDialog.showConfirmation(activity, MainApp.gs(R.string.nsprofile), MainApp.gs(R.string.activate_profile) + ": " + name + " ?", Runnable { - ProfileFunctions.doProfileSwitch(store, name, 0, 100, 0, DateUtil.now()) + ProfileFunctions.getInstance().doProfileSwitch(store, name, 0, 100, 0, DateUtil.now()) }) } } @@ -121,7 +121,7 @@ class NSProfileFragment : Fragment() { nsprofile_spinner.adapter = adapter // set selected to actual profile for (p in profileList.indices) { - if (profileList[p] == ProfileFunctions.getInstance().profileName) + if (profileList[p] == ProfileFunctions.getInstance().getProfileName()) nsprofile_spinner.setSelection(p) } profileview_noprofile.visibility = View.GONE 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 7ca4f962ae..e338b02f2b 100644 --- a/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.kt +++ b/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.kt @@ -90,7 +90,7 @@ class KeepAliveReceiver : BroadcastReceiver() { private fun checkPump() { val pump = ConfigBuilderPlugin.getPlugin().activePump - val profile = ProfileFunctions.getInstance().profile + val profile = ProfileFunctions.getInstance().getProfile() if (pump != null && profile != null) { val lastConnection = pump.lastDataTime() val isStatusOutdated = lastConnection + STATUS_UPDATE_FREQUENCY < System.currentTimeMillis() 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 6d71a80ba1..df1a0586de 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/BolusWizard.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/BolusWizard.kt @@ -262,7 +262,7 @@ class BolusWizard @JvmOverloads constructor(val profile: Profile, } fun confirmAndExecute(context: Context) { - val profile = ProfileFunctions.getInstance().profile ?: return + val profile = ProfileFunctions.getInstance().getProfile() ?: return val pump = ConfigBuilderPlugin.getPlugin().activePump ?: return if (calculatedTotalInsulin > 0.0 || carbs > 0.0) { diff --git a/app/src/main/java/info/nightscout/androidaps/utils/OKDialog.kt b/app/src/main/java/info/nightscout/androidaps/utils/OKDialog.kt index 1d22c380ca..830053bef0 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/OKDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/OKDialog.kt @@ -62,13 +62,11 @@ object OKDialog { } @JvmStatic - @JvmOverloads fun showConfirmation(activity: Activity, message: String, ok: Runnable?) { showConfirmation(activity, MainApp.gs(R.string.confirmation), message, ok, null) } @JvmStatic - @JvmOverloads fun showConfirmation(activity: Activity, message: Spanned, ok: Runnable?) { showConfirmation(activity, MainApp.gs(R.string.confirmation), message, ok, null) }