mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Changed the approach, using an extension method
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user