From ca04c5c9b083d6e829b1d883f52640562599e87f Mon Sep 17 00:00:00 2001 From: fikrimilano Date: Thu, 18 Jan 2024 12:47:51 +0700 Subject: [PATCH 1/3] Hide previous button on first page --- .../android/fhir/datacapture/QuestionnaireFragment.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/QuestionnaireFragment.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/QuestionnaireFragment.kt index 70cc0b86b8..63426e7c42 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/QuestionnaireFragment.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/QuestionnaireFragment.kt @@ -1,5 +1,5 @@ /* - * Copyright 2023 Google LLC + * Copyright 2023-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -190,8 +190,8 @@ class QuestionnaireFragment : Fragment() { reviewModeEditButton.visibility = View.GONE if (displayMode.pagination.isPaginated) { - paginationPreviousButton.visibility = View.VISIBLE - paginationPreviousButton.isEnabled = displayMode.pagination.hasPreviousPage + paginationPreviousButton.visibility = + if (displayMode.pagination.hasPreviousPage) View.VISIBLE else View.GONE paginationNextButton.visibility = View.VISIBLE paginationNextButton.isEnabled = displayMode.pagination.hasNextPage } else { From 9925c1b4eea8ca4cb4def26dfeccafd214e483bd Mon Sep 17 00:00:00 2001 From: fikrimilano Date: Thu, 18 Jan 2024 12:48:47 +0700 Subject: [PATCH 2/3] Hide next button on last page --- .../google/android/fhir/datacapture/QuestionnaireFragment.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/QuestionnaireFragment.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/QuestionnaireFragment.kt index 63426e7c42..83841800c7 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/QuestionnaireFragment.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/QuestionnaireFragment.kt @@ -192,8 +192,8 @@ class QuestionnaireFragment : Fragment() { if (displayMode.pagination.isPaginated) { paginationPreviousButton.visibility = if (displayMode.pagination.hasPreviousPage) View.VISIBLE else View.GONE - paginationNextButton.visibility = View.VISIBLE - paginationNextButton.isEnabled = displayMode.pagination.hasNextPage + paginationNextButton.visibility = + if (displayMode.pagination.hasNextPage) View.VISIBLE else View.GONE } else { paginationPreviousButton.visibility = View.GONE paginationNextButton.visibility = View.GONE From cafd4db7bfe020772bffa366ee7162429bafb88a Mon Sep 17 00:00:00 2001 From: fikrimilano Date: Thu, 18 Jan 2024 12:48:54 +0700 Subject: [PATCH 3/3] Add tests --- .../datacapture/QuestionnaireFragmentTest.kt | 149 +++++++++++++++++- 1 file changed, 148 insertions(+), 1 deletion(-) diff --git a/datacapture/src/test/java/com/google/android/fhir/datacapture/QuestionnaireFragmentTest.kt b/datacapture/src/test/java/com/google/android/fhir/datacapture/QuestionnaireFragmentTest.kt index 532be81506..b699b29597 100644 --- a/datacapture/src/test/java/com/google/android/fhir/datacapture/QuestionnaireFragmentTest.kt +++ b/datacapture/src/test/java/com/google/android/fhir/datacapture/QuestionnaireFragmentTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -139,6 +139,153 @@ class QuestionnaireFragmentTest { .isEqualTo(View.VISIBLE) } + @Test + fun `should hide next button on last page`() { + val questionnaireJson = + """{ + "resourceType": "Questionnaire", + "item": [ + { + "linkId": "1", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "page", + "display": "Page" + } + ], + "text": "Page" + } + } + ], + "item": [ + { + "linkId": "1.1", + "type": "display", + "text": "Item 1" + } + ] + }, + { + "linkId": "2", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "page", + "display": "Page" + } + ], + "text": "Page" + } + } + ], + "item": [ + { + "linkId": "2.1", + "type": "display", + "text": "Item 2" + } + ] + } + ] +} +""" + val scenario = + launchFragmentInContainer( + bundleOf( + EXTRA_QUESTIONNAIRE_JSON_STRING to questionnaireJson, + ), + ) + scenario.moveToState(Lifecycle.State.RESUMED) + val view = scenario.withFragment { requireView() } + view.findViewById