diff --git a/app/src/main/java/org/linphone/ui/MainActivity.kt b/app/src/main/java/org/linphone/ui/MainActivity.kt index a300f5432..6adf6f160 100644 --- a/app/src/main/java/org/linphone/ui/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/MainActivity.kt @@ -27,19 +27,15 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.view.WindowCompat import androidx.databinding.DataBindingUtil -import androidx.lifecycle.ViewModelProvider import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R import org.linphone.databinding.MainActivityBinding -import org.linphone.utils.hideKeyboard -import org.linphone.utils.showKeyboard class MainActivity : AppCompatActivity() { companion object { private const val CONTACTS_PERMISSION_REQUEST = 0 } - private lateinit var viewModel: MainActivityViewModel private lateinit var binding: MainActivityBinding override fun onCreate(savedInstanceState: Bundle?) { @@ -61,28 +57,6 @@ class MainActivity : AppCompatActivity() { binding = DataBindingUtil.setContentView(this, R.layout.main_activity) binding.lifecycleOwner = this - - viewModel = ViewModelProvider(this)[MainActivityViewModel::class.java] - binding.viewModel = viewModel - - binding.setAvatarClickListener { - if (binding.sideMenu.isDrawerOpen(Gravity.LEFT)) { - binding.sideMenu.closeDrawer(binding.sideMenuContent, true) - } else { - binding.sideMenu.openDrawer(binding.sideMenuContent, true) - } - } - - viewModel.focusSearchBarEvent.observe(this) { - it.consume { take -> - if (take) { - // To automatically open keyboard - binding.search.showKeyboard(window) - } else { - binding.search.hideKeyboard() - } - } - } } override fun onPostCreate(savedInstanceState: Bundle?) { @@ -107,4 +81,12 @@ class MainActivity : AppCompatActivity() { super.onRequestPermissionsResult(requestCode, permissions, grantResults) } + + fun toggleDrawerMenu() { + if (binding.sideMenu.isDrawerOpen(Gravity.LEFT)) { + binding.sideMenu.closeDrawer(binding.sideMenuContent, true) + } else { + binding.sideMenu.openDrawer(binding.sideMenuContent, true) + } + } } diff --git a/app/src/main/java/org/linphone/ui/MainActivityViewModel.kt b/app/src/main/java/org/linphone/ui/TopBarViewModel.kt similarity index 97% rename from app/src/main/java/org/linphone/ui/MainActivityViewModel.kt rename to app/src/main/java/org/linphone/ui/TopBarViewModel.kt index 0559e4994..2acdc18f5 100644 --- a/app/src/main/java/org/linphone/ui/MainActivityViewModel.kt +++ b/app/src/main/java/org/linphone/ui/TopBarViewModel.kt @@ -23,7 +23,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import org.linphone.utils.Event -class MainActivityViewModel : ViewModel() { +open class TopBarViewModel : ViewModel() { val searchBarVisible = MutableLiveData() val searchFilter = MutableLiveData() diff --git a/app/src/main/java/org/linphone/ui/contacts/ContactsFragment.kt b/app/src/main/java/org/linphone/ui/contacts/ContactsFragment.kt index 09ad5cd5e..4b863445b 100644 --- a/app/src/main/java/org/linphone/ui/contacts/ContactsFragment.kt +++ b/app/src/main/java/org/linphone/ui/contacts/ContactsFragment.kt @@ -32,7 +32,10 @@ import androidx.navigation.navGraphViewModels import androidx.transition.AutoTransition import org.linphone.R import org.linphone.databinding.ContactsFragmentBinding +import org.linphone.ui.MainActivity import org.linphone.ui.contacts.viewmodel.ContactsListViewModel +import org.linphone.utils.hideKeyboard +import org.linphone.utils.showKeyboard class ContactsFragment : Fragment() { private lateinit var binding: ContactsFragmentBinding @@ -84,6 +87,21 @@ class ContactsFragment : Fragment() { } } + binding.setOnAvatarClickListener { + (requireActivity() as MainActivity).toggleDrawerMenu() + } + + listViewModel.focusSearchBarEvent.observe(viewLifecycleOwner) { + it.consume { take -> + if (take) { + // To automatically open keyboard + binding.topBar.search.showKeyboard(requireActivity().window) + } else { + binding.topBar.search.hideKeyboard() + } + } + } + /*(view.parent as? ViewGroup)?.doOnPreDraw { startPostponedEnterTransition() }*/ diff --git a/app/src/main/java/org/linphone/ui/contacts/viewmodel/ContactsListViewModel.kt b/app/src/main/java/org/linphone/ui/contacts/viewmodel/ContactsListViewModel.kt index f748cb415..046446877 100644 --- a/app/src/main/java/org/linphone/ui/contacts/viewmodel/ContactsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/contacts/viewmodel/ContactsListViewModel.kt @@ -19,6 +19,6 @@ */ package org.linphone.ui.contacts.viewmodel -import androidx.lifecycle.ViewModel +import org.linphone.ui.TopBarViewModel -class ContactsListViewModel : ViewModel() +class ContactsListViewModel : TopBarViewModel() diff --git a/app/src/main/res/layout/contacts_fragment.xml b/app/src/main/res/layout/contacts_fragment.xml index 036fb63db..9af1afe91 100644 --- a/app/src/main/res/layout/contacts_fragment.xml +++ b/app/src/main/res/layout/contacts_fragment.xml @@ -5,6 +5,9 @@ + @@ -21,15 +24,22 @@ android:layout_height="match_parent" android:background="@color/primary_color"> + + + app:layout_constraintTop_toBottomOf="@id/top_bar" /> + type="org.linphone.ui.TopBarViewModel" /> @@ -25,130 +25,11 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file