From 1670cd0c065762e7789a7a342d0b0d288e982983 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 23 Nov 2022 13:06:22 +0100 Subject: [PATCH] move DialogFragmentWithDate --- .../automation/dialogs/BaseDialog.kt | 76 +++++++++++++++++++ .../automation/dialogs/ChooseActionDialog.kt | 3 +- .../dialogs/ChooseOperationDialog.kt | 5 +- .../automation/dialogs/ChooseTriggerDialog.kt | 3 +- .../automation/dialogs/EditActionDialog.kt | 3 +- .../automation/dialogs/EditEventDialog.kt | 3 +- .../automation/dialogs/EditTriggerDialog.kt | 3 +- .../ui/dialogs/CalibrationDialog.kt | 1 - .../info/nightscout/ui/dialogs/CarbsDialog.kt | 1 - .../info/nightscout/ui/dialogs/CareDialog.kt | 1 - .../ui}/dialogs/DialogFragmentWithDate.kt | 13 ++-- .../ui/dialogs/ExtendedBolusDialog.kt | 1 - .../info/nightscout/ui/dialogs/FillDialog.kt | 1 - .../nightscout/ui/dialogs/InsulinDialog.kt | 1 - .../ui/dialogs/ProfileSwitchDialog.kt | 1 - .../nightscout/ui/dialogs/TempBasalDialog.kt | 1 - .../nightscout/ui/dialogs/TempTargetDialog.kt | 1 - .../nightscout/ui/dialogs/TreatmentDialog.kt | 1 - 18 files changed, 89 insertions(+), 30 deletions(-) create mode 100644 plugins/automation/src/main/java/info/nightscout/automation/dialogs/BaseDialog.kt rename {core/core-main/src/main/java/info/nightscout/androidaps => ui/src/main/java/info/nightscout/ui}/dialogs/DialogFragmentWithDate.kt (94%) diff --git a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/BaseDialog.kt b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/BaseDialog.kt new file mode 100644 index 0000000000..9831f89098 --- /dev/null +++ b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/BaseDialog.kt @@ -0,0 +1,76 @@ +package info.nightscout.automation.dialogs + +import android.os.Bundle +import android.view.View +import android.view.ViewGroup +import android.view.Window +import android.view.WindowManager +import android.widget.Button +import androidx.fragment.app.FragmentManager +import dagger.android.support.DaggerDialogFragment +import info.nightscout.core.main.R +import info.nightscout.rx.logging.AAPSLogger +import info.nightscout.rx.logging.LTag +import java.util.concurrent.atomic.AtomicBoolean +import javax.inject.Inject + +abstract class BaseDialog : DaggerDialogFragment() { + + @Inject lateinit var aapsLogger: AAPSLogger + + //one shot guards + private var okClicked: AtomicBoolean = AtomicBoolean(false) + + override fun onStart() { + super.onStart() + dialog?.window?.setLayout( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ) + aapsLogger.debug(LTag.UI, "Dialog opened: ${this.javaClass.simpleName}") + } + + fun onCreateViewGeneral() { + dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE) + dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) + isCancelable = true + dialog?.setCanceledOnTouchOutside(false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + (view.findViewById(R.id.ok) as Button?)?.setOnClickListener { + synchronized(okClicked) { + if (okClicked.get()) { + aapsLogger.warn(LTag.UI, "guarding: ok already clicked for dialog: ${this.javaClass.simpleName}") + } else { + okClicked.set(true) + if (submit()) { + aapsLogger.debug(LTag.UI, "Submit pressed for Dialog: ${this.javaClass.simpleName}") + dismiss() + } else { + aapsLogger.debug(LTag.UI, "Submit returned false for Dialog: ${this.javaClass.simpleName}") + okClicked.set(false) + } + } + } + } + (view.findViewById(R.id.cancel) as Button?)?.setOnClickListener { + aapsLogger.debug(LTag.UI, "Cancel pressed for dialog: ${this.javaClass.simpleName}") + dismiss() + } + + } + + override fun show(manager: FragmentManager, tag: String?) { + try { + manager.beginTransaction().let { + it.add(this, tag) + it.commitAllowingStateLoss() + } + } catch (e: IllegalStateException) { + aapsLogger.debug(e.localizedMessage ?: "") + } + } + + abstract fun submit(): Boolean +} diff --git a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseActionDialog.kt b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseActionDialog.kt index 13b711aef6..766e1e890e 100644 --- a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseActionDialog.kt +++ b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseActionDialog.kt @@ -6,7 +6,6 @@ import android.view.View import android.view.ViewGroup import android.widget.RadioButton import dagger.android.HasAndroidInjector -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.automation.AutomationPlugin import info.nightscout.automation.actions.Action import info.nightscout.automation.databinding.AutomationDialogChooseActionBinding @@ -16,7 +15,7 @@ import info.nightscout.rx.bus.RxBus import javax.inject.Inject import kotlin.reflect.full.primaryConstructor -class ChooseActionDialog : DialogFragmentWithDate() { +class ChooseActionDialog : BaseDialog() { @Inject lateinit var automationPlugin: AutomationPlugin @Inject lateinit var rxBus: RxBus diff --git a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseOperationDialog.kt b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseOperationDialog.kt index 632a853d30..703f2b072b 100644 --- a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseOperationDialog.kt +++ b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseOperationDialog.kt @@ -5,13 +5,12 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.RadioButton -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate -import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.automation.databinding.AutomationDialogChooseOperationBinding import info.nightscout.automation.triggers.TriggerConnector +import info.nightscout.shared.interfaces.ResourceHelper import javax.inject.Inject -class ChooseOperationDialog : DialogFragmentWithDate() { +class ChooseOperationDialog : BaseDialog() { @Inject lateinit var rh: ResourceHelper diff --git a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseTriggerDialog.kt b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseTriggerDialog.kt index 0bd9556d4b..5236c94da9 100644 --- a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseTriggerDialog.kt +++ b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/ChooseTriggerDialog.kt @@ -6,14 +6,13 @@ import android.view.View import android.view.ViewGroup import android.widget.RadioButton import dagger.android.HasAndroidInjector -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.automation.AutomationPlugin import info.nightscout.automation.databinding.AutomationDialogChooseTriggerBinding import info.nightscout.automation.triggers.Trigger import javax.inject.Inject import kotlin.reflect.full.primaryConstructor -class ChooseTriggerDialog : DialogFragmentWithDate() { +class ChooseTriggerDialog : BaseDialog() { @Inject lateinit var automationPlugin: AutomationPlugin @Inject lateinit var injector: HasAndroidInjector diff --git a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditActionDialog.kt b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditActionDialog.kt index 65d9c1dbff..9bef5d20f7 100644 --- a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditActionDialog.kt +++ b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditActionDialog.kt @@ -5,7 +5,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import dagger.android.HasAndroidInjector -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.automation.actions.Action import info.nightscout.automation.actions.ActionDummy import info.nightscout.automation.databinding.AutomationDialogActionBinding @@ -14,7 +13,7 @@ import info.nightscout.rx.bus.RxBus import org.json.JSONObject import javax.inject.Inject -class EditActionDialog : DialogFragmentWithDate() { +class EditActionDialog : BaseDialog() { @Inject lateinit var rxBus: RxBus @Inject lateinit var injector: HasAndroidInjector diff --git a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditEventDialog.kt b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditEventDialog.kt index b9fa2da22d..4d62af9a7f 100644 --- a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditEventDialog.kt +++ b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditEventDialog.kt @@ -10,7 +10,6 @@ import android.widget.TextView import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import dagger.android.HasAndroidInjector -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.automation.AutomationEvent import info.nightscout.automation.AutomationPlugin import info.nightscout.automation.R @@ -30,7 +29,7 @@ import io.reactivex.rxjava3.disposables.CompositeDisposable import io.reactivex.rxjava3.kotlin.plusAssign import javax.inject.Inject -class EditEventDialog : DialogFragmentWithDate() { +class EditEventDialog : BaseDialog() { @Inject lateinit var aapsSchedulers: AapsSchedulers @Inject lateinit var rxBus: RxBus diff --git a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditTriggerDialog.kt b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditTriggerDialog.kt index 1c1fde9bb7..e3e4104bb6 100644 --- a/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditTriggerDialog.kt +++ b/plugins/automation/src/main/java/info/nightscout/automation/dialogs/EditTriggerDialog.kt @@ -5,7 +5,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import dagger.android.HasAndroidInjector -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.automation.databinding.AutomationDialogEditTriggerBinding import info.nightscout.automation.events.EventAutomationUpdateTrigger import info.nightscout.automation.events.EventTriggerChanged @@ -22,7 +21,7 @@ import io.reactivex.rxjava3.kotlin.plusAssign import org.json.JSONObject import javax.inject.Inject -class EditTriggerDialog : DialogFragmentWithDate() { +class EditTriggerDialog : BaseDialog() { @Inject lateinit var aapsSchedulers: AapsSchedulers @Inject lateinit var rxBus: RxBus diff --git a/ui/src/main/java/info/nightscout/ui/dialogs/CalibrationDialog.kt b/ui/src/main/java/info/nightscout/ui/dialogs/CalibrationDialog.kt index 01558962e2..0234dffb0f 100644 --- a/ui/src/main/java/info/nightscout/ui/dialogs/CalibrationDialog.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/CalibrationDialog.kt @@ -6,7 +6,6 @@ import android.view.View import android.view.ViewGroup import com.google.common.base.Joiner import dagger.android.HasAndroidInjector -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider import info.nightscout.core.ui.dialogs.OKDialog diff --git a/ui/src/main/java/info/nightscout/ui/dialogs/CarbsDialog.kt b/ui/src/main/java/info/nightscout/ui/dialogs/CarbsDialog.kt index 6533dfa3ee..0f782eaac9 100644 --- a/ui/src/main/java/info/nightscout/ui/dialogs/CarbsDialog.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/CarbsDialog.kt @@ -8,7 +8,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.google.common.base.Joiner -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider import info.nightscout.core.ui.dialogs.OKDialog diff --git a/ui/src/main/java/info/nightscout/ui/dialogs/CareDialog.kt b/ui/src/main/java/info/nightscout/ui/dialogs/CareDialog.kt index 9958dff15e..53ae82d54f 100644 --- a/ui/src/main/java/info/nightscout/ui/dialogs/CareDialog.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/CareDialog.kt @@ -10,7 +10,6 @@ import android.view.ViewGroup import androidx.annotation.StringRes import com.google.common.base.Joiner import dagger.android.HasAndroidInjector -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.androidaps.extensions.fromConstant import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider diff --git a/core/core-main/src/main/java/info/nightscout/androidaps/dialogs/DialogFragmentWithDate.kt b/ui/src/main/java/info/nightscout/ui/dialogs/DialogFragmentWithDate.kt similarity index 94% rename from core/core-main/src/main/java/info/nightscout/androidaps/dialogs/DialogFragmentWithDate.kt rename to ui/src/main/java/info/nightscout/ui/dialogs/DialogFragmentWithDate.kt index d9a175484a..7931b12344 100644 --- a/core/core-main/src/main/java/info/nightscout/androidaps/dialogs/DialogFragmentWithDate.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/DialogFragmentWithDate.kt @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.dialogs +package info.nightscout.ui.dialogs import android.os.Bundle import android.text.format.DateFormat @@ -14,12 +14,11 @@ import com.google.android.material.timepicker.MaterialTimePicker import com.google.android.material.timepicker.TimeFormat import dagger.android.support.DaggerDialogFragment import info.nightscout.core.main.R -import info.nightscout.shared.extensions.toVisibility -import info.nightscout.shared.utils.DateUtil import info.nightscout.rx.logging.AAPSLogger import info.nightscout.rx.logging.LTag - +import info.nightscout.shared.extensions.toVisibility import info.nightscout.shared.sharedPreferences.SP +import info.nightscout.shared.utils.DateUtil import java.util.Calendar import java.util.concurrent.atomic.AtomicBoolean import javax.inject.Inject @@ -53,7 +52,7 @@ abstract class DialogFragmentWithDate : DaggerDialogFragment() { ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT ) - aapsLogger.debug(LTag.APS, "Dialog opened: ${this.javaClass.simpleName}") + aapsLogger.debug(LTag.UI, "Dialog opened: ${this.javaClass.simpleName}") } override fun onSaveInstanceState(savedInstanceState: Bundle) { @@ -128,10 +127,10 @@ abstract class DialogFragmentWithDate : DaggerDialogFragment() { } else { okClicked.set(true) if (submit()) { - aapsLogger.debug(LTag.APS, "Submit pressed for Dialog: ${this.javaClass.simpleName}") + aapsLogger.debug(LTag.UI, "Submit pressed for Dialog: ${this.javaClass.simpleName}") dismiss() } else { - aapsLogger.debug(LTag.APS, "Submit returned false for Dialog: ${this.javaClass.simpleName}") + aapsLogger.debug(LTag.UI, "Submit returned false for Dialog: ${this.javaClass.simpleName}") okClicked.set(false) } } diff --git a/ui/src/main/java/info/nightscout/ui/dialogs/ExtendedBolusDialog.kt b/ui/src/main/java/info/nightscout/ui/dialogs/ExtendedBolusDialog.kt index d2e33344d3..7c4d6d9d4a 100644 --- a/ui/src/main/java/info/nightscout/ui/dialogs/ExtendedBolusDialog.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/ExtendedBolusDialog.kt @@ -6,7 +6,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.google.common.base.Joiner -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.core.ui.dialogs.OKDialog import info.nightscout.core.ui.toast.ToastUtils diff --git a/ui/src/main/java/info/nightscout/ui/dialogs/FillDialog.kt b/ui/src/main/java/info/nightscout/ui/dialogs/FillDialog.kt index 9642a07ca2..2671e454b4 100644 --- a/ui/src/main/java/info/nightscout/ui/dialogs/FillDialog.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/FillDialog.kt @@ -6,7 +6,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.google.common.base.Joiner -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.core.ui.dialogs.OKDialog import info.nightscout.core.ui.toast.ToastUtils diff --git a/ui/src/main/java/info/nightscout/ui/dialogs/InsulinDialog.kt b/ui/src/main/java/info/nightscout/ui/dialogs/InsulinDialog.kt index c5a453867f..d2d619ee0c 100644 --- a/ui/src/main/java/info/nightscout/ui/dialogs/InsulinDialog.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/InsulinDialog.kt @@ -8,7 +8,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.google.common.base.Joiner -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.core.pump.insertBolusTransaction import info.nightscout.core.ui.dialogs.OKDialog diff --git a/ui/src/main/java/info/nightscout/ui/dialogs/ProfileSwitchDialog.kt b/ui/src/main/java/info/nightscout/ui/dialogs/ProfileSwitchDialog.kt index b5532c5a60..995fd295a0 100644 --- a/ui/src/main/java/info/nightscout/ui/dialogs/ProfileSwitchDialog.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/ProfileSwitchDialog.kt @@ -10,7 +10,6 @@ import android.view.ViewGroup import android.widget.ArrayAdapter import com.google.common.base.Joiner import info.nightscout.androidaps.data.ProfileSealed -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.core.ui.dialogs.OKDialog import info.nightscout.core.ui.toast.ToastUtils diff --git a/ui/src/main/java/info/nightscout/ui/dialogs/TempBasalDialog.kt b/ui/src/main/java/info/nightscout/ui/dialogs/TempBasalDialog.kt index 9c8616b2a5..7b293a97f6 100644 --- a/ui/src/main/java/info/nightscout/ui/dialogs/TempBasalDialog.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/TempBasalDialog.kt @@ -6,7 +6,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.google.common.base.Joiner -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.core.ui.dialogs.OKDialog import info.nightscout.core.ui.toast.ToastUtils diff --git a/ui/src/main/java/info/nightscout/ui/dialogs/TempTargetDialog.kt b/ui/src/main/java/info/nightscout/ui/dialogs/TempTargetDialog.kt index 4140f72e56..aace153928 100644 --- a/ui/src/main/java/info/nightscout/ui/dialogs/TempTargetDialog.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/TempTargetDialog.kt @@ -8,7 +8,6 @@ import android.view.ViewGroup import android.widget.ArrayAdapter import com.google.common.base.Joiner import com.google.common.collect.Lists -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.core.ui.dialogs.OKDialog import info.nightscout.core.ui.toast.ToastUtils diff --git a/ui/src/main/java/info/nightscout/ui/dialogs/TreatmentDialog.kt b/ui/src/main/java/info/nightscout/ui/dialogs/TreatmentDialog.kt index ace625a0a5..42cb5f8881 100644 --- a/ui/src/main/java/info/nightscout/ui/dialogs/TreatmentDialog.kt +++ b/ui/src/main/java/info/nightscout/ui/dialogs/TreatmentDialog.kt @@ -8,7 +8,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.google.common.base.Joiner -import info.nightscout.androidaps.dialogs.DialogFragmentWithDate import info.nightscout.androidaps.logging.UserEntryLogger import info.nightscout.core.pump.insertBolusTransaction import info.nightscout.core.pump.insertCarbsTransaction