From 94b267bf4551736bbc26775770721a76286926d6 Mon Sep 17 00:00:00 2001 From: Alex Paulescu <alex.paulescu@gmail.com> Date: Wed, 9 Dec 2020 19:10:27 +0200 Subject: [PATCH] Homescreen Contact Diary card (EXPOSUREAPP-4153) (#1848) * Added vector graphics. * Added strings. * Added card. * Changed diary card position. * Added navigation to diary activity. * Removed finish call on main activity. * Added newline at end of files. --- .../rki/coronawarnapp/ui/main/MainActivity.kt | 5 ++ .../ui/main/home/HomeFragment.kt | 8 ++ .../ui/main/home/HomeFragmentEvents.kt | 2 + .../ui/main/home/HomeFragmentViewModel.kt | 4 + .../src/main/res/drawable/ic_diary_book.xml | 22 ++++++ .../contact_diary_homescreen_card_include.xml | 74 +++++++++++++++++++ .../src/main/res/layout/fragment_home.xml | 14 +++- 7 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_diary_book.xml create mode 100644 Corona-Warn-App/src/main/res/layout/contact_diary_homescreen_card_include.xml diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt index c9f7e3d3c..5b917458e 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt @@ -14,6 +14,7 @@ import dagger.android.AndroidInjector import dagger.android.DispatchingAndroidInjector import dagger.android.HasAndroidInjector import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.contactdiary.ui.ContactDiaryActivity import de.rki.coronawarnapp.deadman.DeadmanNotificationScheduler import de.rki.coronawarnapp.storage.LocalData import de.rki.coronawarnapp.ui.base.startActivitySafely @@ -197,6 +198,10 @@ class MainActivity : AppCompatActivity(), HasAndroidInjector { onBackPressed() } + fun navigateToContactDiaryActivity() { + ContactDiaryActivity.start(this) + } + /** * Scheduling for a download of keys every hour. */ diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt index 887906299..65bf1c2ad 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt @@ -7,6 +7,7 @@ import android.view.accessibility.AccessibilityEvent import androidx.fragment.app.Fragment import de.rki.coronawarnapp.R import de.rki.coronawarnapp.databinding.FragmentHomeBinding +import de.rki.coronawarnapp.ui.main.MainActivity import de.rki.coronawarnapp.util.DialogHelper import de.rki.coronawarnapp.util.ExternalActionHelper import de.rki.coronawarnapp.util.di.AutoInject @@ -87,6 +88,9 @@ class HomeFragment : Fragment(R.layout.fragment_home), AutoInject { HomeFragmentEvents.ShowDeleteTestDialog -> { showRemoveTestDialog() } + HomeFragmentEvents.GoToContactDiary -> { + (requireActivity() as MainActivity).navigateToContactDiaryActivity() + } } } @@ -97,6 +101,10 @@ class HomeFragment : Fragment(R.layout.fragment_home), AutoInject { } vm.observeTestResultToSchedulePositiveTestResultReminder() + + binding.contactDiaryCard.contactDiaryCardHomescreenButton.setOnClickListener { + vm.moveToContactDiary() + } } override fun onResume() { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt index 26bee23f2..bc6482d6a 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt @@ -10,4 +10,6 @@ sealed class HomeFragmentEvents { object ShowErrorResetDialog : HomeFragmentEvents() object ShowDeleteTestDialog : HomeFragmentEvents() + + object GoToContactDiary : HomeFragmentEvents() } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt index bdcdbc0ae..196c76869 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt @@ -118,6 +118,10 @@ class HomeFragmentViewModel @AssistedInject constructor( popupEvents.postValue(HomeFragmentEvents.ShowDeleteTestDialog) } + fun moveToContactDiary() { + popupEvents.postValue(HomeFragmentEvents.GoToContactDiary) + } + fun deregisterWarningAccepted() { submissionRepository.deleteTestGUID() SubmissionRepository.deleteRegistrationToken() diff --git a/Corona-Warn-App/src/main/res/drawable/ic_diary_book.xml b/Corona-Warn-App/src/main/res/drawable/ic_diary_book.xml new file mode 100644 index 000000000..940b4b971 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_diary_book.xml @@ -0,0 +1,22 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt" + android:viewportWidth="88" + android:viewportHeight="120" + android:width="88dp" + android:height="120dp"> + <group> + <clip-path + android:pathData="M0 0H88V120H0V0Z" /> + <path + android:pathData="M88.0002 110.549V5.25664C88.0002 2.3469 85.6586 0 82.7791 0H11.7716C5.24249 0 -0.0419402 5.35221 0.000250894 11.9257L0.56983 100.354C0.612021 106.864 5.86481 112.131 12.3411 112.131H86.4286C87.3041 112.131 88.0002 111.419 88.0002 110.549Z" + android:fillColor="#C66A61" /> + <path + android:pathData="M64.4999 108.467H12.5099C7.56303 108.467 3.56543 104.432 3.56543 99.4619V98.4212C3.56543 93.4406 7.57358 89.4159 12.5099 89.4159H64.4893C69.4362 89.4159 73.4338 93.4513 73.4338 98.4212V99.4619C73.4444 104.432 69.4362 108.467 64.4999 108.467Z" + android:fillColor="#FFFFFF" /> + <path + android:pathData="M85.817 108.467H13.0269V89.4055H85.817C85.0892 90.6374 83.2644 94.0675 83.2644 98.9312C83.2644 100.418 83.4332 104.443 85.817 108.467Z" + android:fillColor="#FFFFFF" /> + <path + android:pathData="M13.9231 99.345H24.4287C24.7451 99.345 24.9983 99.5999 24.9983 99.9184V119.426C24.9983 120 24.2599 120.223 23.9435 119.745L19.6505 113.256C19.4185 112.917 18.9227 112.917 18.7012 113.256L14.4083 119.745C14.0919 120.223 13.3535 120 13.3535 119.426V99.9184C13.3535 99.5999 13.6067 99.345 13.9231 99.345Z" + android:fillColor="#657887" /> + </group> +</vector> diff --git a/Corona-Warn-App/src/main/res/layout/contact_diary_homescreen_card_include.xml b/Corona-Warn-App/src/main/res/layout/contact_diary_homescreen_card_include.xml new file mode 100644 index 000000000..378c93cc2 --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/contact_diary_homescreen_card_include.xml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:tools="http://schemas.android.com/tools" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/contact_diary_homescreen_card" + style="@style/cardNoPadding" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:focusable="true"> + + + <TextView + android:id="@+id/contact_diary_card_homescreen_title" + style="@style/headline5" + android:layout_width="@dimen/match_constraint" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/card_padding" + android:layout_marginTop="@dimen/card_padding" + android:accessibilityHeading="true" + android:focusable="false" + android:text="@string/contact_diary_homescreen_card_header" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + + <TextView + android:id="@+id/contact_diary_card_homescreen_body" + style="@style/subtitleMedium" + android:layout_width="@dimen/match_constraint" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/card_padding" + android:layout_marginTop="@dimen/spacing_normal" + android:layout_marginEnd="@dimen/spacing_small" + android:focusable="false" + android:text="@string/contact_diary_homescreen_card_body" + app:layout_constraintEnd_toStartOf="@+id/contact_diary_card_homescreen_icon" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/contact_diary_card_homescreen_title" /> + + <Button + android:id="@+id/contact_diary_card_homescreen_button" + style="@style/buttonPrimary" + android:layout_width="@dimen/match_constraint" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/card_padding" + android:layout_marginTop="@dimen/spacing_normal" + android:layout_marginEnd="@dimen/card_padding" + android:layout_marginBottom="@dimen/card_padding" + android:text="@string/contact_diary_homescreen_card_button_text" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/submission_status_card_unregistered_barrier" /> + + <ImageView + android:id="@+id/contact_diary_card_homescreen_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/spacing_normal" + android:importantForAccessibility="no" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="@+id/contact_diary_card_homescreen_body" + app:srcCompat="@drawable/ic_diary_book" /> + + <androidx.constraintlayout.widget.Barrier + android:id="@+id/submission_status_card_unregistered_barrier" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:barrierDirection="bottom" + app:constraint_referenced_ids="contact_diary_card_homescreen_icon,contact_diary_card_homescreen_body" /> + </androidx.constraintlayout.widget.ConstraintLayout> +</layout> diff --git a/Corona-Warn-App/src/main/res/layout/fragment_home.xml b/Corona-Warn-App/src/main/res/layout/fragment_home.xml index 7b1ebe31b..ab29b94ed 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_home.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_home.xml @@ -220,7 +220,17 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="bottom" - app:constraint_referenced_ids="main_test_done, main_risk" /> + app:constraint_referenced_ids="main_test_done" /> + + <include + android:id="@+id/contact_diary_card" + layout="@layout/contact_diary_homescreen_card_include" + android:layout_width="@dimen/match_constraint" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_small" + app:layout_constraintEnd_toStartOf="@+id/guideline_card_end" + app:layout_constraintStart_toStartOf="@+id/guideline_card_start" + app:layout_constraintTop_toBottomOf="@id/main_barrier" /> <include android:id="@+id/main_about" @@ -231,7 +241,7 @@ gone="@{submissionCard == null }" app:layout_constraintEnd_toStartOf="@+id/guideline_card_end" app:layout_constraintStart_toStartOf="@+id/guideline_card_start" - app:layout_constraintTop_toBottomOf="@+id/main_barrier" + app:layout_constraintTop_toBottomOf="@+id/contact_diary_card" app:layout_constraintBottom_toBottomOf="@+id/guideline_bottom" app:layout_constraintVertical_bias="0.0" /> -- GitLab