From 91000dc1bb8c7444aebef64eb365f43190f2d094 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 22 Dec 2019 21:37:26 +0100 Subject: [PATCH] Confirmation dialogs cleanup --- .../nightscout/androidaps/MainActivity.java | 7 +- .../activities/PreferencesActivity.java | 2 +- .../activities/SingleFragmentActivity.java | 60 ------ .../activities/SingleFragmentActivity.kt | 53 +++++ .../androidaps/activities/StatsActivity.kt | 4 +- .../androidaps/dialogs/CalibrationDialog.kt | 9 +- .../androidaps/dialogs/CarbsDialog.kt | 8 +- .../androidaps/dialogs/CareDialog.kt | 5 +- .../androidaps/dialogs/ExtendedBolusDialog.kt | 5 +- .../androidaps/dialogs/FillDialog.kt | 8 +- .../androidaps/dialogs/InsulinDialog.kt | 8 +- .../androidaps/dialogs/ProfileSwitchDialog.kt | 4 +- .../androidaps/dialogs/TempBasalDialog.kt | 9 +- .../androidaps/dialogs/TempTargetDialog.kt | 4 +- .../androidaps/dialogs/TreatmentDialog.kt | 9 +- .../androidaps/interfaces/PluginBase.java | 26 +-- .../objectives/ObjectivesFragment.kt | 27 +-- .../objectives/ObjectivesPlugin.kt | 4 +- .../triggers/TriggerTempTarget.java | 4 +- .../Dialogs/NewNSTreatmentDialog.java | 30 +-- .../plugins/general/food/FoodFragment.java | 112 ++++------ .../maintenance/ImportExportPrefs.java | 147 ++++++------- .../maintenance/MaintenanceFragment.java | 43 +--- .../general/nsclient/NSClientFragment.java | 21 +- .../general/overview/OverviewFragment.java | 42 ++-- .../general/tidepool/comm/TidepoolUploader.kt | 6 +- .../profile/local/LocalProfileFragment.kt | 21 +- .../profile/local/LocalProfilePlugin.kt | 16 +- .../plugins/profile/ns/NSProfileFragment.kt | 20 +- .../pump/common/utils/LocationHelper.java | 18 +- .../plugins/source/BGSourceFragment.java | 66 ++---- .../fragments/TreatmentsBolusFragment.java | 165 ++++++-------- .../TreatmentsCareportalFragment.java | 120 ++++------- .../TreatmentsExtendedBolusesFragment.java | 72 +++---- .../TreatmentsProfileSwitchFragment.kt | 57 ++--- .../TreatmentsTempTargetFragment.java | 107 ++++----- .../TreatmentsTemporaryBasalsFragment.java | 87 ++++---- .../androidaps/setupwizard/SWDefinition.java | 2 +- .../setupwizard/SetupWizardActivity.java | 20 +- .../androidaps/utils/BolusWizard.kt | 138 ++++++------ .../nightscout/androidaps/utils/OKDialog.java | 127 ----------- .../nightscout/androidaps/utils/OKDialog.kt | 203 ++++++++++++++++++ .../androidaps/utils/PasswordProtection.java | 46 ++-- .../androidaps/utils/XdripCalibrations.java | 16 +- .../main/res/layout/treatments_fragment.xml | 8 +- app/src/main/res/values/strings.xml | 15 +- 46 files changed, 867 insertions(+), 1114 deletions(-) delete mode 100644 app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.java create mode 100644 app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.kt delete mode 100644 app/src/main/java/info/nightscout/androidaps/utils/OKDialog.java create mode 100644 app/src/main/java/info/nightscout/androidaps/utils/OKDialog.kt diff --git a/app/src/main/java/info/nightscout/androidaps/MainActivity.java b/app/src/main/java/info/nightscout/androidaps/MainActivity.java index c0ebb847b3..ff33ec930f 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/MainActivity.java @@ -42,7 +42,6 @@ import info.nightscout.androidaps.activities.NoSplashAppCompatActivity; import info.nightscout.androidaps.activities.PreferencesActivity; import info.nightscout.androidaps.activities.SingleFragmentActivity; import info.nightscout.androidaps.activities.StatsActivity; -import info.nightscout.androidaps.activities.SurveyActivity; import info.nightscout.androidaps.events.EventAppExit; import info.nightscout.androidaps.events.EventPreferenceChange; import info.nightscout.androidaps.events.EventRebuildTabs; @@ -58,6 +57,7 @@ import info.nightscout.androidaps.tabs.TabPageAdapter; 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.PasswordProtection; import info.nightscout.androidaps.utils.SP; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -239,10 +239,7 @@ public class MainActivity extends NoSplashAppCompatActivity { switch (requestCode) { case AndroidPermission.CASE_STORAGE: //show dialog after permission is granted - AlertDialog.Builder alert = new AlertDialog.Builder(this); - alert.setMessage(R.string.alert_dialog_storage_permission_text); - alert.setPositiveButton(R.string.ok, null); - alert.show(); + OKDialog.show(this, "", MainApp.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/activities/PreferencesActivity.java b/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java index c0dbf43527..328f143836 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.java @@ -89,7 +89,7 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre return; } if (key.equals(MainApp.gs(R.string.key_openapsama_useautosens)) && SP.getBoolean(R.string.key_openapsama_useautosens, false)) { - OKDialog.show(this, MainApp.gs(R.string.configbuilder_sensitivity), MainApp.gs(R.string.sensitivity_warning), null); + OKDialog.show(this, MainApp.gs(R.string.configbuilder_sensitivity), MainApp.gs(R.string.sensitivity_warning)); } updatePrefSummary(myPreferenceFragment.findPreference(key)); } diff --git a/app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.java b/app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.java deleted file mode 100644 index 688ba82c6a..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.java +++ /dev/null @@ -1,60 +0,0 @@ -package info.nightscout.androidaps.activities; - -import android.content.Intent; -import android.os.Bundle; -import android.view.Menu; -import android.view.MenuItem; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.fragment.app.Fragment; - -import info.nightscout.androidaps.MainApp; -import info.nightscout.androidaps.R; -import info.nightscout.androidaps.interfaces.PluginBase; -import info.nightscout.androidaps.utils.PasswordProtection; - -public class SingleFragmentActivity extends AppCompatActivity { - - private PluginBase plugin; - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_single_fragment); - - this.plugin = MainApp.getPluginsList().get(getIntent().getIntExtra("plugin", -1)); - setTitle(plugin.getName()); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - getSupportActionBar().setDisplayShowHomeEnabled(true); - - if (savedInstanceState == null) { - getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout, - Fragment.instantiate(this, plugin.pluginDescription.getFragmentClass())).commit(); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - return true; - } - else if (item.getItemId() == R.id.nav_plugin_preferences) { - PasswordProtection.QueryPassword(this, R.string.settings_password, "settings_password", () -> { - Intent i = new Intent(this, PreferencesActivity.class); - i.putExtra("id", plugin.getPreferencesId()); - startActivity(i); - }, null); - return true; - } - return false; - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - if (plugin.getPreferencesId() != -1) - getMenuInflater().inflate(R.menu.menu_single_fragment, menu); - return super.onCreateOptionsMenu(menu); - } -} diff --git a/app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.kt new file mode 100644 index 0000000000..3bf329debe --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.kt @@ -0,0 +1,53 @@ +package info.nightscout.androidaps.activities + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import androidx.appcompat.app.AppCompatActivity +import info.nightscout.androidaps.MainApp +import info.nightscout.androidaps.R +import info.nightscout.androidaps.interfaces.PluginBase +import info.nightscout.androidaps.utils.LocaleHelper +import info.nightscout.androidaps.utils.PasswordProtection + +class SingleFragmentActivity : AppCompatActivity() { + private var plugin: PluginBase? = null + public override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_single_fragment) + plugin = MainApp.getPluginsList()[intent.getIntExtra("plugin", -1)] + title = plugin?.name + supportActionBar?.setDisplayHomeAsUpEnabled(true) + supportActionBar?.setDisplayShowHomeEnabled(true) + if (savedInstanceState == null) { + supportFragmentManager.beginTransaction().replace(R.id.frame_layout, + supportFragmentManager.fragmentFactory.instantiate(ClassLoader.getSystemClassLoader(), plugin?.pluginDescription?.fragmentClass!!)).commit() + } + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + if (item.itemId == android.R.id.home) { + finish() + return true + } else if (item.itemId == R.id.nav_plugin_preferences) { + PasswordProtection.QueryPassword(this, R.string.settings_password, "settings_password", Runnable { + val i = Intent(this, PreferencesActivity::class.java) + i.putExtra("id", plugin?.preferencesId) + startActivity(i) + }, null) + return true + } + return false + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + if (plugin?.preferencesId != -1) menuInflater.inflate(R.menu.menu_single_fragment, menu) + return super.onCreateOptionsMenu(menu) + } + + public override fun attachBaseContext(newBase: Context) { + super.attachBaseContext(LocaleHelper.wrap(newBase)) + } +} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/activities/StatsActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/StatsActivity.kt index e5feb2e0ed..b16f57fb02 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/StatsActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/activities/StatsActivity.kt @@ -22,10 +22,10 @@ class StatsActivity : NoSplashAppCompatActivity() { ok.setOnClickListener { finish() } stats_reset.setOnClickListener { - OKDialog.showConfirmation(this, MainApp.gs(R.string.doyouwantresetstats)) { + OKDialog.showConfirmation(this, MainApp.gs(R.string.doyouwantresetstats), Runnable { ActivityMonitor.reset() recreate() - } + }) } } } diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt index f3a5c636ae..949e4e5fef 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/CalibrationDialog.kt @@ -52,16 +52,17 @@ class CalibrationDialog : DialogFragmentWithDate() { val unitLabel = if (units == Constants.MMOL) MainApp.gs(R.string.mmol) else MainApp.gs(R.string.mgdl) val actions: LinkedList = LinkedList() val bg = overview_calibration_bg.value - actions.add("" + MainApp.gs(R.string.overview_calibration) + "") actions.add(MainApp.gs(R.string.treatments_wizard_bg_label) + ": " + Profile.toCurrentUnitsString(bg) + " " + unitLabel) if (bg > 0) { activity?.let { activity -> - OKDialog.showConfirmation(activity, HtmlHelper.fromHtml(Joiner.on("
").join(actions))) { + OKDialog.showConfirmation(activity, MainApp.gs(R.string.overview_calibration), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), Runnable { XdripCalibrations.confirmAndSendCalibration(bg, context) - } + }) } } else - OKDialog.show(activity, "", MainApp.gs(R.string.no_action_selected), null) + activity?.let { activity -> + OKDialog.show(activity, MainApp.gs(R.string.overview_calibration), MainApp.gs(R.string.no_action_selected)) + } return true } } \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt index f4ba601498..4e0e2980e8 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/CarbsDialog.kt @@ -172,7 +172,7 @@ class CarbsDialog : DialogFragmentWithDate() { if (carbsAfterConstraints > 0 || activitySelected || eatingSoonSelected || hypoSelected) { activity?.let { activity -> - OKDialog.showConfirmation(activity, HtmlHelper.fromHtml(Joiner.on("
").join(actions))) { + OKDialog.showConfirmation(activity, MainApp.gs(R.string.carbs), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), Runnable { if (activitySelected) { val tempTarget = TempTarget() .date(System.currentTimeMillis()) @@ -209,10 +209,12 @@ class CarbsDialog : DialogFragmentWithDate() { NSUpload.uploadEvent(CareportalEvent.NOTE, DateUtil.now() - 2000, MainApp.gs(R.string.generated_ecarbs_note, carbsAfterConstraints, duration, timeOffset)) } } - } + }, null) } } else - OKDialog.show(activity, "", MainApp.gs(R.string.no_action_selected), null) + activity?.let { activity -> + OKDialog.show(activity, MainApp.gs(R.string.carbs), MainApp.gs(R.string.no_action_selected)) + } return true } } \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/CareDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/CareDialog.kt index 20bf8795bf..946a3fec5b 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/CareDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/CareDialog.kt @@ -109,7 +109,6 @@ class CareDialog : DialogFragmentWithDate() { val json = JSONObject() val actions: LinkedList = LinkedList() - actions.add("" + MainApp.gs(event) + "") if (options == EventType.BGCHECK) { val type = when { @@ -141,10 +140,10 @@ class CareDialog : DialogFragmentWithDate() { json.put("enteredBy", enteredBy) activity?.let { activity -> - OKDialog.showConfirmation(activity, HtmlHelper.fromHtml(Joiner.on("
").join(actions))) { + OKDialog.showConfirmation(activity, MainApp.gs(event), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), Runnable { MainApp.getDbHelper().createCareportalEventFromJsonIfNotExists(json) NSUpload.uploadCareportalEntryToNS(json) - } + }, null) } return true } diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt index 2fe45d8cb7..a717e79b49 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/ExtendedBolusDialog.kt @@ -55,7 +55,6 @@ class ExtendedBolusDialog : DialogFragmentWithDate() { val insulin = SafeParse.stringToDouble(actions_extendedbolus_insulin.text) val durationInMinutes = SafeParse.stringToInt(actions_extendedbolus_duration.text) val actions: LinkedList = LinkedList() - actions.add("" + MainApp.gs(R.string.setextendedbolusquestion) + "") val insulinAfterConstraint = MainApp.getConstraintChecker().applyExtendedBolusConstraints(Constraint(insulin)).value() actions.add(MainApp.gs(R.string.formatinsulinunits, insulinAfterConstraint)) actions.add(MainApp.gs(R.string.duration) + ": " + MainApp.gs(R.string.format_mins, durationInMinutes)) @@ -63,7 +62,7 @@ class ExtendedBolusDialog : DialogFragmentWithDate() { actions.add("" + MainApp.gs(R.string.constraintapllied) + "") activity?.let { activity -> - OKDialog.showConfirmation(activity, HtmlHelper.fromHtml(Joiner.on("
").join(actions))) { + OKDialog.showConfirmation(activity, MainApp.gs(R.string.extended_bolus), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), Runnable { ConfigBuilderPlugin.getPlugin().commandQueue.extendedBolus(insulinAfterConstraint, durationInMinutes, object : Callback() { override fun run() { if (!result.success) { @@ -76,7 +75,7 @@ class ExtendedBolusDialog : DialogFragmentWithDate() { } } }) - } + }, null) } return true } diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/FillDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/FillDialog.kt index 6e83407989..8d55df9bc1 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/FillDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/FillDialog.kt @@ -96,7 +96,7 @@ class FillDialog : DialogFragmentWithDate() { if (insulinAfterConstraints > 0 || fill_catheter_change.isChecked || fill_cartridge_change.isChecked) { activity?.let { activity -> - OKDialog.showConfirmation(activity, HtmlHelper.fromHtml(Joiner.on("
").join(actions))) { + OKDialog.showConfirmation(activity, MainApp.gs(R.string.primefill), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), Runnable { if (insulinAfterConstraints > 0) { val detailedBolusInfo = DetailedBolusInfo() detailedBolusInfo.insulin = insulinAfterConstraints @@ -119,10 +119,12 @@ class FillDialog : DialogFragmentWithDate() { } if (siteChange) NSUpload.uploadEvent(CareportalEvent.SITECHANGE, eventTime, notes) if (insulinChange) NSUpload.uploadEvent(CareportalEvent.INSULINCHANGE, eventTime + 1000, notes) - } + }, null) } } else { - OKDialog.show(activity, "", MainApp.gs(R.string.no_action_selected), null) + activity?.let { activity -> + OKDialog.show(activity, MainApp.gs(R.string.primefill), MainApp.gs(R.string.no_action_selected)) + } } dismiss() return true diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt index a87f022311..d6f64d87f1 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/InsulinDialog.kt @@ -145,7 +145,7 @@ class InsulinDialog : DialogFragmentWithDate() { if (insulinAfterConstraints > 0 || eatingSoonChecked) { activity?.let { activity -> - OKDialog.showConfirmation(activity, HtmlHelper.fromHtml(Joiner.on("
").join(actions))) { + OKDialog.showConfirmation(activity, MainApp.gs(R.string.bolus), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), Runnable { if (eatingSoonChecked) { val tempTarget = TempTarget() .date(System.currentTimeMillis()) @@ -182,10 +182,12 @@ class InsulinDialog : DialogFragmentWithDate() { }) } } - } + }) } } else - OKDialog.show(activity, "", MainApp.gs(R.string.no_action_selected), null) + activity?.let { activity -> + OKDialog.show(activity, MainApp.gs(R.string.bolus), MainApp.gs(R.string.no_action_selected)) + } return true } } \ No newline at end of file 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 f5cb7e0d9c..5df248593c 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/ProfileSwitchDialog.kt @@ -96,9 +96,9 @@ class ProfileSwitchDialog : DialogFragmentWithDate() { actions.add(MainApp.gs(R.string.time) + ": " + DateUtil.dateAndTimeString(eventTime)) activity?.let { activity -> - OKDialog.showConfirmation(activity, HtmlHelper.fromHtml(Joiner.on("
").join(actions))) { + 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) - } + }) } 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 6781c7dce2..dc31349650 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/TempBasalDialog.kt @@ -75,23 +75,22 @@ class TempBasalDialog : DialogFragmentWithDate() { val durationInMinutes = SafeParse.stringToInt(actions_tempbasal_duration.text) val profile = ProfileFunctions.getInstance().profile ?: return false val actions: LinkedList = LinkedList() - actions.add("" + MainApp.gs(R.string.setbasalquestion) + "") if (isPercentPump) { val basalPercentInput = SafeParse.stringToInt(actions_tempbasal_basalpercentinput.text) percent = MainApp.getConstraintChecker().applyBasalPercentConstraints(Constraint(basalPercentInput), profile).value() - actions.add("$percent%") + actions.add(MainApp.gs(R.string.pump_tempbasal_label)+ ": $percent%") actions.add(MainApp.gs(R.string.duration) + ": " + MainApp.gs(R.string.format_mins, durationInMinutes)) if (percent != basalPercentInput) actions.add(MainApp.gs(R.string.constraintapllied)) } else { val basalAbsoluteInput = SafeParse.stringToDouble(actions_tempbasal_basalabsoluteinput.text) absolute = MainApp.getConstraintChecker().applyBasalConstraints(Constraint(basalAbsoluteInput), profile).value() - actions.add(MainApp.gs(R.string.pump_basebasalrate, absolute)) + actions.add(MainApp.gs(R.string.pump_tempbasal_label)+ ": " + MainApp.gs(R.string.pump_basebasalrate, absolute)) actions.add(MainApp.gs(R.string.duration) + ": " + MainApp.gs(R.string.format_mins, durationInMinutes)) if (abs(absolute - basalAbsoluteInput) > 0.01) actions.add("" + MainApp.gs(R.string.constraintapllied) + "") } activity?.let { activity -> - OKDialog.showConfirmation(activity, HtmlHelper.fromHtml(Joiner.on("
").join(actions))) { + OKDialog.showConfirmation(activity, MainApp.gs(R.string.pump_tempbasal_label), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), Runnable { val callback: Callback = object : Callback() { override fun run() { if (!result.success) { @@ -109,7 +108,7 @@ class TempBasalDialog : DialogFragmentWithDate() { } else { ConfigBuilderPlugin.getPlugin().commandQueue.tempBasalAbsolute(absolute, durationInMinutes, true, profile, callback) } - } + }) } return true } diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt index 53cc580dc7..5408105a71 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/TempTargetDialog.kt @@ -126,7 +126,7 @@ class TempTargetDialog : DialogFragmentWithDate() { actions.add(MainApp.gs(R.string.time) + ": " + DateUtil.dateAndTimeString(eventTime)) activity?.let { activity -> - OKDialog.showConfirmation(activity, HtmlHelper.fromHtml(Joiner.on("
").join(actions))) { + OKDialog.showConfirmation(activity, MainApp.gs(R.string.careportal_temporarytarget), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), Runnable { if (target == 0.0 || duration == 0.0) { val tempTarget = TempTarget() .date(eventTime) @@ -145,7 +145,7 @@ class TempTargetDialog : DialogFragmentWithDate() { TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget) } if (duration == 10.0) SP.putBoolean(R.string.key_objectiveusetemptarget, true) - } + }) } return true } diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt index bc12b1804d..8667befaf2 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/TreatmentDialog.kt @@ -84,7 +84,6 @@ class TreatmentDialog : DialogFragmentWithDate() { val insulinAfterConstraints = MainApp.getConstraintChecker().applyBolusConstraints(Constraint(insulin)).value() val carbsAfterConstraints = MainApp.getConstraintChecker().applyCarbsConstraints(Constraint(carbs)).value() - actions.add("" + MainApp.gs(R.string.entertreatmentquestion) + "") if (insulinAfterConstraints > 0) { actions.add(MainApp.gs(R.string.bolus) + ": " + "" + DecimalFormatter.toPumpSupportedBolus(insulinAfterConstraints) + MainApp.gs(R.string.insulin_unit_shortname) + "") if (recordOnlyChecked) @@ -99,7 +98,7 @@ class TreatmentDialog : DialogFragmentWithDate() { } if (insulinAfterConstraints > 0 || carbsAfterConstraints > 0) { activity?.let { activity -> - OKDialog.showConfirmation(activity, HtmlHelper.fromHtml(Joiner.on("
").join(actions))) { + OKDialog.showConfirmation(activity, MainApp.gs(R.string.overview_treatment_label), HtmlHelper.fromHtml(Joiner.on("
").join(actions)), Runnable { val detailedBolusInfo = DetailedBolusInfo() if (insulinAfterConstraints == 0.0) detailedBolusInfo.eventType = CareportalEvent.CARBCORRECTION if (carbsAfterConstraints == 0) detailedBolusInfo.eventType = CareportalEvent.CORRECTIONBOLUS @@ -122,10 +121,12 @@ class TreatmentDialog : DialogFragmentWithDate() { }) } else TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false) - } + }) } } else - OKDialog.show(activity, "", MainApp.gs(R.string.no_action_selected), null) + activity?.let { activity -> + OKDialog.show(activity, MainApp.gs(R.string.overview_treatment_label), MainApp.gs(R.string.no_action_selected)) + } return true } } \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.java b/app/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.java index 8de88e1e0e..e236125255 100644 --- a/app/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.java +++ b/app/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.java @@ -4,7 +4,6 @@ import android.os.SystemClock; import android.preference.Preference; import android.preference.PreferenceFragment; -import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; import org.jetbrains.annotations.NotNull; @@ -20,6 +19,7 @@ import info.nightscout.androidaps.plugins.bus.RxBus; import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.configBuilder.EventConfigBuilderUpdateGui; import info.nightscout.androidaps.queue.CommandQueue; +import info.nightscout.androidaps.utils.OKDialog; import info.nightscout.androidaps.utils.SP; /** @@ -58,20 +58,16 @@ public abstract class PluginBase { if (allowHardwarePump || activity == null) { performPluginSwitch(newState, type); } else { - AlertDialog.Builder builder = new AlertDialog.Builder(activity); - builder.setMessage(R.string.allow_hardware_pump_text) - .setPositiveButton(R.string.yes, (dialog, id) -> { - performPluginSwitch(newState, type); - SP.putBoolean("allow_hardware_pump", true); - if (L.isEnabled(L.PUMP)) - log.debug("First time HW pump allowed!"); - }) - .setNegativeButton(R.string.cancel, (dialog, id) -> { - RxBus.INSTANCE.send(new EventConfigBuilderUpdateGui()); - if (L.isEnabled(L.PUMP)) - log.debug("User does not allow switching to HW pump!"); - }); - builder.create().show(); + OKDialog.showConfirmation(activity, MainApp.gs(R.string.allow_hardware_pump_text), () -> { + performPluginSwitch(newState, type); + SP.putBoolean("allow_hardware_pump", true); + if (L.isEnabled(L.PUMP)) + log.debug("First time HW pump allowed!"); + }, () -> { + RxBus.INSTANCE.send(new EventConfigBuilderUpdateGui()); + if (L.isEnabled(L.PUMP)) + log.debug("User does not allow switching to HW pump!"); + }); } } else { performPluginSwitch(newState, type); 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 9864f875e4..7f004b7f02 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 @@ -72,13 +72,13 @@ class ObjectivesFragment : Fragment() { override fun onResume() { super.onResume() disposable.add(RxBus - .toObservable(EventObjectivesUpdateGui::class.java) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ - objectives_recyclerview.adapter?.notifyDataSetChanged() - }, { - FabricPrivacy.logException(it) - }) + .toObservable(EventObjectivesUpdateGui::class.java) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + objectives_recyclerview.adapter?.notifyDataSetChanged() + }, { + FabricPrivacy.logException(it) + }) ) } @@ -285,11 +285,13 @@ class ObjectivesFragment : Fragment() { }.start() } holder.unStart.setOnClickListener { - OKDialog.showConfirmation(activity, MainApp.gs(R.string.doyouwantresetstart)) { - objective.startedOn = 0 - scrollToCurrentObjective() - RxBus.send(EventObjectivesUpdateGui()) - RxBus.send(EventSWUpdate(false)) + activity?.let { activity -> + OKDialog.showConfirmation(activity, MainApp.gs(R.string.objectives), MainApp.gs(R.string.doyouwantresetstart), Runnable { + objective.startedOn = 0 + scrollToCurrentObjective() + RxBus.send(EventObjectivesUpdateGui()) + RxBus.send(EventSWUpdate(false)) + }) } } holder.unFinish.setOnClickListener { @@ -320,7 +322,6 @@ class ObjectivesFragment : Fragment() { } } - override fun getItemCount(): Int { return ObjectivesPlugin.objectives.size } 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 f8b0ca26ec..ebae80150c 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 @@ -122,9 +122,9 @@ object ObjectivesPlugin : PluginBase(PluginDescription() SP.putLong("Objectives_" + "smb" + "_started", DateUtil.now()) SP.putLong("Objectives_" + "smb" + "_accomplished", DateUtil.now()) setupObjectives() - OKDialog.show(activity, "", MainApp.gs(R.string.codeaccepted), null) + OKDialog.show(activity, MainApp.gs(R.string.objectives), MainApp.gs(R.string.codeaccepted)) } else { - OKDialog.show(activity, "", MainApp.gs(R.string.codeinvalid), null) + OKDialog.show(activity, MainApp.gs(R.string.objectives), MainApp.gs(R.string.codeinvalid)) } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTarget.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTarget.java index f45efdf4a4..a5fc6ba092 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTarget.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTempTarget.java @@ -93,7 +93,7 @@ public class TriggerTempTarget extends Trigger { @Override public int friendlyName() { - return R.string.temptarget; + return R.string.careportal_temporarytarget; } @Override @@ -124,7 +124,7 @@ public class TriggerTempTarget extends Trigger { @Override public void generateDialog(LinearLayout root, FragmentManager fragmentManager) { new LayoutBuilder() - .add(new StaticLabel(R.string.temptarget)) + .add(new StaticLabel(R.string.careportal_temporarytarget)) .add(comparator) .build(root); } 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 6411687d6e..38ad5bb879 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 @@ -1,7 +1,6 @@ package info.nightscout.androidaps.plugins.general.careportal.Dialogs; -import android.content.Context; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; @@ -20,7 +19,6 @@ import android.widget.RadioButton; import android.widget.Spinner; import android.widget.TextView; -import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatDialogFragment; import androidx.fragment.app.DialogFragment; @@ -58,6 +56,7 @@ import info.nightscout.androidaps.utils.DefaultValueHelper; import info.nightscout.androidaps.utils.HardLimits; import info.nightscout.androidaps.utils.JsonHelper; import info.nightscout.androidaps.utils.NumberPicker; +import info.nightscout.androidaps.utils.OKDialog; import info.nightscout.androidaps.utils.SP; import info.nightscout.androidaps.utils.SafeParse; import info.nightscout.androidaps.utils.Translator; @@ -595,12 +594,12 @@ public class NewNSTreatmentDialog extends AppCompatDialogFragment implements Vie String buildConfirmText(JSONObject data) { String ret = ""; - if (data.has("eventType")) { - ret += MainApp.gs(R.string.careportal_newnstreatment_eventtype); - ret += ": "; - ret += Translator.translate(JsonHelper.safeGetString(data, "eventType", "")); - ret += "\n"; - } +// if (data.has("eventType")) { +// ret += MainApp.gs(R.string.careportal_newnstreatment_eventtype); +// ret += ": "; +// ret += Translator.translate(JsonHelper.safeGetString(data, "eventType", "")); +// ret += "\n"; +// } if (data.has("glucose")) { ret += MainApp.gs(R.string.treatments_wizard_bg_label); ret += ": "; @@ -697,18 +696,9 @@ public class NewNSTreatmentDialog extends AppCompatDialogFragment implements Vie return ret; } - void confirmNSTreatmentCreation() { - Context context = getContext(); - if (context != null) { - final JSONObject data = gatherData(); - final String confirmText = buildConfirmText(data); - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(confirmText); - builder.setPositiveButton(MainApp.gs(R.string.ok), (dialog, id) -> createNSTreatment(data)); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - } + private void confirmNSTreatmentCreation() { + final JSONObject data = gatherData(); + OKDialog.showConfirmation(getContext(), Translator.translate(JsonHelper.safeGetString(data, "eventType", MainApp.gs(R.string.overview_treatment_label))), buildConfirmText(data), () -> createNSTreatment(data)); } 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 997c6b0ba9..074310a8dd 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 @@ -1,6 +1,5 @@ package info.nightscout.androidaps.plugins.general.food; -import android.content.DialogInterface; import android.graphics.Paint; import android.os.Bundle; import android.text.Editable; @@ -14,14 +13,11 @@ import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; -import androidx.appcompat.app.AlertDialog; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -33,6 +29,7 @@ import info.nightscout.androidaps.events.EventFoodDatabaseChanged; import info.nightscout.androidaps.plugins.bus.RxBus; import info.nightscout.androidaps.plugins.general.nsclient.NSUpload; import info.nightscout.androidaps.utils.FabricPrivacy; +import info.nightscout.androidaps.utils.OKDialog; import info.nightscout.androidaps.utils.SpinnerHelper; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; @@ -42,43 +39,36 @@ import io.reactivex.disposables.CompositeDisposable; */ public class FoodFragment extends Fragment { - private static Logger log = LoggerFactory.getLogger(FoodFragment.class); private CompositeDisposable disposable = new CompositeDisposable(); - EditText filter; - ImageView clearFilter; - SpinnerHelper category; - SpinnerHelper subcategory; - RecyclerView recyclerView; + private EditText filter; + private SpinnerHelper category; + private SpinnerHelper subcategory; + private RecyclerView recyclerView; - List unfiltered; - List filtered; - ArrayList categories; - ArrayList subcategories; + private List unfiltered; + private List filtered; - final String EMPTY = MainApp.gs(R.string.none); + private final String EMPTY = MainApp.gs(R.string.none); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.food_fragment, container, false); - filter = (EditText) view.findViewById(R.id.food_filter); - clearFilter = (ImageView) view.findViewById(R.id.food_clearfilter); + filter = view.findViewById(R.id.food_filter); + ImageView clearFilter = view.findViewById(R.id.food_clearfilter); category = new SpinnerHelper(view.findViewById(R.id.food_category)); subcategory = new SpinnerHelper(view.findViewById(R.id.food_subcategory)); - recyclerView = (RecyclerView) view.findViewById(R.id.food_recyclerview); + recyclerView = view.findViewById(R.id.food_recyclerview); recyclerView.setHasFixedSize(true); LinearLayoutManager llm = new LinearLayoutManager(view.getContext()); recyclerView.setLayoutManager(llm); - clearFilter.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - filter.setText(""); - category.setSelection(0); - subcategory.setSelection(0); - filterData(); - } + clearFilter.setOnClickListener(v -> { + filter.setText(""); + category.setSelection(0); + subcategory.setSelection(0); + filterData(); }); category.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -149,11 +139,11 @@ public class FoodFragment extends Fragment { disposable.clear(); } - void loadData() { + private void loadData() { unfiltered = FoodPlugin.getPlugin().getService().getFoodData(); } - void fillCategories() { + private void fillCategories() { Set catSet = new HashSet<>(); for (Food f : unfiltered) { @@ -162,7 +152,7 @@ public class FoodFragment extends Fragment { } // make it unique - categories = new ArrayList<>(catSet); + ArrayList categories = new ArrayList<>(catSet); categories.add(0, MainApp.gs(R.string.none)); ArrayAdapter adapterCategories = new ArrayAdapter<>(getContext(), @@ -170,7 +160,7 @@ public class FoodFragment extends Fragment { category.setAdapter(adapterCategories); } - void fillSubcategories() { + private void fillSubcategories() { String categoryFilter = category.getSelectedItem().toString(); Set subCatSet = new HashSet<>(); @@ -184,7 +174,7 @@ public class FoodFragment extends Fragment { } // make it unique - subcategories = new ArrayList<>(subCatSet); + ArrayList subcategories = new ArrayList<>(subCatSet); subcategories.add(0, MainApp.gs(R.string.none)); ArrayAdapter adapterSubcategories = new ArrayAdapter<>(getContext(), @@ -192,7 +182,7 @@ public class FoodFragment extends Fragment { subcategory.setAdapter(adapterSubcategories); } - void filterData() { + private void filterData() { String textFilter = filter.getText().toString(); String categoryFilter = category.getSelectedItem().toString(); String subcategoryFilter = subcategory.getSelectedItem().toString(); @@ -227,6 +217,7 @@ public class FoodFragment extends Fragment { this.foodList = foodList; } + @NonNull @Override public FoodsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.food_item, viewGroup, false); @@ -257,7 +248,7 @@ public class FoodFragment extends Fragment { return foodList.size(); } - class FoodsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + class FoodsViewHolder extends RecyclerView.ViewHolder { TextView name; TextView portion; TextView carbs; @@ -269,43 +260,26 @@ public class FoodFragment extends Fragment { FoodsViewHolder(View itemView) { super(itemView); - name = (TextView) itemView.findViewById(R.id.food_name); - portion = (TextView) itemView.findViewById(R.id.food_portion); - carbs = (TextView) itemView.findViewById(R.id.food_carbs); - fat = (TextView) itemView.findViewById(R.id.food_fat); - protein = (TextView) itemView.findViewById(R.id.food_protein); - energy = (TextView) itemView.findViewById(R.id.food_energy); - ns = (TextView) itemView.findViewById(R.id.ns_sign); - remove = (TextView) itemView.findViewById(R.id.food_remove); - remove.setOnClickListener(this); + name = itemView.findViewById(R.id.food_name); + portion = itemView.findViewById(R.id.food_portion); + carbs = itemView.findViewById(R.id.food_carbs); + fat = itemView.findViewById(R.id.food_fat); + protein = itemView.findViewById(R.id.food_protein); + energy = itemView.findViewById(R.id.food_energy); + ns = itemView.findViewById(R.id.ns_sign); + remove = itemView.findViewById(R.id.food_remove); + remove.setOnClickListener(v -> { + final Food food = (Food) v.getTag(); + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.confirmation), MainApp.gs(R.string.removerecord) + "\n" + food.name, (dialog, id) -> { + final String _id = food._id; + if (_id != null && !_id.equals("")) { + NSUpload.removeFoodFromNS(_id); + } + FoodPlugin.getPlugin().getService().delete(food); + }, null); + }); remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); } - - @Override - public void onClick(View v) { - final Food food = (Food) v.getTag(); - switch (v.getId()) { - - case R.id.food_remove: - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.removerecord) + "\n" + food.name); - builder.setPositiveButton(MainApp.gs(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - final String _id = food._id; - if (_id != null && !_id.equals("")) { - NSUpload.removeFoodFromNS(_id); - } - FoodPlugin.getPlugin().getService().delete(food); - } - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - - } - } } } - } 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 ae9867b0a2..faabbd8192 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 @@ -2,15 +2,14 @@ package info.nightscout.androidaps.plugins.general.maintenance; import android.Manifest; import android.app.Activity; -import android.app.AlertDialog; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.os.Environment; import android.preference.PreferenceManager; -import androidx.core.app.ActivityCompat; -import androidx.fragment.app.Fragment; + import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,7 +38,7 @@ import info.nightscout.androidaps.utils.ToastUtils; public class ImportExportPrefs { private static Logger log = LoggerFactory.getLogger(L.CORE); - static File path = new File(Environment.getExternalStorageDirectory().toString()); + private static File path = new File(Environment.getExternalStorageDirectory().toString()); static public final File file = new File(path, MainApp.gs(R.string.app_name) + "Preferences"); private static final int REQUEST_EXTERNAL_STORAGE = 1; @@ -48,21 +47,7 @@ public class ImportExportPrefs { Manifest.permission.WRITE_EXTERNAL_STORAGE }; - public static void verifyStoragePermissions(Activity activity) { - // Check if we have write permission - int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); - - if (permission != PackageManager.PERMISSION_GRANTED) { - // We don't have permission so prompt the user - ActivityCompat.requestPermissions( - activity, - PERMISSIONS_STORAGE, - REQUEST_EXTERNAL_STORAGE - ); - } - } - - public static void verifyStoragePermissions(Fragment fragment) { + static void verifyStoragePermissions(Fragment fragment) { int permission = ContextCompat.checkSelfPermission(fragment.getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE); @@ -73,85 +58,73 @@ public class ImportExportPrefs { } - public static void exportSharedPreferences(final Fragment f) { + static void exportSharedPreferences(final Fragment f) { exportSharedPreferences(f.getContext()); } - public static void exportSharedPreferences(final Context c) { - - new AlertDialog.Builder(c) - .setMessage(MainApp.gs(R.string.export_to) + " " + file + " ?") - .setPositiveButton(android.R.string.yes, (dialog, which) -> { - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(c); - try { - FileWriter fw = new FileWriter(file); - PrintWriter pw = new PrintWriter(fw); - Map prefsMap = prefs.getAll(); - for (Map.Entry entry : prefsMap.entrySet()) { - pw.println(entry.getKey() + "::" + entry.getValue().toString()); - } - pw.close(); - fw.close(); - ToastUtils.showToastInUiThread(c, MainApp.gs(R.string.exported)); - } catch (FileNotFoundException e) { - ToastUtils.showToastInUiThread(c, MainApp.gs(R.string.filenotfound) + " " + file); - log.error("Unhandled exception", e); - } catch (IOException e) { - log.error("Unhandled exception", e); - } - }) - .setNegativeButton(android.R.string.cancel, null) - .show(); + private static void exportSharedPreferences(final Context context) { + OKDialog.showConfirmation(context, MainApp.gs(R.string.maintenance), MainApp.gs(R.string.export_to) + " " + file + " ?", () -> { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + try { + FileWriter fw = new FileWriter(file); + PrintWriter pw = new PrintWriter(fw); + Map prefsMap = prefs.getAll(); + for (Map.Entry entry : prefsMap.entrySet()) { + pw.println(entry.getKey() + "::" + entry.getValue().toString()); + } + pw.close(); + fw.close(); + ToastUtils.showToastInUiThread(context, MainApp.gs(R.string.exported)); + } catch (FileNotFoundException e) { + ToastUtils.showToastInUiThread(context, MainApp.gs(R.string.filenotfound) + " " + file); + log.error("Unhandled exception", e); + } catch (IOException e) { + log.error("Unhandled exception", e); + } + }); } - public static void importSharedPreferences(final Fragment fragment) { + static void importSharedPreferences(final Fragment fragment) { importSharedPreferences(fragment.getContext()); } public static void importSharedPreferences(final Context context) { - new AlertDialog.Builder(context) - .setMessage(MainApp.gs(R.string.import_from) + " " + file + " ?") - .setPositiveButton(android.R.string.yes, (dialog, which) -> { + OKDialog.showConfirmation(context, MainApp.gs(R.string.maintenance), MainApp.gs(R.string.import_from) + " " + file + " ?", () -> { + String line; + String[] lineParts; + try { + SP.clear(); - String line; - String[] lineParts; - try { - SP.clear(); - - BufferedReader reader = new BufferedReader(new FileReader(file)); - while ((line = reader.readLine()) != null) { - lineParts = line.split("::"); - if (lineParts.length == 2) { - if (lineParts[1].equals("true") || lineParts[1].equals("false")) { - SP.putBoolean(lineParts[0], Boolean.parseBoolean(lineParts[1])); - } else { - SP.putString(lineParts[0], lineParts[1]); - } - } + BufferedReader reader = new BufferedReader(new FileReader(file)); + while ((line = reader.readLine()) != null) { + lineParts = line.split("::"); + if (lineParts.length == 2) { + if (lineParts[1].equals("true") || lineParts[1].equals("false")) { + SP.putBoolean(lineParts[0], Boolean.parseBoolean(lineParts[1])); + } else { + SP.putString(lineParts[0], lineParts[1]); } - reader.close(); - 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"); - MainApp.instance().stopKeepAliveService(); - RxBus.INSTANCE.send(new EventAppExit()); - MainApp.closeDbHelper(); - if (context instanceof Activity) { - ((Activity)context).finish(); - } - System.runFinalization(); - System.exit(0); - }); - } catch (FileNotFoundException e) { - ToastUtils.showToastInUiThread(context, MainApp.gs(R.string.filenotfound) + " " + file); - log.error("Unhandled exception", e); - } catch (IOException e) { - log.error("Unhandled exception", e); } - }) - .setNegativeButton(android.R.string.cancel, null) - .show(); + } + reader.close(); + 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"); + MainApp.instance().stopKeepAliveService(); + RxBus.INSTANCE.send(new EventAppExit()); + MainApp.closeDbHelper(); + if (context instanceof Activity) { + ((Activity) context).finish(); + } + System.runFinalization(); + System.exit(0); + }); + } catch (FileNotFoundException e) { + ToastUtils.showToastInUiThread(context, MainApp.gs(R.string.filenotfound) + " " + file); + log.error("Unhandled exception", e); + } catch (IOException e) { + log.error("Unhandled exception", e); + } + }); } - } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.java index 6b8863242a..ae1262b651 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenanceFragment.java @@ -2,81 +2,58 @@ package info.nightscout.androidaps.plugins.general.maintenance; import android.content.Intent; import android.os.Bundle; -import androidx.fragment.app.Fragment; -import androidx.appcompat.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.fragment.app.Fragment; + import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.plugins.general.food.FoodPlugin; import info.nightscout.androidaps.plugins.general.maintenance.activities.LogSettingActivity; import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; +import info.nightscout.androidaps.utils.OKDialog; /** * */ public class MaintenanceFragment extends Fragment { - private Fragment f; - - @Override - public void onResume() { - super.onResume(); - - this.f = this; - } - - @Override - public void onPause() { - super.onPause(); - - this.f = null; - } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.maintenance_fragment, container, false); - final Fragment f = this; - view.findViewById(R.id.log_send).setOnClickListener(view1 -> MaintenancePlugin.getPlugin().sendLogs()); view.findViewById(R.id.log_delete).setOnClickListener(view1 -> MaintenancePlugin.getPlugin().deleteLogs()); - view.findViewById(R.id.nav_resetdb).setOnClickListener(view1 -> new AlertDialog.Builder(f.getContext()) - .setTitle(R.string.nav_resetdb) - .setMessage(R.string.reset_db_confirm) - .setNegativeButton(android.R.string.cancel, null) - .setPositiveButton(android.R.string.ok, (dialog, which) -> { + view.findViewById(R.id.nav_resetdb).setOnClickListener(view1 -> + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.maintenance), MainApp.gs(R.string.reset_db_confirm), () -> { MainApp.getDbHelper().resetDatabases(); // should be handled by Plugin-Interface and // additional service interface and plugin registry FoodPlugin.getPlugin().getService().resetFood(); TreatmentsPlugin.getPlugin().getService().resetTreatments(); }) - .create() - .show()); - + ); view.findViewById(R.id.nav_export).setOnClickListener(view1 -> { // start activity for checking permissions... - ImportExportPrefs.verifyStoragePermissions(f); - ImportExportPrefs.exportSharedPreferences(f); + ImportExportPrefs.verifyStoragePermissions(this); + ImportExportPrefs.exportSharedPreferences(this); }); view.findViewById(R.id.nav_import).setOnClickListener(view1 -> { // start activity for checking permissions... - ImportExportPrefs.verifyStoragePermissions(f); - ImportExportPrefs.importSharedPreferences(f); + ImportExportPrefs.verifyStoragePermissions(this); + ImportExportPrefs.importSharedPreferences(this); }); view.findViewById(R.id.nav_logsettings).setOnClickListener(view1 -> { startActivity(new Intent(getActivity(), LogSettingActivity.class)); }); - return view; } 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 112eb9c951..ea3ee3f9a7 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 @@ -1,9 +1,6 @@ package info.nightscout.androidaps.plugins.general.nsclient; -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; import android.graphics.Paint; import android.os.Bundle; import android.text.Html; @@ -25,6 +22,7 @@ import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientN import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientRestart; import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientUpdateGUI; import info.nightscout.androidaps.utils.FabricPrivacy; +import info.nightscout.androidaps.utils.OKDialog; import info.nightscout.androidaps.utils.SP; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; @@ -113,20 +111,11 @@ public class NSClientFragment extends Fragment implements View.OnClickListener, NSClientPlugin.getPlugin().clearLog(); break; case R.id.nsclientinternal_clearqueue: - final Context context = getContext(); - AlertDialog.Builder builder = new AlertDialog.Builder(context); - - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage("Clear queue? All data in queue will be lost!"); - builder.setPositiveButton(MainApp.gs(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - UploadQueue.clearQueue(); - updateGui(); - FabricPrivacy.getInstance().logCustom("NSClientClearQueue"); - } + OKDialog.showConfirmation(getContext(),MainApp.gs(R.string.nsclientinternal), MainApp.gs(R.string.clearqueueconfirm), () -> { + UploadQueue.clearQueue(); + updateGui(); + FabricPrivacy.getInstance().logCustom("NSClientClearQueue"); }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); break; case R.id.nsclientinternal_showqueue: RxBus.INSTANCE.send(new EventNSClientNewLog("QUEUE", NSClientPlugin.getPlugin().queue().textList())); 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 be4e091462..21a3e1b271 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 @@ -61,6 +61,14 @@ import info.nightscout.androidaps.db.ExtendedBolus; import info.nightscout.androidaps.db.Source; import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.db.TemporaryBasal; +import info.nightscout.androidaps.dialogs.CalibrationDialog; +import info.nightscout.androidaps.dialogs.CarbsDialog; +import info.nightscout.androidaps.dialogs.InsulinDialog; +import info.nightscout.androidaps.dialogs.ProfileSwitchDialog; +import info.nightscout.androidaps.dialogs.ProfileViewerDialog; +import info.nightscout.androidaps.dialogs.TempTargetDialog; +import info.nightscout.androidaps.dialogs.TreatmentDialog; +import info.nightscout.androidaps.dialogs.WizardDialog; import info.nightscout.androidaps.events.EventAcceptOpenLoopChange; import info.nightscout.androidaps.events.EventCareportalEventChange; import info.nightscout.androidaps.events.EventExtendedBolusChange; @@ -87,13 +95,6 @@ import info.nightscout.androidaps.plugins.general.careportal.CareportalFragment; 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.dialogs.CalibrationDialog; -import info.nightscout.androidaps.dialogs.CarbsDialog; -import info.nightscout.androidaps.dialogs.InsulinDialog; -import info.nightscout.androidaps.dialogs.TreatmentDialog; -import info.nightscout.androidaps.dialogs.ProfileSwitchDialog; -import info.nightscout.androidaps.dialogs.TempTargetDialog; -import info.nightscout.androidaps.dialogs.WizardDialog; import info.nightscout.androidaps.plugins.general.overview.graphData.GraphData; import info.nightscout.androidaps.plugins.general.wear.ActionStringHandler; import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensData; @@ -105,7 +106,6 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCa import info.nightscout.androidaps.plugins.source.SourceDexcomPlugin; import info.nightscout.androidaps.plugins.source.SourceXdripPlugin; import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; -import info.nightscout.androidaps.dialogs.ProfileViewerDialog; import info.nightscout.androidaps.queue.Callback; import info.nightscout.androidaps.utils.BolusWizard; import info.nightscout.androidaps.utils.DateUtil; @@ -883,10 +883,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, getContext().startActivity(intent); return true; } catch (ActivityNotFoundException e) { - new AlertDialog.Builder(getContext()) - .setMessage(R.string.error_starting_cgm) - .setPositiveButton("OK", null) - .show(); + OKDialog.show(getContext(), "", MainApp.gs(R.string.error_starting_cgm)); return false; } } @@ -912,16 +909,11 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, LoopPlugin.getPlugin().invoke("Accept temp button", false); final LoopPlugin.LastRun finalLastRun = LoopPlugin.lastRun; if (finalLastRun != null && finalLastRun.lastAPSRun != null && finalLastRun.constraintsProcessed.isChangeRequested()) { - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.setbasalquestion) + "\n" + finalLastRun.constraintsProcessed); - builder.setPositiveButton(MainApp.gs(R.string.ok), (dialog, id) -> { + OKDialog.showConfirmation(context, MainApp.gs(R.string.pump_tempbasal_label), finalLastRun.constraintsProcessed.toSpanned(), () -> { hideTempRecommendation(); clearNotification(); LoopPlugin.getPlugin().acceptChangeRequest(); }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); } } } @@ -941,7 +933,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, Integer carbsAfterConstraints = MainApp.getConstraintChecker().applyCarbsConstraints(new Constraint<>(quickWizardEntry.carbs())).value(); if (Math.abs(wizard.getInsulinAfterConstraints() - wizard.getCalculatedTotalInsulin()) >= pump.getPumpDescription().pumpType.determineCorrectBolusStepSize(wizard.getInsulinAfterConstraints()) || !carbsAfterConstraints.equals(quickWizardEntry.carbs())) { - OKDialog.show(getContext(), MainApp.gs(R.string.treatmentdeliveryerror), MainApp.gs(R.string.constraints_violation) + "\n" + MainApp.gs(R.string.changeyourinput), null); + OKDialog.show(getContext(), MainApp.gs(R.string.treatmentdeliveryerror), MainApp.gs(R.string.constraints_violation) + "\n" + MainApp.gs(R.string.changeyourinput)); return; } @@ -1170,7 +1162,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, if (activeTemp != null) { fullText += MainApp.gs(R.string.pump_tempbasal_label) + ": " + activeTemp.toStringFull(); } - OKDialog.show(getActivity(), MainApp.gs(R.string.basal), fullText, null); + OKDialog.show(getActivity(), MainApp.gs(R.string.basal), fullText); }); } else { @@ -1206,7 +1198,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, } extendedBolusView.setText(extendedBolusText); if (Config.NSCLIENT) { - extendedBolusView.setOnClickListener(v -> OKDialog.show(getActivity(), MainApp.gs(R.string.extendedbolus), extendedBolus.toString(), null)); + extendedBolusView.setOnClickListener(v -> OKDialog.show(getActivity(), MainApp.gs(R.string.extended_bolus), extendedBolus.toString())); } if (extendedBolusText.equals("")) extendedBolusView.setVisibility(Config.NSCLIENT ? View.INVISIBLE : View.GONE); @@ -1300,7 +1292,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, String iobtext1 = DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U\n" + MainApp.gs(R.string.bolus) + ": " + DecimalFormatter.to2Decimal(bolusIob.iob) + "U\n" + MainApp.gs(R.string.basal) + ": " + DecimalFormatter.to2Decimal(basalIob.basaliob) + "U\n"; - OKDialog.show(getActivity(), MainApp.gs(R.string.iob), iobtext1, null); + OKDialog.show(getActivity(), MainApp.gs(R.string.iob), iobtext1); }); } else if (MainApp.sResources.getBoolean(R.bool.isTablet)) { String iobtext = DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U (" @@ -1352,19 +1344,19 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, // pump status from ns if (pumpDeviceStatusView != null) { pumpDeviceStatusView.setText(NSDeviceStatus.getInstance().getPumpStatus()); - pumpDeviceStatusView.setOnClickListener(v -> OKDialog.show(getActivity(), MainApp.gs(R.string.pump), NSDeviceStatus.getInstance().getExtendedPumpStatus(), null)); + pumpDeviceStatusView.setOnClickListener(v -> OKDialog.show(getActivity(), MainApp.gs(R.string.pump), NSDeviceStatus.getInstance().getExtendedPumpStatus())); } // OpenAPS status from ns if (openapsDeviceStatusView != null) { openapsDeviceStatusView.setText(NSDeviceStatus.getInstance().getOpenApsStatus()); - openapsDeviceStatusView.setOnClickListener(v -> OKDialog.show(getActivity(), MainApp.gs(R.string.openaps), NSDeviceStatus.getInstance().getExtendedOpenApsStatus(), null)); + openapsDeviceStatusView.setOnClickListener(v -> OKDialog.show(getActivity(), MainApp.gs(R.string.openaps), NSDeviceStatus.getInstance().getExtendedOpenApsStatus())); } // Uploader status from ns if (uploaderDeviceStatusView != null) { uploaderDeviceStatusView.setText(NSDeviceStatus.getInstance().getUploaderStatusSpanned()); - uploaderDeviceStatusView.setOnClickListener(v -> OKDialog.show(getActivity(), MainApp.gs(R.string.uploader), NSDeviceStatus.getInstance().getExtendedUploaderStatus(), null)); + uploaderDeviceStatusView.setOnClickListener(v -> OKDialog.show(getActivity(), MainApp.gs(R.string.uploader), NSDeviceStatus.getInstance().getExtendedUploaderStatus())); } // Sensitivity 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 7ab263b8d7..5a65206f83 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 @@ -116,13 +116,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.", null) + OKDialog.show(rootContext, MainApp.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.", null) + 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, MainApp.gs(R.string.tidepool), "Cannot do login as user credentials have not been set correctly", null) + ?: OKDialog.show(rootContext, MainApp.gs(R.string.tidepool), "Cannot do login as user credentials have not been set correctly") } 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 218c0d798f..4478c025d4 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 @@ -1,6 +1,5 @@ package info.nightscout.androidaps.plugins.profile.local - import android.os.Bundle import android.text.Editable import android.text.TextWatcher @@ -14,9 +13,9 @@ 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.configBuilder.ConfigBuilderPlugin -import info.nightscout.androidaps.dialogs.ProfileSwitchDialog import info.nightscout.androidaps.plugins.insulin.InsulinOrefBasePlugin.MIN_DIA import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged import info.nightscout.androidaps.utils.* @@ -107,7 +106,7 @@ class LocalProfileFragment : Fragment() { // Spinner spinner = SpinnerHelper(view?.findViewById(R.id.localprofile_spinner)) val profileList: ArrayList = LocalProfilePlugin.profile?.getProfileList() - ?: ArrayList() + ?: ArrayList() context?.let { context -> val adapter = ArrayAdapter(context, R.layout.spinner_centered, profileList) spinner?.adapter = adapter @@ -120,10 +119,10 @@ class LocalProfileFragment : Fragment() { override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { if (LocalProfilePlugin.isEdited) { activity?.let { activity -> - OKDialog.showConfirmation(activity, MainApp.gs(R.string.doyouwantswitchprofile), { + OKDialog.showConfirmation(activity, MainApp.gs(R.string.doyouwantswitchprofile), Runnable { LocalProfilePlugin.currentProfileIndex = position build() - }, { + }, Runnable { spinner?.setSelection(LocalProfilePlugin.currentProfileIndex) }) } @@ -136,7 +135,7 @@ class LocalProfileFragment : Fragment() { localprofile_profile_add.setOnClickListener { if (LocalProfilePlugin.isEdited) { - activity?.let { OKDialog.show(it, "", MainApp.gs(R.string.saveorresetchangesfirst), null) } + activity?.let { OKDialog.show(it, "", MainApp.gs(R.string.saveorresetchangesfirst)) } } else { LocalProfilePlugin.addNewProfile() build() @@ -145,7 +144,7 @@ class LocalProfileFragment : Fragment() { localprofile_profile_clone.setOnClickListener { if (LocalProfilePlugin.isEdited) { - activity?.let { OKDialog.show(it, "", MainApp.gs(R.string.saveorresetchangesfirst), null) } + activity?.let { OKDialog.show(it, "", MainApp.gs(R.string.saveorresetchangesfirst)) } } else { LocalProfilePlugin.cloneProfile() build() @@ -154,7 +153,7 @@ class LocalProfileFragment : Fragment() { localprofile_profile_remove.setOnClickListener { activity?.let { activity -> - OKDialog.showConfirmation(activity, MainApp.gs(R.string.deletecurrentprofile), { + OKDialog.showConfirmation(activity, MainApp.gs(R.string.deletecurrentprofile), Runnable { LocalProfilePlugin.removeCurrentProfile() build() }, null) @@ -199,9 +198,9 @@ class LocalProfileFragment : Fragment() { override fun onResume() { super.onResume() disposable.add(RxBus - .toObservable(EventLocalProfileChanged::class.java) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ build() }, { FabricPrivacy.logException(it) }) + .toObservable(EventLocalProfileChanged::class.java) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ build() }, { FabricPrivacy.logException(it) }) ) build() } 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 e2c8d051ac..a3e3819b51 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 @@ -27,11 +27,11 @@ import java.util.* import kotlin.collections.ArrayList object LocalProfilePlugin : 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 { + .mainType(PluginType.PROFILE) + .fragmentClass(LocalProfileFragment::class.java.name) + .pluginName(R.string.localprofile) + .shortName(R.string.localprofile_shortname) + .description(R.string.description_profile_local)), ProfileInterface { override fun onStart() { super.onStart() @@ -98,7 +98,7 @@ object LocalProfilePlugin : PluginBase(PluginDescription() @Synchronized fun isValidEditState(): Boolean { return createProfileStore().getDefaultProfile()?.isValid(MainApp.gs(R.string.localprofile), false) - ?: false + ?: false } @Synchronized @@ -132,7 +132,7 @@ object LocalProfilePlugin : PluginBase(PluginDescription() rawProfile?.let { NSUpload.uploadProfileStore(it.data) } else activity?.let { - OKDialog.show(it,"", MainApp.gs(R.string.profilenamecontainsdot), null) + OKDialog.show(it, "", MainApp.gs(R.string.profilenamecontainsdot)) } } @@ -423,7 +423,7 @@ object LocalProfilePlugin : PluginBase(PluginDescription() override fun getProfileName(): String { return DecimalFormatter.to2Decimal(rawProfile?.getDefaultProfile()?.percentageBasalSum() - ?: 0.0) + "U " + ?: 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 ddf806cb2a..6c111faf3f 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 @@ -22,7 +22,6 @@ import kotlinx.android.synthetic.main.close.* import kotlinx.android.synthetic.main.nsprofile_fragment.* import kotlinx.android.synthetic.main.profileviewer_fragment.* - class NSProfileFragment : Fragment() { private var disposable: CompositeDisposable = CompositeDisposable() @@ -40,10 +39,11 @@ class NSProfileFragment : Fragment() { val name = nsprofile_spinner.selectedItem?.toString() ?: "" NSProfilePlugin.getPlugin().profile?.let { store -> store.getSpecificProfile(name)?.let { - OKDialog.showConfirmation(activity, - MainApp.gs(R.string.activate_profile) + ": " + name + " ?" - ) { - ProfileFunctions.doProfileSwitch(store, name, 0, 100, 0, DateUtil.now()) + 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()) + }) } } } @@ -97,13 +97,9 @@ class NSProfileFragment : Fragment() { override fun onResume() { super.onResume() disposable.add(RxBus - .toObservable(EventNSProfileUpdateGUI::class.java) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ - updateGUI() - }, { - FabricPrivacy.logException(it) - }) + .toObservable(EventNSProfileUpdateGUI::class.java) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ updateGUI() }, { FabricPrivacy.logException(it) }) ) updateGUI() } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/LocationHelper.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/LocationHelper.java index 98682679a7..065f0ec4d6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/LocationHelper.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/LocationHelper.java @@ -1,14 +1,13 @@ package info.nightscout.androidaps.plugins.pump.common.utils; import android.app.Activity; -import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.location.LocationManager; -import android.os.Build; +import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.utils.OKDialog; /** * Helper for checking if location services are enabled on the device. @@ -45,18 +44,9 @@ public class LocationHelper { } // Shamelessly borrowed from http://stackoverflow.com/a/10311877/868533 - - AlertDialog.Builder builder = new AlertDialog.Builder(parent); - builder.setTitle(R.string.location_not_found_title); - builder.setMessage(R.string.location_not_found_message); - builder.setPositiveButton(R.string.location_yes, new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialogInterface, int i) { - parent.startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); - } + OKDialog.showConfirmation(parent, MainApp.gs(R.string.location_not_found_title), MainApp.gs(R.string.location_not_found_message), () -> { + parent.startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); }); - builder.setNegativeButton(R.string.location_no, null); - builder.create().show(); } 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 1d72ed2e72..b67cadfed4 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 @@ -1,6 +1,5 @@ package info.nightscout.androidaps.plugins.source; -import android.content.DialogInterface; import android.graphics.Paint; import android.os.Bundle; import android.view.LayoutInflater; @@ -9,7 +8,6 @@ import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -25,6 +23,7 @@ import info.nightscout.androidaps.plugins.general.nsclient.NSUpload; import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutosensCalculationFinished; 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 io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; @@ -35,17 +34,17 @@ import io.reactivex.disposables.CompositeDisposable; public class BGSourceFragment extends Fragment { private CompositeDisposable disposable = new CompositeDisposable(); - RecyclerView recyclerView; + private RecyclerView recyclerView; - final long MILLS_TO_THE_PAST = T.hours(12).msecs(); + private final long MILLS_TO_THE_PAST = T.hours(12).msecs(); @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { try { View view = inflater.inflate(R.layout.bgsource_fragment, container, false); - recyclerView = (RecyclerView) view.findViewById(R.id.bgsource_recyclerview); + recyclerView = view.findViewById(R.id.bgsource_recyclerview); recyclerView.setHasFixedSize(true); LinearLayoutManager llm = new LinearLayoutManager(view.getContext()); recyclerView.setLayoutManager(llm); @@ -91,6 +90,7 @@ public class BGSourceFragment extends Fragment { this.bgReadings = bgReadings; } + @NonNull @Override public BgReadingsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.bgsource_item, viewGroup, false); @@ -113,7 +113,7 @@ public class BGSourceFragment extends Fragment { return bgReadings.size(); } - class BgReadingsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + class BgReadingsViewHolder extends RecyclerView.ViewHolder { TextView date; TextView value; TextView direction; @@ -123,46 +123,22 @@ public class BGSourceFragment extends Fragment { BgReadingsViewHolder(View itemView) { super(itemView); - date = (TextView) itemView.findViewById(R.id.bgsource_date); - value = (TextView) itemView.findViewById(R.id.bgsource_value); - direction = (TextView) itemView.findViewById(R.id.bgsource_direction); - invalid = (TextView) itemView.findViewById(R.id.invalid_sign); - ns = (TextView) itemView.findViewById(R.id.ns_sign); - remove = (TextView) itemView.findViewById(R.id.bgsource_remove); - remove.setOnClickListener(this); + date = itemView.findViewById(R.id.bgsource_date); + value = itemView.findViewById(R.id.bgsource_value); + direction = itemView.findViewById(R.id.bgsource_direction); + invalid = itemView.findViewById(R.id.invalid_sign); + ns = itemView.findViewById(R.id.ns_sign); + 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()), () -> { + bgReading.isValid = false; + MainApp.getDbHelper().update(bgReading); + updateGUI(); + }); + }); remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); } - - @Override - public void onClick(View v) { - final BgReading bgReading = (BgReading) v.getTag(); - switch (v.getId()) { - - case R.id.bgsource_remove: - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.removerecord) + "\n" + DateUtil.dateAndTimeString(bgReading.date) + "\n" + bgReading.valueToUnitsToString(ProfileFunctions.getSystemUnits())); - builder.setPositiveButton(MainApp.gs(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { -/* final String _id = bgReading._id; - if (NSUpload.isIdValid(_id)) { - NSUpload.removeFoodFromNS(_id); - } else { - UploadQueue.removeID("dbAdd", _id); - } -*/ - bgReading.isValid = false; - MainApp.getDbHelper().update(bgReading); - updateGUI(); - } - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - - } - } } } - } 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 ee78c6748b..27e35ed456 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 @@ -1,7 +1,5 @@ package info.nightscout.androidaps.plugins.treatments.fragments; -import android.content.Context; -import android.content.DialogInterface; import android.graphics.Paint; import android.os.Bundle; import android.view.LayoutInflater; @@ -10,7 +8,7 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; -import androidx.appcompat.app.AlertDialog; +import androidx.annotation.NonNull; import androidx.cardview.widget.CardView; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; @@ -38,24 +36,21 @@ import info.nightscout.androidaps.plugins.treatments.dialogs.WizardInfoDialog; 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.SP; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import static info.nightscout.androidaps.utils.DateUtil.now; -public class TreatmentsBolusFragment extends Fragment implements View.OnClickListener { +public class TreatmentsBolusFragment extends Fragment { private CompositeDisposable disposable = new CompositeDisposable(); - RecyclerView recyclerView; - LinearLayoutManager llm; + private RecyclerView recyclerView; - TextView iobTotal; - TextView activityTotal; - Button refreshFromNS; - Button deleteFutureTreatments; - - Context context; + private TextView iobTotal; + private TextView activityTotal; + private Button deleteFutureTreatments; public class RecyclerViewAdapter extends RecyclerView.Adapter { @@ -65,6 +60,7 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis this.treatments = treatments; } + @NonNull @Override public TreatmentsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.treatments_bolus_item, viewGroup, false); @@ -72,16 +68,16 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis } @Override - public void onBindViewHolder(TreatmentsViewHolder holder, int position) { + public void onBindViewHolder(@NonNull TreatmentsViewHolder holder, int position) { Profile profile = ProfileFunctions.getInstance().getProfile(); if (profile == null) return; Treatment t = treatments.get(position); holder.date.setText(DateUtil.dateAndTimeString(t.date)); - holder.insulin.setText(DecimalFormatter.toPumpSupportedBolus(t.insulin) + " U"); - holder.carbs.setText(DecimalFormatter.to0Decimal(t.carbs) + " g"); + holder.insulin.setText(MainApp.gs(R.string.formatinsulinunits, t.insulin)); + holder.carbs.setText(MainApp.gs(R.string.format_carbs, (int) t.carbs)); Iob iob = t.iobCalc(System.currentTimeMillis(), profile.getDia()); - holder.iob.setText(DecimalFormatter.to2Decimal(iob.iobContrib) + " U"); + holder.iob.setText(MainApp.gs(R.string.formatinsulinunits, iob.iobContrib)); holder.mealOrCorrection.setText(t.isSMB ? "SMB" : t.mealBolus ? MainApp.gs(R.string.mealbolus) : MainApp.gs(R.string.correctionbous)); holder.ph.setVisibility(t.source == Source.PUMP ? View.VISIBLE : View.GONE); holder.ns.setVisibility(NSUpload.isIdValid(t._id) ? View.VISIBLE : View.GONE); @@ -105,7 +101,7 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis } @Override - public void onAttachedToRecyclerView(RecyclerView recyclerView) { + public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); } @@ -124,19 +120,19 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis TreatmentsViewHolder(View itemView) { super(itemView); - cv = (CardView) itemView.findViewById(R.id.treatments_cardview); - date = (TextView) itemView.findViewById(R.id.treatments_date); - insulin = (TextView) itemView.findViewById(R.id.treatments_insulin); - carbs = (TextView) itemView.findViewById(R.id.treatments_carbs); - iob = (TextView) itemView.findViewById(R.id.treatments_iob); - mealOrCorrection = (TextView) itemView.findViewById(R.id.treatments_mealorcorrection); - ph = (TextView) itemView.findViewById(R.id.pump_sign); - ns = (TextView) itemView.findViewById(R.id.ns_sign); - invalid = (TextView) itemView.findViewById(R.id.invalid_sign); - calculation = (TextView) itemView.findViewById(R.id.treatments_calculation); + cv = itemView.findViewById(R.id.treatments_cardview); + date = itemView.findViewById(R.id.treatments_date); + insulin = itemView.findViewById(R.id.treatments_insulin); + carbs = itemView.findViewById(R.id.treatments_carbs); + iob = itemView.findViewById(R.id.treatments_iob); + mealOrCorrection = itemView.findViewById(R.id.treatments_mealorcorrection); + ph = itemView.findViewById(R.id.pump_sign); + ns = itemView.findViewById(R.id.ns_sign); + invalid = itemView.findViewById(R.id.invalid_sign); + calculation = itemView.findViewById(R.id.treatments_calculation); calculation.setOnClickListener(this); calculation.setPaintFlags(calculation.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); - remove = (TextView) itemView.findViewById(R.id.treatments_remove); + remove = itemView.findViewById(R.id.treatments_remove); remove.setOnClickListener(this); remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); } @@ -148,28 +144,25 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis return; switch (v.getId()) { case R.id.treatments_remove: - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.removerecord) + "\n" + DateUtil.dateAndTimeString(treatment.date)); - builder.setPositiveButton(MainApp.gs(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - final String _id = treatment._id; - if (treatment.source == Source.PUMP) { - treatment.isValid = false; - TreatmentsPlugin.getPlugin().getService().update(treatment); - } else { - if (NSUpload.isIdValid(_id)) { - NSUpload.removeCareportalEntryFromNS(_id); + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.removerecord), + MainApp.gs(R.string.configbuilder_insulin) + ": " + MainApp.gs(R.string.formatinsulinunits, treatment.insulin) + + "\n" + MainApp.gs(R.string.carbs) + ": " + MainApp.gs(R.string.format_carbs, (int) treatment.carbs) + + "\n" + MainApp.gs(R.string.date) + ": " + DateUtil.dateAndTimeString(treatment.date), + (dialog, id) -> { + final String _id = treatment._id; + if (treatment.source == Source.PUMP) { + treatment.isValid = false; + TreatmentsPlugin.getPlugin().getService().update(treatment); } else { - UploadQueue.removeID("dbAdd", _id); + if (NSUpload.isIdValid(_id)) { + NSUpload.removeCareportalEntryFromNS(_id); + } else { + UploadQueue.removeID("dbAdd", _id); + } + TreatmentsPlugin.getPlugin().getService().delete(treatment); } - TreatmentsPlugin.getPlugin().getService().delete(treatment); - } - updateGui(); - } - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); + updateGui(); + }, null); break; case R.id.treatments_calculation: FragmentManager manager = getFragmentManager(); @@ -193,71 +186,48 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis Bundle savedInstanceState) { View view = inflater.inflate(R.layout.treatments_bolus_fragment, container, false); - recyclerView = (RecyclerView) view.findViewById(R.id.treatments_recyclerview); + recyclerView = view.findViewById(R.id.treatments_recyclerview); recyclerView.setHasFixedSize(true); - llm = new LinearLayoutManager(view.getContext()); + LinearLayoutManager llm = new LinearLayoutManager(view.getContext()); recyclerView.setLayoutManager(llm); RecyclerViewAdapter adapter = new RecyclerViewAdapter(TreatmentsPlugin.getPlugin().getTreatmentsFromHistory()); recyclerView.setAdapter(adapter); - iobTotal = (TextView) view.findViewById(R.id.treatments_iobtotal); - activityTotal = (TextView) view.findViewById(R.id.treatments_iobactivitytotal); + iobTotal = view.findViewById(R.id.treatments_iobtotal); + activityTotal = view.findViewById(R.id.treatments_iobactivitytotal); - refreshFromNS = (Button) view.findViewById(R.id.treatments_reshreshfromnightscout); - refreshFromNS.setOnClickListener(this); + 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()); + })); - deleteFutureTreatments = (Button) view.findViewById(R.id.treatments_delete_future_treatments); - deleteFutureTreatments.setOnClickListener(this); + deleteFutureTreatments = view.findViewById(R.id.treatments_delete_future_treatments); + deleteFutureTreatments.setOnClickListener(v -> { + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.overview_treatment_label), MainApp.gs(R.string.deletefuturetreatments) + "?", () -> { + final List futureTreatments = TreatmentsPlugin.getPlugin().getService() + .getTreatmentDataFromTime(now() + 1000, true); + for (Treatment treatment : futureTreatments) { + final String _id = treatment._id; + if (NSUpload.isIdValid(_id)) { + NSUpload.removeCareportalEntryFromNS(_id); + } else { + UploadQueue.removeID("dbAdd", _id); + } + TreatmentsPlugin.getPlugin().getService().delete(treatment); + } + updateGui(); + }); + }); boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false); if (nsUploadOnly) refreshFromNS.setVisibility(View.GONE); - context = getContext(); - return view; } - @Override - public void onClick(View view) { - AlertDialog.Builder builder; - switch (view.getId()) { - case R.id.treatments_reshreshfromnightscout: - builder = new AlertDialog.Builder(this.getContext()); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.refresheventsfromnightscout) + "?"); - builder.setPositiveButton(MainApp.gs(R.string.ok), (dialog, id) -> { - TreatmentsPlugin.getPlugin().getService().resetTreatments(); - RxBus.INSTANCE.send(new EventNSClientRestart()); - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - case R.id.treatments_delete_future_treatments: - builder = new AlertDialog.Builder(this.getContext()); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.deletefuturetreatments) + "?"); - builder.setPositiveButton(MainApp.gs(R.string.ok), (dialog, id) -> { - final List futureTreatments = TreatmentsPlugin.getPlugin().getService() - .getTreatmentDataFromTime(now() + 1000, true); - for (Treatment treatment : futureTreatments) { - final String _id = treatment._id; - if (NSUpload.isIdValid(_id)) { - NSUpload.removeCareportalEntryFromNS(_id); - } else { - UploadQueue.removeID("dbAdd", _id); - } - TreatmentsPlugin.getPlugin().getService().delete(treatment); - } - updateGui(); - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - } - } - @Override public synchronized void onResume() { super.onResume(); @@ -292,5 +262,4 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis deleteFutureTreatments.setVisibility(View.GONE); } } - } 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 4810a1ed8c..5aa4f091d8 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 @@ -1,7 +1,5 @@ package info.nightscout.androidaps.plugins.treatments.fragments; -import android.content.Context; -import android.content.DialogInterface; import android.graphics.Paint; import android.os.Bundle; import android.view.LayoutInflater; @@ -10,7 +8,7 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; -import androidx.appcompat.app.AlertDialog; +import androidx.annotation.NonNull; import androidx.cardview.widget.CardView; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; @@ -28,6 +26,7 @@ import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue; import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientRestart; import info.nightscout.androidaps.utils.DateUtil; import info.nightscout.androidaps.utils.FabricPrivacy; +import info.nightscout.androidaps.utils.OKDialog; import info.nightscout.androidaps.utils.SP; import info.nightscout.androidaps.utils.Translator; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -37,14 +36,10 @@ import io.reactivex.disposables.CompositeDisposable; * Created by mike on 13/01/17. */ -public class TreatmentsCareportalFragment extends Fragment implements View.OnClickListener { +public class TreatmentsCareportalFragment extends Fragment { private CompositeDisposable disposable = new CompositeDisposable(); - RecyclerView recyclerView; - LinearLayoutManager llm; - Button refreshFromNS; - - Context context; + private RecyclerView recyclerView; public class RecyclerViewAdapter extends RecyclerView.Adapter { @@ -54,11 +49,11 @@ public class TreatmentsCareportalFragment extends Fragment implements View.OnCli this.careportalEventList = careportalEventList; } + @NonNull @Override public CareportalEventsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.treatments_careportal_item, viewGroup, false); - CareportalEventsViewHolder CareportalEventsViewHolder = new CareportalEventsViewHolder(v); - return CareportalEventsViewHolder; + return new CareportalEventsViewHolder(v); } @Override @@ -77,11 +72,11 @@ public class TreatmentsCareportalFragment extends Fragment implements View.OnCli } @Override - public void onAttachedToRecyclerView(RecyclerView recyclerView) { + public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); } - public class CareportalEventsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + class CareportalEventsViewHolder extends RecyclerView.ViewHolder { CardView cv; TextView date; TextView type; @@ -91,38 +86,30 @@ public class TreatmentsCareportalFragment extends Fragment implements View.OnCli CareportalEventsViewHolder(View itemView) { super(itemView); - cv = (CardView) itemView.findViewById(R.id.careportal_cardview); - date = (TextView) itemView.findViewById(R.id.careportal_date); - type = (TextView) itemView.findViewById(R.id.careportal_type); - note = (TextView) itemView.findViewById(R.id.careportal_note); - ns = (TextView) itemView.findViewById(R.id.ns_sign); - remove = (TextView) itemView.findViewById(R.id.careportal_remove); - remove.setOnClickListener(this); + cv = itemView.findViewById(R.id.careportal_cardview); + date = itemView.findViewById(R.id.careportal_date); + type = itemView.findViewById(R.id.careportal_type); + note = itemView.findViewById(R.id.careportal_note); + ns = itemView.findViewById(R.id.ns_sign); + remove = itemView.findViewById(R.id.careportal_remove); + remove.setOnClickListener(v -> { + final CareportalEvent careportalEvent = (CareportalEvent) v.getTag(); + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.removerecord), + "\n" + MainApp.gs(R.string.careportal_newnstreatment_eventtype) + ": " + Translator.translate(careportalEvent.eventType) + + "\n" + MainApp.gs(R.string.careportal_newnstreatment_notes_label) + ": " + careportalEvent.getNotes() + + "\n" + MainApp.gs(R.string.date) + ": " + DateUtil.dateAndTimeString(careportalEvent.date), + (dialog, id) -> { + final String _id = careportalEvent._id; + if (NSUpload.isIdValid(_id)) { + NSUpload.removeCareportalEntryFromNS(_id); + } else { + UploadQueue.removeID("dbAdd", _id); + } + MainApp.getDbHelper().delete(careportalEvent); + }, null); + }); remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); } - - @Override - public void onClick(View v) { - final CareportalEvent careportalEvent = (CareportalEvent) v.getTag(); - switch (v.getId()) { - case R.id.careportal_remove: - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.removerecord) + "\n" + DateUtil.dateAndTimeString(careportalEvent.date)); - builder.setPositiveButton(MainApp.gs(R.string.ok), (dialog, id) -> { - final String _id = careportalEvent._id; - if (NSUpload.isIdValid(_id)) { - NSUpload.removeCareportalEntryFromNS(_id); - } else { - UploadQueue.removeID("dbAdd", _id); - } - MainApp.getDbHelper().delete(careportalEvent); - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - } - } } } @@ -131,20 +118,23 @@ public class TreatmentsCareportalFragment extends Fragment implements View.OnCli Bundle savedInstanceState) { View view = inflater.inflate(R.layout.treatments_careportal_fragment, container, false); - recyclerView = (RecyclerView) view.findViewById(R.id.careportal_recyclerview); + recyclerView = view.findViewById(R.id.careportal_recyclerview); recyclerView.setHasFixedSize(true); - llm = new LinearLayoutManager(view.getContext()); + LinearLayoutManager llm = new LinearLayoutManager(view.getContext()); recyclerView.setLayoutManager(llm); RecyclerViewAdapter adapter = new RecyclerViewAdapter(MainApp.getDbHelper().getCareportalEvents(false)); recyclerView.setAdapter(adapter); - refreshFromNS = (Button) view.findViewById(R.id.careportal_refreshfromnightscout); - refreshFromNS.setOnClickListener(this); + Button refreshFromNS = view.findViewById(R.id.careportal_refreshfromnightscout); + refreshFromNS.setOnClickListener(v -> + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.careportal), MainApp.gs(R.string.refresheventsfromnightscout) + " ?", () -> { + MainApp.getDbHelper().resetCareportalEvents(); + RxBus.INSTANCE.send(new EventNSClientRestart()); + })); - view.findViewById(R.id.careportal_removeandroidapsstartedevents).setOnClickListener(this); - - context = getContext(); + view.findViewById(R.id.careportal_removeandroidapsstartedevents).setOnClickListener(v -> + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.careportal), MainApp.gs(R.string.careportal_removestartedevents), this::removeAndroidAPSStatedEvents)); boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false); if (nsUploadOnly) @@ -170,36 +160,6 @@ public class TreatmentsCareportalFragment extends Fragment implements View.OnCli disposable.clear(); } - @Override - public void onClick(View view) { - switch (view.getId()) { - case R.id.careportal_refreshfromnightscout: - AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext()); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.refresheventsfromnightscout) + " ?"); - builder.setPositiveButton(MainApp.gs(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - MainApp.getDbHelper().resetCareportalEvents(); - RxBus.INSTANCE.send(new EventNSClientRestart()); - } - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - case R.id.careportal_removeandroidapsstartedevents: - builder = new AlertDialog.Builder(context); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.careportal_removestartedevents)); - builder.setPositiveButton(MainApp.gs(R.string.ok), (dialog, id) -> { - removeAndroidAPSStatedEvents(); - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - } - - } - private void updateGui() { recyclerView.swapAdapter(new RecyclerViewAdapter(MainApp.getDbHelper().getCareportalEvents(false)), false); } 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 5ce7b57564..928e2d30aa 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 @@ -1,7 +1,5 @@ package info.nightscout.androidaps.plugins.treatments.fragments; -import android.content.Context; -import android.content.DialogInterface; import android.graphics.Paint; import android.os.Bundle; import android.view.LayoutInflater; @@ -9,7 +7,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import androidx.appcompat.app.AlertDialog; +import androidx.annotation.NonNull; import androidx.cardview.widget.CardView; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; @@ -31,6 +29,7 @@ import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; 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 io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; @@ -38,10 +37,7 @@ import io.reactivex.disposables.CompositeDisposable; public class TreatmentsExtendedBolusesFragment extends Fragment { private CompositeDisposable disposable = new CompositeDisposable(); - RecyclerView recyclerView; - LinearLayoutManager llm; - - Context context; + private RecyclerView recyclerView; public class RecyclerViewAdapter extends RecyclerView.Adapter { @@ -51,6 +47,7 @@ public class TreatmentsExtendedBolusesFragment extends Fragment { this.extendedBolusList = extendedBolusList; } + @NonNull @Override public ExtendedBolusesViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.treatments_extendedbolus_item, viewGroup, false); @@ -101,11 +98,11 @@ public class TreatmentsExtendedBolusesFragment extends Fragment { } @Override - public void onAttachedToRecyclerView(RecyclerView recyclerView) { + public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); } - public class ExtendedBolusesViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + class ExtendedBolusesViewHolder extends RecyclerView.ViewHolder { CardView cv; TextView date; TextView duration; @@ -120,31 +117,22 @@ public class TreatmentsExtendedBolusesFragment extends Fragment { ExtendedBolusesViewHolder(View itemView) { super(itemView); - cv = (CardView) itemView.findViewById(R.id.extendedboluses_cardview); - date = (TextView) itemView.findViewById(R.id.extendedboluses_date); - duration = (TextView) itemView.findViewById(R.id.extendedboluses_duration); - insulin = (TextView) itemView.findViewById(R.id.extendedboluses_insulin); - realDuration = (TextView) itemView.findViewById(R.id.extendedboluses_realduration); - ratio = (TextView) itemView.findViewById(R.id.extendedboluses_ratio); - insulinSoFar = (TextView) itemView.findViewById(R.id.extendedboluses_netinsulin); - iob = (TextView) itemView.findViewById(R.id.extendedboluses_iob); - ph = (TextView) itemView.findViewById(R.id.pump_sign); - ns = (TextView) itemView.findViewById(R.id.ns_sign); - remove = (TextView) itemView.findViewById(R.id.extendedboluses_remove); - remove.setOnClickListener(this); - remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); - } - - @Override - public void onClick(View v) { - final ExtendedBolus extendedBolus = (ExtendedBolus) v.getTag(); - switch (v.getId()) { - case R.id.extendedboluses_remove: - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.removerecord) + "\n" + DateUtil.dateAndTimeString(extendedBolus.date)); - builder.setPositiveButton(MainApp.gs(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { + cv = itemView.findViewById(R.id.extendedboluses_cardview); + date = itemView.findViewById(R.id.extendedboluses_date); + duration = itemView.findViewById(R.id.extendedboluses_duration); + insulin = itemView.findViewById(R.id.extendedboluses_insulin); + realDuration = itemView.findViewById(R.id.extendedboluses_realduration); + ratio = itemView.findViewById(R.id.extendedboluses_ratio); + insulinSoFar = itemView.findViewById(R.id.extendedboluses_netinsulin); + iob = itemView.findViewById(R.id.extendedboluses_iob); + ph = itemView.findViewById(R.id.pump_sign); + ns = itemView.findViewById(R.id.ns_sign); + remove = itemView.findViewById(R.id.extendedboluses_remove); + remove.setOnClickListener(v -> { + final ExtendedBolus extendedBolus = (ExtendedBolus) v.getTag(); + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.removerecord), + MainApp.gs(R.string.extended_bolus) + + "\n" + MainApp.gs(R.string.date) + ": " + DateUtil.dateAndTimeString(extendedBolus.date), (dialog, id) -> { final String _id = extendedBolus._id; if (NSUpload.isIdValid(_id)) { NSUpload.removeCareportalEntryFromNS(_id); @@ -152,12 +140,9 @@ public class TreatmentsExtendedBolusesFragment extends Fragment { UploadQueue.removeID("dbAdd", _id); } MainApp.getDbHelper().delete(extendedBolus); - } - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - } + }, null); + }); + remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); } } } @@ -167,16 +152,14 @@ public class TreatmentsExtendedBolusesFragment extends Fragment { Bundle savedInstanceState) { View view = inflater.inflate(R.layout.treatments_extendedbolus_fragment, container, false); - recyclerView = (RecyclerView) view.findViewById(R.id.extendedboluses_recyclerview); + recyclerView = view.findViewById(R.id.extendedboluses_recyclerview); recyclerView.setHasFixedSize(true); - llm = new LinearLayoutManager(view.getContext()); + LinearLayoutManager llm = new LinearLayoutManager(view.getContext()); recyclerView.setLayoutManager(llm); RecyclerViewAdapter adapter = new RecyclerViewAdapter(TreatmentsPlugin.getPlugin().getExtendedBolusesFromHistory()); recyclerView.setAdapter(adapter); - context = getContext(); - return view; } @@ -205,5 +188,4 @@ public class TreatmentsExtendedBolusesFragment extends Fragment { private void updateGui() { recyclerView.swapAdapter(new RecyclerViewAdapter(TreatmentsPlugin.getPlugin().getExtendedBolusesFromHistory()), false); } - } 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 db911dcbb0..45d25124de 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 @@ -6,7 +6,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView -import androidx.appcompat.app.AlertDialog import androidx.cardview.widget.CardView import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment @@ -42,18 +41,15 @@ class TreatmentsProfileSwitchFragment : Fragment() { super.onViewCreated(view, savedInstanceState) profileswitch_recyclerview.setHasFixedSize(true) profileswitch_recyclerview.layoutManager = LinearLayoutManager(view.context) - profileswitch_recyclerview.adapter = RecyclerProfileViewAdapter(MainApp.getDbHelper().getProfileSwitchData(DateUtil.now() - T.days(30).msecs(),false)) + profileswitch_recyclerview.adapter = RecyclerProfileViewAdapter(MainApp.getDbHelper().getProfileSwitchData(DateUtil.now() - T.days(30).msecs(), false)) profileswitch_refreshfromnightscout.setOnClickListener { - val builder = AlertDialog.Builder(this.context!!) - builder.setTitle(MainApp.gs(R.string.confirmation)) - builder.setMessage(MainApp.gs(R.string.refresheventsfromnightscout) + "?") - builder.setPositiveButton(MainApp.gs(R.string.ok)) { _ , _-> - MainApp.getDbHelper().resetProfileSwitch() - RxBus.send(EventNSClientRestart()) + activity?.let { activity -> + OKDialog.showConfirmation(activity, MainApp.gs(R.string.refresheventsfromnightscout) + "?", Runnable { + MainApp.getDbHelper().resetProfileSwitch() + RxBus.send(EventNSClientRestart()) + }) } - builder.setNegativeButton(MainApp.gs(R.string.cancel), null) - builder.show() } if (SP.getBoolean(R.string.key_ns_upload_only, false)) profileswitch_refreshfromnightscout.visibility = View.GONE @@ -63,9 +59,9 @@ class TreatmentsProfileSwitchFragment : Fragment() { override fun onResume() { super.onResume() disposable.add(RxBus - .toObservable(EventProfileNeedsUpdate::class.java) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ updateGUI() }) { FabricPrivacy.logException(it) } + .toObservable(EventProfileNeedsUpdate::class.java) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ updateGUI() }) { FabricPrivacy.logException(it) } ) updateGUI() } @@ -77,7 +73,7 @@ class TreatmentsProfileSwitchFragment : Fragment() { } fun updateGUI() = - profileswitch_recyclerview?.swapAdapter(RecyclerProfileViewAdapter(MainApp.getDbHelper().getProfileSwitchData(DateUtil.now() - T.days(30).msecs(),false)), false) + profileswitch_recyclerview?.swapAdapter(RecyclerProfileViewAdapter(MainApp.getDbHelper().getProfileSwitchData(DateUtil.now() - T.days(30).msecs(), false)), false) inner class RecyclerProfileViewAdapter(private var profileSwitchList: List) : RecyclerView.Adapter() { override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): ProfileSwitchViewHolder { @@ -121,21 +117,28 @@ class TreatmentsProfileSwitchFragment : Fragment() { override fun onClick(v: View) { val profileSwitch = v.tag as ProfileSwitch when (v.id) { - R.id.profileswitch_remove -> - OKDialog.showConfirmation(activity, MainApp.gs(R.string.removerecord) + "\n" + profileSwitch.profileName + "\n" + DateUtil.dateAndTimeString(profileSwitch.date)) { - val id = profileSwitch._id - if (NSUpload.isIdValid(id)) NSUpload.removeCareportalEntryFromNS(id) - else UploadQueue.removeID("dbAdd", id) - MainApp.getDbHelper().delete(profileSwitch) + 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 { + val id = profileSwitch._id + if (NSUpload.isIdValid(id)) NSUpload.removeCareportalEntryFromNS(id) + else UploadQueue.removeID("dbAdd", id) + MainApp.getDbHelper().delete(profileSwitch) + }) } - R.id.profileswitch_clone -> - OKDialog.showConfirmation(activity, MainApp.gs(R.string.copytolocalprofile) + "\n" + profileSwitch.customizedName + "\n" + DateUtil.dateAndTimeString(profileSwitch.date)) { - profileSwitch.profileObject?.let { - val nonCustomized = it.convertToNonCustomizedProfile() - LocalProfilePlugin.addProfile(LocalProfilePlugin.SingleProfile().copyFrom(nonCustomized, profileSwitch.customizedName + " " + DateUtil.dateAndTimeString(profileSwitch.date).replace(".", "_"))) - RxBus.send(EventLocalProfileChanged()) - } + 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 { + profileSwitch.profileObject?.let { + val nonCustomized = it.convertToNonCustomizedProfile() + LocalProfilePlugin.addProfile(LocalProfilePlugin.SingleProfile().copyFrom(nonCustomized, profileSwitch.customizedName + " " + DateUtil.dateAndTimeString(profileSwitch.date).replace(".", "_"))) + RxBus.send(EventLocalProfileChanged()) + } + }) } + R.id.profileswitch_date, R.id.profileswitch_name -> { val args = Bundle() args.putLong("time", (v.tag as ProfileSwitch).date) 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 3ee36b87dd..8b73ec8ed2 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 @@ -1,8 +1,5 @@ package info.nightscout.androidaps.plugins.treatments.fragments; -import android.app.Activity; -import android.content.Context; -import android.content.DialogInterface; import android.graphics.Paint; import android.os.Bundle; import android.view.LayoutInflater; @@ -11,7 +8,7 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; -import androidx.appcompat.app.AlertDialog; +import androidx.annotation.NonNull; import androidx.cardview.widget.CardView; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; @@ -33,6 +30,7 @@ import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; 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.SP; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; @@ -41,14 +39,10 @@ import io.reactivex.disposables.CompositeDisposable; * Created by mike on 13/01/17. */ -public class TreatmentsTempTargetFragment extends Fragment implements View.OnClickListener { +public class TreatmentsTempTargetFragment extends Fragment { private CompositeDisposable disposable = new CompositeDisposable(); - RecyclerView recyclerView; - LinearLayoutManager llm; - Button refreshFromNS; - - Context context; + private RecyclerView recyclerView; public class RecyclerViewAdapter extends RecyclerView.Adapter { @@ -60,11 +54,11 @@ public class TreatmentsTempTargetFragment extends Fragment implements View.OnCli currentlyActiveTarget = tempTargetList.getValueByInterval(System.currentTimeMillis()); } + @NonNull @Override public TempTargetsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.treatments_temptarget_item, viewGroup, false); - TempTargetsViewHolder TempTargetsViewHolder = new TempTargetsViewHolder(v); - return TempTargetsViewHolder; + return new TempTargetsViewHolder(v); } @Override @@ -104,11 +98,11 @@ public class TreatmentsTempTargetFragment extends Fragment implements View.OnCli } @Override - public void onAttachedToRecyclerView(RecyclerView recyclerView) { + public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); } - public class TempTargetsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + class TempTargetsViewHolder extends RecyclerView.ViewHolder { CardView cv; TextView date; TextView duration; @@ -123,31 +117,23 @@ public class TreatmentsTempTargetFragment extends Fragment implements View.OnCli TempTargetsViewHolder(View itemView) { super(itemView); - cv = (CardView) itemView.findViewById(R.id.temptargetrange_cardview); - date = (TextView) itemView.findViewById(R.id.temptargetrange_date); - duration = (TextView) itemView.findViewById(R.id.temptargetrange_duration); - low = (TextView) itemView.findViewById(R.id.temptargetrange_low); - high = (TextView) itemView.findViewById(R.id.temptargetrange_high); - reason = (TextView) itemView.findViewById(R.id.temptargetrange_reason); - reasonLabel = (TextView) itemView.findViewById(R.id.temptargetrange_reason_label); - reasonColon = (TextView) itemView.findViewById(R.id.temptargetrange_reason_colon); - ph = (TextView) itemView.findViewById(R.id.pump_sign); - ns = (TextView) itemView.findViewById(R.id.ns_sign); - remove = (TextView) itemView.findViewById(R.id.temptargetrange_remove); - remove.setOnClickListener(this); - remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); - } - - @Override - public void onClick(View v) { - final TempTarget tempTarget = (TempTarget) v.getTag(); - switch (v.getId()) { - case R.id.temptargetrange_remove: - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.removerecord) + "\n" + DateUtil.dateAndTimeString(tempTarget.date)); - builder.setPositiveButton(MainApp.gs(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { + cv = itemView.findViewById(R.id.temptargetrange_cardview); + date = itemView.findViewById(R.id.temptargetrange_date); + duration = itemView.findViewById(R.id.temptargetrange_duration); + low = itemView.findViewById(R.id.temptargetrange_low); + high = itemView.findViewById(R.id.temptargetrange_high); + reason = itemView.findViewById(R.id.temptargetrange_reason); + reasonLabel = itemView.findViewById(R.id.temptargetrange_reason_label); + reasonColon = itemView.findViewById(R.id.temptargetrange_reason_colon); + ph = itemView.findViewById(R.id.pump_sign); + ns = itemView.findViewById(R.id.ns_sign); + remove = itemView.findViewById(R.id.temptargetrange_remove); + remove.setOnClickListener(v -> { + final TempTarget tempTarget = (TempTarget) v.getTag(); + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.removerecord), + MainApp.gs(R.string.careportal_temporarytarget) + ": " + tempTarget.friendlyDescription(ProfileFunctions.getSystemUnits()) + + "\n" + DateUtil.dateAndTimeString(tempTarget.date), + (dialog, id) -> { final String _id = tempTarget._id; if (NSUpload.isIdValid(_id)) { NSUpload.removeCareportalEntryFromNS(_id); @@ -155,12 +141,9 @@ public class TreatmentsTempTargetFragment extends Fragment implements View.OnCli UploadQueue.removeID("dbAdd", _id); } MainApp.getDbHelper().delete(tempTarget); - } - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - } + }, null); + }); + remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); } } } @@ -170,18 +153,20 @@ public class TreatmentsTempTargetFragment extends Fragment implements View.OnCli Bundle savedInstanceState) { View view = inflater.inflate(R.layout.treatments_temptarget_fragment, container, false); - recyclerView = (RecyclerView) view.findViewById(R.id.temptargetrange_recyclerview); + recyclerView = view.findViewById(R.id.temptargetrange_recyclerview); recyclerView.setHasFixedSize(true); - llm = new LinearLayoutManager(view.getContext()); + LinearLayoutManager llm = new LinearLayoutManager(view.getContext()); recyclerView.setLayoutManager(llm); RecyclerViewAdapter adapter = new RecyclerViewAdapter(TreatmentsPlugin.getPlugin().getTempTargetsFromHistory()); recyclerView.setAdapter(adapter); - refreshFromNS = (Button) view.findViewById(R.id.temptargetrange_refreshfromnightscout); - refreshFromNS.setOnClickListener(this); - - context = getContext(); + Button refreshFromNS = view.findViewById(R.id.temptargetrange_refreshfromnightscout); + refreshFromNS.setOnClickListener(v -> + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.refresheventsfromnightscout) + " ?", () -> { + MainApp.getDbHelper().resetTempTargets(); + RxBus.INSTANCE.send(new EventNSClientRestart()); + })); boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false); if (nsUploadOnly) @@ -207,26 +192,6 @@ public class TreatmentsTempTargetFragment extends Fragment implements View.OnCli disposable.clear(); } - @Override - public void onClick(View view) { - switch (view.getId()) { - case R.id.temptargetrange_refreshfromnightscout: - AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext()); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.refresheventsfromnightscout) + " ?"); - builder.setPositiveButton(MainApp.gs(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - MainApp.getDbHelper().resetTempTargets(); - RxBus.INSTANCE.send(new EventNSClientRestart()); - } - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - } - - } - private void updateGui() { recyclerView.swapAdapter(new RecyclerViewAdapter(TreatmentsPlugin.getPlugin().getTempTargetsFromHistory()), false); } 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 45f930410e..22dd86e381 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 @@ -1,6 +1,5 @@ package info.nightscout.androidaps.plugins.treatments.fragments; -import android.content.Context; import android.graphics.Paint; import android.os.Bundle; import android.view.LayoutInflater; @@ -9,7 +8,6 @@ import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; import androidx.cardview.widget.CardView; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; @@ -33,6 +31,7 @@ import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; 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 io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; @@ -40,12 +39,9 @@ import io.reactivex.disposables.CompositeDisposable; public class TreatmentsTemporaryBasalsFragment extends Fragment { private CompositeDisposable disposable = new CompositeDisposable(); - RecyclerView recyclerView; - LinearLayoutManager llm; + private RecyclerView recyclerView; - TextView tempBasalTotalView; - - Context context; + private TextView tempBasalTotalView; public class RecyclerViewAdapter extends RecyclerView.Adapter { @@ -55,6 +51,7 @@ public class TreatmentsTemporaryBasalsFragment extends Fragment { this.tempBasalList = tempBasalList; } + @NonNull @Override public TempBasalsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.treatments_tempbasals_item, viewGroup, false); @@ -123,11 +120,11 @@ public class TreatmentsTemporaryBasalsFragment extends Fragment { } @Override - public void onAttachedToRecyclerView(RecyclerView recyclerView) { + public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); } - public class TempBasalsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + class TempBasalsViewHolder extends RecyclerView.ViewHolder { CardView cv; TextView date; TextView duration; @@ -144,45 +141,37 @@ public class TreatmentsTemporaryBasalsFragment extends Fragment { TempBasalsViewHolder(View itemView) { super(itemView); - cv = (CardView) itemView.findViewById(R.id.tempbasals_cardview); - date = (TextView) itemView.findViewById(R.id.tempbasals_date); - duration = (TextView) itemView.findViewById(R.id.tempbasals_duration); - absolute = (TextView) itemView.findViewById(R.id.tempbasals_absolute); - percent = (TextView) itemView.findViewById(R.id.tempbasals_percent); - realDuration = (TextView) itemView.findViewById(R.id.tempbasals_realduration); - netRatio = (TextView) itemView.findViewById(R.id.tempbasals_netratio); - netInsulin = (TextView) itemView.findViewById(R.id.tempbasals_netinsulin); - iob = (TextView) itemView.findViewById(R.id.tempbasals_iob); - extendedFlag = (TextView) itemView.findViewById(R.id.tempbasals_extendedflag); - ph = (TextView) itemView.findViewById(R.id.pump_sign); - ns = (TextView) itemView.findViewById(R.id.ns_sign); - remove = (TextView) itemView.findViewById(R.id.tempbasals_remove); - remove.setOnClickListener(this); + cv = itemView.findViewById(R.id.tempbasals_cardview); + date = itemView.findViewById(R.id.tempbasals_date); + duration = itemView.findViewById(R.id.tempbasals_duration); + absolute = itemView.findViewById(R.id.tempbasals_absolute); + percent = itemView.findViewById(R.id.tempbasals_percent); + realDuration = itemView.findViewById(R.id.tempbasals_realduration); + netRatio = itemView.findViewById(R.id.tempbasals_netratio); + netInsulin = itemView.findViewById(R.id.tempbasals_netinsulin); + iob = itemView.findViewById(R.id.tempbasals_iob); + extendedFlag = itemView.findViewById(R.id.tempbasals_extendedflag); + ph = itemView.findViewById(R.id.pump_sign); + ns = itemView.findViewById(R.id.ns_sign); + remove = itemView.findViewById(R.id.tempbasals_remove); + remove.setOnClickListener(v -> { + final TemporaryBasal tempBasal = (TemporaryBasal) v.getTag(); + OKDialog.showConfirmation(getContext(), MainApp.gs(R.string.removerecord), + MainApp.gs(R.string.pump_tempbasal_label) + ": " + tempBasal.toStringFull() + + "\n" + MainApp.gs(R.string.date) + ": " + DateUtil.dateAndTimeString(tempBasal.date), + ((dialog, id) -> { + final String _id = tempBasal._id; + if (NSUpload.isIdValid(_id)) { + NSUpload.removeCareportalEntryFromNS(_id); + } else { + UploadQueue.removeID("dbAdd", _id); + } + MainApp.getDbHelper().delete(tempBasal); + }), null); + }); remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); } - @Override - public void onClick(View v) { - final TemporaryBasal tempBasal = (TemporaryBasal) v.getTag(); - switch (v.getId()) { - case R.id.tempbasals_remove: - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(MainApp.gs(R.string.removerecord) + "\n" + DateUtil.dateAndTimeString(tempBasal.date)); - builder.setPositiveButton(MainApp.gs(R.string.ok), (dialog, id) -> { - final String _id = tempBasal._id; - if (NSUpload.isIdValid(_id)) { - NSUpload.removeCareportalEntryFromNS(_id); - } else { - UploadQueue.removeID("dbAdd", _id); - } - MainApp.getDbHelper().delete(tempBasal); - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); - break; - } - } } } @@ -191,17 +180,15 @@ public class TreatmentsTemporaryBasalsFragment extends Fragment { Bundle savedInstanceState) { View view = inflater.inflate(R.layout.treatments_tempbasals_fragment, container, false); - recyclerView = (RecyclerView) view.findViewById(R.id.tempbasals_recyclerview); + recyclerView = view.findViewById(R.id.tempbasals_recyclerview); recyclerView.setHasFixedSize(true); - llm = new LinearLayoutManager(view.getContext()); + LinearLayoutManager llm = new LinearLayoutManager(view.getContext()); recyclerView.setLayoutManager(llm); RecyclerViewAdapter adapter = new RecyclerViewAdapter(TreatmentsPlugin.getPlugin().getTemporaryBasalsFromHistory()); recyclerView.setAdapter(adapter); - tempBasalTotalView = (TextView) view.findViewById(R.id.tempbasals_totaltempiob); - - context = getContext(); + tempBasalTotalView = view.findViewById(R.id.tempbasals_totaltempiob); return view; } diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java index 7f5c2baf79..a0dff38104 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java @@ -295,7 +295,7 @@ public class SWDefinition { .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.profileswitch) + private SWScreen screenProfileSwitch = new SWScreen(R.string.careportal_profileswitch) .skippable(false) .add(new SWInfotext() .label(R.string.profileswitch_ismissing)) 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 8d0d37e003..b74567d027 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.java @@ -8,13 +8,10 @@ import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; import androidx.core.app.ActivityCompat; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.List; import info.nightscout.androidaps.MainActivity; @@ -37,8 +34,6 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; public class SetupWizardActivity extends NoSplashAppCompatActivity { - //logging - private static Logger log = LoggerFactory.getLogger(SetupWizardActivity.class); private CompositeDisposable disposable = new CompositeDisposable(); ScrollView scrollView; @@ -54,7 +49,7 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity { LocaleHelper.INSTANCE.update(getApplicationContext()); setContentView(R.layout.activity_setupwizard); - scrollView = (ScrollView) findViewById(R.id.sw_scrollview); + scrollView = findViewById(R.id.sw_scrollview); Intent intent = getIntent(); currentWizardPage = intent.getIntExtra(SetupWizardActivity.INTENT_MESSAGE, 0); @@ -62,7 +57,7 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity { SWScreen currentScreen = screens.get(currentWizardPage); //Set screen name - TextView screenName = (TextView) findViewById(R.id.sw_content); + TextView screenName = findViewById(R.id.sw_content); screenName.setText(currentScreen.getHeader()); swDefinition.setActivity(this); @@ -187,7 +182,7 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity { return page; page++; } - return Math.min(currentWizardPage, screens.size() -1); + return Math.min(currentWizardPage, screens.size() - 1); } private int previousPage() { @@ -201,17 +196,14 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity { } @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (permissions.length != 0) { if (ActivityCompat.checkSelfPermission(this, permissions[0]) == PackageManager.PERMISSION_GRANTED) { switch (requestCode) { case AndroidPermission.CASE_STORAGE: //show dialog after permission is granted - AlertDialog.Builder alert = new AlertDialog.Builder(this); - alert.setMessage(R.string.alert_dialog_storage_permission_text); - alert.setPositiveButton(R.string.ok, null); - alert.show(); + OKDialog.show(this, MainApp.gs(R.string.permission), MainApp.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/utils/BolusWizard.kt b/app/src/main/java/info/nightscout/androidaps/utils/BolusWizard.kt index 3c90de2ded..6d71a80ba1 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/BolusWizard.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/BolusWizard.kt @@ -2,9 +2,9 @@ package info.nightscout.androidaps.utils import android.content.Context import android.content.Intent -import androidx.appcompat.app.AlertDialog import info.nightscout.androidaps.MainApp import info.nightscout.androidaps.R +import info.nightscout.androidaps.activities.ErrorHelperActivity import info.nightscout.androidaps.data.DetailedBolusInfo import info.nightscout.androidaps.data.Profile import info.nightscout.androidaps.db.CareportalEvent @@ -20,7 +20,6 @@ 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.activities.ErrorHelperActivity import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin @@ -127,8 +126,8 @@ class BolusWizard @JvmOverloads constructor(val profile: Profile, if (useBg && bg > 0) { bgDiff = when { bg in targetBGLow..targetBGHigh -> 0.0 - bg <= targetBGLow -> bg - targetBGLow - else -> bg - targetBGHigh + bg <= targetBGLow -> bg - targetBGLow + else -> bg - targetBGHigh } insulinFromBG = bgDiff / sens } @@ -142,7 +141,6 @@ class BolusWizard @JvmOverloads constructor(val profile: Profile, } } - // Insulin from carbs ic = profile.ic insulinFromCarbs = carbs / ic @@ -185,7 +183,7 @@ class BolusWizard @JvmOverloads constructor(val profile: Profile, } val bolusStep = ConfigBuilderPlugin.getPlugin().activePump?.pumpDescription?.bolusStep - ?: 0.1 + ?: 0.1 calculatedTotalInsulin = Round.roundTo(calculatedTotalInsulin, bolusStep) insulinAfterConstraints = MainApp.getConstraintChecker().applyBolusConstraints(Constraint(calculatedTotalInsulin)).value() @@ -236,7 +234,7 @@ class BolusWizard @JvmOverloads constructor(val profile: Profile, private fun confirmMessageAfterConstraints(pump: PumpInterface): String { - var confirmMessage = MainApp.gs(R.string.entertreatmentquestion) + var confirmMessage = "" if (insulinAfterConstraints > 0) { val pct = if (percentageCorrection != 100.0) " (" + percentageCorrection.toInt() + "%)" else "" confirmMessage += "
" + MainApp.gs(R.string.bolus) + ": " + "" + DecimalFormatter.toPumpSupportedBolus(insulinAfterConstraints) + "U" + pct + "" @@ -268,89 +266,83 @@ class BolusWizard @JvmOverloads constructor(val profile: Profile, val pump = ConfigBuilderPlugin.getPlugin().activePump ?: return if (calculatedTotalInsulin > 0.0 || carbs > 0.0) { + if (accepted) { + log.debug("guarding: already accepted") + return + } + accepted = true + val confirmMessage = confirmMessageAfterConstraints(pump) - val builder = AlertDialog.Builder(context) - builder.setTitle(MainApp.gs(R.string.confirmation)) - builder.setMessage(HtmlHelper.fromHtml(confirmMessage)) - builder.setPositiveButton(MainApp.gs(R.string.ok)) { _, _ -> - synchronized(builder) { - if (accepted) { - log.debug("guarding: already accepted") - return@setPositiveButton - } - accepted = true - if (insulinAfterConstraints > 0 || carbs > 0) { - if (useSuperBolus) { - val loopPlugin = LoopPlugin.getPlugin() - if (loopPlugin.isEnabled(PluginType.LOOP)) { - loopPlugin.superBolusTo(System.currentTimeMillis() + 2 * 60L * 60 * 1000) - RxBus.send(EventRefreshOverview("WizardDialog")) - } - - val pump1 = ConfigBuilderPlugin.getPlugin().activePump - - if (pump1?.pumpDescription?.tempBasalStyle == PumpDescription.ABSOLUTE) { - ConfigBuilderPlugin.getPlugin().commandQueue.tempBasalAbsolute(0.0, 120, true, profile, object : Callback() { - override fun run() { - if (!result.success) { - val i = Intent(MainApp.instance(), ErrorHelperActivity::class.java) - i.putExtra("soundid", R.raw.boluserror) - i.putExtra("status", result.comment) - i.putExtra("title", MainApp.gs(R.string.tempbasaldeliveryerror)) - i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - MainApp.instance().startActivity(i) - } - } - }) - } else { - - ConfigBuilderPlugin.getPlugin().commandQueue.tempBasalPercent(0, 120, true, profile, object : Callback() { - override fun run() { - if (!result.success) { - val i = Intent(MainApp.instance(), ErrorHelperActivity::class.java) - i.putExtra("soundid", R.raw.boluserror) - i.putExtra("status", result.comment) - i.putExtra("title", MainApp.gs(R.string.tempbasaldeliveryerror)) - i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - MainApp.instance().startActivity(i) - } - } - }) - } + OKDialog.showConfirmation(context, MainApp.gs(R.string.boluswizard), HtmlHelper.fromHtml(confirmMessage), Runnable { + if (insulinAfterConstraints > 0 || carbs > 0) { + if (useSuperBolus) { + val loopPlugin = LoopPlugin.getPlugin() + if (loopPlugin.isEnabled(PluginType.LOOP)) { + loopPlugin.superBolusTo(System.currentTimeMillis() + 2 * 60L * 60 * 1000) + RxBus.send(EventRefreshOverview("WizardDialog")) } - val detailedBolusInfo = DetailedBolusInfo() - detailedBolusInfo.eventType = CareportalEvent.BOLUSWIZARD - detailedBolusInfo.insulin = insulinAfterConstraints - detailedBolusInfo.carbs = carbs.toDouble() - detailedBolusInfo.context = context - detailedBolusInfo.glucose = bg - detailedBolusInfo.glucoseType = "Manual" - detailedBolusInfo.carbTime = carbTime - detailedBolusInfo.boluscalc = nsJSON() - detailedBolusInfo.source = Source.USER - detailedBolusInfo.notes = notes - if (detailedBolusInfo.insulin > 0 || ConfigBuilderPlugin.getPlugin().activePump?.pumpDescription?.storesCarbInfo == true) { - ConfigBuilderPlugin.getPlugin().commandQueue.bolus(detailedBolusInfo, object : Callback() { + + val pump1 = ConfigBuilderPlugin.getPlugin().activePump + + if (pump1?.pumpDescription?.tempBasalStyle == PumpDescription.ABSOLUTE) { + ConfigBuilderPlugin.getPlugin().commandQueue.tempBasalAbsolute(0.0, 120, true, profile, object : Callback() { override fun run() { if (!result.success) { val i = Intent(MainApp.instance(), ErrorHelperActivity::class.java) i.putExtra("soundid", R.raw.boluserror) i.putExtra("status", result.comment) - i.putExtra("title", MainApp.gs(R.string.treatmentdeliveryerror)) + i.putExtra("title", MainApp.gs(R.string.tempbasaldeliveryerror)) i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) MainApp.instance().startActivity(i) } } }) } else { - TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false) + + ConfigBuilderPlugin.getPlugin().commandQueue.tempBasalPercent(0, 120, true, profile, object : Callback() { + override fun run() { + if (!result.success) { + val i = Intent(MainApp.instance(), ErrorHelperActivity::class.java) + i.putExtra("soundid", R.raw.boluserror) + i.putExtra("status", result.comment) + i.putExtra("title", MainApp.gs(R.string.tempbasaldeliveryerror)) + i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + MainApp.instance().startActivity(i) + } + } + }) } } + val detailedBolusInfo = DetailedBolusInfo() + detailedBolusInfo.eventType = CareportalEvent.BOLUSWIZARD + detailedBolusInfo.insulin = insulinAfterConstraints + detailedBolusInfo.carbs = carbs.toDouble() + detailedBolusInfo.context = context + detailedBolusInfo.glucose = bg + detailedBolusInfo.glucoseType = "Manual" + detailedBolusInfo.carbTime = carbTime + detailedBolusInfo.boluscalc = nsJSON() + detailedBolusInfo.source = Source.USER + detailedBolusInfo.notes = notes + if (detailedBolusInfo.insulin > 0 || ConfigBuilderPlugin.getPlugin().activePump?.pumpDescription?.storesCarbInfo == true) { + ConfigBuilderPlugin.getPlugin().commandQueue.bolus(detailedBolusInfo, object : Callback() { + override fun run() { + if (!result.success) { + val i = Intent(MainApp.instance(), ErrorHelperActivity::class.java) + i.putExtra("soundid", R.raw.boluserror) + i.putExtra("status", result.comment) + i.putExtra("title", MainApp.gs(R.string.treatmentdeliveryerror)) + i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + MainApp.instance().startActivity(i) + } + } + }) + } else { + TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false) + } } - } - builder.setNegativeButton(MainApp.gs(R.string.cancel), null) - builder.show() + }) } } } diff --git a/app/src/main/java/info/nightscout/androidaps/utils/OKDialog.java b/app/src/main/java/info/nightscout/androidaps/utils/OKDialog.java deleted file mode 100644 index f657550d0f..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/utils/OKDialog.java +++ /dev/null @@ -1,127 +0,0 @@ -package info.nightscout.androidaps.utils; - -import android.app.Activity; -import android.app.Dialog; -import android.content.Context; -import android.os.Handler; -import android.os.SystemClock; -import android.text.Spanned; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.view.ContextThemeWrapper; - -import info.nightscout.androidaps.MainApp; -import info.nightscout.androidaps.R; - -public class OKDialog { - public static void show(final Context context, String title, String message, final Runnable runnable) { - if (title.isEmpty()) title = MainApp.gs(R.string.message); - View titleLayout = LayoutInflater.from(context).inflate(R.layout.dialog_alert_custom, null); - ((TextView)titleLayout.findViewById(R.id.alertdialog_title)).setText(title); - ((ImageView)titleLayout.findViewById(R.id.alertdialog_icon)).setImageResource(R.drawable.ic_check_while_48dp); - - new AlertDialog.Builder(new ContextThemeWrapper(context, R.style.AppTheme)) - .setCustomTitle(titleLayout) - .setMessage(message) - .setPositiveButton(MainApp.gs(R.string.ok), (dialog, which) -> { - dialog.dismiss(); - if (runnable != null) { - SystemClock.sleep(100); - runOnUiThread(runnable); - } - }) - .show() - .setCanceledOnTouchOutside(false); - } - - public static boolean runOnUiThread(Runnable theRunnable) { - final Handler mainHandler = new Handler(MainApp.instance().getApplicationContext().getMainLooper()); - return mainHandler.post(theRunnable); - } - - public static void show(final Activity activity, String title, Spanned message, final Runnable runnable) { - if (title.isEmpty()) title = MainApp.gs(R.string.message); - View titleLayout = activity.getLayoutInflater().inflate(R.layout.dialog_alert_custom, null); - ((TextView)titleLayout.findViewById(R.id.alertdialog_title)).setText(title); - ((ImageView)titleLayout.findViewById(R.id.alertdialog_icon)).setImageResource(R.drawable.ic_check_while_48dp); - - new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.AppTheme)) - .setCustomTitle(titleLayout) - .setMessage(message) - .setPositiveButton(MainApp.gs(R.string.ok), (dialog, which) -> { - dialog.dismiss(); - if (runnable != null) { - SystemClock.sleep(100); - activity.runOnUiThread(runnable); - } - }) - .show() - .setCanceledOnTouchOutside(false); - } - - public static void showConfirmation(final Activity activity, String message, final Runnable ok) { - showConfirmation(activity, message, ok, null); - } - - public static void showConfirmation(final Activity activity, Spanned message, final Runnable ok) { - showConfirmation(activity, message, ok, null); - } - - public static void showConfirmation(final Activity activity, Spanned message, final Runnable ok, final Runnable cancel) { - View titleLayout = activity.getLayoutInflater().inflate(R.layout.dialog_alert_custom, null); - ((TextView)titleLayout.findViewById(R.id.alertdialog_title)).setText(R.string.confirmation); - ((ImageView)titleLayout.findViewById(R.id.alertdialog_icon)).setImageResource(R.drawable.ic_check_while_48dp); - - new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.AppTheme)) - .setMessage(message) - .setCustomTitle(titleLayout) - .setPositiveButton(android.R.string.ok, (dialog, which) -> { - dialog.dismiss(); - if (ok != null) { - SystemClock.sleep(100); - activity.runOnUiThread(ok); - } - }) - .setNegativeButton(android.R.string.cancel, (dialog, which) -> { - dialog.dismiss(); - if (cancel != null) { - SystemClock.sleep(100); - activity.runOnUiThread(cancel); - } - }) - .setNegativeButton(android.R.string.cancel, null) - .show() - .setCanceledOnTouchOutside(false); - } - - public static void showConfirmation(final Activity activity, String message, final Runnable ok, final Runnable cancel) { - View titleLayout = activity.getLayoutInflater().inflate(R.layout.dialog_alert_custom, null); - ((TextView)titleLayout.findViewById(R.id.alertdialog_title)).setText(R.string.confirmation); - ((ImageView)titleLayout.findViewById(R.id.alertdialog_icon)).setImageResource(R.drawable.ic_check_while_48dp); - - new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.AppTheme)) - .setMessage(message) - .setCustomTitle(titleLayout) - .setPositiveButton(android.R.string.ok, (dialog, which) -> { - dialog.dismiss(); - if (ok != null) { - SystemClock.sleep(100); - activity.runOnUiThread(ok); - } - }) - .setNegativeButton(android.R.string.cancel, (dialog, which) -> { - dialog.dismiss(); - if (cancel != null) { - SystemClock.sleep(100); - activity.runOnUiThread(cancel); - } - }) - .show() - .setCanceledOnTouchOutside(false); - } - -} diff --git a/app/src/main/java/info/nightscout/androidaps/utils/OKDialog.kt b/app/src/main/java/info/nightscout/androidaps/utils/OKDialog.kt new file mode 100644 index 0000000000..1d22c380ca --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/utils/OKDialog.kt @@ -0,0 +1,203 @@ +package info.nightscout.androidaps.utils + +import android.app.Activity +import android.content.Context +import android.content.DialogInterface +import android.os.Handler +import android.os.SystemClock +import android.text.Spanned +import android.view.LayoutInflater +import android.view.View +import android.widget.ImageView +import android.widget.TextView +import androidx.appcompat.app.AlertDialog +import androidx.appcompat.view.ContextThemeWrapper +import info.nightscout.androidaps.MainApp +import info.nightscout.androidaps.R + +object OKDialog { + @JvmStatic + @JvmOverloads + fun show(context: Context, title: String, message: String, runnable: Runnable? = null) { + var notEmptytitle = title + if (notEmptytitle.isEmpty()) notEmptytitle = MainApp.gs(R.string.message) + val titleLayout = LayoutInflater.from(context).inflate(R.layout.dialog_alert_custom, null) + (titleLayout.findViewById(R.id.alertdialog_title) as TextView).text = notEmptytitle + (titleLayout.findViewById(R.id.alertdialog_icon) as ImageView).setImageResource(R.drawable.ic_check_while_48dp) + AlertDialog.Builder(ContextThemeWrapper(context, R.style.AppTheme)) + .setCustomTitle(titleLayout) + .setMessage(message) + .setPositiveButton(MainApp.gs(R.string.ok)) { dialog: DialogInterface, _: Int -> + dialog.dismiss() + SystemClock.sleep(100) + runOnUiThread(runnable) + } + .show() + .setCanceledOnTouchOutside(false) + } + + fun runOnUiThread(theRunnable: Runnable?) { + val mainHandler = Handler(MainApp.instance().applicationContext.mainLooper) + theRunnable?.let { mainHandler.post(it) } + } + + @JvmStatic + @JvmOverloads + fun show(activity: Activity, title: String, message: Spanned, runnable: Runnable? = null) { + var notEmptytitle = title + if (notEmptytitle.isEmpty()) notEmptytitle = MainApp.gs(R.string.message) + val titleLayout = activity.layoutInflater.inflate(R.layout.dialog_alert_custom, null) + (titleLayout.findViewById(R.id.alertdialog_title) as TextView).text = notEmptytitle + (titleLayout.findViewById(R.id.alertdialog_icon) as ImageView).setImageResource(R.drawable.ic_check_while_48dp) + AlertDialog.Builder(ContextThemeWrapper(activity, R.style.AppTheme)) + .setCustomTitle(titleLayout) + .setMessage(message) + .setPositiveButton(MainApp.gs(R.string.ok)) { dialog: DialogInterface, _: Int -> + dialog.dismiss() + SystemClock.sleep(100) + runnable?.let { activity.runOnUiThread(it) } + } + .show() + .setCanceledOnTouchOutside(false) + } + + @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) + } + + @JvmStatic + @JvmOverloads + fun showConfirmation(activity: Activity, title: String, message: Spanned, ok: Runnable?, cancel: Runnable? = null) { + val titleLayout = activity.layoutInflater.inflate(R.layout.dialog_alert_custom, null) + (titleLayout.findViewById(R.id.alertdialog_title) as TextView).text = title + (titleLayout.findViewById(R.id.alertdialog_icon) as ImageView).setImageResource(R.drawable.ic_check_while_48dp) + AlertDialog.Builder(ContextThemeWrapper(activity, R.style.AppTheme)) + .setMessage(message) + .setCustomTitle(titleLayout) + .setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int -> + dialog.dismiss() + SystemClock.sleep(100) + ok?.let { activity.runOnUiThread(it) } + } + .setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int -> + dialog.dismiss() + SystemClock.sleep(100) + cancel?.let { activity.runOnUiThread(it) } + } + .setNegativeButton(android.R.string.cancel, null) + .show() + .setCanceledOnTouchOutside(false) + } + + @JvmStatic + fun showConfirmation(activity: Activity, title: String, message: String, ok: Runnable?, cancel: Runnable? = null) { + val titleLayout = activity.layoutInflater.inflate(R.layout.dialog_alert_custom, null) + (titleLayout.findViewById(R.id.alertdialog_title) as TextView).text = title + (titleLayout.findViewById(R.id.alertdialog_icon) as ImageView).setImageResource(R.drawable.ic_check_while_48dp) + AlertDialog.Builder(ContextThemeWrapper(activity, R.style.AppTheme)) + .setMessage(message) + .setCustomTitle(titleLayout) + .setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int -> + dialog.dismiss() + SystemClock.sleep(100) + ok?.let { activity.runOnUiThread(it) } + } + .setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int -> + dialog.dismiss() + SystemClock.sleep(100) + cancel?.let { activity.runOnUiThread(it) } + } + .show() + .setCanceledOnTouchOutside(false) + } + + @JvmStatic + @JvmOverloads + fun showConfirmation(context: Context, message: Spanned, ok: Runnable?, cancel: Runnable? = null) { + showConfirmation(context, MainApp.gs(R.string.confirmation), message, ok, cancel) + } + + @JvmStatic + @JvmOverloads + fun showConfirmation(context: Context, title: String, message: Spanned, ok: Runnable?, cancel: Runnable? = null) { + val titleLayout = LayoutInflater.from(context).inflate(R.layout.dialog_alert_custom, null) + (titleLayout.findViewById(R.id.alertdialog_title) as TextView).text = title + (titleLayout.findViewById(R.id.alertdialog_icon) as ImageView).setImageResource(R.drawable.ic_check_while_48dp) + AlertDialog.Builder(ContextThemeWrapper(context, R.style.AppTheme)) + .setMessage(message) + .setCustomTitle(titleLayout) + .setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int -> + dialog.dismiss() + SystemClock.sleep(100) + runOnUiThread(ok) + } + .setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int -> + dialog.dismiss() + SystemClock.sleep(100) + runOnUiThread(cancel) + } + .setNegativeButton(android.R.string.cancel, null) + .show() + .setCanceledOnTouchOutside(false) + } + + @JvmStatic + @JvmOverloads + fun showConfirmation(context: Context, message: String, ok: Runnable?, cancel: Runnable? = null) { + showConfirmation(context, MainApp.gs(R.string.confirmation), message, ok, cancel) + } + + @JvmStatic + @JvmOverloads + fun showConfirmation(context: Context, title: String, message: String, ok: Runnable?, cancel: Runnable? = null) { + val titleLayout = LayoutInflater.from(context).inflate(R.layout.dialog_alert_custom, null) + (titleLayout.findViewById(R.id.alertdialog_title) as TextView).text = title + (titleLayout.findViewById(R.id.alertdialog_icon) as ImageView).setImageResource(R.drawable.ic_check_while_48dp) + AlertDialog.Builder(ContextThemeWrapper(context, R.style.AppTheme)) + .setMessage(message) + .setCustomTitle(titleLayout) + .setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int -> + dialog.dismiss() + SystemClock.sleep(100) + runOnUiThread(ok) + } + .setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int -> + dialog.dismiss() + SystemClock.sleep(100) + runOnUiThread(cancel) + } + .show() + .setCanceledOnTouchOutside(false) + } + + @JvmStatic + @JvmOverloads + fun showConfirmation(context: Context, title: String, message: String, ok: DialogInterface.OnClickListener?, cancel: DialogInterface.OnClickListener? = null) { + val titleLayout = LayoutInflater.from(context).inflate(R.layout.dialog_alert_custom, null) + (titleLayout.findViewById(R.id.alertdialog_title) as TextView).text = title + (titleLayout.findViewById(R.id.alertdialog_icon) as ImageView).setImageResource(R.drawable.ic_check_while_48dp) + AlertDialog.Builder(ContextThemeWrapper(context, R.style.AppTheme)) + .setMessage(message) + .setCustomTitle(titleLayout) + .setPositiveButton(android.R.string.ok) { dialog: DialogInterface, which: Int -> + dialog.dismiss() + SystemClock.sleep(100) + ok?.onClick(dialog, which) + } + .setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, which: Int -> + dialog.dismiss() + SystemClock.sleep(100) + cancel?.onClick(dialog, which) + } + .show() + .setCanceledOnTouchOutside(false) + } +} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/utils/PasswordProtection.java b/app/src/main/java/info/nightscout/androidaps/utils/PasswordProtection.java index 230be97e22..6c4348bb03 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/PasswordProtection.java +++ b/app/src/main/java/info/nightscout/androidaps/utils/PasswordProtection.java @@ -2,10 +2,10 @@ package info.nightscout.androidaps.utils; import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; +import android.widget.ImageView; import android.widget.TextView; import info.nightscout.androidaps.MainApp; @@ -18,10 +18,7 @@ import info.nightscout.androidaps.R; public class PasswordProtection { static public boolean isLocked(String preference) { final String password = SP.getString(preference, ""); - if (password.equals("")) { - return false; - } - return true; + return !password.equals(""); } static public void QueryPassword(final Context context, int stringID, String preference, final Runnable ok, final Runnable fail) { @@ -30,39 +27,38 @@ public class PasswordProtection { if (ok != null) ok.run(); return; } - LayoutInflater li = LayoutInflater.from(context); - View promptsView = li.inflate(R.layout.passwordprompt, null); + View promptsView = LayoutInflater.from(context).inflate(R.layout.passwordprompt, null); + + View titleLayout = LayoutInflater.from(context).inflate(R.layout.dialog_alert_custom, null); + ((TextView) titleLayout.findViewById(R.id.alertdialog_title)).setText(R.string.confirmation); + ((ImageView) titleLayout.findViewById(R.id.alertdialog_icon)).setImageResource(R.drawable.ic_check_while_48dp); AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); alertDialogBuilder.setView(promptsView); + alertDialogBuilder.setCustomTitle(titleLayout); - final TextView label = (TextView) promptsView.findViewById(R.id.passwordprompt_text); + final TextView label = promptsView.findViewById(R.id.passwordprompt_text); label.setText(MainApp.gs(stringID)); - final EditText userInput = (EditText) promptsView.findViewById(R.id.passwordprompt_pass); + final EditText userInput = promptsView.findViewById(R.id.passwordprompt_pass); // set dialog message alertDialogBuilder .setCancelable(false) - .setPositiveButton("OK", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog,int id) { - String enteredPassword = userInput.getText().toString(); - if (password.equals(enteredPassword)) { - if (ok != null) ok.run(); - } else { - ToastUtils.showToastInUiThread(context, MainApp.gs(R.string.wrongpassword)); - if (fail != null) fail.run(); - } + .setPositiveButton(android.R.string.ok, + (dialog, id) -> { + String enteredPassword = userInput.getText().toString(); + if (password.equals(enteredPassword)) { + if (ok != null) ok.run(); + } else { + ToastUtils.showToastInUiThread(context, MainApp.gs(R.string.wrongpassword)); + if (fail != null) fail.run(); } }) - .setNegativeButton("Cancel", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog,int id) { - dialog.cancel(); - } - }); + .setNegativeButton(android.R.string.cancel, + (dialog, id) -> dialog.cancel()); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); + alertDialog.setCanceledOnTouchOutside(false); } } diff --git a/app/src/main/java/info/nightscout/androidaps/utils/XdripCalibrations.java b/app/src/main/java/info/nightscout/androidaps/utils/XdripCalibrations.java index 404a082112..4354ccd528 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/XdripCalibrations.java +++ b/app/src/main/java/info/nightscout/androidaps/utils/XdripCalibrations.java @@ -1,11 +1,9 @@ package info.nightscout.androidaps.utils; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ResolveInfo; import android.os.Bundle; -import androidx.appcompat.app.AlertDialog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,20 +23,10 @@ import info.nightscout.androidaps.services.Intents; public class XdripCalibrations { private static Logger log = LoggerFactory.getLogger(XdripCalibrations.class); - public static void confirmAndSendCalibration(final Double bg, Context parentContext) { + public static void confirmAndSendCalibration(final Double bg, final Context parentContext) { if (parentContext != null) { String confirmMessage = String.format(MainApp.gs(R.string.send_calibration), bg); - - AlertDialog.Builder builder = new AlertDialog.Builder(parentContext); - builder.setTitle(MainApp.gs(R.string.confirmation)); - builder.setMessage(confirmMessage); - builder.setPositiveButton(MainApp.gs(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - sendIntent(bg); - } - }); - builder.setNegativeButton(MainApp.gs(R.string.cancel), null); - builder.show(); + OKDialog.showConfirmation(parentContext, confirmMessage, () -> sendIntent(bg)); } } diff --git a/app/src/main/res/layout/treatments_fragment.xml b/app/src/main/res/layout/treatments_fragment.xml index 88d4f65199..1ab1bbe88e 100644 --- a/app/src/main/res/layout/treatments_fragment.xml +++ b/app/src/main/res/layout/treatments_fragment.xml @@ -38,7 +38,7 @@ android:gravity="center_vertical|center_horizontal" android:paddingLeft="5dp" android:paddingRight="5dp" - android:text="@string/extendedbolus" /> + android:text="@string/extended_bolus" /> + android:text="@string/pump_tempbasal_label" /> + android:text="@string/careportal_temporarytarget" /> + android:text="@string/careportal_profileswitch" /> Overview
NS Profile Simple profile - TempBasal Treatments Virtual Pump Careportal @@ -177,14 +176,12 @@ Calculator Constraint applied! Confirmation - Enter new treatment: Bolus Bolus: Basal Basal: Carbs Change your input! - Set new extended bolus: BG Source Where should AndroidAPS gain it\'s data from? xDrip @@ -213,7 +210,7 @@ CGM Sensor Insert CGM Sensor Start Insulin Cartridge Change - Profile Switch + Profile switch Snack Bolus Meal Bolus Correction Bolus @@ -312,8 +309,8 @@ Finger Sensor Manual - Temporary Target - Temporary Target Cancel + Temporary target + Temporary target cancel DanaR profile settings DIA [h] Duration of Insulin Activity @@ -453,7 +450,7 @@ Eating Soon Hypo Activity - Remove record: + Remove record DanaR Stats Cumulative TDD Exponentially Weighted TDD @@ -648,15 +645,12 @@ ns_noupload Basal Step Bolus Step - ExtendedBolus - TempTarget Cancel Extended Bolus Sensor age Canula age Insulin age hours Invalid profile !!! - ProfileSwitch Do Profile Switch Pump battery age Pump Battery Change @@ -1692,5 +1686,6 @@ Automation event Already set Message + Clear queue? All data in queue will be lost!