diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsRootView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsRootView.kt index 81e01c82f..8295a41db 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsRootView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsRootView.kt @@ -140,9 +140,14 @@ class ListHabitsRootView @Inject constructor( } private fun updateEmptyView() { - llEmpty.visibility = when (listAdapter.itemCount) { - 0 -> VISIBLE - else -> GONE + if (listAdapter.itemCount == 0) { + if (listAdapter.hasNoHabit()) { + llEmpty.showEmpty() + } else { + llEmpty.showDone() + } + } else { + llEmpty.hide() } } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/EmptyListView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/EmptyListView.kt index 3d05f8083..e076b8ebb 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/EmptyListView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/EmptyListView.kt @@ -34,32 +34,54 @@ import org.isoron.uhabits.utils.sres import org.isoron.uhabits.utils.str class EmptyListView(context: Context) : LinearLayout(context) { + var textTextView: TextView + var iconTextView: TextView + init { orientation = VERTICAL gravity = CENTER visibility = View.GONE + iconTextView = TextView(context).apply { + text = str(R.string.fa_star_half_o) + typeface = getFontAwesome() + textSize = sp(40.0f) + gravity = CENTER + setTextColor(sres.getColor(R.attr.mediumContrastTextColor)) + } + addView( - TextView(context).apply { - text = str(R.string.fa_star_half_o) - typeface = getFontAwesome() - textSize = sp(40.0f) - gravity = CENTER - setTextColor(sres.getColor(R.attr.mediumContrastTextColor)) - }, + iconTextView, MATCH_PARENT, WRAP_CONTENT ) + textTextView = TextView(context).apply { + text = str(R.string.no_habits_found) + gravity = CENTER + setPadding(0, dp(20.0f).toInt(), 0, 0) + setTextColor(sres.getColor(R.attr.mediumContrastTextColor)) + } addView( - TextView(context).apply { - text = str(R.string.no_habits_found) - gravity = CENTER - setPadding(0, dp(20.0f).toInt(), 0, 0) - setTextColor(sres.getColor(R.attr.mediumContrastTextColor)) - }, + textTextView, MATCH_PARENT, WRAP_CONTENT ) } + + fun showDone() { + visibility = VISIBLE + iconTextView.text = str(R.string.fa_umbrella_beach) + textTextView.text = str(R.string.no_habits_left_to_do) + } + + fun showEmpty() { + visibility = VISIBLE + iconTextView.text = str(R.string.fa_star_half_o) + textTextView.text = str(R.string.no_habits_found) + } + + fun hide() { + visibility = GONE + } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListAdapter.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListAdapter.kt index ab6caf87e..a780bad08 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListAdapter.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListAdapter.kt @@ -62,6 +62,10 @@ class HabitCardListAdapter @Inject constructor( cache.cancelTasks() } + fun hasNoHabit(): Boolean { + return cache.hasNoHabit() + } + /** * Sets all items as not selected. */ diff --git a/uhabits-android/src/main/res/values/fontawesome.xml b/uhabits-android/src/main/res/values/fontawesome.xml index 183758e36..6df1e0183 100644 --- a/uhabits-android/src/main/res/values/fontawesome.xml +++ b/uhabits-android/src/main/res/values/fontawesome.xml @@ -28,6 +28,7 @@ + diff --git a/uhabits-android/src/main/res/values/strings.xml b/uhabits-android/src/main/res/values/strings.xml index 783fa8a5c..61487bb04 100644 --- a/uhabits-android/src/main/res/values/strings.xml +++ b/uhabits-android/src/main/res/values/strings.xml @@ -59,6 +59,7 @@ Save Streaks You have no active habits + You\'re all done for today! Press-and-hold to check or uncheck Off Create habit diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt index e55928f4b..304a38d70 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt @@ -73,6 +73,11 @@ class HabitCardListCache @Inject constructor( return data.checkmarks[habitId]!! } + @Synchronized + fun hasNoHabit(): Boolean { + return allHabits.isEmpty + } + /** * Returns the habits that occupies a certain position on the list. *