Hiding keyboard when closing slide panel
This commit is contained in:
parent
0327928bb1
commit
1de4999a65
3 changed files with 16 additions and 16 deletions
|
@ -19,7 +19,6 @@
|
||||||
*/
|
*/
|
||||||
package org.linphone.activities.main
|
package org.linphone.activities.main
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.content.ComponentCallbacks2
|
import android.content.ComponentCallbacks2
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
|
@ -29,7 +28,6 @@ import android.os.Parcelable
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.inputmethod.InputMethodManager
|
|
||||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
|
@ -61,10 +59,7 @@ import org.linphone.contact.ContactsUpdatedListenerStub
|
||||||
import org.linphone.core.CorePreferences
|
import org.linphone.core.CorePreferences
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.MainActivityBinding
|
import org.linphone.databinding.MainActivityBinding
|
||||||
import org.linphone.utils.AppUtils
|
import org.linphone.utils.*
|
||||||
import org.linphone.utils.Event
|
|
||||||
import org.linphone.utils.FileUtils
|
|
||||||
import org.linphone.utils.ShortcutsHelper
|
|
||||||
|
|
||||||
class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestinationChangedListener {
|
class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestinationChangedListener {
|
||||||
private lateinit var binding: MainActivityBinding
|
private lateinit var binding: MainActivityBinding
|
||||||
|
@ -108,8 +103,8 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
||||||
sharedViewModel.layoutChangedEvent.value = Event(true)
|
sharedViewModel.layoutChangedEvent.value = Event(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var tabsFragmentVisible1 = true
|
private var shouldTabsBeVisibleDependingOnDestination = true
|
||||||
private var tabsFragmentVisible2 = true
|
private var shouldTabsBeVisibleDueToOrientationAndKeyboard = true
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
@ -209,7 +204,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
||||||
val keyboardVisible = ViewCompat.getRootWindowInsets(binding.rootCoordinatorLayout)
|
val keyboardVisible = ViewCompat.getRootWindowInsets(binding.rootCoordinatorLayout)
|
||||||
?.isVisible(WindowInsetsCompat.Type.ime()) == true
|
?.isVisible(WindowInsetsCompat.Type.ime()) == true
|
||||||
Log.d("[Tabs Fragment] Keyboard is ${if (keyboardVisible) "visible" else "invisible"}")
|
Log.d("[Tabs Fragment] Keyboard is ${if (keyboardVisible) "visible" else "invisible"}")
|
||||||
tabsFragmentVisible2 = !portraitOrientation || !keyboardVisible
|
shouldTabsBeVisibleDueToOrientationAndKeyboard = !portraitOrientation || !keyboardVisible
|
||||||
updateTabsFragmentVisibility()
|
updateTabsFragmentVisibility()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,7 +229,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
||||||
statusFragment.visibility = View.VISIBLE
|
statusFragment.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
|
|
||||||
tabsFragmentVisible1 = when (destination.id) {
|
shouldTabsBeVisibleDependingOnDestination = when (destination.id) {
|
||||||
R.id.masterCallLogsFragment, R.id.masterContactsFragment, R.id.dialerFragment, R.id.masterChatRoomsFragment ->
|
R.id.masterCallLogsFragment, R.id.masterContactsFragment, R.id.dialerFragment, R.id.masterChatRoomsFragment ->
|
||||||
true
|
true
|
||||||
else -> false
|
else -> false
|
||||||
|
@ -251,12 +246,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateTabsFragmentVisibility() {
|
private fun updateTabsFragmentVisibility() {
|
||||||
tabsFragment.visibility = if (tabsFragmentVisible1 && tabsFragmentVisible2) View.VISIBLE else View.GONE
|
tabsFragment.visibility = if (shouldTabsBeVisibleDependingOnDestination && shouldTabsBeVisibleDueToOrientationAndKeyboard) View.VISIBLE else View.GONE
|
||||||
}
|
|
||||||
|
|
||||||
private fun View.hideKeyboard() {
|
|
||||||
val imm = context.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
|
|
||||||
imm.hideSoftInputFromWindow(windowToken, 0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleIntentParams(intent: Intent) {
|
private fun handleIntentParams(intent: Intent) {
|
||||||
|
|
|
@ -34,6 +34,7 @@ import org.linphone.activities.main.viewmodels.ListTopBarViewModel
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.utils.AppUtils
|
import org.linphone.utils.AppUtils
|
||||||
import org.linphone.utils.DialogUtils
|
import org.linphone.utils.DialogUtils
|
||||||
|
import org.linphone.utils.hideKeyboard
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This fragment can be inherited by all fragments that will display a list
|
* This fragment can be inherited by all fragments that will display a list
|
||||||
|
@ -148,6 +149,7 @@ abstract class MasterFragment<T : ViewDataBinding, U : SelectionListAdapter<*, *
|
||||||
|
|
||||||
override fun handleOnBackPressed() {
|
override fun handleOnBackPressed() {
|
||||||
Log.d("[Master Fragment] handleOnBackPressed, closing sliding pane")
|
Log.d("[Master Fragment] handleOnBackPressed, closing sliding pane")
|
||||||
|
slidingPaneLayout.hideKeyboard()
|
||||||
slidingPaneLayout.closePane()
|
slidingPaneLayout.closePane()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,14 @@ import org.linphone.views.VoiceRecordProgressBar
|
||||||
* This file contains all the data binding necessary for the app
|
* This file contains all the data binding necessary for the app
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
fun View.hideKeyboard() {
|
||||||
|
try {
|
||||||
|
val imm =
|
||||||
|
context.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||||
|
imm.hideSoftInputFromWindow(windowToken, 0)
|
||||||
|
} catch (e: Exception) {}
|
||||||
|
}
|
||||||
|
|
||||||
@BindingAdapter("android:src")
|
@BindingAdapter("android:src")
|
||||||
fun ImageView.setSourceImageResource(resource: Int) {
|
fun ImageView.setSourceImageResource(resource: Int) {
|
||||||
this.setImageResource(resource)
|
this.setImageResource(resource)
|
||||||
|
|
Loading…
Reference in a new issue