diff --git a/app/src/main/java/info/nightscout/androidaps/activities/HistoryBrowseActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/HistoryBrowseActivity.kt index 20bed45c84..612eaa6db9 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/HistoryBrowseActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/activities/HistoryBrowseActivity.kt @@ -21,10 +21,10 @@ import info.nightscout.androidaps.events.EventScale import info.nightscout.androidaps.extensions.toVisibility import info.nightscout.androidaps.extensions.toVisibilityKeepSpace import info.nightscout.androidaps.interfaces.ActivePlugin +import info.nightscout.androidaps.interfaces.BuildHelper import info.nightscout.androidaps.interfaces.Config import info.nightscout.androidaps.interfaces.Loop import info.nightscout.androidaps.interfaces.ProfileFunction -import info.nightscout.androidaps.plugins.general.nsclient.data.NSDeviceStatus import info.nightscout.androidaps.plugins.general.overview.OverviewData import info.nightscout.androidaps.plugins.general.overview.OverviewMenus import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewGraph @@ -37,7 +37,6 @@ import info.nightscout.androidaps.utils.DefaultValueHelper import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.T import info.nightscout.androidaps.utils.Translator -import info.nightscout.androidaps.interfaces.BuildHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.workflow.CalculationWorkflow import info.nightscout.shared.logging.LTag @@ -63,7 +62,6 @@ class HistoryBrowseActivity : NoSplashAppCompatActivity() { @Inject lateinit var dateUtil: DateUtil @Inject lateinit var config: Config @Inject lateinit var loop: Loop - @Inject lateinit var nsDeviceStatus: NSDeviceStatus @Inject lateinit var translator: Translator @Inject lateinit var context: Context @Inject lateinit var dataWorker: DataWorker diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt index d6ca34ab63..8a954c30ab 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt @@ -120,7 +120,6 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList @Inject lateinit var repository: AppRepository @Inject lateinit var glucoseStatusProvider: GlucoseStatusProvider @Inject lateinit var overviewData: OverviewData - @Inject lateinit var overviewPlugin: OverviewPlugin @Inject lateinit var automationPlugin: AutomationPlugin @Inject lateinit var bgQualityCheckPlugin: BgQualityCheckPlugin @@ -417,7 +416,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList uel.log(Action.ACCEPTS_TEMP_BASAL, Sources.Overview) (context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager?)?.cancel(Constants.notificationID) rxBus.send(EventMobileToWear(EventData.CancelNotification(dateUtil.now()))) - Thread { loop.acceptChangeRequest() }.run() + Thread { loop.acceptChangeRequest() }.start() binding.buttonsLayout.acceptTempButton.visibility = View.GONE }) }) @@ -827,7 +826,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList } } - fun updateProfile() { + private fun updateProfile() { val profile = profileFunction.getProfile() runOnUiThread { _binding ?: return@runOnUiThread @@ -885,7 +884,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList } } - fun updateTime() { + private fun updateTime() { _binding ?: return binding.infoLayout.time.text = dateUtil.timeString(dateUtil.now()) // Status lights @@ -915,7 +914,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList ) } - fun updateIobCob() { + private fun updateIobCob() { val iobText = overviewData.iobText(iobCobCalculator) val iobDialogText = overviewData.iobDialogText(iobCobCalculator) val displayText = overviewData.cobInfo(iobCobCalculator).displayText(rh, dateUtil, buildHelper.isEngineeringMode()) @@ -999,6 +998,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList val pump = activePlugin.activePump val graphData = GraphData(injector, binding.graphsLayout.bgGraph, overviewData) val menuChartSettings = overviewMenus.setting + if (menuChartSettings.isEmpty()) return graphData.addInRangeArea(overviewData.fromTime, overviewData.endTime, defaultValueHelper.determineLowLine(), defaultValueHelper.determineHighLine()) graphData.addBgReadings(menuChartSettings[0][OverviewMenus.CharType.PRE.ordinal], context) if (buildHelper.isDev()) graphData.addBucketedData() diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt index baa764d2bd..2431dc5f61 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt @@ -69,14 +69,16 @@ class OverviewMenus @Inject constructor( private var _setting: MutableList> = ArrayList() val setting: List> - get() = _setting.toMutableList() // implicitly does a list copy + @Synchronized get() = _setting.toMutableList() // implicitly does a list copy + @Synchronized private fun storeGraphConfig() { val sts = Gson().toJson(_setting) sp.putString(R.string.key_graphconfig, sts) aapsLogger.debug(sts) } + @Synchronized fun loadGraphConfig() { val sts = sp.getString(R.string.key_graphconfig, "") if (sts.isNotEmpty()) { @@ -115,7 +117,7 @@ class OverviewMenus @Inject constructor( val used = arrayListOf() for (g in 0 until numOfGraphs) { - if (g != 0 && g < numOfGraphs) { + if (g != 0) { val dividerItem = popup.menu.add(Menu.NONE, g, Menu.NONE, "------- ${rh.gs(R.string.graph_menu_divider_header)} $g -------") dividerItem.isCheckable = true dividerItem.isChecked = true @@ -150,36 +152,38 @@ class OverviewMenus @Inject constructor( } popup.setOnMenuItemClickListener { - try { - // id < 100 graph header - divider 1, 2, 3 ..... - when { - it.itemId == SCALE_ID -> { - // do nothing, submenu - } + synchronized(this) { + try { + // id < 100 graph header - divider 1, 2, 3 ..... + when { + it.itemId == SCALE_ID -> { + // do nothing, submenu + } - it.itemId > SCALE_ID && it.itemId < SCALE_ID + 100 -> { - val hours = it.itemId - SCALE_ID // 6,12,.... - rxBus.send(EventScale(hours)) - } + it.itemId > SCALE_ID && it.itemId < SCALE_ID + 100 -> { + val hours = it.itemId - SCALE_ID // 6,12,.... + rxBus.send(EventScale(hours)) + } - it.itemId == numOfGraphs -> { - // add new empty - _setting.add(Array(CharType.values().size) { false }) - } + it.itemId == numOfGraphs -> { + // add new empty + _setting.add(Array(CharType.values().size) { false }) + } - it.itemId < 100 -> { - // remove graph - _setting.removeAt(it.itemId) - } + it.itemId < 100 -> { + // remove graph + _setting.removeAt(it.itemId) + } - else -> { - val graphNumber = it.itemId / 100 - 1 - val item = it.itemId % 100 - _setting[graphNumber][item] = !it.isChecked + else -> { + val graphNumber = it.itemId / 100 - 1 + val item = it.itemId % 100 + _setting[graphNumber][item] = !it.isChecked + } } + } catch (exception: Exception) { + fabricPrivacy.logException(exception) } - } catch (exception: Exception) { - fabricPrivacy.logException(exception) } storeGraphConfig() setupChartMenu(context, chartButton)