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.
*