Changed the approach, using an extension method

pull/1457/head
Jakub Kalinowski 3 years ago
parent 6e4ed3837f
commit c1fa6c46ee

@ -20,7 +20,6 @@
package org.isoron.uhabits package org.isoron.uhabits
import android.app.Application import android.app.Application
import android.app.Dialog
import android.content.Context import android.content.Context
import org.isoron.uhabits.core.database.UnsupportedDatabaseVersionException import org.isoron.uhabits.core.database.UnsupportedDatabaseVersionException
import org.isoron.uhabits.core.reminders.ReminderScheduler import org.isoron.uhabits.core.reminders.ReminderScheduler
@ -119,11 +118,5 @@ class HabitsApplication : Application() {
false false
} }
} }
var currentDialog: Dialog? = null
fun clearCurrentDialog() {
currentDialog?.dismiss()
currentDialog = null
}
} }
} }

@ -25,8 +25,8 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.View.GONE import android.view.View.GONE
import android.view.View.VISIBLE import android.view.View.VISIBLE
import org.isoron.uhabits.HabitsApplication
import org.isoron.uhabits.R import org.isoron.uhabits.R
import org.isoron.uhabits.activities.common.dialogs.MultipleDialogsHandler.Companion.dismissCurrentAndShow
import org.isoron.uhabits.core.models.Entry.Companion.NO import org.isoron.uhabits.core.models.Entry.Companion.NO
import org.isoron.uhabits.core.models.Entry.Companion.SKIP import org.isoron.uhabits.core.models.Entry.Companion.SKIP
import org.isoron.uhabits.core.models.Entry.Companion.UNKNOWN import org.isoron.uhabits.core.models.Entry.Companion.UNKNOWN
@ -99,7 +99,6 @@ class CheckmarkPopup(
} }
fun show() { fun show() {
HabitsApplication.clearCurrentDialog()
dialog = Dialog(context, android.R.style.Theme_NoTitleBar) dialog = Dialog(context, android.R.style.Theme_NoTitleBar)
dialog.setContentView(view.root) dialog.setContentView(view.root)
dialog.window?.apply { dialog.window?.apply {
@ -119,13 +118,12 @@ class CheckmarkPopup(
view.unknownBtn.setOnClickListener { onClick(UNKNOWN) } view.unknownBtn.setOnClickListener { onClick(UNKNOWN) }
dialog.setCanceledOnTouchOutside(true) dialog.setCanceledOnTouchOutside(true)
dialog.dimBehind() dialog.dimBehind()
HabitsApplication.currentDialog = dialog dialog.dismissCurrentAndShow()
dialog.show() dialog.show()
} }
fun save() { fun save() {
onToggle(value, view.notes.text.toString().trim()) onToggle(value, view.notes.text.toString().trim())
HabitsApplication.currentDialog = null
dialog.dismiss() dialog.dismiss()
} }
} }

@ -19,10 +19,9 @@
package org.isoron.uhabits.activities.common.dialogs package org.isoron.uhabits.activities.common.dialogs
import android.app.Dialog import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle import android.os.Bundle
import com.android.colorpicker.ColorPickerDialog import com.android.colorpicker.ColorPickerDialog
import org.isoron.uhabits.HabitsApplication import org.isoron.uhabits.activities.common.dialogs.MultipleDialogsHandler.Companion.dismissCurrentAndShow
import org.isoron.uhabits.core.ui.callbacks.OnColorPickedCallback import org.isoron.uhabits.core.ui.callbacks.OnColorPickedCallback
import org.isoron.uhabits.utils.toPaletteColor import org.isoron.uhabits.utils.toPaletteColor
@ -38,16 +37,7 @@ class ColorPickerDialog : ColorPickerDialog() {
} }
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
HabitsApplication.clearCurrentDialog() this.dialog?.dismissCurrentAndShow()
HabitsApplication.currentDialog = this.dialog
return super.onCreateDialog(savedInstanceState) return super.onCreateDialog(savedInstanceState)
} }
override fun onColorSelected(color: Int) {
super.onColorSelected(color)
}
override fun onDismiss(dialog: DialogInterface) {
HabitsApplication.currentDialog = null
super.onDismiss(dialog)
}
} }

@ -21,8 +21,8 @@ package org.isoron.uhabits.activities.common.dialogs
import android.content.Context import android.content.Context
import android.content.DialogInterface import android.content.DialogInterface
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import org.isoron.uhabits.HabitsApplication
import org.isoron.uhabits.R import org.isoron.uhabits.R
import org.isoron.uhabits.activities.common.dialogs.MultipleDialogsHandler.Companion.dismissCurrentAndShow
import org.isoron.uhabits.core.ui.callbacks.OnConfirmedCallback import org.isoron.uhabits.core.ui.callbacks.OnConfirmedCallback
import org.isoron.uhabits.inject.ActivityContext import org.isoron.uhabits.inject.ActivityContext
@ -35,7 +35,6 @@ class ConfirmDeleteDialog(
quantity: Int quantity: Int
) : AlertDialog(context) { ) : AlertDialog(context) {
init { init {
HabitsApplication.clearCurrentDialog()
val res = context.resources val res = context.resources
setTitle(res.getQuantityString(R.plurals.delete_habits_title, quantity)) setTitle(res.getQuantityString(R.plurals.delete_habits_title, quantity))
setMessage(res.getQuantityString(R.plurals.delete_habits_message, quantity)) setMessage(res.getQuantityString(R.plurals.delete_habits_message, quantity))
@ -48,10 +47,6 @@ class ConfirmDeleteDialog(
res.getString(R.string.no) res.getString(R.string.no)
) { dialog: DialogInterface?, which: Int -> } ) { dialog: DialogInterface?, which: Int -> }
HabitsApplication.currentDialog = this this.dismissCurrentAndShow()
this.setOnDismissListener {
HabitsApplication.currentDialog = null
}
} }
} }

@ -20,7 +20,6 @@
package org.isoron.uhabits.activities.common.dialogs package org.isoron.uhabits.activities.common.dialogs
import android.app.Dialog import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -31,8 +30,8 @@ import android.widget.TextView
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDialogFragment import androidx.appcompat.app.AppCompatDialogFragment
import kotlinx.android.synthetic.main.frequency_picker_dialog.view.* import kotlinx.android.synthetic.main.frequency_picker_dialog.view.*
import org.isoron.uhabits.HabitsApplication
import org.isoron.uhabits.R import org.isoron.uhabits.R
import org.isoron.uhabits.activities.common.dialogs.MultipleDialogsHandler.Companion.dismissCurrentAndShow
class FrequencyPickerDialog( class FrequencyPickerDialog(
var freqNumerator: Int, var freqNumerator: Int,
@ -45,7 +44,6 @@ class FrequencyPickerDialog(
constructor() : this(1, 1) constructor() : this(1, 1)
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
HabitsApplication.clearCurrentDialog()
val inflater = LayoutInflater.from(requireActivity()) val inflater = LayoutInflater.from(requireActivity())
contentView = inflater.inflate(R.layout.frequency_picker_dialog, null) contentView = inflater.inflate(R.layout.frequency_picker_dialog, null)
@ -118,15 +116,10 @@ class FrequencyPickerDialog(
.setView(contentView) .setView(contentView)
.setPositiveButton(R.string.save) { _, _ -> onSaveClicked() } .setPositiveButton(R.string.save) { _, _ -> onSaveClicked() }
.create() .create()
HabitsApplication.currentDialog = dialog dialog.dismissCurrentAndShow()
return dialog return dialog
} }
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
HabitsApplication.currentDialog = null
}
private fun addBeforeAfterText( private fun addBeforeAfterText(
str: String, str: String,
container: LinearLayout container: LinearLayout

@ -0,0 +1,19 @@
package org.isoron.uhabits.activities.common.dialogs
import android.app.Dialog
import java.lang.ref.WeakReference
class MultipleDialogsHandler {
companion object {
var currentDialog: WeakReference<Dialog> = WeakReference(null)
fun Dialog.dismissCurrentAndShow() {
if (currentDialog.get() != null) {
var test = currentDialog.get()!!.isShowing
}
currentDialog.get()?.dismiss()
currentDialog = WeakReference(this)
show()
}
}
}

@ -27,7 +27,7 @@ import android.view.MotionEvent.ACTION_DOWN
import android.view.View import android.view.View
import android.view.View.GONE import android.view.View.GONE
import android.view.View.VISIBLE import android.view.View.VISIBLE
import org.isoron.uhabits.HabitsApplication import org.isoron.uhabits.activities.common.dialogs.MultipleDialogsHandler.Companion.dismissCurrentAndShow
import org.isoron.uhabits.core.models.Entry import org.isoron.uhabits.core.models.Entry
import org.isoron.uhabits.core.preferences.Preferences import org.isoron.uhabits.core.preferences.Preferences
import org.isoron.uhabits.databinding.CheckmarkPopupBinding import org.isoron.uhabits.databinding.CheckmarkPopupBinding
@ -74,7 +74,6 @@ class NumberPopup(
} }
fun show() { fun show() {
HabitsApplication.clearCurrentDialog()
dialog = Dialog(context, android.R.style.Theme_NoTitleBar) dialog = Dialog(context, android.R.style.Theme_NoTitleBar)
dialog.setContentView(view.root) dialog.setContentView(view.root)
dialog.window?.apply { dialog.window?.apply {
@ -86,7 +85,6 @@ class NumberPopup(
} }
dialog.setOnDismissListener { dialog.setOnDismissListener {
onDismiss() onDismiss()
HabitsApplication.currentDialog = null
} }
view.value.setOnKeyListener { _, keyCode, event -> view.value.setOnKeyListener { _, keyCode, event ->
@ -106,7 +104,7 @@ class NumberPopup(
view.value.requestFocusWithKeyboard() view.value.requestFocusWithKeyboard()
dialog.setCanceledOnTouchOutside(true) dialog.setCanceledOnTouchOutside(true)
dialog.dimBehind() dialog.dimBehind()
HabitsApplication.currentDialog = dialog dialog.dismissCurrentAndShow()
dialog.show() dialog.show()
} }

@ -24,8 +24,8 @@ import android.content.DialogInterface.OnMultiChoiceClickListener
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDialogFragment import androidx.appcompat.app.AppCompatDialogFragment
import org.isoron.uhabits.HabitsApplication
import org.isoron.uhabits.R import org.isoron.uhabits.R
import org.isoron.uhabits.activities.common.dialogs.MultipleDialogsHandler.Companion.dismissCurrentAndShow
import org.isoron.uhabits.core.models.WeekdayList import org.isoron.uhabits.core.models.WeekdayList
import org.isoron.uhabits.core.utils.DateUtils import org.isoron.uhabits.core.utils.DateUtils
import java.util.Calendar import java.util.Calendar
@ -60,7 +60,6 @@ class WeekdayPickerDialog :
} }
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
HabitsApplication.clearCurrentDialog()
val builder = AlertDialog.Builder( val builder = AlertDialog.Builder(
requireActivity() requireActivity()
) )
@ -77,15 +76,10 @@ class WeekdayPickerDialog :
) { _: DialogInterface?, _: Int -> dismiss() } ) { _: DialogInterface?, _: Int -> dismiss() }
val dialog = builder.create() val dialog = builder.create()
HabitsApplication.currentDialog = dialog dialog.dismissCurrentAndShow()
return dialog return dialog
} }
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
HabitsApplication.currentDialog = null
}
fun setListener(listener: OnWeekdaysPickedListener?) { fun setListener(listener: OnWeekdaysPickedListener?) {
this.listener = listener this.listener = listener
} }

Loading…
Cancel
Save