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