From d7293d7a8ed370c5823e0124b50e7664d7d09eaa Mon Sep 17 00:00:00 2001 From: Jakub Kalinowski Date: Thu, 21 Apr 2022 20:41:58 +0200 Subject: [PATCH] Changed the approach --- .../common/dialogs/NumberPickerFactory.kt | 17 +++++++++-------- .../habits/list/ListHabitsScreen.kt | 4 +--- .../habits/show/ShowHabitActivity.kt | 19 ++++++++----------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt index 1e8986a81..45a9aac64 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt @@ -59,7 +59,9 @@ class NumberPickerFactory frequency: Frequency, callback: ListHabitsBehavior.NumberPickerCallback ): AlertDialog { - numberPickerExists = true + + clearCurrentDialog() + val inflater = LayoutInflater.from(context) val view = inflater.inflate(R.layout.number_picker_dialog, null) @@ -113,7 +115,7 @@ class NumberPickerFactory } .setOnDismissListener { callback.onNumberPickerDismissed() - numberPickerExists = false + currentDialog = null } if (frequency == DAILY) { @@ -154,6 +156,7 @@ class NumberPickerFactory false } + currentDialog = dialog return dialog } @@ -172,12 +175,10 @@ class NumberPickerFactory } companion object { - private var numberPickerExists = false - - fun numberPickerAlreadyExists(): Boolean = numberPickerExists - - fun setNumberPickerExists(value: Boolean) { - numberPickerExists = value + private var currentDialog: AlertDialog? = null + fun clearCurrentDialog() { + currentDialog?.dismiss() + currentDialog = null } } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt index d939edb47..4ec28f9f3 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt @@ -234,9 +234,7 @@ class ListHabitsScreen frequency: Frequency, callback: ListHabitsBehavior.NumberPickerCallback ) { - if (!NumberPickerFactory.numberPickerAlreadyExists()) { - numberPickerFactory.create(value, unit, notes, dateString, frequency, callback).show() - } + numberPickerFactory.create(value, unit, notes, dateString, frequency, callback).show() } override fun showCheckmarkDialog( diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt index 2fd92e241..867ee864d 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt @@ -20,7 +20,6 @@ package org.isoron.uhabits.activities.habits.show import android.content.ContentUris import android.os.Bundle -import android.util.Log import android.view.HapticFeedbackConstants import android.view.Menu import android.view.MenuItem @@ -174,16 +173,14 @@ class ShowHabitActivity : AppCompatActivity(), CommandRunner.Listener { frequency: Frequency, callback: ListHabitsBehavior.NumberPickerCallback ) { - if(!NumberPickerFactory.numberPickerAlreadyExists()) { - NumberPickerFactory(this@ShowHabitActivity).create( - value, - unit, - notes, - dateString, - frequency, - callback - ).show() - } + NumberPickerFactory(this@ShowHabitActivity).create( + value, + unit, + notes, + dateString, + frequency, + callback + ).show() } override fun showCheckmarkDialog(