From e924c28542ac3e828a5c4294c5a506b0ce1f65aa Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 23 Feb 2022 19:05:55 +0100 Subject: [PATCH] Material style for app --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 7 +- .../nightscout/androidaps/MainActivity.kt | 2 +- .../activities/HistoryBrowseActivity.kt | 3 +- .../activities/ProfileHelperActivity.kt | 4 +- .../TreatmentsProfileSwitchFragment.kt | 63 ++++--- .../activities/QuickWizardListActivity.kt | 27 ++- .../overview/dialogs/EditQuickWizardDialog.kt | 6 +- .../profile/local/LocalProfileFragment.kt | 166 +++++++++++++----- .../alertDialogs/PrefImportSummaryDialog.kt | 4 +- .../alertDialogs/TwoMessagesAlertDialog.kt | 4 +- .../main/res/drawable/ic_local_activate.xml | 4 +- app/src/main/res/drawable/ic_local_reset.xml | 2 +- app/src/main/res/layout/actions_fragment.xml | 57 +++--- .../res/layout/actions_fragment_lowres.xml | 57 +++--- .../res/layout/activity_historybrowse.xml | 6 +- .../main/res/layout/activity_logsetting.xml | 10 +- app/src/main/res/layout/activity_main.xml | 9 +- app/src/main/res/layout/activity_stats.xml | 10 +- app/src/main/res/layout/close.xml | 2 +- .../res/layout/configbuilder_fragment.xml | 5 +- .../layout/dialog_alert_import_summary.xml | 8 +- app/src/main/res/layout/dialog_carbs.xml | 19 +- app/src/main/res/layout/dialog_fill.xml | 9 +- app/src/main/res/layout/dialog_insulin.xml | 11 +- app/src/main/res/layout/dialog_loop.xml | 6 +- app/src/main/res/layout/dialog_wizard.xml | 49 +++--- app/src/main/res/layout/dialog_wizardinfo.xml | 6 +- app/src/main/res/layout/food_item.xml | 2 +- .../main/res/layout/localprofile_fragment.xml | 95 +++++----- app/src/main/res/layout/loop_fragment.xml | 4 +- .../main/res/layout/maintenance_fragment.xml | 56 +++--- .../layout/number_picker_layout_vertical.xml | 12 +- .../res/layout/objectives_exam_fragment.xml | 24 +-- .../main/res/layout/objectives_fragment.xml | 4 +- app/src/main/res/layout/objectives_item.xml | 26 +-- app/src/main/res/layout/okcancel.xml | 13 +- .../main/res/layout/openapsama_fragment.xml | 4 +- .../res/layout/overview_notification_item.xml | 3 +- .../overview_quickwizardlist_activity.xml | 11 +- .../layout/overview_quickwizardlist_item.xml | 42 +++-- app/src/main/res/layout/tidepool_fragment.xml | 12 +- .../layout/treatments_bolus_carbs_item.xml | 2 +- app/src/main/res/layout/wear_fragment.xml | 8 +- app/src/main/res/values/colors.xml | 2 +- app/src/main/res/values/strings.xml | 3 +- app/src/main/res/values/styles.xml | 12 +- .../automation/elements/InputDateTime.kt | 4 +- .../general/automation/elements/InputTime.kt | 2 +- .../automation/elements/InputTimeRange.kt | 4 +- core/src/main/AndroidManifest.xml | 4 +- .../dialogs/DialogFragmentWithDate.kt | 6 +- .../androidaps/utils/alertDialogs/OKDialog.kt | 16 +- .../utils/protection/PasswordCheck.kt | 6 +- .../main/res/drawable/ic_actions_refill.xml | 12 +- core/src/main/res/drawable/ic_local_save.xml | 4 +- ...und.xml => material_button_background.xml} | 4 +- ...ected.xml => material_button_selected.xml} | 2 +- core/src/main/res/layout/close.xml | 2 +- .../main/res/layout/dialog_bolusprogress.xml | 3 +- core/src/main/res/layout/dialog_error.xml | 9 +- .../main/res/layout/number_picker_layout.xml | 9 +- core/src/main/res/layout/okcancel.xml | 5 +- core/src/main/res/values/colors.xml | 38 +++- core/src/main/res/values/layout.xml | 8 - core/src/main/res/values/styles.xml | 143 +++++++++------ dana/src/main/res/layout/danar_fragment.xml | 8 +- .../res/layout/danar_history_activity.xml | 7 +- .../layout/danar_user_options_activity.xml | 4 +- .../layout/danars_pairing_progress_dialog.xml | 3 +- .../main/res/layout/diaconn_g8_fragment.xml | 125 +++++++------ .../layout/diaconn_g8_history_activity.xml | 9 +- .../diaconn_g8_user_options_activity.xml | 12 +- diaconn/src/main/res/values/colors.xml | 2 - .../res/layout/activity_insight_alert.xml | 8 +- .../res/layout/activity_insight_pairing.xml | 9 +- .../activity_insight_pairing_information.xml | 3 +- .../res/layout/local_insight_fragment.xml | 9 +- .../main/res/layout/medtronic_fragment.xml | 139 +++++++++------ medtronic/src/main/res/xml/pref_medtronic.xml | 2 +- .../fragment/info/AttachPodFragment.kt | 2 +- .../activity/OmnipodWizardActivityBase.kt | 2 +- .../fragment/action/DeactivatePodFragment.kt | 2 +- .../omnipod_common_overview_buttons.xml | 12 +- ...pod_common_wizard_action_page_fragment.xml | 9 +- .../omnipod_common_wizard_nav_buttons.xml | 6 +- omnipod-eros/src/main/res/values/strings.xml | 1 - .../main/res/xml/omnipod_eros_preferences.xml | 2 +- rileylink/src/main/AndroidManifest.xml | 7 +- .../dialog/RileyLinkBLEConfigActivity.kt | 46 +++-- .../layout/riley_link_ble_config_activity.xml | 9 +- .../src/main/res/layout/rileylink_status.xml | 8 +- .../layout/rileylink_status_device_item.xml | 3 +- rileylink/src/main/res/values/strings.xml | 1 + 94 files changed, 953 insertions(+), 671 deletions(-) rename core/src/main/res/drawable/{mdtp_material_button_background.xml => material_button_background.xml} (54%) rename core/src/main/res/drawable/{mdtp_material_button_selected.xml => material_button_selected.xml} (86%) delete mode 100644 core/src/main/res/values/layout.xml diff --git a/app/build.gradle b/app/build.gradle index afd6151263..df720e4e89 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -109,7 +109,7 @@ android { defaultConfig { multiDexEnabled true versionCode 1500 - version "3.0.0.1-dev-a" + version "3.0.0.1-dev-b" buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 92f076e434..a163b3729c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,6 +64,7 @@ @@ -75,8 +76,7 @@ - + + android:label="@string/title_activity_setup_wizard" /> OKDialog.showConfirmation(activity, rh.gs(R.string.removerecord), - rh.gs(R.string.careportal_profileswitch) + ": " + profileSwitch.profileName + - "\n" + rh.gs(R.string.date) + ": " + dateUtil.dateAndTimeString(profileSwitch.timestamp), Runnable { - uel.log(Action.PROFILE_SWITCH_REMOVED, Sources.Treatments, profileSwitch.profileName, - ValueWithUnit.Timestamp(profileSwitch.timestamp)) - disposable += repository.runTransactionForResult(InvalidateProfileSwitchTransaction(profileSwitch.id)) - .subscribe( - { result -> result.invalidated.forEach { aapsLogger.debug(LTag.DATABASE, "Invalidated ProfileSwitch $it") } }, - { aapsLogger.error(LTag.DATABASE, "Error while invalidating ProfileSwitch", it) } + rh.gs(R.string.careportal_profileswitch) + ": " + profileSwitch.profileName + + "\n" + rh.gs(R.string.date) + ": " + dateUtil.dateAndTimeString(profileSwitch.timestamp), Runnable { + uel.log( + Action.PROFILE_SWITCH_REMOVED, Sources.Treatments, profileSwitch.profileName, + ValueWithUnit.Timestamp(profileSwitch.timestamp) ) - }) + disposable += repository.runTransactionForResult(InvalidateProfileSwitchTransaction(profileSwitch.id)) + .subscribe( + { result -> result.invalidated.forEach { aapsLogger.debug(LTag.DATABASE, "Invalidated ProfileSwitch $it") } }, + { aapsLogger.error(LTag.DATABASE, "Error while invalidating ProfileSwitch", it) } + ) + }) } } binding.clone.setOnClickListener { activity?.let { activity -> val profileSwitch = (it.tag as ProfileSealed.PS).value val profileSealed = it.tag as ProfileSealed - OKDialog.showConfirmation(activity, rh.gs(R.string.careportal_profileswitch), rh.gs(R.string.copytolocalprofile) + "\n" + profileSwitch.getCustomizedName() + "\n" + dateUtil.dateAndTimeString(profileSwitch.timestamp), Runnable { - uel.log(Action.PROFILE_SWITCH_CLONED, Sources.Treatments, - profileSwitch.getCustomizedName() + " " + dateUtil.dateAndTimeString(profileSwitch.timestamp).replace(".", "_"), - ValueWithUnit.Timestamp(profileSwitch.timestamp), - ValueWithUnit.SimpleString(profileSwitch.profileName)) - val nonCustomized = profileSealed.convertToNonCustomizedProfile(dateUtil) - localProfilePlugin.addProfile(localProfilePlugin.copyFrom(nonCustomized, profileSwitch.getCustomizedName() + " " + dateUtil.dateAndTimeString(profileSwitch.timestamp).replace(".", "_"))) - rxBus.send(EventLocalProfileChanged()) - }) + OKDialog.showConfirmation( + activity, + rh.gs(R.string.careportal_profileswitch), + rh.gs(R.string.copytolocalprofile) + "\n" + profileSwitch.getCustomizedName() + "\n" + dateUtil.dateAndTimeString(profileSwitch.timestamp), + Runnable { + uel.log( + Action.PROFILE_SWITCH_CLONED, Sources.Treatments, + profileSwitch.getCustomizedName() + " " + dateUtil.dateAndTimeString(profileSwitch.timestamp).replace(".", "_"), + ValueWithUnit.Timestamp(profileSwitch.timestamp), + ValueWithUnit.SimpleString(profileSwitch.profileName) + ) + val nonCustomized = profileSealed.convertToNonCustomizedProfile(dateUtil) + localProfilePlugin.addProfile( + localProfilePlugin.copyFrom( + nonCustomized, + profileSwitch.getCustomizedName() + " " + dateUtil.dateAndTimeString(profileSwitch.timestamp).replace(".", "_") + ) + ) + rxBus.send(EventLocalProfileChanged()) + }) } } binding.remove.paintFlags = binding.remove.paintFlags or Paint.UNDERLINE_TEXT_FLAG diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt index 065a2f1fc3..25865c4afb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/activities/QuickWizardListActivity.kt @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import android.os.Bundle import android.util.Log import android.view.LayoutInflater +import android.view.MenuItem import android.view.MotionEvent import android.view.View import android.view.ViewGroup @@ -12,26 +13,30 @@ import android.widget.ImageView import android.widget.TextView import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.ItemTouchHelper -import androidx.recyclerview.widget.ItemTouchHelper.* +import androidx.recyclerview.widget.ItemTouchHelper.ACTION_STATE_DRAG +import androidx.recyclerview.widget.ItemTouchHelper.DOWN +import androidx.recyclerview.widget.ItemTouchHelper.END +import androidx.recyclerview.widget.ItemTouchHelper.START +import androidx.recyclerview.widget.ItemTouchHelper.UP import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import info.nightscout.androidaps.R -import info.nightscout.androidaps.activities.NoSplashAppCompatActivity +import info.nightscout.androidaps.activities.DaggerAppCompatActivityWithResult import info.nightscout.androidaps.databinding.OverviewQuickwizardlistActivityBinding import info.nightscout.androidaps.plugins.bus.RxBus import info.nightscout.androidaps.plugins.general.overview.dialogs.EditQuickWizardDialog import info.nightscout.androidaps.plugins.general.overview.events.EventQuickWizardChange import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.FabricPrivacy -import io.reactivex.rxkotlin.plusAssign import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.wizard.QuickWizard import info.nightscout.androidaps.utils.wizard.QuickWizardEntry import info.nightscout.shared.sharedPreferences.SP import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxkotlin.plusAssign import javax.inject.Inject -class QuickWizardListActivity : NoSplashAppCompatActivity() { +class QuickWizardListActivity : DaggerAppCompatActivityWithResult() { @Inject lateinit var aapsSchedulers: AapsSchedulers @Inject lateinit var rxBus: RxBus @@ -176,6 +181,10 @@ class QuickWizardListActivity : NoSplashAppCompatActivity() { binding = OverviewQuickwizardlistActivityBinding.inflate(layoutInflater) setContentView(binding.root) + title = rh.gs(R.string.quickwizard) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + supportActionBar?.setDisplayShowHomeEnabled(true) + binding.recyclerview.setHasFixedSize(true) binding.recyclerview.layoutManager = LinearLayoutManager(this) binding.recyclerview.adapter = RecyclerViewAdapter(supportFragmentManager) @@ -203,4 +212,14 @@ class QuickWizardListActivity : NoSplashAppCompatActivity() { disposable.clear() super.onPause() } + + override fun onOptionsItemSelected(item: MenuItem): Boolean = + when (item.itemId) { + android.R.id.home -> { + finish() + true + } + + else -> false + } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/EditQuickWizardDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/EditQuickWizardDialog.kt index e7abb4690d..af5593e3ca 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/EditQuickWizardDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/EditQuickWizardDialog.kt @@ -105,7 +105,8 @@ class EditQuickWizardDialog : DaggerDialogFragment(), View.OnClickListener { binding.from.setOnClickListener { context?.let { TimePickerDialog( - it, fromTimeSetListener, + it, R.style.MaterialPickerTheme, + fromTimeSetListener, T.secs(fromSeconds.toLong()).hours().toInt(), T.secs((fromSeconds % 3600).toLong()).mins().toInt(), DateFormat.is24HourFormat(context) @@ -123,7 +124,8 @@ class EditQuickWizardDialog : DaggerDialogFragment(), View.OnClickListener { binding.to.setOnClickListener { context?.let { TimePickerDialog( - it, toTimeSetListener, + it, R.style.MaterialPickerTheme, + toTimeSetListener, T.secs(toSeconds.toLong()).hours().toInt(), T.secs((toSeconds % 3600).toLong()).mins().toInt(), DateFormat.is24HourFormat(context) 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 1fa1f3711f..78a31caa92 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 @@ -24,11 +24,13 @@ import info.nightscout.androidaps.interfaces.Profile import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.bus.RxBus import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged -import info.nightscout.androidaps.utils.* +import info.nightscout.androidaps.utils.DateUtil +import info.nightscout.androidaps.utils.DecimalFormatter +import info.nightscout.androidaps.utils.FabricPrivacy +import info.nightscout.androidaps.utils.HardLimits import info.nightscout.androidaps.utils.alertDialogs.OKDialog import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.rx.AapsSchedulers -import info.nightscout.androidaps.utils.ui.SpinnerHelper import info.nightscout.androidaps.utils.ui.TimeListEdit import info.nightscout.shared.SafeParse import info.nightscout.shared.logging.AAPSLogger @@ -54,12 +56,12 @@ class LocalProfileFragment : DaggerFragment() { private var disposable: CompositeDisposable = CompositeDisposable() private var basalView: TimeListEdit? = null - private var spinner: SpinnerHelper? = null +// private var spinner: SpinnerHelper? = null private val save = Runnable { doEdit() basalView?.updateLabel(rh.gs(R.string.basal_label) + ": " + sumLabel()) - localProfilePlugin.profile?.getSpecificProfile(spinner?.selectedItem.toString())?.let { + localProfilePlugin.profile?.getSpecificProfile(binding.profileList.text.toString())?.let { binding.basalGraph.show(ProfileSealed.Pure(it)) binding.icGraph.show(ProfileSealed.Pure(it)) binding.isfGraph.show(ProfileSealed.Pure(it)) @@ -135,56 +137,118 @@ class LocalProfileFragment : DaggerFragment() { binding.name.addTextChangedListener(textWatch) binding.dia.setParams(currentProfile.dia, hardLimits.minDia(), hardLimits.maxDia(), 0.1, DecimalFormat("0.0"), false, null, textWatch) binding.dia.tag = "LP_DIA" - TimeListEdit(context, aapsLogger, dateUtil, view, R.id.ic_holder, "IC", rh.gs(R.string.ic_long_label), currentProfile.ic, null, doubleArrayOf(hardLimits.minIC(), hardLimits.maxIC()), null, 0.1, DecimalFormat ("0.0"), save) - basalView = TimeListEdit(context, aapsLogger, dateUtil, view, R.id.basal_holder, "BASAL", rh.gs(R.string.basal_long_label) + ": " + sumLabel(), currentProfile.basal, null, doubleArrayOf(pumpDescription.basalMinimumRate, pumpDescription.basalMaximumRate), null, 0.01, DecimalFormat("0.00"), save) + TimeListEdit( + context, + aapsLogger, + dateUtil, + view, + R.id.ic_holder, + "IC", + rh.gs(R.string.ic_long_label), + currentProfile.ic, + null, + doubleArrayOf(hardLimits.minIC(), hardLimits.maxIC()), + null, + 0.1, + DecimalFormat("0.0"), + save + ) + basalView = + TimeListEdit( + context, + aapsLogger, + dateUtil, + view, + R.id.basal_holder, + "BASAL", + rh.gs(R.string.basal_long_label) + ": " + sumLabel(), + currentProfile.basal, + null, + doubleArrayOf(pumpDescription.basalMinimumRate, pumpDescription.basalMaximumRate), + null, + 0.01, + DecimalFormat("0.00"), + save + ) if (units == Constants.MGDL) { val isfRange = doubleArrayOf(HardLimits.MIN_ISF, HardLimits.MAX_ISF) - TimeListEdit(context, aapsLogger, dateUtil, view, R.id.isf_holder, "ISF", rh.gs(R.string.isf_long_label), currentProfile.isf, null, isfRange , null, 1.0, DecimalFormat("0"), save) - TimeListEdit(context, aapsLogger, dateUtil, view, R.id.target_holder, "TARGET", rh.gs(R.string.target_long_label), currentProfile.targetLow, currentProfile.targetHigh, HardLimits.VERY_HARD_LIMIT_MIN_BG, HardLimits.VERY_HARD_LIMIT_TARGET_BG, 1.0, DecimalFormat("0"), save) + TimeListEdit(context, aapsLogger, dateUtil, view, R.id.isf_holder, "ISF", rh.gs(R.string.isf_long_label), currentProfile.isf, null, isfRange, null, 1.0, DecimalFormat("0"), save) + TimeListEdit( + context, + aapsLogger, + dateUtil, + view, + R.id.target_holder, + "TARGET", + rh.gs(R.string.target_long_label), + currentProfile.targetLow, + currentProfile.targetHigh, + HardLimits.VERY_HARD_LIMIT_MIN_BG, + HardLimits.VERY_HARD_LIMIT_TARGET_BG, + 1.0, + DecimalFormat("0"), + save + ) } else { - val isfRange = doubleArrayOf(roundUp(Profile.fromMgdlToUnits(HardLimits.MIN_ISF, GlucoseUnit.MMOL)), - roundDown(Profile.fromMgdlToUnits(HardLimits.MAX_ISF, GlucoseUnit.MMOL))) - TimeListEdit(context, aapsLogger, dateUtil, view, R.id.isf_holder, "ISF", rh.gs(R.string.isf_long_label), currentProfile.isf, null,isfRange , null, 0.1, DecimalFormat("0.0"), save) - val range1 = doubleArrayOf(roundUp(Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_MIN_BG[0], GlucoseUnit.MMOL)), - roundDown(Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_MIN_BG[1], GlucoseUnit.MMOL))) - val range2 = doubleArrayOf(roundUp(Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_MAX_BG[0], GlucoseUnit.MMOL)), - roundDown(Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_MAX_BG[1], GlucoseUnit.MMOL))) - Log.i("TimeListEdit", "build: range1" + range1[0] + " " + range1[1] + " range2" + range2[0] + " " + range2[1]) - TimeListEdit(context, aapsLogger, dateUtil, view, R.id.target_holder, "TARGET", rh.gs(R.string.target_long_label), currentProfile.targetLow, currentProfile.targetHigh, range1 , range2, 0.1, DecimalFormat("0.0"), save) + val isfRange = doubleArrayOf( + roundUp(Profile.fromMgdlToUnits(HardLimits.MIN_ISF, GlucoseUnit.MMOL)), + roundDown(Profile.fromMgdlToUnits(HardLimits.MAX_ISF, GlucoseUnit.MMOL)) + ) + TimeListEdit(context, aapsLogger, dateUtil, view, R.id.isf_holder, "ISF", rh.gs(R.string.isf_long_label), currentProfile.isf, null, isfRange, null, 0.1, DecimalFormat("0.0"), save) + val range1 = doubleArrayOf( + roundUp(Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_MIN_BG[0], GlucoseUnit.MMOL)), + roundDown(Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_MIN_BG[1], GlucoseUnit.MMOL)) + ) + val range2 = doubleArrayOf( + roundUp(Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_MAX_BG[0], GlucoseUnit.MMOL)), + roundDown(Profile.fromMgdlToUnits(HardLimits.VERY_HARD_LIMIT_MAX_BG[1], GlucoseUnit.MMOL)) + ) + Log.i("TimeListEdit", "build: range1" + range1[0] + " " + range1[1] + " range2" + range2[0] + " " + range2[1]) + TimeListEdit( + context, + aapsLogger, + dateUtil, + view, + R.id.target_holder, + "TARGET", + rh.gs(R.string.target_long_label), + currentProfile.targetLow, + currentProfile.targetHigh, + range1, + range2, + 0.1, + DecimalFormat("0.0"), + save + ) } // Spinner - spinner = SpinnerHelper(binding.spinner) context?.let { context -> val profileList: ArrayList = localProfilePlugin.profile?.getProfileList() ?: ArrayList() - spinner?.adapter = ArrayAdapter(context, R.layout.spinner_centered, profileList) - val selection = localProfilePlugin.currentProfileIndex - if (selection in 0 until profileList.size) spinner?.setSelection(selection) + binding.profileList.setAdapter(ArrayAdapter(context, R.layout.spinner_centered, profileList)) } ?: return - spinner?.setOnItemSelectedListener(object : AdapterView.OnItemSelectedListener { - override fun onNothingSelected(parent: AdapterView<*>?) { - } - override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { - if (localProfilePlugin.isEdited) { - activity?.let { activity -> - OKDialog.showConfirmation(activity, rh.gs(R.string.doyouwantswitchprofile), { + binding.profileList.onItemClickListener = AdapterView.OnItemClickListener { _, _, position, _ -> + if (localProfilePlugin.isEdited) { + activity?.let { activity -> + OKDialog.showConfirmation( + activity, rh.gs(R.string.doyouwantswitchprofile), + { localProfilePlugin.currentProfileIndex = position localProfilePlugin.isEdited = false build() }, { val selection = localProfilePlugin.currentProfileIndex - if (selection in 0 until (spinner?.adapter?.count ?: -1)) spinner?.setSelection(selection) - } - ) - } - } else { - localProfilePlugin.currentProfileIndex = position - build() + if (selection in 0 until (binding.profileList.adapter?.count ?: -1)) binding.profileList.setSelection(selection) + } + ) } + } else { + localProfilePlugin.currentProfileIndex = position + build() } - }) - localProfilePlugin.profile?.getSpecificProfile(spinner?.selectedItem.toString())?.let { + } + localProfilePlugin.profile?.getSpecificProfile(binding.profileList.text.toString())?.let { binding.basalGraph.show(ProfileSealed.Pure(it)) binding.icGraph.show(ProfileSealed.Pure(it)) binding.isfGraph.show(ProfileSealed.Pure(it)) @@ -206,8 +270,12 @@ class LocalProfileFragment : DaggerFragment() { if (localProfilePlugin.isEdited) { activity?.let { OKDialog.show(it, "", rh.gs(R.string.saveorresetchangesfirst)) } } else { - uel.log(Action.CLONE_PROFILE, Sources.LocalProfile, ValueWithUnit.SimpleString(localProfilePlugin.currentProfile()?.name - ?: "")) + uel.log( + Action.CLONE_PROFILE, Sources.LocalProfile, ValueWithUnit.SimpleString( + localProfilePlugin.currentProfile()?.name + ?: "" + ) + ) localProfilePlugin.cloneProfile() build() } @@ -216,8 +284,12 @@ class LocalProfileFragment : DaggerFragment() { binding.profileRemove.setOnClickListener { activity?.let { activity -> OKDialog.showConfirmation(activity, rh.gs(R.string.deletecurrentprofile), { - uel.log(Action.PROFILE_REMOVED, Sources.LocalProfile, ValueWithUnit.SimpleString(localProfilePlugin.currentProfile()?.name - ?: "")) + uel.log( + Action.PROFILE_REMOVED, Sources.LocalProfile, ValueWithUnit.SimpleString( + localProfilePlugin.currentProfile()?.name + ?: "" + ) + ) localProfilePlugin.removeCurrentProfile() build() }, null) @@ -245,8 +317,12 @@ class LocalProfileFragment : DaggerFragment() { if (!localProfilePlugin.isValidEditState(activity)) { return@setOnClickListener //Should not happen as saveButton should not be visible if not valid } - uel.log(Action.STORE_PROFILE, Sources.LocalProfile, ValueWithUnit.SimpleString(localProfilePlugin.currentProfile()?.name - ?: "")) + uel.log( + Action.STORE_PROFILE, Sources.LocalProfile, ValueWithUnit.SimpleString( + localProfilePlugin.currentProfile()?.name + ?: "" + ) + ) localProfilePlugin.storeSettings(activity) build() } @@ -294,7 +370,7 @@ class LocalProfileFragment : DaggerFragment() { val isEdited = localProfilePlugin.isEdited if (isValid) { this.view?.setBackgroundColor(rh.gc(R.color.ok_background)) - binding.spinner.isEnabled = true + binding.profileList.isEnabled = true if (isEdited) { //edited profile -> save first @@ -306,7 +382,7 @@ class LocalProfileFragment : DaggerFragment() { } } else { this.view?.setBackgroundColor(rh.gc(R.color.error_background)) - binding.spinner.isEnabled = false + binding.profileList.isEnabled = false binding.profileswitch.visibility = View.GONE binding.save.visibility = View.GONE //don't save an invalid profile } diff --git a/app/src/main/java/info/nightscout/androidaps/utils/alertDialogs/PrefImportSummaryDialog.kt b/app/src/main/java/info/nightscout/androidaps/utils/alertDialogs/PrefImportSummaryDialog.kt index b51e5960e6..46756397d5 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/alertDialogs/PrefImportSummaryDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/alertDialogs/PrefImportSummaryDialog.kt @@ -28,7 +28,7 @@ object PrefImportSummaryDialog { @SuppressLint("InflateParams") fun showSummary(context: Context, importOk: Boolean, importPossible: Boolean, prefs: Prefs, ok: (() -> Unit)?, cancel: (() -> Unit)? = null) { - @StyleRes val theme: Int = if (importOk) R.style.AppTheme else { + @StyleRes val theme: Int = if (importOk) R.style.DialogTheme else { if (importPossible) R.style.AppThemeWarningDialog else R.style.AppThemeErrorDialog } @@ -92,7 +92,7 @@ object PrefImportSummaryDialog { webView.setBackgroundColor(Color.TRANSPARENT) webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null) - AlertDialogHelper.Builder(context, R.style.AppTheme) + AlertDialogHelper.Builder(context, R.style.DialogTheme) .setCustomTitle( AlertDialogHelper.buildCustomTitle( context, diff --git a/app/src/main/java/info/nightscout/androidaps/utils/alertDialogs/TwoMessagesAlertDialog.kt b/app/src/main/java/info/nightscout/androidaps/utils/alertDialogs/TwoMessagesAlertDialog.kt index a2c4e78e2f..0bfd1f72f9 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/alertDialogs/TwoMessagesAlertDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/alertDialogs/TwoMessagesAlertDialog.kt @@ -19,7 +19,7 @@ object TwoMessagesAlertDialog { val secondMessageLayout = LayoutInflater.from(context).inflate(R.layout.dialog_alert_two_messages, null) (secondMessageLayout.findViewById(R.id.password_prompt_title) as TextView).text = secondMessage - val dialog = AlertDialogHelper.Builder(context) + AlertDialogHelper.Builder(context, R.style.DialogTheme) .setMessage(message) .setCustomTitle( AlertDialogHelper.buildCustomTitle( @@ -40,7 +40,7 @@ object TwoMessagesAlertDialog { if (cancel != null) runOnUiThread { cancel() } } .show() - dialog.setCanceledOnTouchOutside(false) + .setCanceledOnTouchOutside(false) } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_local_activate.xml b/app/src/main/res/drawable/ic_local_activate.xml index 905ade57d3..b6ef8ff973 100644 --- a/app/src/main/res/drawable/ic_local_activate.xml +++ b/app/src/main/res/drawable/ic_local_activate.xml @@ -5,8 +5,8 @@ android:viewportHeight="24"> + android:fillColor="@color/ic_local_activate"/> + android:fillColor="@color/ic_local_activate"/> diff --git a/app/src/main/res/drawable/ic_local_reset.xml b/app/src/main/res/drawable/ic_local_reset.xml index 07faa6ee4d..b1008a92da 100644 --- a/app/src/main/res/drawable/ic_local_reset.xml +++ b/app/src/main/res/drawable/ic_local_reset.xml @@ -5,5 +5,5 @@ android:viewportHeight="24"> + android:fillColor="@color/ic_local_reset"/> diff --git a/app/src/main/res/layout/actions_fragment.xml b/app/src/main/res/layout/actions_fragment.xml index 7d43edb857..9e2810b77b 100644 --- a/app/src/main/res/layout/actions_fragment.xml +++ b/app/src/main/res/layout/actions_fragment.xml @@ -27,14 +27,14 @@ -