diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt index 069241f65..ee7453424 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt @@ -63,24 +63,9 @@ class ContactsFragment : GenericFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - postponeEnterTransition() binding.lifecycleOwner = viewLifecycleOwner - sharedViewModel.contactsListReadyToBeDisplayedEvent.observe(viewLifecycleOwner) { - it.consume { - Log.i("$TAG Contacts list is ready, starting postponed enter transition") - startPostponedEnterTransition() - } - } - - sharedViewModel.contactEditorReadyToBeDisplayedEvent.observe(viewLifecycleOwner) { - it.consume { - Log.i("$TAG Contact editor is ready, starting postponed enter transition") - startPostponedEnterTransition() - } - } - binding.root.doOnPreDraw { val slidingPane = binding.slidingPaneLayout slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt index ccad67dd0..ba0cbe508 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt @@ -29,7 +29,6 @@ import android.view.ViewGroup import android.widget.PopupWindow import androidx.annotation.UiThread import androidx.core.content.FileProvider -import androidx.core.view.doOnPreDraw import androidx.databinding.DataBindingUtil import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -70,7 +69,6 @@ class ContactsListFragment : AbstractTopBarFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - postponeEnterTransition() listViewModel = requireActivity().run { ViewModelProvider(this)[ContactsListViewModel::class.java] @@ -103,12 +101,7 @@ class ContactsListFragment : AbstractTopBarFragment() { adapter.submitList(it) Log.i("$TAG Contacts list updated with [${it.size}] items") - if (currentCount == 0) { - (view.parent as? ViewGroup)?.doOnPreDraw { - startPostponedEnterTransition() - sharedViewModel.contactsListReadyToBeDisplayedEvent.value = Event(true) - } - } else if (currentCount < it.size) { + if (currentCount < it.size) { Log.i("$TAG Contacts list updated with new items, scrolling to top") binding.contactsList.smoothScrollToPosition(0) } diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt index 4e00e3ce0..510d58647 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt @@ -174,8 +174,6 @@ class NewContactFragment : GenericFragment() { removeCell(model) } } - - sharedViewModel.contactEditorReadyToBeDisplayedEvent.value = Event(true) } override fun onResume() { diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt index 62b7f010a..59574aeab 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt @@ -50,6 +50,8 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel() val favourites = MutableLiveData>() + val fetchInProgress = MutableLiveData() + val showFavourites = MutableLiveData() val isListFiltered = MutableLiveData() @@ -172,6 +174,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel() favourites.postValue(favouritesList) contactsList.postValue(list) + fetchInProgress.postValue(false) Log.i("$TAG Processed [${results.size}] results") } @@ -221,6 +224,10 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel() domain: String, sources: Int ) { + if (contactsList.value.orEmpty().isEmpty()) { + fetchInProgress.postValue(true) + } + if (previousFilter.isNotEmpty() && ( previousFilter.length > filter.length || (previousFilter.length == filter.length && previousFilter != filter) diff --git a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryFragment.kt b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryFragment.kt index 7e9d61f6f..ec43fecec 100644 --- a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryFragment.kt @@ -63,17 +63,9 @@ class HistoryFragment : GenericFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - postponeEnterTransition() binding.lifecycleOwner = viewLifecycleOwner - sharedViewModel.callsListReadyToBeDisplayedEvent.observe(viewLifecycleOwner) { - it.consume { - Log.i("$TAG Calls list is ready, starting postponed enter transition") - startPostponedEnterTransition() - } - } - binding.root.doOnPreDraw { val slidingPane = binding.slidingPaneLayout slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED diff --git a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt index 76773fc7c..e0d42e30b 100644 --- a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt @@ -29,7 +29,6 @@ import android.view.View import android.view.ViewGroup import android.widget.PopupWindow import androidx.annotation.UiThread -import androidx.core.view.doOnPreDraw import androidx.databinding.DataBindingUtil import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -70,7 +69,6 @@ class HistoryListFragment : AbstractTopBarFragment() { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - postponeEnterTransition() listViewModel = requireActivity().run { ViewModelProvider(this)[HistoryListViewModel::class.java] @@ -152,12 +150,7 @@ class HistoryListFragment : AbstractTopBarFragment() { adapter.submitList(it) Log.i("$TAG Call logs ready with [${it.size}] items") - if (currentCount == 0) { - (view.parent as? ViewGroup)?.doOnPreDraw { - startPostponedEnterTransition() - sharedViewModel.callsListReadyToBeDisplayedEvent.value = Event(true) - } - } else if (currentCount < it.size) { + if (currentCount < it.size) { binding.historyList.scrollToPosition(0) } } diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryListViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryListViewModel.kt index 8f9528c35..268f06061 100644 --- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryListViewModel.kt @@ -40,6 +40,8 @@ class HistoryListViewModel @UiThread constructor() : AbstractTopBarViewModel() { val callLogs = MutableLiveData>() + val fetchInProgress = MutableLiveData() + val historyDeletedEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -107,6 +109,10 @@ class HistoryListViewModel @UiThread constructor() : AbstractTopBarViewModel() { @WorkerThread private fun computeCallLogsList(filter: String) { + if (callLogs.value.orEmpty().isEmpty()) { + fetchInProgress.postValue(true) + } + val list = arrayListOf() // TODO? : Add support for call logs in magic search @@ -120,5 +126,6 @@ class HistoryListViewModel @UiThread constructor() : AbstractTopBarViewModel() { } callLogs.postValue(list) + fetchInProgress.postValue(false) } } diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt index 8f7d1d5d0..f789d5e64 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt @@ -63,10 +63,6 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() { /* Contacts related */ - val contactsListReadyToBeDisplayedEvent = MutableLiveData>() - - val contactEditorReadyToBeDisplayedEvent = MutableLiveData>() - val showContactEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -79,8 +75,6 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() { /* Call logs related */ - val callsListReadyToBeDisplayedEvent = MutableLiveData>() - val showStartCallEvent: MutableLiveData> by lazy { MutableLiveData>() } diff --git a/app/src/main/res/layout-land/contacts_list_fragment.xml b/app/src/main/res/layout-land/contacts_list_fragment.xml index 3f6542cd9..c3c770db0 100644 --- a/app/src/main/res/layout-land/contacts_list_fragment.xml +++ b/app/src/main/res/layout-land/contacts_list_fragment.xml @@ -16,162 +16,172 @@ type="org.linphone.ui.main.contacts.viewmodel.ContactsListViewModel" /> - + android:layout_height="match_parent"> - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + layout="@layout/operation_in_progress" + bind:visibility="@{viewModel.fetchInProgress}" /> - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout-land/history_list_fragment.xml b/app/src/main/res/layout-land/history_list_fragment.xml index 1dee3bdc3..359d00c0a 100644 --- a/app/src/main/res/layout-land/history_list_fragment.xml +++ b/app/src/main/res/layout-land/history_list_fragment.xml @@ -22,120 +22,130 @@ type="org.linphone.ui.main.history.viewmodel.HistoryListViewModel" /> - + android:layout_height="match_parent"> - + + + + + + + + + + + + + + + + + + + + + + + + layout="@layout/operation_in_progress" + bind:visibility="@{viewModel.fetchInProgress}" /> - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/contacts_list_fragment.xml b/app/src/main/res/layout/contacts_list_fragment.xml index c844bbd49..5045bb9fa 100644 --- a/app/src/main/res/layout/contacts_list_fragment.xml +++ b/app/src/main/res/layout/contacts_list_fragment.xml @@ -16,164 +16,174 @@ type="org.linphone.ui.main.contacts.viewmodel.ContactsListViewModel" /> - + android:layout_height="match_parent"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + layout="@layout/operation_in_progress" + bind:visibility="@{viewModel.fetchInProgress}" /> - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/history_list_fragment.xml b/app/src/main/res/layout/history_list_fragment.xml index 096960834..bf0557470 100644 --- a/app/src/main/res/layout/history_list_fragment.xml +++ b/app/src/main/res/layout/history_list_fragment.xml @@ -22,120 +22,130 @@ type="org.linphone.ui.main.history.viewmodel.HistoryListViewModel" /> - + android:layout_height="match_parent"> - + + + + + + + + + + + + + + + + + + + + + + + + layout="@layout/operation_in_progress" + bind:visibility="@{viewModel.fetchInProgress}" /> - - - - - - - - - - - - - - - - - + \ No newline at end of file