forked from upstream-mirrors/quik
Show keyboard when selecting contact and contact selected
This commit is contained in:
+1
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user