From 72ad14119aa53d98106171b44a536068e7b558a6 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Wed, 17 Jun 2020 07:00:25 -0500 Subject: [PATCH] Create HabitTypeDialog --- android/uhabits-android/build.gradle | 4 + .../habits/edit/EditHabitActivity.kt | 24 +++-- .../activities/habits/edit/HabitTypeDialog.kt | 57 ++++++++++++ .../activities/habits/list/ListHabitsMenu.kt | 11 +-- .../habits/list/ListHabitsScreen.kt | 11 +-- .../src/main/res/drawable/round_ripple.xml | 30 +++++++ .../main/res/layout/activity_edit_habit.xml | 2 +- .../src/main/res/layout/select_habit_type.xml | 89 +++++++++++++++++++ .../src/main/res/menu/list_habits.xml | 9 +- .../src/main/res/values/strings.xml | 6 ++ .../src/main/res/values/styles.xml | 36 ++++++++ .../habits/list/ListHabitsMenuBehavior.java | 15 +--- 12 files changed, 248 insertions(+), 46 deletions(-) create mode 100644 android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/HabitTypeDialog.kt create mode 100644 android/uhabits-android/src/main/res/drawable/round_ripple.xml create mode 100644 android/uhabits-android/src/main/res/layout/select_habit_type.xml diff --git a/android/uhabits-android/build.gradle b/android/uhabits-android/build.gradle index afa54c1ef..45d2a0416 100644 --- a/android/uhabits-android/build.gradle +++ b/android/uhabits-android/build.gradle @@ -70,6 +70,10 @@ android { sourceSets { main.assets.srcDirs += '../uhabits-core/src/main/resources/' } + + buildFeatures { + viewBinding true + } } dependencies { diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt index 1ca2a56f7..32b42bc22 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt @@ -23,12 +23,11 @@ import android.content.res.* import android.graphics.* import android.os.* import androidx.appcompat.app.* -import kotlinx.android.synthetic.main.activity_edit_habit.* import org.isoron.androidbase.utils.* -import org.isoron.uhabits.* import org.isoron.uhabits.activities.* import org.isoron.uhabits.activities.common.dialogs.* import org.isoron.uhabits.core.preferences.* +import org.isoron.uhabits.databinding.* import org.isoron.uhabits.preferences.* import org.isoron.uhabits.utils.* @@ -36,6 +35,8 @@ class EditHabitActivity : AppCompatActivity() { private lateinit var themeSwitcher: AndroidThemeSwitcher + private lateinit var binding: ActivityEditHabitBinding + var paletteColor = 11 var freqNum = 1 var freqDen = 1 @@ -46,16 +47,17 @@ class EditHabitActivity : AppCompatActivity() { themeSwitcher = AndroidThemeSwitcher(this, prefs) themeSwitcher.apply() - setContentView(R.layout.activity_edit_habit) + binding = ActivityEditHabitBinding.inflate(layoutInflater) + setContentView(binding.root) updateColors() - setSupportActionBar(toolbar) + setSupportActionBar(binding.toolbar) supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) supportActionBar?.elevation = 10.0f val colorPickerDialogFactory = ColorPickerDialogFactory(this) - colorButton.setOnClickListener { + binding.colorButton.setOnClickListener { val dialog = colorPickerDialogFactory.create(paletteColor) dialog.setListener { paletteColor -> this.paletteColor = paletteColor @@ -65,7 +67,7 @@ class EditHabitActivity : AppCompatActivity() { } populateFrequency() - frequencyPicker.setOnClickListener { + binding.frequencyPicker.setOnClickListener { val dialog = FrequencyPickerDialog(freqNum, freqDen) dialog.onFrequencyPicked = {num, den -> freqNum = num @@ -74,6 +76,10 @@ class EditHabitActivity : AppCompatActivity() { } dialog.show(supportFragmentManager, "frequencyPicker") } + + binding.buttonSave.setOnClickListener { + finish() + } } private fun populateFrequency() { @@ -85,16 +91,16 @@ class EditHabitActivity : AppCompatActivity() { freqDen == 31 -> "$freqNum times per month" else -> "Unknown" } - frequencyPicker.text = label + binding.frequencyPicker.text = label } private fun updateColors() { val androidColor = PaletteUtils.getColor(this, paletteColor) - colorButton.backgroundTintList = ColorStateList.valueOf(androidColor) + binding.colorButton.backgroundTintList = ColorStateList.valueOf(androidColor) if(!themeSwitcher.isNightMode) { val darkerAndroidColor = ColorUtils.mixColors(Color.BLACK, androidColor, 0.15f) window.statusBarColor = darkerAndroidColor - toolbar.setBackgroundColor(androidColor) + binding.toolbar.setBackgroundColor(androidColor) } } } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/HabitTypeDialog.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/HabitTypeDialog.kt new file mode 100644 index 000000000..b32db971e --- /dev/null +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/HabitTypeDialog.kt @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2016-2020 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +package org.isoron.uhabits.activities.habits.edit + +import android.os.* +import android.view.* +import androidx.appcompat.app.* +import org.isoron.uhabits.* +import org.isoron.uhabits.databinding.* +import org.isoron.uhabits.intents.* + +class HabitTypeDialog : AppCompatDialogFragment() { + override fun getTheme() = R.style.Translucent + + override fun onCreateView(inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle?): View? { + val binding = SelectHabitTypeBinding.inflate(inflater, container, false) + + binding.buttonYesNo.setOnClickListener { + val intent = IntentFactory().startEditActivity(activity!!) + startActivity(intent) + dismiss() + } + + binding.buttonMeasurable.setOnClickListener { + dismiss() + } + + binding.buttonSubjective.setOnClickListener{ + dismiss() + } + + binding.background.setOnClickListener { + dismiss() + } + + return binding.root + } +} \ No newline at end of file diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt index 47dfec5ee..74f2f0d89 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt @@ -39,9 +39,7 @@ class ListHabitsMenu @Inject constructor( val nightModeItem = menu.findItem(R.id.actionToggleNightMode) val hideArchivedItem = menu.findItem(R.id.actionHideArchived) val hideCompletedItem = menu.findItem(R.id.actionHideCompleted) - val addNumericalHabit = menu.findItem(R.id.actionCreateNumeralHabit) - addNumericalHabit.isVisible = preferences.isDeveloper nightModeItem.isChecked = themeSwitcher.isNightMode hideArchivedItem.isChecked = !preferences.showArchived hideCompletedItem.isChecked = !preferences.showCompleted @@ -54,13 +52,8 @@ class ListHabitsMenu @Inject constructor( return true } - R.id.actionCreateBooleanHabit -> { - behavior.onCreateBooleanHabit() - return true - } - - R.id.actionCreateNumeralHabit -> { - behavior.onCreateNumericalHabit() + R.id.actionCreateHabit -> { + behavior.onCreateHabit() return true } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt index a55fee4df..1d91f4720 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt @@ -137,14 +137,9 @@ class ListHabitsScreen activity.startActivity(intent) } - override fun showCreateBooleanHabitScreen() { - val intent = intentFactory.startEditActivity(activity) - activity.startActivity(intent) - } - - override fun showCreateNumericalHabitScreen() { - val dialog = editHabitDialogFactory.createNumerical() - activity.showDialog(dialog, "editHabit") + override fun showSelectHabitTypeDialog() { + val dialog = HabitTypeDialog() + activity.showDialog(dialog, "habitType") } override fun showDeleteConfirmationScreen(callback: OnConfirmedCallback) { diff --git a/android/uhabits-android/src/main/res/drawable/round_ripple.xml b/android/uhabits-android/src/main/res/drawable/round_ripple.xml new file mode 100644 index 000000000..7807b8b24 --- /dev/null +++ b/android/uhabits-android/src/main/res/drawable/round_ripple.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/uhabits-android/src/main/res/layout/activity_edit_habit.xml b/android/uhabits-android/src/main/res/layout/activity_edit_habit.xml index f83e13cea..e23b5acec 100644 --- a/android/uhabits-android/src/main/res/layout/activity_edit_habit.xml +++ b/android/uhabits-android/src/main/res/layout/activity_edit_habit.xml @@ -26,7 +26,7 @@ app:titleTextColor="@color/white"> + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/uhabits-android/src/main/res/menu/list_habits.xml b/android/uhabits-android/src/main/res/menu/list_habits.xml index 7f8e46731..f74b910e2 100644 --- a/android/uhabits-android/src/main/res/menu/list_habits.xml +++ b/android/uhabits-android/src/main/res/menu/list_habits.xml @@ -23,7 +23,7 @@ tools:context=".MainActivity"> - - diff --git a/android/uhabits-android/src/main/res/values/strings.xml b/android/uhabits-android/src/main/res/values/strings.xml index d2273b13b..3e2742d25 100644 --- a/android/uhabits-android/src/main/res/values/strings.xml +++ b/android/uhabits-android/src/main/res/values/strings.xml @@ -247,4 +247,10 @@ Notes You can put whatever you want here! + e.g. Did you wake up early today? Did you exercise? Did you play chess? + Measurable + e.g. How many miles did you run today? How many pages did you read? How many calories did you eat? + Subjective + e.g. Are you felling happy today? Definitely, somewhat, not at all? How frequently did you snack? Very often, sometimes, never? + \ No newline at end of file diff --git a/android/uhabits-android/src/main/res/values/styles.xml b/android/uhabits-android/src/main/res/values/styles.xml index 2de23441c..0d4c9e22e 100644 --- a/android/uhabits-android/src/main/res/values/styles.xml +++ b/android/uhabits-android/src/main/res/values/styles.xml @@ -22,6 +22,7 @@ @style/PreferenceThemeOverlay.v14.Material @style/Theme.AppCompat.Light.Dialog @style/Theme.AppCompat.Light.Dialog + ?attr/colorPrimary true @color/blue_grey_700 @@ -256,4 +257,39 @@ + + + + + + + + diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsMenuBehavior.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsMenuBehavior.java index 1a2912452..9714a7522 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsMenuBehavior.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsMenuBehavior.java @@ -61,14 +61,9 @@ public class ListHabitsMenuBehavior updateAdapterFilter(); } - public void onCreateBooleanHabit() + public void onCreateHabit() { - screen.showCreateBooleanHabitScreen(); - } - - public void onCreateNumericalHabit() - { - screen.showCreateNumericalHabitScreen(); + screen.showSelectHabitTypeDialog(); } public void onViewFAQ() @@ -150,12 +145,10 @@ public class ListHabitsMenuBehavior void showAboutScreen(); - void showCreateBooleanHabitScreen(); - - void showCreateNumericalHabitScreen(); - void showFAQScreen(); void showSettingsScreen(); + + void showSelectHabitTypeDialog(); } }