109 lines
4.2 KiB
Kotlin
109 lines
4.2 KiB
Kotlin
package info.nightscout.androidaps.dialogs
|
|
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import android.view.Window
|
|
import android.view.WindowManager
|
|
import androidx.fragment.app.DialogFragment
|
|
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.plugins.treatments.TreatmentsPlugin
|
|
import info.nightscout.androidaps.utils.DateUtil
|
|
import kotlinx.android.synthetic.main.close.*
|
|
import kotlinx.android.synthetic.main.dialog_profileviewer.*
|
|
import org.json.JSONObject
|
|
|
|
class ProfileViewerDialog : DialogFragment() {
|
|
private var time: Long = 0
|
|
|
|
enum class Mode(val i: Int) {
|
|
RUNNING_PROFILE(1),
|
|
CUSTOM_PROFILE(2)
|
|
}
|
|
|
|
private var mode: Mode = Mode.RUNNING_PROFILE
|
|
private var customProfileJson: String = ""
|
|
private var customProfileName: String = ""
|
|
private var customProfileUnits: String = Constants.MGDL
|
|
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
|
savedInstanceState: Bundle?): View? {
|
|
// load data from bundle
|
|
(savedInstanceState ?: arguments)?.let { bundle ->
|
|
time = bundle.getLong("time", 0)
|
|
mode = Mode.values()[bundle.getInt("mode", Mode.RUNNING_PROFILE.ordinal)]
|
|
customProfileJson = bundle.getString("customProfile", "")
|
|
customProfileUnits = bundle.getString("customProfileUnits", Constants.MGDL)
|
|
customProfileName = bundle.getString("customProfileName", "")
|
|
}
|
|
|
|
dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE)
|
|
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
|
|
isCancelable = true
|
|
dialog?.setCanceledOnTouchOutside(false)
|
|
|
|
return inflater.inflate(R.layout.dialog_profileviewer, container, false)
|
|
}
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
super.onViewCreated(view, savedInstanceState)
|
|
|
|
close.setOnClickListener { dismiss() }
|
|
|
|
val profile: Profile?
|
|
val profileName: String?
|
|
val date: String?
|
|
when (mode) {
|
|
Mode.RUNNING_PROFILE -> {
|
|
profile = TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(time)?.profileObject
|
|
profileName = TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(time)?.customizedName
|
|
date = DateUtil.dateAndTimeString(TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(time)?.date
|
|
?: 0)
|
|
profileview_datelayout.visibility = View.VISIBLE
|
|
}
|
|
|
|
Mode.CUSTOM_PROFILE -> {
|
|
profile = Profile(JSONObject(customProfileJson), customProfileUnits)
|
|
profileName = customProfileName
|
|
date = ""
|
|
profileview_datelayout.visibility = View.GONE
|
|
}
|
|
}
|
|
profileview_noprofile.visibility = View.VISIBLE
|
|
|
|
profile?.let {
|
|
profileview_units.text = it.units
|
|
profileview_dia.text = MainApp.gs(R.string.format_hours, it.dia)
|
|
profileview_activeprofile.text = profileName
|
|
profileview_date.text = date
|
|
profileview_ic.text = it.icList
|
|
profileview_isf.text = it.isfList
|
|
profileview_basal.text = it.basalList
|
|
profileview_target.text = it.targetList
|
|
basal_graph.show(it)
|
|
|
|
profileview_noprofile.visibility = View.GONE
|
|
profileview_invalidprofile.visibility = if (it.isValid("ProfileViewDialog")) View.GONE else View.VISIBLE
|
|
}
|
|
}
|
|
|
|
override fun onStart() {
|
|
super.onStart()
|
|
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
|
|
}
|
|
|
|
override fun onSaveInstanceState(bundle: Bundle) {
|
|
super.onSaveInstanceState(bundle)
|
|
bundle.putLong("time", time)
|
|
bundle.putInt("mode", mode.ordinal)
|
|
bundle.putString("customProfile", customProfileJson)
|
|
bundle.putString("customProfileName", customProfileName)
|
|
bundle.putString("customProfileUnits", customProfileUnits)
|
|
}
|
|
|
|
}
|