Show keyboard when selecting contact and contact selected

This commit is contained in:
moezbhatti
2019-11-17 02:10:55 -05:00
committed by Moez Bhatti
parent 8d43d60e56
commit 30126523ae
8 changed files with 35 additions and 8 deletions
@@ -24,8 +24,7 @@ import android.view.inputmethod.InputMethodManager
fun Activity.dismissKeyboard() {
window.currentFocus?.let { focus ->
val imm = getSystemService(
Context.INPUT_METHOD_SERVICE) as InputMethodManager
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(focus.windowToken, 0)
focus.clearFocus()
@@ -39,11 +39,16 @@ var ViewGroup.animateLayoutChanges: Boolean
layoutTransition = if (value) LayoutTransition() else null
}
fun EditText.showKeyboard() {
requestFocus()
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(this, 0)
imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}
fun EditText.hideKeyboard() {
requestFocus()
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(windowToken, 0)
}
fun ImageView.setTint(color: Int) {
@@ -47,6 +47,7 @@ import com.moez.QKSMS.common.Navigator
import com.moez.QKSMS.common.base.QkThemedActivity
import com.moez.QKSMS.common.util.DateFormatter
import com.moez.QKSMS.common.util.extensions.autoScrollToStart
import com.moez.QKSMS.common.util.extensions.hideKeyboard
import com.moez.QKSMS.common.util.extensions.resolveThemeColor
import com.moez.QKSMS.common.util.extensions.scrapViews
import com.moez.QKSMS.common.util.extensions.setBackgroundTint
@@ -207,10 +208,6 @@ class ComposeActivity : QkThemedActivity(), ComposeView {
toolbar.menu.findItem(R.id.next)?.isVisible = state.selectedMessages == 0 && state.query.isNotEmpty()
toolbar.menu.findItem(R.id.clear)?.isVisible = state.selectedMessages == 0 && state.query.isNotEmpty()
if (chipsAdapter.data.isEmpty() && state.selectedChips.isNotEmpty()) {
message.showKeyboard()
}
chipsAdapter.data = state.selectedChips
loading.setVisible(state.loading)
@@ -289,12 +286,19 @@ class ComposeActivity : QkThemedActivity(), ComposeView {
}
override fun showContacts(chips: List<Chip>) {
message.hideKeyboard()
val serialized = HashMap(chips.associate { chip -> chip.address to chip.contact?.lookupKey })
val intent = Intent(this, ContactsActivity::class.java)
.putExtra(ContactsActivity.ChipsKey, serialized)
startActivityForResult(intent, SELECT_CONTACT_REQUEST_CODE)
}
override fun showKeyboard() {
message.postDelayed({
message.showKeyboard()
}, 200)
}
override fun requestCamera() {
cameraDestination = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
.let { timestamp -> ContentValues().apply { put(MediaStore.Images.Media.TITLE, timestamp) } }
@@ -62,6 +62,7 @@ interface ComposeView : QkView<ComposeState> {
fun requestStoragePermission()
fun requestSmsPermission()
fun showContacts(chips: List<Chip>)
fun showKeyboard()
fun requestCamera()
fun requestGallery()
fun requestDatePicker()
@@ -243,6 +243,7 @@ class ComposeViewModel @Inject constructor(
.autoDisposable(view.scope())
.subscribe { chips ->
chipsReducer.onNext { list -> list + chips }
view.showKeyboard()
}
// Set the contact suggestions list to visible when the add button is pressed
@@ -27,6 +27,8 @@ import com.jakewharton.rxbinding2.widget.textChanges
import com.moez.QKSMS.R
import com.moez.QKSMS.common.ViewModelFactory
import com.moez.QKSMS.common.base.QkThemedActivity
import com.moez.QKSMS.common.util.extensions.hideKeyboard
import com.moez.QKSMS.common.util.extensions.showKeyboard
import com.moez.QKSMS.common.widget.QkDialog
import com.moez.QKSMS.extensions.Optional
import com.moez.QKSMS.feature.compose.editing.ComposeItem
@@ -95,7 +97,14 @@ class ContactsActivity : QkThemedActivity(), ContactsContract {
}
}
override fun openKeyboard() {
search.postDelayed({
search.showKeyboard()
}, 200)
}
override fun finish(result: HashMap<String, String?>) {
search.hideKeyboard()
val intent = Intent().putExtra(ChipsKey, result)
setResult(Activity.RESULT_OK, intent)
finish()
@@ -35,6 +35,7 @@ interface ContactsContract : QkView<ContactsState> {
val phoneNumberSelectedIntent: Subject<Optional<Long>>
val phoneNumberActionIntent: Subject<PhoneNumberAction>
fun openKeyboard()
fun finish(result: HashMap<String, String?>)
}
@@ -71,6 +71,8 @@ class ContactsViewModel @Inject constructor(
}
}
private var shouldOpenKeyboard: Boolean = true
init {
syncContacts.execute(Unit)
}
@@ -78,6 +80,11 @@ class ContactsViewModel @Inject constructor(
override fun bindView(view: ContactsContract) {
super.bindView(view)
if (shouldOpenKeyboard) {
view.openKeyboard()
shouldOpenKeyboard = false
}
// Update the list of contact suggestions based on the query input, while also filtering out any contacts
// that have already been selected
Observables