diff --git a/uhabits-android/src/main/AndroidManifest.xml b/uhabits-android/src/main/AndroidManifest.xml index 3b0851207..721a10ae5 100644 --- a/uhabits-android/src/main/AndroidManifest.xml +++ b/uhabits-android/src/main/AndroidManifest.xml @@ -125,7 +125,7 @@ android:exported="true" android:label="NumericalCheckmarkWidget" android:noHistory="true" - android:theme="@style/Theme.AppCompat.Light.Dialog"> + android:theme="@style/Theme.Transparent"> diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/utils/ViewExtensions.kt b/uhabits-android/src/main/java/org/isoron/uhabits/utils/ViewExtensions.kt index 0a6cbf16d..16d4e6369 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/utils/ViewExtensions.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/utils/ViewExtensions.kt @@ -36,7 +36,6 @@ import android.view.ViewGroup import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.view.WindowManager -import android.widget.EditText import android.widget.PopupWindow import android.widget.RelativeLayout import android.widget.RelativeLayout.ALIGN_PARENT_BOTTOM diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt index b7bc7f229..080e7916e 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt @@ -22,16 +22,21 @@ package org.isoron.uhabits.widgets.activities import android.app.Activity import android.content.Context import android.os.Bundle -import android.view.Window +import android.view.View +import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.widget.FrameLayout +import org.isoron.platform.gui.ScreenLocation import org.isoron.uhabits.HabitsApplication import org.isoron.uhabits.activities.AndroidThemeSwitcher -import org.isoron.uhabits.activities.common.dialogs.NumberPickerFactory +import org.isoron.uhabits.activities.common.dialogs.NumberPopup +import org.isoron.uhabits.activities.common.dialogs.POPUP_HEIGHT +import org.isoron.uhabits.activities.common.dialogs.POPUP_WIDTH import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior import org.isoron.uhabits.core.ui.widgets.WidgetBehavior import org.isoron.uhabits.core.utils.DateUtils import org.isoron.uhabits.intents.IntentParser import org.isoron.uhabits.utils.SystemUtils +import org.isoron.uhabits.utils.getCenter import org.isoron.uhabits.widgets.WidgetUpdater class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPickerCallback { @@ -39,11 +44,13 @@ class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPi private lateinit var behavior: WidgetBehavior private lateinit var data: IntentParser.CheckmarkIntentData private lateinit var widgetUpdater: WidgetUpdater + private lateinit var rootView: View override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - requestWindowFeature(Window.FEATURE_NO_TITLE) - setContentView(FrameLayout(this)) + rootView = FrameLayout(this) + rootView.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT) + setContentView(rootView) val app = this.applicationContext as HabitsApplication val component = app.component val parser = app.component.intentParser @@ -55,8 +62,9 @@ class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPi component.preferences ) widgetUpdater = component.widgetUpdater - showNumberSelector(this) - + rootView.post { + showNumberSelector(this) + } SystemUtils.unlockScreen(this) } @@ -73,17 +81,28 @@ class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPi private fun showNumberSelector(context: Context) { val app = this.applicationContext as HabitsApplication AndroidThemeSwitcher(this, app.component.preferences).apply() - val numberPickerFactory = NumberPickerFactory(context) val today = DateUtils.getTodayWithOffset() val entry = data.habit.computedEntries.get(today) - numberPickerFactory.create( - entry.value / 1000.0, - data.habit.unit, - entry.notes, - today.toDialogDateString(), - data.habit.frequency, - this - ).show() + NumberPopup( + context = context, + prefs = app.component.preferences, + anchor = rootView, + notes = entry.notes, + value = entry.value / 1000.0, + ).apply { + onToggle = { value, notes -> + onNumberPicked(value, notes) + finish() + overridePendingTransition(0, 0) + } + val center = rootView.getCenter() + show( + ScreenLocation( + x = center.x - POPUP_WIDTH / 2, + y = center.y - POPUP_HEIGHT / 2 + ) + ) + } } companion object { diff --git a/uhabits-android/src/main/res/values/styles.xml b/uhabits-android/src/main/res/values/styles.xml index 8a016d96d..a3b2be8ba 100644 --- a/uhabits-android/src/main/res/values/styles.xml +++ b/uhabits-android/src/main/res/values/styles.xml @@ -413,4 +413,13 @@ + +