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
import android.app.Application
import android.app.Dialog
import android.content.Context
import org.isoron.uhabits.core.database.UnsupportedDatabaseVersionException
import org.isoron.uhabits.core.reminders.ReminderScheduler
@ -119,11 +118,5 @@ class HabitsApplication : Application() {
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.GONE
import android.view.View.VISIBLE
import org.isoron.uhabits.HabitsApplication
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.SKIP
import org.isoron.uhabits.core.models.Entry.Companion.UNKNOWN
@ -99,7 +99,6 @@ class CheckmarkPopup(
}
fun show() {
HabitsApplication.clearCurrentDialog()
dialog = Dialog(context, android.R.style.Theme_NoTitleBar)
dialog.setContentView(view.root)
dialog.window?.apply {
@ -119,13 +118,12 @@ class CheckmarkPopup(
view.unknownBtn.setOnClickListener { onClick(UNKNOWN) }
dialog.setCanceledOnTouchOutside(true)
dialog.dimBehind()
HabitsApplication.currentDialog = dialog
dialog.dismissCurrentAndShow()
dialog.show()
}
fun save() {
onToggle(value, view.notes.text.toString().trim())
HabitsApplication.currentDialog = null
dialog.dismiss()
}
}

@ -19,10 +19,9 @@
package org.isoron.uhabits.activities.common.dialogs
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
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.utils.toPaletteColor
@ -38,16 +37,7 @@ class ColorPickerDialog : ColorPickerDialog() {
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
HabitsApplication.clearCurrentDialog()
HabitsApplication.currentDialog = this.dialog
this.dialog?.dismissCurrentAndShow()
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.DialogInterface
import androidx.appcompat.app.AlertDialog
import org.isoron.uhabits.HabitsApplication
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.inject.ActivityContext
@ -35,7 +35,6 @@ class ConfirmDeleteDialog(
quantity: Int
) : AlertDialog(context) {
init {
HabitsApplication.clearCurrentDialog()
val res = context.resources
setTitle(res.getQuantityString(R.plurals.delete_habits_title, quantity))
setMessage(res.getQuantityString(R.plurals.delete_habits_message, quantity))
@ -48,10 +47,6 @@ class ConfirmDeleteDialog(
res.getString(R.string.no)
) { dialog: DialogInterface?, which: Int -> }
HabitsApplication.currentDialog = this
this.setOnDismissListener {
HabitsApplication.currentDialog = null
}
this.dismissCurrentAndShow()
}
}

@ -20,7 +20,6 @@
package org.isoron.uhabits.activities.common.dialogs
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@ -31,8 +30,8 @@ import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDialogFragment
import kotlinx.android.synthetic.main.frequency_picker_dialog.view.*
import org.isoron.uhabits.HabitsApplication
import org.isoron.uhabits.R
import org.isoron.uhabits.activities.common.dialogs.MultipleDialogsHandler.Companion.dismissCurrentAndShow
class FrequencyPickerDialog(
var freqNumerator: Int,
@ -45,7 +44,6 @@ class FrequencyPickerDialog(
constructor() : this(1, 1)
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
HabitsApplication.clearCurrentDialog()
val inflater = LayoutInflater.from(requireActivity())
contentView = inflater.inflate(R.layout.frequency_picker_dialog, null)
@ -118,15 +116,10 @@ class FrequencyPickerDialog(
.setView(contentView)
.setPositiveButton(R.string.save) { _, _ -> onSaveClicked() }
.create()
HabitsApplication.currentDialog = dialog
dialog.dismissCurrentAndShow()
return dialog
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
HabitsApplication.currentDialog = null
}
private fun addBeforeAfterText(
str: String,
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.GONE
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.preferences.Preferences
import org.isoron.uhabits.databinding.CheckmarkPopupBinding
@ -74,7 +74,6 @@ class NumberPopup(
}
fun show() {
HabitsApplication.clearCurrentDialog()
dialog = Dialog(context, android.R.style.Theme_NoTitleBar)
dialog.setContentView(view.root)
dialog.window?.apply {
@ -86,7 +85,6 @@ class NumberPopup(
}
dialog.setOnDismissListener {
onDismiss()
HabitsApplication.currentDialog = null
}
view.value.setOnKeyListener { _, keyCode, event ->
@ -106,7 +104,7 @@ class NumberPopup(
view.value.requestFocusWithKeyboard()
dialog.setCanceledOnTouchOutside(true)
dialog.dimBehind()
HabitsApplication.currentDialog = dialog
dialog.dismissCurrentAndShow()
dialog.show()
}

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

Loading…
Cancel
Save