From 9eae40b4f3ef60b897d28f78f872ade4a0ef5ed4 Mon Sep 17 00:00:00 2001
From: Chilja Gossow <49635654+chiljamgossow@users.noreply.github.com>
Date: Fri, 18 Dec 2020 13:38:19 +0100
Subject: [PATCH] Show keyboard (EXPOSUREAPP-4397)  #1937

* show keyboard on default
start with capital letter

* show keyboard on default
start with capital letter

Co-authored-by: Kolya Opahle <k.opahle@sap.com>
Co-authored-by: Ralf Gehrer <ralfgehrer@users.noreply.github.com>
---
 Corona-Warn-App/src/main/AndroidManifest.xml     |  3 ++-
 ...tactDiaryLocationBottomSheetDialogFragment.kt | 11 ++++++++++-
 ...ontactDiaryPersonBottomSheetDialogFragment.kt | 11 ++++++++++-
 .../contactdiary/util/ContactDiaryExtensions.kt  | 16 ++++++++++++++++
 ...tact_diary_location_bottom_sheet_fragment.xml | 16 ++++++++--------
 ...ontact_diary_person_bottom_sheet_fragment.xml | 16 ++++++++--------
 6 files changed, 54 insertions(+), 19 deletions(-)

diff --git a/Corona-Warn-App/src/main/AndroidManifest.xml b/Corona-Warn-App/src/main/AndroidManifest.xml
index f4096417f..5cd5f108e 100644
--- a/Corona-Warn-App/src/main/AndroidManifest.xml
+++ b/Corona-Warn-App/src/main/AndroidManifest.xml
@@ -80,7 +80,8 @@
             android:name=".contactdiary.ui.ContactDiaryActivity"
             android:exported="false"
             android:screenOrientation="portrait"
-            android:theme="@style/AppTheme.ContactDiary" />
+            android:theme="@style/AppTheme.ContactDiary"
+            android:windowSoftInputMode="adjustResize|stateAlwaysHidden"/>
 
     </application>
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/location/ContactDiaryLocationBottomSheetDialogFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/location/ContactDiaryLocationBottomSheetDialogFragment.kt
index ea041c635..884bd20ed 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/location/ContactDiaryLocationBottomSheetDialogFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/location/ContactDiaryLocationBottomSheetDialogFragment.kt
@@ -9,6 +9,8 @@ import androidx.core.widget.doAfterTextChanged
 import androidx.navigation.fragment.navArgs
 import com.google.android.material.bottomsheet.BottomSheetDialogFragment
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.contactdiary.util.hideKeyboard
+import de.rki.coronawarnapp.contactdiary.util.showKeyboard
 import de.rki.coronawarnapp.databinding.ContactDiaryLocationBottomSheetFragmentBinding
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.di.AutoInject
@@ -51,7 +53,7 @@ class ContactDiaryLocationBottomSheetDialogFragment : BottomSheetDialogFragment(
             }
         }
 
-        binding.contactDiaryLocationBottomSheetCloseButton.buttonIcon.setOnClickListener {
+        binding.contactDiaryLocationBottomSheetCloseButton.setOnClickListener {
             viewModel.closePressed()
         }
 
@@ -69,6 +71,8 @@ class ContactDiaryLocationBottomSheetDialogFragment : BottomSheetDialogFragment(
             }
         }
 
+        binding.contactDiaryLocationBottomSheetTextInputEditText.showKeyboard()
+
         viewModel.shouldClose.observe2(this) {
             dismiss()
         }
@@ -79,6 +83,11 @@ class ContactDiaryLocationBottomSheetDialogFragment : BottomSheetDialogFragment(
         }
     }
 
+    override fun onPause() {
+        super.onPause()
+        hideKeyboard()
+    }
+
     override fun onDestroyView() {
         super.onDestroyView()
         _binding = null
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/person/ContactDiaryPersonBottomSheetDialogFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/person/ContactDiaryPersonBottomSheetDialogFragment.kt
index bed3a7933..430306042 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/person/ContactDiaryPersonBottomSheetDialogFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/person/ContactDiaryPersonBottomSheetDialogFragment.kt
@@ -9,6 +9,8 @@ import androidx.core.widget.doAfterTextChanged
 import androidx.navigation.fragment.navArgs
 import com.google.android.material.bottomsheet.BottomSheetDialogFragment
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.contactdiary.util.hideKeyboard
+import de.rki.coronawarnapp.contactdiary.util.showKeyboard
 import de.rki.coronawarnapp.databinding.ContactDiaryPersonBottomSheetFragmentBinding
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.di.AutoInject
@@ -51,7 +53,7 @@ class ContactDiaryPersonBottomSheetDialogFragment : BottomSheetDialogFragment(),
             }
         }
 
-        binding.contactDiaryPersonBottomSheetCloseButton.buttonIcon.setOnClickListener {
+        binding.contactDiaryPersonBottomSheetCloseButton.setOnClickListener {
             viewModel.closePressed()
         }
 
@@ -69,6 +71,8 @@ class ContactDiaryPersonBottomSheetDialogFragment : BottomSheetDialogFragment(),
             }
         }
 
+        binding.contactDiaryPersonBottomSheetTextInputEditText.showKeyboard()
+
         viewModel.shouldClose.observe2(this) {
             dismiss()
         }
@@ -79,6 +83,11 @@ class ContactDiaryPersonBottomSheetDialogFragment : BottomSheetDialogFragment(),
         }
     }
 
+    override fun onPause() {
+        super.onPause()
+        hideKeyboard()
+    }
+
     override fun onDestroyView() {
         super.onDestroyView()
         _binding = null
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt
index e8083d9a5..08be2eced 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt
@@ -1,5 +1,9 @@
 package de.rki.coronawarnapp.contactdiary.util
 
+import android.content.Context
+import android.view.inputmethod.InputMethodManager
+import android.widget.EditText
+import androidx.fragment.app.Fragment
 import androidx.viewpager2.widget.ViewPager2
 
 fun ViewPager2.registerOnPageChangeCallback(cb: (position: Int) -> Unit) {
@@ -9,3 +13,15 @@ fun ViewPager2.registerOnPageChangeCallback(cb: (position: Int) -> Unit) {
         }
     })
 }
+
+fun EditText.showKeyboard() = post {
+        if (requestFocus()) context.inputMethodManager.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
+    }
+
+fun Fragment.hideKeyboard() {
+    context?.inputMethodManager?.hideSoftInputFromWindow(activity?.currentFocus?.windowToken, 0)
+    view?.clearFocus()
+}
+
+private val Context.inputMethodManager
+    get() = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
diff --git a/Corona-Warn-App/src/main/res/layout/contact_diary_location_bottom_sheet_fragment.xml b/Corona-Warn-App/src/main/res/layout/contact_diary_location_bottom_sheet_fragment.xml
index 9b05d3a6b..f4e310aeb 100644
--- a/Corona-Warn-App/src/main/res/layout/contact_diary_location_bottom_sheet_fragment.xml
+++ b/Corona-Warn-App/src/main/res/layout/contact_diary_location_bottom_sheet_fragment.xml
@@ -5,17 +5,17 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <include
+        <ImageView
             android:id="@+id/contact_diary_location_bottom_sheet_close_button"
-            layout="@layout/include_button_icon"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="@dimen/circle_icon_big"
+            android:layout_height="@dimen/circle_icon_big"
             android:layout_marginStart="@dimen/spacing_normal"
             android:layout_marginTop="@dimen/spacing_small"
-            app:icon="@{@drawable/ic_close}"
-            app:iconDescription="@{@string/accessibility_close}"
+            android:src="@drawable/ic_close"
+            android:contentDescription="@string/accessibility_close"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
+            app:layout_constraintTop_toTopOf="parent"
+            style="@style/buttonIcon" />
 
         <TextView
             android:id="@+id/contact_diary_location_bottom_sheet_title"
@@ -59,7 +59,7 @@
                 android:id="@+id/contact_diary_location_bottom_sheet_text_input_edit_text"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:inputType="text"
+                android:inputType="textCapWords"
                 android:imeOptions="actionDone"/>
 
         </com.google.android.material.textfield.TextInputLayout>
diff --git a/Corona-Warn-App/src/main/res/layout/contact_diary_person_bottom_sheet_fragment.xml b/Corona-Warn-App/src/main/res/layout/contact_diary_person_bottom_sheet_fragment.xml
index 41550f179..9c52b632f 100644
--- a/Corona-Warn-App/src/main/res/layout/contact_diary_person_bottom_sheet_fragment.xml
+++ b/Corona-Warn-App/src/main/res/layout/contact_diary_person_bottom_sheet_fragment.xml
@@ -5,17 +5,17 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
-        <include
+        <ImageView
             android:id="@+id/contact_diary_person_bottom_sheet_close_button"
-            layout="@layout/include_button_icon"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="@dimen/circle_icon_big"
+            android:layout_height="@dimen/circle_icon_big"
             android:layout_marginStart="@dimen/spacing_normal"
             android:layout_marginTop="@dimen/spacing_small"
-            app:icon="@{@drawable/ic_close}"
-            app:iconDescription="@{@string/accessibility_close}"
+            android:src="@drawable/ic_close"
+            android:contentDescription="@string/accessibility_close"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
+            app:layout_constraintTop_toTopOf="parent"
+            style="@style/buttonIcon" />
 
         <TextView
             android:id="@+id/contact_diary_person_bottom_sheet_title"
@@ -58,7 +58,7 @@
                 android:id="@+id/contact_diary_person_bottom_sheet_text_input_edit_text"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:inputType="text"
+                android:inputType="textCapWords"
                 android:imeOptions="actionDone"/>
 
         </com.google.android.material.textfield.TextInputLayout>
-- 
GitLab