Skip to content

Commit

Permalink
updates
Browse files Browse the repository at this point in the history
  • Loading branch information
manas-yu committed Feb 4, 2025
1 parent 2a9ad09 commit e3d5476
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,16 @@ class ClickableAreasImage(
// Remove any previously selected region excluding 0th index(image view)
if (index > 0) {
childView.setBackgroundResource(0)
if (childView.tag != null) {
val regionLabel = childView.tag as String
clickableAreas.find { it.label == regionLabel }?.let { clickableArea ->
updateRegionContentDescription(
childView,
clickableArea,
regionLabel == imageLabel
)
}
}
}
}
}
Expand Down Expand Up @@ -147,35 +157,19 @@ class ClickableAreasImage(
}
}

private fun generateContentDescription(
clickableArea: LabeledRegion,
isSelected: Boolean
): String {
val regionType = clickableArea.region.regionType.name
val selectionState = if (isSelected) "Unselect" else "Select"

return "$selectionState $regionType region: ${clickableArea.label}."
}

private fun updateRegionContentDescription(
view: View,
clickableArea: LabeledRegion,
isSelected: Boolean
) {
view.contentDescription = generateContentDescription(clickableArea, isSelected)
}

private fun showOrHideRegion(newView: View, clickableArea: LabeledRegion) {
val isBecomingSelected = newView.background == null
resetRegionSelectionViews()
if (clickableArea.label != imageLabel) {
imageLabel = clickableArea.label
resetRegionSelectionViews()
newView.setBackgroundResource(R.drawable.selected_region_background)

listener.onClickableAreaTouched(
NamedRegionClickedEvent(
clickableArea.label,
generateContentDescription(clickableArea, isBecomingSelected)
listener.onClickableAreaTouched(
NamedRegionClickedEvent(
clickableArea.label,
generateContentDescription(clickableArea, true)
)
)
)
newView.setBackgroundResource(R.drawable.selected_region_background)
}
}

private fun View.initializeShowRegionTouchListener() {
Expand All @@ -197,4 +191,23 @@ class ClickableAreasImage(
return@setOnTouchListener true
}
}

private fun generateContentDescription(
clickableArea: LabeledRegion,
isSelected: Boolean
): String {
val regionType = clickableArea.region.regionType.name
if (isSelected) {
return "This is a ${regionType.lowercase()} region ${clickableArea.label}."
}
return "Select ${regionType.lowercase()} region ${clickableArea.label}."
}

private fun updateRegionContentDescription(
view: View,
clickableArea: LabeledRegion,
isSelected: Boolean
) {
view.contentDescription = generateContentDescription(clickableArea, isSelected)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ class ImageRegionSelectionInteractionViewTest {
assertThat(regionClickedEvent.value)
.isEqualTo(
NamedRegionClickedEvent(
regionLabel = "Region 3", contentDescription = "Unselect Rectangle region: Region 3."
regionLabel = "Region 3", contentDescription = "This is a rectangle region Region 3."
)
)
}
Expand Down Expand Up @@ -219,7 +219,7 @@ class ImageRegionSelectionInteractionViewTest {
assertThat(regionClickedEvent.value)
.isEqualTo(
NamedRegionClickedEvent(
regionLabel = "Region 2", contentDescription = "Unselect Rectangle region: Region 2."
regionLabel = "Region 2", contentDescription = "This is a rectangle region Region 2."
)
)
}
Expand All @@ -233,7 +233,7 @@ class ImageRegionSelectionInteractionViewTest {
onView(
allOf(
withTagValue(`is`("Region 3")),
withContentDescription("Select Rectangle region: Region 3.")
withContentDescription("Select rectangle region Region 3.")
)
).check(matches(isDisplayed()))
}
Expand Down Expand Up @@ -295,7 +295,7 @@ class ImageRegionSelectionInteractionViewTest {
assertThat(regionClickedEvent.value)
.isEqualTo(
NamedRegionClickedEvent(
regionLabel = "Region 2", contentDescription = "Unselect Rectangle region: Region 2."
regionLabel = "Region 2", contentDescription = "This is a rectangle region Region 2."
)
)
}
Expand Down Expand Up @@ -323,7 +323,7 @@ class ImageRegionSelectionInteractionViewTest {
assertThat(regionClickedEvent.value)
.isEqualTo(
NamedRegionClickedEvent(
regionLabel = "Region 3", contentDescription = "Unselect Rectangle region: Region 3."
regionLabel = "Region 3", contentDescription = "This is a rectangle region Region 3."
)
)
}
Expand Down Expand Up @@ -367,7 +367,7 @@ class ImageRegionSelectionInteractionViewTest {
assertThat(regionClickedEvent.value)
.isEqualTo(
NamedRegionClickedEvent(
regionLabel = "Region 3", contentDescription = "Unselect Rectangle region: Region 3."
regionLabel = "Region 3", contentDescription = "This is a rectangle region Region 3."
)
)
}
Expand Down Expand Up @@ -409,7 +409,7 @@ class ImageRegionSelectionInteractionViewTest {
assertThat(regionClickedEvent.value)
.isEqualTo(
NamedRegionClickedEvent(
regionLabel = "Region 2", contentDescription = "Unselect Rectangle region: Region 2."
regionLabel = "Region 2", contentDescription = "This is a rectangle region Region 2."
)
)
}
Expand Down

0 comments on commit e3d5476

Please sign in to comment.