From 6943beae9f129ad6016a4d90390cdc4732749a8f Mon Sep 17 00:00:00 2001 From: razeeman Date: Sat, 25 Jan 2025 13:34:33 +0300 Subject: [PATCH] add new tests --- .../simpletimetracker/ChangeRecordTest.kt | 1 + .../ChangeRunningRecordTest.kt | 1 + .../RecordActionsChangeTagTest.kt | 249 ++++++++++++++++++ .../core/extension/ViewDataExensions.kt | 4 +- .../core/mapper/GoalViewDataMapper.kt | 15 +- .../simpletimetracker/core/utils/ViewUtis.kt | 2 +- ...RunningRecordFromChangeScreenInteractor.kt | 6 +- .../runningRecord/GoalTimeViewData.kt | 2 +- .../RunningRecordAdapterDelegate.kt | 3 +- .../mapper/ChangeRunningRecordMapper.kt | 2 +- .../view/ChangeRunningRecordFragment.kt | 2 +- .../feature_views/GoalCheckmarkView.kt | 5 +- .../feature_views/RunningRecordView.kt | 6 - .../screen/ChangeRunningRecordParams.kt | 4 +- 14 files changed, 276 insertions(+), 26 deletions(-) create mode 100644 app/src/androidTest/java/com/example/util/simpletimetracker/RecordActionsChangeTagTest.kt diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTest.kt index 060845813..a3fa1f2ec 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRecordTest.kt @@ -59,6 +59,7 @@ class ChangeRecordTest : BaseUiTest() { testUtils.addActivity(name = newName, color = lastColor, text = lastEmoji) testUtils.addRecordTag(tag1, name) testUtils.addRecordTag(tag2, newName) + Thread.sleep(1000) // Add record NavUtils.openRecordsScreen() diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRunningRecordTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRunningRecordTest.kt index 6cdc16dc4..2bde088df 100644 --- a/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRunningRecordTest.kt +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/ChangeRunningRecordTest.kt @@ -76,6 +76,7 @@ class ChangeRunningRecordTest : BaseUiTest() { ) testUtils.addActivity(name = name2, color = lastColor, text = lastEmoji) testUtils.addRecordTag(tag2, name2) + Thread.sleep(1000) // Start timer tryAction { clickOnViewWithText(name1) } diff --git a/app/src/androidTest/java/com/example/util/simpletimetracker/RecordActionsChangeTagTest.kt b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordActionsChangeTagTest.kt new file mode 100644 index 000000000..8b230e83c --- /dev/null +++ b/app/src/androidTest/java/com/example/util/simpletimetracker/RecordActionsChangeTagTest.kt @@ -0,0 +1,249 @@ +package com.example.util.simpletimetracker + +import androidx.test.espresso.Espresso.pressBack +import androidx.test.espresso.matcher.ViewMatchers.hasDescendant +import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.example.util.simpletimetracker.core.extension.setToStartOfDay +import com.example.util.simpletimetracker.utils.BaseUiTest +import com.example.util.simpletimetracker.utils.NavUtils +import com.example.util.simpletimetracker.utils.checkViewDoesNotExist +import com.example.util.simpletimetracker.utils.checkViewIsDisplayed +import com.example.util.simpletimetracker.utils.clickOnViewWithText +import com.example.util.simpletimetracker.utils.longClickOnView +import com.example.util.simpletimetracker.utils.tryAction +import com.example.util.simpletimetracker.utils.withCardColor +import com.example.util.simpletimetracker.utils.withTag +import dagger.hilt.android.testing.HiltAndroidTest +import org.hamcrest.CoreMatchers.allOf +import org.junit.Test +import org.junit.runner.RunWith +import java.util.Calendar +import java.util.concurrent.TimeUnit +import com.example.util.simpletimetracker.core.R as coreR +import com.example.util.simpletimetracker.feature_base_adapter.R as baseR + +@HiltAndroidTest +@RunWith(AndroidJUnit4::class) +class RecordActionsChangeTagTest : BaseUiTest() { + + @Test + fun visibility() { + val recordWithTags = "recordWithTags" + val recordWithNoTags = "recordWithNoTags" + val runningWithTags = "runningWithTags" + val runningWithNoTags = "runningWithNoTags" + val recordTag = "recordTag" + val runningTag = "runningTag" + + // Setup + testUtils.addActivity(recordWithTags) + testUtils.addActivity(recordWithNoTags) + testUtils.addActivity(runningWithTags) + testUtils.addActivity(runningWithNoTags) + testUtils.addRecordTag(recordTag, typeName = recordWithTags) + testUtils.addRecordTag(runningTag, typeName = runningWithTags) + testUtils.addRunningRecord(runningWithTags) + testUtils.addRunningRecord(runningWithNoTags) + testUtils.addRecord(recordWithTags) + testUtils.addRecord(recordWithNoTags) + calendar.timeInMillis = System.currentTimeMillis() + testUtils.addRecord( + typeName = recordWithTags, + timeStarted = calendar.timeInMillis - TimeUnit.DAYS.toMillis(1), + timeEnded = calendar.timeInMillis - TimeUnit.DAYS.toMillis(1), + ) + Thread.sleep(1000) + + // Running record with tags - shown + NavUtils.openRecordsScreen() + longClickOnView(allOf(withText(runningWithTags), isCompletelyDisplayed())) + checkViewIsDisplayed(withText(coreR.string.data_edit_change_tag)) + pressBack() + + // Running records with no tags - not shown + NavUtils.openRecordsScreen() + longClickOnView(allOf(withText(runningWithNoTags), isCompletelyDisplayed())) + checkViewDoesNotExist(withText(coreR.string.data_edit_change_tag)) + pressBack() + + // Record with tags - shown + longClickOnView(allOf(withText(recordWithTags), isCompletelyDisplayed())) + checkViewIsDisplayed(withText(coreR.string.data_edit_change_tag)) + pressBack() + + // Record with no tags - not shown + longClickOnView(allOf(withText(recordWithNoTags), isCompletelyDisplayed())) + checkViewDoesNotExist(withText(coreR.string.data_edit_change_tag)) + pressBack() + + // Untracked - not shown + longClickOnView(allOf(withText(coreR.string.untracked_time_name), isCompletelyDisplayed())) + checkViewDoesNotExist(withText(coreR.string.data_edit_change_tag)) + } + + @Test + fun record() { + val name1 = "Name1" + val color1 = firstColor + val icon1 = firstIcon + val comment = "Some_comment" + val tag = "Tag" + val tagGeneral = "TagGeneral" + val fullName1 = "$name1 - $tag, $tagGeneral" + val fullName2 = "$name1 - $tagGeneral" + val calendar = Calendar.getInstance() + + // Setup + val current = calendar.timeInMillis + val difference = TimeUnit.MINUTES.toMillis(30) + val timeStartedTimestamp = current - difference + val timeStartedPreview = timeStartedTimestamp.formatTime() + val timeEndedPreview = current.formatTime() + val timeRangePreview = difference.formatInterval() + + testUtils.addActivity(name = name1, color = color1, icon = icon1) + testUtils.addRecordTag(tag, typeName = name1) + testUtils.addRecordTag(tagGeneral) + testUtils.addRecord( + typeName = name1, + timeStarted = timeStartedTimestamp, + timeEnded = current, + tagNames = listOf(tag, tagGeneral), + comment = comment, + ) + + // Check record + NavUtils.openRecordsScreen() + checkRecord( + name = fullName1, + color = color1, + icon = icon1, + timeStartedPreview = timeStartedPreview, + timeEndedPreview = timeEndedPreview, + timeRangePreview = timeRangePreview, + comment = comment, + ) + + // Change + longClickOnView(allOf(withText(fullName1), isCompletelyDisplayed())) + clickOnViewWithText(R.string.data_edit_change_tag) + clickOnViewWithText(tag) + clickOnViewWithText(R.string.change_record_save) + + tryAction { + checkRecord( + name = fullName2, + color = color1, + icon = icon1, + timeStartedPreview = timeStartedPreview, + timeEndedPreview = timeEndedPreview, + timeRangePreview = timeRangePreview, + comment = comment, + ) + } + } + + @Test + fun runningRecord() { + val name1 = "Name1" + val color1 = firstColor + val icon1 = firstIcon + val comment = "Some_comment" + val tag = "Tag" + val tagGeneral = "TagGeneral" + val fullName1 = "$name1 - $tag, $tagGeneral" + val fullName2 = "$name1 - $tagGeneral" + val calendar = Calendar.getInstance() + + // Setup + val current = calendar.timeInMillis + val difference = TimeUnit.MINUTES.toMillis(30) + val timeStartedTimestamp = current - difference + val timeStartedPreview = timeStartedTimestamp.formatTime() + + testUtils.addActivity(name = name1, color = color1, icon = icon1) + testUtils.addRecordTag(tag, typeName = name1) + testUtils.addRecordTag(tagGeneral) + testUtils.addRunningRecord( + typeName = name1, + timeStarted = timeStartedTimestamp, + tagNames = listOf(tag, tagGeneral), + comment = comment, + ) + + // Check record + NavUtils.openRecordsScreen() + checkRunningRecord( + name = fullName1, + color = color1, + icon = icon1, + timeStartedPreview = timeStartedPreview, + comment = comment, + ) + + // Change + longClickOnView(allOf(withText(fullName1), isCompletelyDisplayed())) + clickOnViewWithText(R.string.data_edit_change_tag) + clickOnViewWithText(tag) + clickOnViewWithText(R.string.change_record_save) + + tryAction { + checkRunningRecord( + name = fullName2, + color = color1, + icon = icon1, + timeStartedPreview = timeStartedPreview, + comment = comment, + ) + } + } + + @Suppress("SameParameterValue") + private fun checkRecord( + name: String, + color: Int, + icon: Int, + timeStartedPreview: String, + timeEndedPreview: String, + timeRangePreview: String, + comment: String, + ) { + checkViewIsDisplayed( + allOf( + withId(baseR.id.viewRecordItem), + withCardColor(color), + hasDescendant(withText(name)), + hasDescendant(withTag(icon)), + hasDescendant(withText(timeStartedPreview)), + hasDescendant(withText(timeEndedPreview)), + hasDescendant(withText(timeRangePreview)), + hasDescendant(withText(comment)), + isCompletelyDisplayed(), + ), + ) + } + + @Suppress("SameParameterValue") + private fun checkRunningRecord( + name: String, + color: Int, + icon: Int, + timeStartedPreview: String, + comment: String, + ) { + checkViewIsDisplayed( + allOf( + withId(baseR.id.viewRunningRecordItem), + withCardColor(color), + hasDescendant(withText(name)), + hasDescendant(withTag(icon)), + hasDescendant(withText(timeStartedPreview)), + hasDescendant(withText(comment)), + isCompletelyDisplayed(), + ), + ) + } +} diff --git a/core/src/main/java/com/example/util/simpletimetracker/core/extension/ViewDataExensions.kt b/core/src/main/java/com/example/util/simpletimetracker/core/extension/ViewDataExensions.kt index ae976aa42..760c7f37e 100644 --- a/core/src/main/java/com/example/util/simpletimetracker/core/extension/ViewDataExensions.kt +++ b/core/src/main/java/com/example/util/simpletimetracker/core/extension/ViewDataExensions.kt @@ -47,7 +47,6 @@ fun Range.toParams(): RangeParams { fun ChangeRunningRecordParams.Preview.GoalTimeParams.toViewData(): GoalTimeViewData { return GoalTimeViewData( text = this.text, - complete = this.complete, state = this.state.toViewData(), ) } @@ -55,13 +54,13 @@ fun ChangeRunningRecordParams.Preview.GoalTimeParams.toViewData(): GoalTimeViewD fun GoalTimeViewData.toParams(): ChangeRunningRecordParams.Preview.GoalTimeParams { return ChangeRunningRecordParams.Preview.GoalTimeParams( text = this.text, - complete = this.complete, state = this.state.toParams(), ) } fun ChangeRunningRecordParams.Preview.GoalSubtypeParams.toViewData(): GoalTimeViewData.Subtype { return when (this) { + is ChangeRunningRecordParams.Preview.GoalSubtypeParams.Hidden -> GoalTimeViewData.Subtype.Hidden is ChangeRunningRecordParams.Preview.GoalSubtypeParams.Goal -> GoalTimeViewData.Subtype.Goal is ChangeRunningRecordParams.Preview.GoalSubtypeParams.Limit -> GoalTimeViewData.Subtype.Limit } @@ -69,6 +68,7 @@ fun ChangeRunningRecordParams.Preview.GoalSubtypeParams.toViewData(): GoalTimeVi fun GoalTimeViewData.Subtype.toParams(): ChangeRunningRecordParams.Preview.GoalSubtypeParams { return when (this) { + is GoalTimeViewData.Subtype.Hidden -> ChangeRunningRecordParams.Preview.GoalSubtypeParams.Hidden is GoalTimeViewData.Subtype.Goal -> ChangeRunningRecordParams.Preview.GoalSubtypeParams.Goal is GoalTimeViewData.Subtype.Limit -> ChangeRunningRecordParams.Preview.GoalSubtypeParams.Limit } diff --git a/core/src/main/java/com/example/util/simpletimetracker/core/mapper/GoalViewDataMapper.kt b/core/src/main/java/com/example/util/simpletimetracker/core/mapper/GoalViewDataMapper.kt index f14cf62b7..b9e63fc4b 100644 --- a/core/src/main/java/com/example/util/simpletimetracker/core/mapper/GoalViewDataMapper.kt +++ b/core/src/main/java/com/example/util/simpletimetracker/core/mapper/GoalViewDataMapper.kt @@ -7,10 +7,10 @@ import com.example.util.simpletimetracker.core.viewData.StatisticsDataHolder import com.example.util.simpletimetracker.domain.extension.orFalse import com.example.util.simpletimetracker.domain.extension.orZero import com.example.util.simpletimetracker.domain.recordType.extension.value -import com.example.util.simpletimetracker.domain.statistics.model.ChartFilterType -import com.example.util.simpletimetracker.domain.statistics.model.RangeLength import com.example.util.simpletimetracker.domain.recordType.model.RecordType import com.example.util.simpletimetracker.domain.recordType.model.RecordTypeGoal +import com.example.util.simpletimetracker.domain.statistics.model.ChartFilterType +import com.example.util.simpletimetracker.domain.statistics.model.RangeLength import com.example.util.simpletimetracker.domain.statistics.model.Statistics import com.example.util.simpletimetracker.feature_base_adapter.runningRecord.GoalTimeViewData import com.example.util.simpletimetracker.feature_base_adapter.statisticsGoal.StatisticsGoalViewData @@ -33,8 +33,7 @@ class GoalViewDataMapper @Inject constructor( ): GoalTimeViewData { val noGoal = GoalTimeViewData( text = "", - complete = false, - state = GoalTimeViewData.Subtype.Goal, + state = GoalTimeViewData.Subtype.Hidden, ) if (goal == null || goal.value <= 0L || !goalsVisible) { return noGoal @@ -80,14 +79,14 @@ class GoalViewDataMapper @Inject constructor( "$typeString $formatted" } - val state = when (goal.subtype) { - is RecordTypeGoal.Subtype.Goal -> GoalTimeViewData.Subtype.Goal - is RecordTypeGoal.Subtype.Limit -> GoalTimeViewData.Subtype.Limit + val state = when { + complete && goal.subtype is RecordTypeGoal.Subtype.Goal -> GoalTimeViewData.Subtype.Goal + complete && goal.subtype is RecordTypeGoal.Subtype.Limit -> GoalTimeViewData.Subtype.Limit + else -> GoalTimeViewData.Subtype.Hidden } return GoalTimeViewData( text = durationLeftString, - complete = complete, state = state, ) } diff --git a/core/src/main/java/com/example/util/simpletimetracker/core/utils/ViewUtis.kt b/core/src/main/java/com/example/util/simpletimetracker/core/utils/ViewUtis.kt index 01a7d969d..e5445e7ca 100644 --- a/core/src/main/java/com/example/util/simpletimetracker/core/utils/ViewUtis.kt +++ b/core/src/main/java/com/example/util/simpletimetracker/core/utils/ViewUtis.kt @@ -45,8 +45,8 @@ fun updateRunningRecordPreview( // Update if goal was shown and need update. if (it.itemGoalTime.isNotEmpty() && update.goalText.isNotEmpty()) { it.itemGoalTime = update.goalText - it.itemGoalTimeComplete = update.goalComplete it.itemGoalTimeCheck = when (update.goalState) { + is GoalState.Hidden -> CheckState.HIDDEN is GoalState.Goal -> CheckState.GOAL_REACHED is GoalState.Limit -> CheckState.LIMIT_REACHED } diff --git a/domain/src/main/java/com/example/util/simpletimetracker/domain/record/interactor/UpdateRunningRecordFromChangeScreenInteractor.kt b/domain/src/main/java/com/example/util/simpletimetracker/domain/record/interactor/UpdateRunningRecordFromChangeScreenInteractor.kt index 1f28b184a..f05fd5b70 100644 --- a/domain/src/main/java/com/example/util/simpletimetracker/domain/record/interactor/UpdateRunningRecordFromChangeScreenInteractor.kt +++ b/domain/src/main/java/com/example/util/simpletimetracker/domain/record/interactor/UpdateRunningRecordFromChangeScreenInteractor.kt @@ -26,7 +26,6 @@ class UpdateRunningRecordFromChangeScreenInteractor @Inject constructor() { val timer: String, val timerTotal: String, val goalText: String, - val goalComplete: Boolean, val goalState: GoalState, val additionalData: AdditionalData?, ) @@ -38,7 +37,8 @@ class UpdateRunningRecordFromChangeScreenInteractor @Inject constructor() { ) sealed interface GoalState { - object Goal : GoalState - object Limit : GoalState + data object Hidden : GoalState + data object Goal : GoalState + data object Limit : GoalState } } \ No newline at end of file diff --git a/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/runningRecord/GoalTimeViewData.kt b/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/runningRecord/GoalTimeViewData.kt index ae007f7b2..2c52136b3 100644 --- a/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/runningRecord/GoalTimeViewData.kt +++ b/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/runningRecord/GoalTimeViewData.kt @@ -2,11 +2,11 @@ package com.example.util.simpletimetracker.feature_base_adapter.runningRecord data class GoalTimeViewData( val text: String, - val complete: Boolean, val state: Subtype, ) { sealed interface Subtype { + data object Hidden : Subtype data object Goal : Subtype data object Limit : Subtype } diff --git a/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/runningRecord/RunningRecordAdapterDelegate.kt b/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/runningRecord/RunningRecordAdapterDelegate.kt index acc743990..7db1d8208 100644 --- a/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/runningRecord/RunningRecordAdapterDelegate.kt +++ b/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/runningRecord/RunningRecordAdapterDelegate.kt @@ -2,6 +2,7 @@ package com.example.util.simpletimetracker.feature_base_adapter.runningRecord import androidx.core.view.ViewCompat import com.example.util.simpletimetracker.domain.extension.orFalse +import com.example.util.simpletimetracker.domain.record.interactor.UpdateRunningRecordFromChangeScreenInteractor.GoalState import com.example.util.simpletimetracker.feature_base_adapter.createRecyclerBindingAdapterDelegate import com.example.util.simpletimetracker.feature_base_adapter.runningRecord.GoalTimeViewData.Subtype import com.example.util.simpletimetracker.feature_views.GoalCheckmarkView.CheckState @@ -42,8 +43,8 @@ fun createRunningRecordAdapterDelegate( } if (rebind || updates.contains(ViewData.UPDATE_GOAL_TIME).orFalse()) { itemGoalTime = item.goalTime.text - itemGoalTimeComplete = item.goalTime.complete itemGoalTimeCheck = when (item.goalTime.state) { + is Subtype.Hidden -> CheckState.HIDDEN is Subtype.Goal -> CheckState.GOAL_REACHED is Subtype.Limit -> CheckState.LIMIT_REACHED } diff --git a/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/mapper/ChangeRunningRecordMapper.kt b/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/mapper/ChangeRunningRecordMapper.kt index 8f0ed88d1..e75d75384 100644 --- a/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/mapper/ChangeRunningRecordMapper.kt +++ b/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/mapper/ChangeRunningRecordMapper.kt @@ -17,8 +17,8 @@ class ChangeRunningRecordMapper @Inject constructor() { timer = recordPreview.timer, timerTotal = recordPreview.timerTotal, goalText = recordPreview.goalTime.text, - goalComplete = recordPreview.goalTime.complete, goalState = when (recordPreview.goalTime.state) { + is Subtype.Hidden -> GoalState.Hidden is Subtype.Goal -> GoalState.Goal is Subtype.Limit -> GoalState.Limit }, diff --git a/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/view/ChangeRunningRecordFragment.kt b/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/view/ChangeRunningRecordFragment.kt index 34c250978..e4e505a12 100644 --- a/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/view/ChangeRunningRecordFragment.kt +++ b/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/view/ChangeRunningRecordFragment.kt @@ -154,8 +154,8 @@ class ChangeRunningRecordFragment : itemTimer = item.recordPreview.timer itemTimerTotal = item.recordPreview.timerTotal itemGoalTime = item.recordPreview.goalTime.text - itemGoalTimeComplete = item.recordPreview.goalTime.complete itemGoalTimeCheck = when (item.recordPreview.goalTime.state) { + is Subtype.Hidden -> CheckState.HIDDEN is Subtype.Goal -> CheckState.GOAL_REACHED is Subtype.Limit -> CheckState.LIMIT_REACHED } diff --git a/features/feature_views/src/main/java/com/example/util/simpletimetracker/feature_views/GoalCheckmarkView.kt b/features/feature_views/src/main/java/com/example/util/simpletimetracker/feature_views/GoalCheckmarkView.kt index 2c19569b2..0bb54c132 100644 --- a/features/feature_views/src/main/java/com/example/util/simpletimetracker/feature_views/GoalCheckmarkView.kt +++ b/features/feature_views/src/main/java/com/example/util/simpletimetracker/feature_views/GoalCheckmarkView.kt @@ -55,13 +55,14 @@ class GoalCheckmarkView @JvmOverloads constructor( private fun setCheckmark() = with(binding) { when (itemCheckState) { CheckState.HIDDEN -> { - binding.root.isVisible = false + root.isVisible = false ivGoalCheckmarkItemCheckOutline.isVisible = false ivGoalCheckmarkItemCheckBorder.isVisible = false ivGoalCheckmarkItemCheck.isVisible = false ivGoalCheckmarkItemCheckFiltered.isVisible = false } CheckState.GOAL_NOT_REACHED -> { + root.isVisible = true ivGoalCheckmarkItemCheckOutline.isVisible = true val color = ColorStateList.valueOf(context.getThemedAttr(R.attr.colorSecondary)) ivGoalCheckmarkItemCheckOutline.imageTintList = color @@ -69,6 +70,7 @@ class GoalCheckmarkView @JvmOverloads constructor( ivGoalCheckmarkItemCheck.isVisible = false } CheckState.GOAL_REACHED, CheckState.LIMIT_NOT_REACHED -> { + root.isVisible = true ivGoalCheckmarkItemCheckOutline.isVisible = true val color = ColorStateList.valueOf(context.getThemedAttr(R.attr.appIconColor)) ivGoalCheckmarkItemCheckOutline.imageTintList = color @@ -77,6 +79,7 @@ class GoalCheckmarkView @JvmOverloads constructor( ivGoalCheckmarkItemCheck.setImageResource(R.drawable.record_type_check_mark) } CheckState.LIMIT_REACHED -> { + root.isVisible = true ivGoalCheckmarkItemCheckOutline.isVisible = true val color = ColorStateList.valueOf(context.getThemedAttr(R.attr.colorSecondary)) ivGoalCheckmarkItemCheckOutline.imageTintList = color diff --git a/features/feature_views/src/main/java/com/example/util/simpletimetracker/feature_views/RunningRecordView.kt b/features/feature_views/src/main/java/com/example/util/simpletimetracker/feature_views/RunningRecordView.kt index 2b30be189..64198569e 100644 --- a/features/feature_views/src/main/java/com/example/util/simpletimetracker/feature_views/RunningRecordView.kt +++ b/features/feature_views/src/main/java/com/example/util/simpletimetracker/feature_views/RunningRecordView.kt @@ -85,12 +85,6 @@ class RunningRecordView @JvmOverloads constructor( field = value } - var itemGoalTimeComplete: Boolean = false - set(value) { - binding.ivRunningRecordItemGoalTimeCheck.visible = value - field = value - } - var itemGoalTimeCheck: GoalCheckmarkView.CheckState = GoalCheckmarkView.CheckState.HIDDEN set(value) { binding.ivRunningRecordItemGoalTimeCheck.itemCheckState = value diff --git a/navigation/src/main/java/com/example/util/simpletimetracker/navigation/params/screen/ChangeRunningRecordParams.kt b/navigation/src/main/java/com/example/util/simpletimetracker/navigation/params/screen/ChangeRunningRecordParams.kt index e1c0efd17..b74bfc507 100644 --- a/navigation/src/main/java/com/example/util/simpletimetracker/navigation/params/screen/ChangeRunningRecordParams.kt +++ b/navigation/src/main/java/com/example/util/simpletimetracker/navigation/params/screen/ChangeRunningRecordParams.kt @@ -29,11 +29,13 @@ data class ChangeRunningRecordParams( @Parcelize data class GoalTimeParams( val text: String, - val complete: Boolean, val state: GoalSubtypeParams, ) : Parcelable sealed interface GoalSubtypeParams : Parcelable { + @Parcelize + data object Hidden : GoalSubtypeParams + @Parcelize data object Goal : GoalSubtypeParams