From 17e6c4f6e922fd7861b0c7aa39025caf2eb01967 Mon Sep 17 00:00:00 2001 From: Dharanish Date: Tue, 2 Jul 2024 16:10:02 +0200 Subject: [PATCH] Fix habit group creation --- .../uhabits/activities/habits/list/views/HabitCardView.kt | 5 +++-- .../activities/habits/list/views/HabitGroupCardView.kt | 2 ++ .../jvmMain/java/org/isoron/uhabits/core/models/Habit.kt | 2 ++ .../core/ui/screens/habits/list/HabitCardListCache.kt | 6 +++++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt index c2e0ad8f6..596b25668 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt @@ -136,10 +136,11 @@ class HabitCardView( init { scoreRing = RingView(context).apply { val thickness = dp(3f) - val margin = dp(8f).toInt() + val rightMargin = dp(8f).toInt() val ringSize = dp(15f).toInt() + val leftMargin = if (habit?.isSubHabit() == true) dp(30f).toInt() else dp(8f).toInt() layoutParams = LinearLayout.LayoutParams(ringSize, ringSize).apply { - setMargins(margin, 0, margin, 0) + setMargins(leftMargin, 0, rightMargin, 0) gravity = Gravity.CENTER } setThickness(thickness) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitGroupCardView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitGroupCardView.kt index aa207807b..03f88d011 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitGroupCardView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitGroupCardView.kt @@ -1,6 +1,7 @@ package org.isoron.uhabits.activities.habits.list.views import android.content.Context +import android.graphics.Typeface import android.graphics.text.LineBreaker.BREAK_STRATEGY_BALANCED import android.os.Build import android.os.Build.VERSION.SDK_INT @@ -75,6 +76,7 @@ class HabitGroupCardView( if (SDK_INT >= Build.VERSION_CODES.Q) { breakStrategy = BREAK_STRATEGY_BALANCED } + setTypeface(typeface, Typeface.BOLD) } addButtonView = AddButtonView(context) diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt index 776b02be7..85ee6402a 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Habit.kt @@ -56,6 +56,8 @@ data class Habit( val uriString: String get() = "content://org.isoron.uhabits/habit/$id" + fun isSubHabit(): Boolean = parentUUID != null + fun hasReminder(): Boolean = reminder != null fun isCompletedToday(): Boolean { 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 9b33b64f9..6e62116a4 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 @@ -472,6 +472,10 @@ class HabitCardListCache @Inject constructor( fromPosition: Int, toPosition: Int ) { + if (fromPosition < data.habits.size || fromPosition > data.habits.size + data.habitGroups.size) { + logger.error("performMove: $fromPosition for habit group is out of bounds") + return + } data.habitGroups.removeAt(fromPosition) // Workaround for https://github.com/iSoron/uhabits/issues/968 @@ -536,7 +540,7 @@ class HabitCardListCache @Inject constructor( val habitGroup = newData.habitGroups[currentPosition - data.habits.size] val uuid = habitGroup.uuid val prevPosition = data.habitGroups.indexOf(habitGroup) + data.habits.size - if (prevPosition < 0) { + if (prevPosition < data.habits.size) { performInsert(habitGroup, currentPosition) } else { if (prevPosition != currentPosition) {